mirror of
https://github.com/jmarshall23/DoomRTX.git
synced 2026-08-19 20:19:50 +02:00
Missing file from previous checkin.
This commit is contained in:
@@ -0,0 +1,226 @@
|
||||
// AI_base.h
|
||||
// Native state-machine replacement for ai_base.script.
|
||||
// Root object mirrors DoomScript object "ai" and owns an idAI native actor.
|
||||
|
||||
#pragma once
|
||||
|
||||
|
||||
#ifndef ATTACK_DODGE_LEFT
|
||||
#define ATTACK_DODGE_LEFT 1
|
||||
#define ATTACK_DODGE_RIGHT 2
|
||||
#define ATTACK_COMBAT_NODE 4
|
||||
#define ATTACK_MELEE 8
|
||||
#define ATTACK_LEAP 16
|
||||
#define ATTACK_MISSILE 32
|
||||
#define ATTACK_SPECIAL1 64
|
||||
#define ATTACK_SPECIAL2 128
|
||||
#define ATTACK_SPECIAL3 256
|
||||
#define ATTACK_SPECIAL4 512
|
||||
#endif
|
||||
|
||||
#ifndef AI_NOT_ACTIVATED
|
||||
#define AI_NOT_ACTIVATED 0
|
||||
#define AI_CHASING_ENEMY 1
|
||||
#define AI_LOST 2
|
||||
#define AI_PATH_FOLLOWING 3
|
||||
#define AI_ATTACK_NODE 4
|
||||
#endif
|
||||
|
||||
|
||||
// The weapon native scripts use stateResult_t/stateParms_t. If this port is dropped
|
||||
// into a branch where those are only declared in the weapon layer, include that header
|
||||
// before this one or move the enum/struct into a shared script-state header.
|
||||
|
||||
class rvmAIObject : public idClass {
|
||||
public:
|
||||
CLASS_PROTOTYPE( rvmAIObject );
|
||||
|
||||
rvmAIObject();
|
||||
virtual ~rvmAIObject();
|
||||
|
||||
virtual void Init( idAI* aiOwner );
|
||||
virtual void Destroy();
|
||||
virtual void Update();
|
||||
|
||||
virtual void SetState( const char* stateName );
|
||||
virtual void SetAnimState( int channel, const char* stateName, int blendFrames );
|
||||
virtual bool InAnimState( int channel, const char* stateName ) const;
|
||||
virtual void StartAction( const char* actionName );
|
||||
virtual bool InAction() const;
|
||||
virtual void FinishAction( const char* actionName );
|
||||
virtual bool ActionDone( const char* actionName ) const;
|
||||
|
||||
virtual stateResult_t RunStateByName( const char* stateName, stateParms_t* parms );
|
||||
|
||||
protected:
|
||||
static const int AI_NATIVE_MAX_CHANNELS = 4;
|
||||
|
||||
idAI* owner;
|
||||
idStr currentState;
|
||||
idStr currentAction;
|
||||
idStr currentAnimState[AI_NATIVE_MAX_CHANNELS];
|
||||
idStr waitActionName;
|
||||
|
||||
stateParms_t stateParms;
|
||||
stateParms_t actionParms;
|
||||
stateParms_t animParms[AI_NATIVE_MAX_CHANNELS];
|
||||
|
||||
float scratchEndTime;
|
||||
float scratchMinTime;
|
||||
float scratchNextTime;
|
||||
float scratchCount;
|
||||
float scratchFlags;
|
||||
bool scratchBool;
|
||||
idEntityPtr<idEntity> scratchEntity;
|
||||
idStr scratchString;
|
||||
|
||||
virtual int ChannelIndex( int channel ) const;
|
||||
virtual void ClearParms( stateParms_t& parms );
|
||||
|
||||
virtual float Time() const;
|
||||
virtual float FrameTime() const;
|
||||
virtual float RandomFloat( float max = 1.0f ) const;
|
||||
virtual float RandomDelay( float minSeconds, float maxSeconds ) const;
|
||||
virtual float DelayTime( float seconds ) const;
|
||||
virtual float RandomTime( float seconds ) const;
|
||||
|
||||
virtual bool InfluenceActive() const;
|
||||
virtual idPlayer* Player() const;
|
||||
|
||||
virtual void IdleAnim( int channel, const char* animName );
|
||||
virtual void PlayCycle( int channel, const char* animName );
|
||||
virtual void PlayAnim( int channel, const char* animName, bool blend = false );
|
||||
virtual void StopAnim( int channel, int frames );
|
||||
virtual bool AnimDone( int channel, int blendFrames ) const;
|
||||
virtual bool HasAnim( int channel, const char* animName ) const;
|
||||
virtual const char* GetPainAnim() const;
|
||||
virtual void SetBlendFrames( int channel, int blendFrames );
|
||||
virtual void OverrideAnim( int channel );
|
||||
virtual void SetAnimPrefix( const char* prefix );
|
||||
virtual void PreventPain( float seconds );
|
||||
|
||||
virtual void LookAtEnemy( float seconds );
|
||||
virtual void LookAtEntity( idEntity* ent, float seconds );
|
||||
virtual void FaceEnemy();
|
||||
virtual void FaceEntity( idEntity* ent );
|
||||
virtual bool FacingIdeal() const;
|
||||
|
||||
virtual void StopMove();
|
||||
virtual void MoveToEnemy();
|
||||
virtual void MoveToEnemyHeight();
|
||||
virtual void MoveToEntity( idEntity* ent );
|
||||
virtual void MoveToPosition( const idVec3& pos );
|
||||
virtual void MoveToAttackPosition( idEntity* ent, const char* animName );
|
||||
virtual void MoveOutOfRange( idEntity* ent, float range );
|
||||
virtual void MoveToCover();
|
||||
virtual void Wander();
|
||||
virtual bool MoveDone() const;
|
||||
virtual int MoveStatus() const;
|
||||
virtual bool DestinationUnreachable() const;
|
||||
|
||||
virtual idActor* GetEnemy() const;
|
||||
virtual void SetEnemy( idEntity* ent );
|
||||
virtual void ClearEnemy();
|
||||
virtual bool EnemyVisible() const;
|
||||
virtual bool EnemyInFOV() const;
|
||||
virtual bool EnemyDead() const;
|
||||
virtual float EnemyRange() const;
|
||||
virtual bool CheckForMelee() const;
|
||||
virtual bool CanHitEnemy() const;
|
||||
virtual bool CanHitEnemyFromAnim( const char* animName ) const;
|
||||
virtual bool EntityInAttackCone( idEntity* ent ) const;
|
||||
virtual bool CanReachEnemy() const;
|
||||
virtual bool CanReachEntity( idEntity* ent ) const;
|
||||
virtual bool CanSeeEntity( idEntity* ent ) const;
|
||||
virtual void LocateEnemy();
|
||||
|
||||
virtual bool AttackMelee( const char* meleeDefName );
|
||||
virtual idEntity* AttackMissile( const char* jointName );
|
||||
virtual void MuzzleFlash( const char* jointName );
|
||||
virtual idEntity* GetCombatNode();
|
||||
|
||||
virtual bool Pain() const;
|
||||
virtual bool Activated() const;
|
||||
virtual void ClearActivated();
|
||||
virtual bool MovingForward() const;
|
||||
virtual bool Blocked() const;
|
||||
virtual bool ObstacleInPath() const;
|
||||
virtual void AllowMovement( bool allow );
|
||||
virtual void SetMoveType( int moveType );
|
||||
virtual float GetTurnDelta() const;
|
||||
virtual void TurnTo( float yaw );
|
||||
virtual void TurnToPos( const idVec3& pos );
|
||||
virtual float CurrentYaw() const;
|
||||
virtual idVec3 GetOrigin() const;
|
||||
virtual idVec3 GetEnemyPos() const;
|
||||
virtual idVec3 PredictEnemyPos( float seconds ) const;
|
||||
virtual idVec3 GetLinearVelocity() const;
|
||||
virtual void SetLinearVelocity( const idVec3& velocity );
|
||||
virtual float AnimLength( int channel, const char* animName ) const;
|
||||
virtual const char* ChooseAnim( int channel, const char* animName ) const;
|
||||
virtual bool TestAnimMove( const char* animName ) const;
|
||||
virtual bool TestAnimMoveTowardEnemy( const char* animName ) const;
|
||||
virtual bool TestAnimAttack( const char* animName ) const;
|
||||
virtual bool TestMoveToPosition( const idVec3& pos ) const;
|
||||
virtual float TravelDistanceToPoint( const idVec3& pos ) const;
|
||||
virtual float TravelDistanceToEntity( idEntity* ent ) const;
|
||||
virtual float TravelDistanceBetweenPoints( const idVec3& source, const idVec3& dest ) const;
|
||||
virtual idVec3 GetReachableEntityPosition( idEntity* ent ) const;
|
||||
virtual idVec3 GetJumpVelocity( const idVec3& pos, float speed, float maxHeight ) const;
|
||||
virtual void AttackBegin( const char* damageDefName );
|
||||
virtual void AttackEnd();
|
||||
virtual void ChargeAttack( const char* damageDefName );
|
||||
virtual float TestChargeAttack() const;
|
||||
virtual idEntity* CreateMissile( const char* jointName );
|
||||
virtual idEntity* FireMissileAtTarget( const char* jointName, const char* targetName );
|
||||
virtual idEntity* LaunchMissile( const idVec3& origin, const idAngles& angles );
|
||||
virtual void DirectDamage( idEntity* target, const char* damageDefName );
|
||||
virtual void RadiusDamageFromJoint( const char* jointName, const char* damageDefName );
|
||||
virtual void SetFlySpeed( float speed );
|
||||
virtual void SetFlyOffset( int offset );
|
||||
virtual void ClearFlyOffset();
|
||||
virtual void SetHealth( float value );
|
||||
virtual float GetHealth() const;
|
||||
virtual void AllowDamage();
|
||||
virtual void IgnoreDamage();
|
||||
virtual void BecomeSolid();
|
||||
virtual void BecomeNonSolid();
|
||||
virtual void PreBurn();
|
||||
virtual void Burn();
|
||||
virtual void ClearBurn();
|
||||
virtual void KillEntity( idEntity* ent );
|
||||
virtual idEntity* RandomPathFrom( idEntity* from ) const;
|
||||
virtual idEntity* FindEnemy( bool useFOV );
|
||||
virtual idEntity* FindEnemyAI( bool useFOV );
|
||||
virtual idEntity* HeardSound( bool ignoreTeam );
|
||||
virtual idEntity* FindActorsInBounds( const idVec3& mins, const idVec3& maxs );
|
||||
virtual idEntity* ClosestReachableEnemyOfEntity( idEntity* teamMate );
|
||||
virtual idEntity* GetRandomTarget( const char* type );
|
||||
virtual idVec3 GetVectorKey( const char* key, const char* defaultValue = "0 0 0" ) const;
|
||||
virtual void HideEntity( idEntity* ent );
|
||||
virtual void ShowEntity( idEntity* ent );
|
||||
virtual void RemoveEntity( idEntity* ent );
|
||||
|
||||
virtual int GetIntKey( const char* key, const char* defaultValue = "0" ) const;
|
||||
virtual int GetIntKey( const char* key, int defaultValue ) const;
|
||||
virtual float GetFloatKey( const char* key, const char* defaultValue = "0" ) const;
|
||||
virtual float GetFloatKey( const char* key, float defaultValue ) const;
|
||||
virtual const char* GetKey( const char* key, const char* defaultValue = "" ) const;
|
||||
virtual idEntity* GetEntityKey( const char* key ) const;
|
||||
|
||||
virtual void HideOwner();
|
||||
virtual void ShowOwner();
|
||||
virtual bool CanBecomeSolid() const;
|
||||
virtual void SetNeverDormant( bool value );
|
||||
virtual void WakeOnFlashlight( bool value );
|
||||
virtual void StartSoundKey( const char* key, int channel, bool netSync = false );
|
||||
virtual void StartFx( const char* fx );
|
||||
virtual void SetSmokeVisibility( int index, bool visible );
|
||||
virtual void TriggerParticles( const char* jointName );
|
||||
virtual void BecomeRagdoll();
|
||||
virtual void StopThinking();
|
||||
virtual void RemoveOwner();
|
||||
};
|
||||
|
||||
#define AI_DISPATCH_STATE( stateNameLiteral, methodName ) \
|
||||
if ( !idStr::Icmp( stateName, stateNameLiteral ) ) { return methodName( parms ); }
|
||||
Reference in New Issue
Block a user