mirror of
https://github.com/jmarshall23/DoomRTX.git
synced 2026-08-16 16:20:42 +02:00
117 lines
5.7 KiB
C++
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( );
|
|
};
|