Files
DoomRTX/neo/doom3/game/ai/AI_character.h
T
2026-05-23 14:30:21 -07:00

117 lines
5.7 KiB
C++

// AI_character.h
// Native state-machine replacement for ai_character.script.
#pragma once
class rvmCharacter : public rvmAIObject {
public:
CLASS_PROTOTYPE( rvmCharacter );
rvmCharacter();
virtual void Init( idAI* aiOwner ) override;
virtual void Destroy() override;
virtual stateResult_t RunStateByName( const char* stateName, stateParms_t* parms ) override;
protected:
enum {
CHAR_TALK_TRIGGERED = 0,
CHAR_TALK_PRIMARY = 1,
CHAR_TALK_SECONDARY = 2
};
float talkMode;
int talkSecondaryIndex;
idStr customAnim;
float customBlendOut;
idStr walkAnim;
bool allowTurn;
bool run;
bool canTalk;
bool noCower;
bool noCowerSaved;
bool ignorePush;
bool skipOutOfPath;
bool followNodes;
bool dontPushOthers;
float lastPushTime;
float pushTime;
float talkEndTime;
float talkChannel;
float talkOriginalYaw;
idEntityPtr<idEntity> current_path;
idEntityPtr<idEntity> next_path;
idEntityPtr<idEntity> listening_to_character;
idEntityPtr<idEntity> next_listener;
virtual stateResult_t Head_Idle( stateParms_t* parms );
virtual stateResult_t Anim_Disable( stateParms_t* parms );
virtual stateResult_t Head_Dead( stateParms_t* parms );
virtual stateResult_t Head_TalkHeadOnly( stateParms_t* parms );
virtual stateResult_t Legs_Death( stateParms_t* parms );
virtual stateResult_t Legs_Idle( stateParms_t* parms );
virtual stateResult_t Legs_Walk( stateParms_t* parms );
virtual stateResult_t Legs_Walk_Special( stateParms_t* parms );
virtual stateResult_t Legs_Run( stateParms_t* parms );
virtual stateResult_t Legs_TurnLeft( stateParms_t* parms );
virtual stateResult_t Legs_TurnRight( stateParms_t* parms );
virtual stateResult_t Legs_Cower( stateParms_t* parms );
virtual stateResult_t Legs_CustomCycle( stateParms_t* parms );
virtual stateResult_t Legs_CustomAnim( stateParms_t* parms );
virtual stateResult_t state_Spawner( stateParms_t* parms );
virtual stateResult_t state_Cower( stateParms_t* parms );
virtual stateResult_t state_Begin( stateParms_t* parms );
virtual stateResult_t state_TalkTrigger( stateParms_t* parms );
virtual stateResult_t state_Idle( stateParms_t* parms );
virtual stateResult_t state_Killed( stateParms_t* parms );
virtual stateResult_t idle_stand( stateParms_t* parms );
virtual stateResult_t idle_followPathEntities( stateParms_t* parms );
virtual stateResult_t idle_talk( stateParms_t* parms );
virtual stateResult_t checkBlocked( stateParms_t* parms );
virtual stateResult_t path_corner( stateParms_t* parms );
virtual stateResult_t path_anim( stateParms_t* parms );
virtual stateResult_t path_cycleanim( stateParms_t* parms );
virtual stateResult_t path_turn( stateParms_t* parms );
virtual stateResult_t path_wait( stateParms_t* parms );
virtual stateResult_t path_waitfortrigger( stateParms_t* parms );
virtual stateResult_t path_hide( stateParms_t* parms );
virtual stateResult_t path_show( stateParms_t* parms );
virtual stateResult_t path_conversation_listen( stateParms_t* parms );
virtual stateResult_t path_conversation( stateParms_t* parms );
virtual stateResult_t path_headanim( stateParms_t* parms );
virtual stateResult_t path_waitforheadanim( stateParms_t* parms );
virtual stateResult_t path_talk( stateParms_t* parms );
virtual stateResult_t path_talk_triggered( stateParms_t* parms );
virtual stateResult_t path_talk_primary( stateParms_t* parms );
virtual stateResult_t path_talk_secondary( stateParms_t* parms );
virtual stateResult_t path_lookat( stateParms_t* parms );
virtual stateResult_t state_FollowAlternatePath( stateParms_t* parms );
virtual void Anim_Disable( );
virtual void check_cower( );
virtual void target_talk( );
virtual void say_triggered( );
virtual void say_primary( );
virtual void say_secondary( );
virtual void faceTowardsEntity( idEntity* target, float duration );
virtual void playCustomCycle( const char* animname, float blendTime );
virtual void playCustomAnim( const char* animname, float blendIn, float blendOut );
virtual bool inCustomAnim( );
virtual void endCustomAnim( );
virtual void waitForCustomAnim( const char* animname, float blendIn, float blendOut );
virtual void endHeadAnim( float blend_out );
virtual float playHeadAnim( const char* animname, float blend_frames );
virtual void idle_followPathEntities( idEntity* pathnode );
virtual void executePathCommand( idEntity* pathnode );
virtual void finishPathCommand( );
virtual void cancelPathCommand( );
virtual bool getOutOfWay( );
virtual void skip_conversation( );
virtual void break_out_of_conversation( );
virtual void follow_alternate_path1( );
virtual void follow_alternate_path2( );
virtual void follow_alternate_path3( );
virtual void disable_turning( );
virtual void enable_turning( );
};