mirror of
https://github.com/openmoh/openmohaa.git
synced 2025-04-28 21:57:57 +03:00
Actor improvements p2
This commit is contained in:
parent
da28beeab4
commit
32fddb163f
37 changed files with 718 additions and 710 deletions
|
@ -35,13 +35,13 @@ VehicleWheelsX2::VehicleWheelsX2()
|
|||
m_iGear = 1;
|
||||
m_iRPM = 0;
|
||||
gravity = 1.0;
|
||||
m_fDifferentialRatio = 4.8800001;
|
||||
m_fGearEfficiency = 0.69999999;
|
||||
m_fGearRatio[0] = -2.9400001;
|
||||
m_fGearRatio[1] = 2.9400001;
|
||||
m_fGearRatio[2] = 1.9400001;
|
||||
m_fGearRatio[3] = 1.0;
|
||||
m_fAccelerator = 0.0;
|
||||
m_fDifferentialRatio = 4.8800001f;
|
||||
m_fGearEfficiency = 0.69999999f;
|
||||
m_fGearRatio[0] = -2.9400001f;
|
||||
m_fGearRatio[1] = 2.9400001f;
|
||||
m_fGearRatio[2] = 1.9400001f;
|
||||
m_fGearRatio[3] = 1.0f;
|
||||
m_fAccelerator = 0.0f;
|
||||
m_bAutomatic = qtrue;
|
||||
m_bBackSlipping = qfalse;
|
||||
m_bFrontSlipping = qfalse;
|
||||
|
|
|
@ -35,13 +35,13 @@ VehicleWheelsX4::VehicleWheelsX4()
|
|||
m_iGear = 1;
|
||||
m_iRPM = 0;
|
||||
gravity = 1.0;
|
||||
m_fDifferentialRatio = 4.8800001;
|
||||
m_fGearEfficiency = 0.69999999;
|
||||
m_fGearRatio[0] = -2.9400001;
|
||||
m_fGearRatio[1] = 2.9400001;
|
||||
m_fGearRatio[2] = 1.9400001;
|
||||
m_fGearRatio[3] = 1.0;
|
||||
m_fAccelerator = 0.0;
|
||||
m_fDifferentialRatio = 4.8800001f;
|
||||
m_fGearEfficiency = 0.69999999f;
|
||||
m_fGearRatio[0] = -2.9400001f;
|
||||
m_fGearRatio[1] = 2.9400001f;
|
||||
m_fGearRatio[2] = 1.9400001f;
|
||||
m_fGearRatio[3] = 1.0f;
|
||||
m_fAccelerator = 0.0f;
|
||||
m_bBackSlipping = qfalse;
|
||||
m_bAutomatic = qtrue;
|
||||
m_bFrontSlipping = qfalse;
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -157,60 +157,60 @@ typedef struct
|
|||
// Actor flags
|
||||
|
||||
#define ACTOR_FLAG_NOISE_HEARD 0
|
||||
#define ACTOR_FLAG_INVESTIGATING 1
|
||||
#define ACTOR_FLAG_INVESTIGATING 1
|
||||
#define ACTOR_FLAG_DEATHGIB 2
|
||||
#define ACTOR_FLAG_DEATHFADE 3
|
||||
#define ACTOR_FLAG_NOCHATTER 4
|
||||
#define ACTOR_FLAG_DEATHFADE 3
|
||||
#define ACTOR_FLAG_NOCHATTER 4
|
||||
#define ACTOR_FLAG_INACTIVE 5
|
||||
#define ACTOR_FLAG_ANIM_DONE 6
|
||||
#define ACTOR_FLAG_ANIM_DONE 6
|
||||
#define ACTOR_FLAG_STATE_DONE_TIME_VALID 7
|
||||
#define ACTOR_FLAG_AI_ON 8
|
||||
#define ACTOR_FLAG_AI_ON 8
|
||||
#define ACTOR_FLAG_LAST_CANSEEENEMY 9
|
||||
#define ACTOR_FLAG_LAST_CANSEEENEMY_NOFOV 10
|
||||
#define ACTOR_FLAG_DIALOG_PLAYING 11
|
||||
#define ACTOR_FLAG_ALLOW_TALK 12
|
||||
#define ACTOR_FLAG_ALLOW_TALK 12
|
||||
#define ACTOR_FLAG_DAMAGE_ONCE_ON 13
|
||||
#define ACTOR_FLAG_DAMAGE_ONCE_DAMAGED 14
|
||||
#define ACTOR_FLAG_BOUNCE_OFF 15
|
||||
#define ACTOR_FLAG_BOUNCE_OFF 15
|
||||
#define ACTOR_FLAG_NOTIFY_OTHERS_AT_DEATH 16
|
||||
#define ACTOR_FLAG_HAS_THING1 17
|
||||
#define ACTOR_FLAG_HAS_THING2 18
|
||||
#define ACTOR_FLAG_HAS_THING3 19
|
||||
#define ACTOR_FLAG_HAS_THING4 20
|
||||
#define ACTOR_FLAG_HAS_THING1 17
|
||||
#define ACTOR_FLAG_HAS_THING2 18
|
||||
#define ACTOR_FLAG_HAS_THING3 19
|
||||
#define ACTOR_FLAG_HAS_THING4 20
|
||||
#define ACTOR_FLAG_LAST_ATTACK_HIT 21
|
||||
#define ACTOR_FLAG_STARTED 22
|
||||
#define ACTOR_FLAG_STARTED 22
|
||||
#define ACTOR_FLAG_ALLOW_HANGBACK 23
|
||||
#define ACTOR_FLAG_USE_GRAVITY 24
|
||||
#define ACTOR_FLAG_SPAWN_FAILED 25
|
||||
#define ACTOR_FLAG_FADING_OUT 26
|
||||
#define ACTOR_FLAG_FADING_OUT 26
|
||||
#define ACTOR_FLAG_DEATHSHRINK 27
|
||||
#define ACTOR_FLAG_DEATHSINK 28
|
||||
#define ACTOR_FLAG_STAYSOLID 29
|
||||
#define ACTOR_FLAG_STUNNED 30
|
||||
#define ACTOR_FLAG_ALLOW_FALL 31
|
||||
#define ACTOR_FLAG_FINISHED 32
|
||||
#define ACTOR_FLAG_IN_LIMBO 33
|
||||
#define ACTOR_FLAG_CAN_WALK_ON_OTHERS 34
|
||||
#define ACTOR_FLAG_PUSHABLE 35
|
||||
#define ACTOR_FLAG_LAST_TRY_TALK 36
|
||||
#define ACTOR_FLAG_ATTACKABLE_BY_ACTORS 37
|
||||
#define ACTOR_FLAG_TARGETABLE 38
|
||||
#define ACTOR_FLAG_ATTACK_ACTORS 39
|
||||
#define ACTOR_FLAG_DEATHSINK 28
|
||||
#define ACTOR_FLAG_STAYSOLID 29
|
||||
#define ACTOR_FLAG_STUNNED 30
|
||||
#define ACTOR_FLAG_ALLOW_FALL 31
|
||||
#define ACTOR_FLAG_FINISHED 32
|
||||
#define ACTOR_FLAG_IN_LIMBO 33
|
||||
#define ACTOR_FLAG_CAN_WALK_ON_OTHERS 34
|
||||
#define ACTOR_FLAG_PUSHABLE 35
|
||||
#define ACTOR_FLAG_LAST_TRY_TALK 36
|
||||
#define ACTOR_FLAG_ATTACKABLE_BY_ACTORS 37
|
||||
#define ACTOR_FLAG_TARGETABLE 38
|
||||
#define ACTOR_FLAG_ATTACK_ACTORS 39
|
||||
#define ACTOR_FLAG_IMMORTAL 40
|
||||
#define ACTOR_FLAG_TURNING_HEAD 41
|
||||
#define ACTOR_FLAG_DIE_COMPLETELY 42
|
||||
#define ACTOR_FLAG_BLEED_AFTER_DEATH 43
|
||||
#define ACTOR_FLAG_IGNORE_STUCK_WARNING 44
|
||||
#define ACTOR_FLAG_IGNORE_STUCK_WARNING 44
|
||||
#define ACTOR_FLAG_IGNORE_OFF_GROUND_WARNING 45
|
||||
#define ACTOR_FLAG_ALLOWED_TO_KILL 46
|
||||
#define ACTOR_FLAG_TOUCH_TRIGGERS 47
|
||||
#define ACTOR_FLAG_IGNORE_WATER 48
|
||||
#define ACTOR_FLAG_NEVER_IGNORE_SOUNDS 49
|
||||
#define ACTOR_FLAG_SIMPLE_PATHFINDING 50
|
||||
#define ACTOR_FLAG_HAVE_MOVED 51
|
||||
#define ACTOR_FLAG_HAVE_MOVED 51
|
||||
#define ACTOR_FLAG_NO_PAIN_SOUNDS 52
|
||||
#define ACTOR_FLAG_UPDATE_BOSS_HEALTH 53
|
||||
#define ACTOR_FLAG_IGNORE_PAIN_FROM_ACTORS 54
|
||||
#define ACTOR_FLAG_IGNORE_PAIN_FROM_ACTORS 54
|
||||
#define ACTOR_FLAG_DAMAGE_ALLOWED 55
|
||||
#define ACTOR_FLAG_ALWAYS_GIVE_WATER 56
|
||||
|
||||
|
@ -220,11 +220,8 @@ typedef struct
|
|||
#define ACTOR_FLAG_MAX 56
|
||||
|
||||
#define MAX_ORIGIN_HISTORY 4
|
||||
#define MAX_THINKMAP 9
|
||||
#define MAX_THINKLEVELS 29
|
||||
#define MAX_COVER_NODES 16
|
||||
#define MAX_BODYQUEUE 5
|
||||
#define MAX_GLOBAL_FUNCS 35
|
||||
|
||||
typedef enum
|
||||
{
|
||||
|
@ -257,15 +254,19 @@ typedef struct {
|
|||
vec3_t pos[ 1 ];
|
||||
} FallPath;
|
||||
|
||||
#define THINKSTATE_VOID 0
|
||||
#define THINKSTATE_IDLE 1
|
||||
#define THINKSTATE_PAIN 2
|
||||
#define THINKSTATE_KILLED 3
|
||||
#define THINKSTATE_ATTACK 4
|
||||
#define THINKSTATE_CURIOUS 5
|
||||
#define THINKSTATE_DISGUISE 6
|
||||
#define THINKSTATE_GRENADE 7
|
||||
#define THINKSTATE_NOCLIP 8
|
||||
enum eThinkState
|
||||
{
|
||||
THINKSTATE_VOID,
|
||||
THINKSTATE_IDLE,
|
||||
THINKSTATE_PAIN,
|
||||
THINKSTATE_KILLED,
|
||||
THINKSTATE_ATTACK,
|
||||
THINKSTATE_CURIOUS,
|
||||
THINKSTATE_DISGUISE,
|
||||
THINKSTATE_GRENADE,
|
||||
THINKSTATE_NOCLIP,
|
||||
NUM_THINKSTATES,
|
||||
};
|
||||
|
||||
#define AI_EVENT_NONE 0
|
||||
#define AI_EVENT_WEAPON_FIRE 1
|
||||
|
@ -280,7 +281,7 @@ typedef struct {
|
|||
#define AI_EVENT_FOOTSTEP 10
|
||||
#define AI_EVENT_GRENADE 11
|
||||
|
||||
enum thinkNums
|
||||
enum eThinkNum
|
||||
{
|
||||
THINK_VOID,
|
||||
THINK_TURRET,
|
||||
|
@ -316,10 +317,11 @@ enum thinkNums
|
|||
THINK_BALCONY_KILLED,
|
||||
THINK_WEAPONLESS,
|
||||
THINK_NOCLIP,
|
||||
THINK_DEAD
|
||||
THINK_DEAD,
|
||||
NUM_THINKS,
|
||||
};
|
||||
|
||||
enum thinkLevelNums
|
||||
enum eThinkLevel
|
||||
{
|
||||
THINKLEVEL_NORMAL, //I think it should be THINKLEVEL_IDLE
|
||||
THINKLEVEL_PAIN,
|
||||
|
@ -352,27 +354,36 @@ class Actor : public SimpleActor
|
|||
};
|
||||
|
||||
public:
|
||||
/* GlobalFuncs: contains different funcs needed for each actor think/thinkstate */
|
||||
static GlobalFuncs_t GlobalFuncs[MAX_GLOBAL_FUNCS];
|
||||
/* GlobalFuncs: contains different funcs needed for each actor think
|
||||
* think is basically a mode for the actor
|
||||
* when m_ThinkLevel changes, new think value is inside m_Think
|
||||
* to access current think : m_Think[m_ThinkLevel]
|
||||
* to access GlobalFuncs related to current think
|
||||
* GlobalFuncs[m_Think[m_ThinkLevel]];
|
||||
**/
|
||||
static GlobalFuncs_t GlobalFuncs[NUM_THINKS];
|
||||
/* const string array containig think names */
|
||||
static const_str m_csThinkNames[MAX_GLOBAL_FUNCS];
|
||||
static const_str m_csThinkNames[NUM_THINKS];
|
||||
/* const string array containig think state names */
|
||||
static const_str m_csThinkStateNames[MAX_THINKMAP];
|
||||
static const_str m_csThinkStateNames[NUM_THINKSTATES];
|
||||
/* map contating every think value for each thinkstate */
|
||||
int m_ThinkMap[MAX_THINKMAP];
|
||||
eThinkNum m_ThinkMap[NUM_THINKSTATES];
|
||||
/* think state for every think level */
|
||||
int m_ThinkStates[NUM_THINKLEVELS];
|
||||
eThinkState m_ThinkStates[NUM_THINKLEVELS];
|
||||
/* think value for every think level */
|
||||
int m_Think[NUM_THINKLEVELS];
|
||||
/* current think level */
|
||||
int m_ThinkLevel;
|
||||
/* current think state */
|
||||
int m_ThinkState;
|
||||
eThinkNum m_Think[NUM_THINKLEVELS];
|
||||
/* current think level
|
||||
* think levels are more like priorities
|
||||
* highest level is used.
|
||||
**/
|
||||
eThinkLevel m_ThinkLevel;
|
||||
/* current think state*/
|
||||
eThinkState m_ThinkState;
|
||||
/* current state (different than think state) */
|
||||
int m_State;
|
||||
/* current state change time */
|
||||
int m_iStateTime;
|
||||
/* should block think state ? */
|
||||
/* should lock think state ? */
|
||||
bool m_bLockThinkState;
|
||||
/* think state changed */
|
||||
bool m_bDirtyThinkState;
|
||||
|
@ -685,7 +696,7 @@ public:
|
|||
void FixAIParameters( void );
|
||||
bool AttackEntryAnimation( void );
|
||||
void CheckForThinkStateTransition( void );
|
||||
bool CheckForTransition( int state, int level );
|
||||
bool CheckForTransition( eThinkState state, eThinkLevel level );
|
||||
bool PassesTransitionConditions_Grenade( void );
|
||||
bool PassesTransitionConditions_Attack( void );
|
||||
bool PassesTransitionConditions_Disguise( void );
|
||||
|
@ -1092,9 +1103,9 @@ public:
|
|||
void EventSetAccuracy( Event *ev );
|
||||
void EventGetAccuracy( Event *ev );
|
||||
int GetThinkType( const_str csName );
|
||||
void SetThink( int state, int think );
|
||||
void SetThinkIdle( int think_idle );
|
||||
void SetThinkState( int state, int level );
|
||||
void SetThink( eThinkState state, eThinkNum think );
|
||||
void SetThinkIdle( eThinkNum think_idle );
|
||||
void SetThinkState( eThinkState state, eThinkLevel level );
|
||||
void EndCurrentThinkState( void );
|
||||
void ClearThinkStates( void );
|
||||
int CurrentThink( void ) const;
|
||||
|
@ -1294,19 +1305,19 @@ inline void Actor::Archive
|
|||
{
|
||||
SimpleActor::Archive( arc );
|
||||
|
||||
for( int i = MAX_THINKMAP - 1; i >= 0; i-- )
|
||||
for( int i = NUM_THINKSTATES - 1; i >= 0; i-- )
|
||||
{
|
||||
arc.ArchiveInteger( &m_ThinkMap[ i ] );
|
||||
ArchiveEnum(m_ThinkMap[i], eThinkNum);
|
||||
}
|
||||
|
||||
for( int i = NUM_THINKLEVELS - 1; i >= 0; i-- )
|
||||
{
|
||||
arc.ArchiveInteger( &m_ThinkStates[ i ] );
|
||||
arc.ArchiveInteger( &m_Think[ i ] );
|
||||
ArchiveEnum(m_ThinkStates[i], eThinkState);
|
||||
ArchiveEnum(m_Think[i], eThinkNum);
|
||||
}
|
||||
|
||||
arc.ArchiveInteger( &m_ThinkLevel );
|
||||
arc.ArchiveInteger( &m_ThinkState);
|
||||
ArchiveEnum(m_ThinkLevel, eThinkLevel);
|
||||
ArchiveEnum(m_ThinkState, eThinkState);
|
||||
arc.ArchiveInteger( &m_State);
|
||||
arc.ArchiveInteger( &m_iStateTime);
|
||||
arc.ArchiveBool( &m_bLockThinkState);
|
||||
|
|
|
@ -54,10 +54,7 @@ void SimpleActor::Anim_Attack
|
|||
)
|
||||
|
||||
{
|
||||
m_eNextAnimMode = 1;
|
||||
m_csNextAnimString = NULL;
|
||||
m_NextAnimLabel = m_AttackHandler;
|
||||
m_bNextForceStart = false;
|
||||
DesiredAnimation(1, m_AttackHandler);
|
||||
}
|
||||
|
||||
void SimpleActor::Anim_Sniper
|
||||
|
@ -66,10 +63,7 @@ void SimpleActor::Anim_Sniper
|
|||
)
|
||||
|
||||
{
|
||||
m_eNextAnimMode = 1;
|
||||
m_csNextAnimString = NULL;
|
||||
m_NextAnimLabel = m_SniperHandler;
|
||||
m_bNextForceStart = false;
|
||||
DesiredAnimation(1, m_SniperHandler);
|
||||
}
|
||||
|
||||
void SimpleActor::Anim_Aim
|
||||
|
@ -78,9 +72,7 @@ void SimpleActor::Anim_Aim
|
|||
)
|
||||
|
||||
{
|
||||
m_eNextAnimMode = 1;
|
||||
m_csNextAnimString = STRING_ANIM_AIM_SCR;
|
||||
m_bNextForceStart = false;
|
||||
DesiredAnimation(1, STRING_ANIM_AIM_SCR);
|
||||
}
|
||||
|
||||
void SimpleActor::Anim_Shoot
|
||||
|
@ -89,9 +81,7 @@ void SimpleActor::Anim_Shoot
|
|||
)
|
||||
|
||||
{
|
||||
m_eNextAnimMode = 1;
|
||||
m_csNextAnimString = STRING_ANIM_SHOOT_SCR;
|
||||
m_bNextForceStart = false;
|
||||
DesiredAnimation(1, STRING_ANIM_SHOOT_SCR);
|
||||
}
|
||||
|
||||
void SimpleActor::Anim_Idle
|
||||
|
@ -100,9 +90,7 @@ void SimpleActor::Anim_Idle
|
|||
)
|
||||
|
||||
{
|
||||
m_eNextAnimMode = 1;
|
||||
m_csNextAnimString = STRING_ANIM_IDLE_SCR;
|
||||
m_bNextForceStart = false;
|
||||
DesiredAnimation(1, STRING_ANIM_IDLE_SCR);
|
||||
}
|
||||
|
||||
void SimpleActor::Anim_Crouch
|
||||
|
@ -111,9 +99,7 @@ void SimpleActor::Anim_Crouch
|
|||
)
|
||||
|
||||
{
|
||||
m_eNextAnimMode = 1;
|
||||
m_csNextAnimString = STRING_ANIM_CROUCH_SCR;
|
||||
m_bNextForceStart = false;
|
||||
DesiredAnimation(1, STRING_ANIM_CROUCH_SCR);
|
||||
}
|
||||
|
||||
void SimpleActor::Anim_Prone
|
||||
|
@ -122,9 +108,7 @@ void SimpleActor::Anim_Prone
|
|||
)
|
||||
|
||||
{
|
||||
m_eNextAnimMode = 1;
|
||||
m_csNextAnimString = STRING_ANIM_PRONE_SCR;
|
||||
m_bNextForceStart = false;
|
||||
DesiredAnimation(1, STRING_ANIM_PRONE_SCR);
|
||||
}
|
||||
|
||||
void SimpleActor::Anim_Stand
|
||||
|
@ -133,9 +117,7 @@ void SimpleActor::Anim_Stand
|
|||
)
|
||||
|
||||
{
|
||||
m_eNextAnimMode = 1;
|
||||
m_csNextAnimString = STRING_ANIM_STAND_SCR;
|
||||
m_bNextForceStart = false;
|
||||
DesiredAnimation(1, STRING_ANIM_STAND_SCR);
|
||||
}
|
||||
|
||||
void SimpleActor::Anim_Cower
|
||||
|
@ -144,9 +126,7 @@ void SimpleActor::Anim_Cower
|
|||
)
|
||||
|
||||
{
|
||||
m_eNextAnimMode = 1;
|
||||
m_csNextAnimString = STRING_ANIM_COWER_SCR;
|
||||
m_bNextForceStart = false;
|
||||
DesiredAnimation(1, STRING_ANIM_COWER_SCR);
|
||||
}
|
||||
|
||||
void SimpleActor::Anim_Killed
|
||||
|
@ -155,10 +135,8 @@ void SimpleActor::Anim_Killed
|
|||
)
|
||||
|
||||
{
|
||||
m_eAnimMode = 1;
|
||||
m_csNextAnimString = NULL;
|
||||
m_NextAnimLabel = m_DeathHandler;
|
||||
m_bNextForceStart = false;
|
||||
Com_Printf("m_eAnimMode Anim_Killed \n");
|
||||
DesiredAnimation(1, m_DeathHandler);
|
||||
}
|
||||
|
||||
void SimpleActor::Anim_StartPain
|
||||
|
@ -167,10 +145,9 @@ void SimpleActor::Anim_StartPain
|
|||
)
|
||||
|
||||
{
|
||||
m_eAnimMode = 1;
|
||||
m_csNextAnimString = NULL;
|
||||
m_NextAnimLabel = m_PainHandler;
|
||||
m_bNextForceStart = true;
|
||||
Com_Printf("m_eAnimMode Anim_StartPain \n");
|
||||
StartAnimation(1, m_PainHandler);
|
||||
|
||||
}
|
||||
|
||||
void SimpleActor::Anim_Pain
|
||||
|
@ -189,9 +166,7 @@ void SimpleActor::Anim_CrouchRunTo
|
|||
)
|
||||
|
||||
{
|
||||
m_csNextAnimString = STRING_ANIM_CROUCH_RUN_SCR;
|
||||
m_eNextAnimMode = eAnimMode;
|
||||
m_bNextForceStart = false;
|
||||
DesiredAnimation(eAnimMode, STRING_ANIM_CROUCH_RUN_SCR);
|
||||
}
|
||||
|
||||
void SimpleActor::Anim_CrouchWalkTo
|
||||
|
@ -200,9 +175,7 @@ void SimpleActor::Anim_CrouchWalkTo
|
|||
)
|
||||
|
||||
{
|
||||
m_csNextAnimString = STRING_ANIM_CROUCH_WALK_SCR;
|
||||
m_eNextAnimMode = eAnimMode;
|
||||
m_bNextForceStart = false;
|
||||
DesiredAnimation(eAnimMode, STRING_ANIM_CROUCH_WALK_SCR);
|
||||
}
|
||||
|
||||
void SimpleActor::Anim_StandRunTo
|
||||
|
@ -211,9 +184,7 @@ void SimpleActor::Anim_StandRunTo
|
|||
)
|
||||
|
||||
{
|
||||
m_csNextAnimString = STRING_ANIM_RUN_SCR;
|
||||
m_eNextAnimMode = eAnimMode;
|
||||
m_bNextForceStart = false;
|
||||
DesiredAnimation(eAnimMode, STRING_ANIM_RUN_SCR);
|
||||
}
|
||||
|
||||
void SimpleActor::Anim_StandWalkTo
|
||||
|
@ -222,9 +193,7 @@ void SimpleActor::Anim_StandWalkTo
|
|||
)
|
||||
|
||||
{
|
||||
m_csNextAnimString = STRING_ANIM_WALK_SCR;
|
||||
m_eNextAnimMode = eAnimMode;
|
||||
m_bNextForceStart = false;
|
||||
DesiredAnimation(eAnimMode, STRING_ANIM_WALK_SCR);
|
||||
}
|
||||
|
||||
void SimpleActor::Anim_RunTo
|
||||
|
@ -233,9 +202,7 @@ void SimpleActor::Anim_RunTo
|
|||
)
|
||||
|
||||
{
|
||||
m_bNextForceStart = false;
|
||||
m_csNextAnimString = GetRunAnim();
|
||||
m_eNextAnimMode = eAnimMode;
|
||||
DesiredAnimation(eAnimMode, GetRunAnim());
|
||||
}
|
||||
|
||||
void SimpleActor::Anim_WalkTo
|
||||
|
@ -244,9 +211,7 @@ void SimpleActor::Anim_WalkTo
|
|||
)
|
||||
|
||||
{
|
||||
m_bNextForceStart = false;
|
||||
m_csNextAnimString = GetWalkAnim();
|
||||
m_eNextAnimMode = eAnimMode;
|
||||
DesiredAnimation(eAnimMode, GetWalkAnim());
|
||||
}
|
||||
|
||||
void SimpleActor::Anim_RunAwayFiring
|
||||
|
@ -255,9 +220,7 @@ void SimpleActor::Anim_RunAwayFiring
|
|||
)
|
||||
|
||||
{
|
||||
m_csNextAnimString = STRING_ANIM_RUNAWAYFIRING_SCR;
|
||||
m_eNextAnimMode = eAnimMode;
|
||||
m_bNextForceStart = false;
|
||||
DesiredAnimation(eAnimMode, STRING_ANIM_RUNAWAYFIRING_SCR);
|
||||
}
|
||||
|
||||
void SimpleActor::Anim_RunToShooting
|
||||
|
@ -266,9 +229,7 @@ void SimpleActor::Anim_RunToShooting
|
|||
)
|
||||
|
||||
{
|
||||
m_csNextAnimString = STRING_ANIM_RUN_SHOOT_SCR;
|
||||
m_eNextAnimMode = eAnimMode;
|
||||
m_bNextForceStart = false;
|
||||
DesiredAnimation(eAnimMode, STRING_ANIM_RUN_SHOOT_SCR);
|
||||
}
|
||||
|
||||
void SimpleActor::Anim_RunToAlarm
|
||||
|
@ -277,9 +238,7 @@ void SimpleActor::Anim_RunToAlarm
|
|||
)
|
||||
|
||||
{
|
||||
m_csNextAnimString = STRING_ANIM_RUNTO_ALARM_SCR;
|
||||
m_eNextAnimMode = eAnimMode;
|
||||
m_bNextForceStart = false;
|
||||
DesiredAnimation(eAnimMode, STRING_ANIM_RUNTO_ALARM_SCR);
|
||||
}
|
||||
|
||||
void SimpleActor::Anim_RunToCasual
|
||||
|
@ -288,9 +247,7 @@ void SimpleActor::Anim_RunToCasual
|
|||
)
|
||||
|
||||
{
|
||||
m_csNextAnimString = STRING_ANIM_RUNTO_CASUAL_SCR;
|
||||
m_eNextAnimMode = eAnimMode;
|
||||
m_bNextForceStart = false;
|
||||
DesiredAnimation(eAnimMode, STRING_ANIM_RUNTO_CASUAL_SCR);
|
||||
}
|
||||
|
||||
void SimpleActor::Anim_RunToCover
|
||||
|
@ -299,9 +256,7 @@ void SimpleActor::Anim_RunToCover
|
|||
)
|
||||
|
||||
{
|
||||
m_csNextAnimString = STRING_ANIM_RUNTO_COVER_SCR;
|
||||
m_eNextAnimMode = eAnimMode;
|
||||
m_bNextForceStart = false;
|
||||
DesiredAnimation(eAnimMode, STRING_ANIM_RUNTO_COVER_SCR);
|
||||
}
|
||||
|
||||
void SimpleActor::Anim_RunToDanger
|
||||
|
@ -310,9 +265,7 @@ void SimpleActor::Anim_RunToDanger
|
|||
)
|
||||
|
||||
{
|
||||
m_csNextAnimString = STRING_ANIM_RUNTO_DANGER_SCR;
|
||||
m_eNextAnimMode = eAnimMode;
|
||||
m_bNextForceStart = false;
|
||||
DesiredAnimation(eAnimMode, STRING_ANIM_RUNTO_DANGER_SCR);
|
||||
}
|
||||
|
||||
void SimpleActor::Anim_RunToDive
|
||||
|
@ -321,9 +274,7 @@ void SimpleActor::Anim_RunToDive
|
|||
)
|
||||
|
||||
{
|
||||
m_csNextAnimString = STRING_ANIM_RUNTO_DIVE_SCR;
|
||||
m_eNextAnimMode = eAnimMode;
|
||||
m_bNextForceStart = false;
|
||||
DesiredAnimation(eAnimMode, STRING_ANIM_RUNTO_DIVE_SCR);
|
||||
}
|
||||
|
||||
void SimpleActor::Anim_RunToFlee
|
||||
|
@ -332,9 +283,7 @@ void SimpleActor::Anim_RunToFlee
|
|||
)
|
||||
|
||||
{
|
||||
m_eNextAnimMode = eAnimMode;
|
||||
m_csNextAnimString = STRING_ANIM_RUNTO_FLEE_SCR;
|
||||
m_bNextForceStart = false;
|
||||
DesiredAnimation(eAnimMode, STRING_ANIM_RUNTO_FLEE_SCR);
|
||||
}
|
||||
|
||||
void SimpleActor::Anim_RunToInOpen
|
||||
|
@ -343,9 +292,7 @@ void SimpleActor::Anim_RunToInOpen
|
|||
)
|
||||
|
||||
{
|
||||
m_eNextAnimMode = eAnimMode;
|
||||
m_csNextAnimString = STRING_ANIM_RUNTO_INOPEN_SCR;
|
||||
m_bNextForceStart = false;
|
||||
DesiredAnimation(eAnimMode, STRING_ANIM_RUNTO_INOPEN_SCR);
|
||||
}
|
||||
|
||||
void SimpleActor::Anim_Emotion
|
||||
|
@ -386,14 +333,11 @@ void SimpleActor::Anim_FullBody
|
|||
{
|
||||
if( m_csAnimName == csFullBodyAnim )
|
||||
{
|
||||
m_bNextForceStart = false;
|
||||
DesiredAnimation(eAnimMode, STRING_ANIM_FULLBODY_SCR);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_bNextForceStart = true;
|
||||
m_csAnimName = csFullBodyAnim;
|
||||
StartAnimation(eAnimMode, STRING_ANIM_FULLBODY_SCR);
|
||||
}
|
||||
|
||||
m_csNextAnimString = STRING_ANIM_FULLBODY_SCR;
|
||||
m_eNextAnimMode = eAnimMode;
|
||||
}
|
||||
|
|
|
@ -47,11 +47,9 @@ void Actor::Begin_AnimCurious
|
|||
DoForceActivate();
|
||||
|
||||
m_csMood = STRING_CURIOUS;
|
||||
m_bNextForceStart = true;
|
||||
m_YawAchieved = true;
|
||||
m_eNextAnimMode = m_AnimMode;
|
||||
StartAnimation(m_AnimMode, m_csAnimScript);
|
||||
StopTurning();
|
||||
m_iCuriousTime = level.inttime;
|
||||
m_csNextAnimString = m_csAnimScript;
|
||||
}
|
||||
|
||||
void Actor::Think_AnimCurious
|
||||
|
@ -67,6 +65,7 @@ void Actor::Think_AnimCurious
|
|||
m_pszDebugState = "";
|
||||
LookAtCuriosity();
|
||||
TimeOutCurious();
|
||||
DesiredAnimation(m_AnimMode, m_csAnimScript);
|
||||
CheckForThinkStateTransition();
|
||||
PostThink( false );
|
||||
}
|
||||
|
|
|
@ -47,7 +47,7 @@ void Actor::Begin_Curious
|
|||
|
||||
{
|
||||
Vector vDelta;
|
||||
float fDistSquared;
|
||||
//float fDistSquared;
|
||||
|
||||
DoForceActivate();
|
||||
m_csMood = STRING_CURIOUS;
|
||||
|
@ -202,6 +202,7 @@ void Actor::Think_Curious
|
|||
ContinueAnimation();
|
||||
//LABEL_16:
|
||||
CheckForThinkStateTransition();
|
||||
glbs.Printf("Think_Curious CheckForThinkStateTransition 1\n");
|
||||
PostThink(true);
|
||||
return;
|
||||
}
|
||||
|
@ -221,11 +222,13 @@ void Actor::Think_Curious
|
|||
{
|
||||
if (level.inttime > m_iCuriousTime + 500)
|
||||
{
|
||||
glbs.Printf("Think_Curious m_Enemy: %s EnemyIsDisguised: %s\n", m_Enemy ? "true": "false", EnemyIsDisguised() ? "true" : "false");
|
||||
SetThinkState(THINKSTATE_IDLE, THINKLEVEL_NORMAL);
|
||||
m_iCuriousTime = 0;
|
||||
}
|
||||
}
|
||||
CheckForThinkStateTransition();
|
||||
glbs.Printf("Think_Curious CheckForThinkStateTransition 2\n");
|
||||
PostThink(true);
|
||||
return;
|
||||
}
|
||||
|
@ -244,6 +247,7 @@ void Actor::Think_Curious
|
|||
}
|
||||
}
|
||||
CheckForThinkStateTransition();
|
||||
glbs.Printf("Think_Curious CheckForThinkStateTransition 3\n");
|
||||
PostThink(true);
|
||||
return;
|
||||
}
|
||||
|
@ -288,6 +292,7 @@ void Actor::Think_Curious
|
|||
LookAtCuriosity();
|
||||
}
|
||||
CheckForThinkStateTransition();
|
||||
glbs.Printf("Think_Curious CheckForThinkStateTransition 4\n");
|
||||
PostThink(true);
|
||||
return;
|
||||
}
|
||||
|
@ -334,6 +339,7 @@ void Actor::Think_Curious
|
|||
LookAtCuriosity();
|
||||
}
|
||||
CheckForThinkStateTransition();
|
||||
glbs.Printf("Think_Curious CheckForThinkStateTransition 5\n");
|
||||
PostThink(true);
|
||||
return;
|
||||
}
|
||||
|
@ -352,6 +358,7 @@ void Actor::Think_Curious
|
|||
}
|
||||
}
|
||||
CheckForThinkStateTransition();
|
||||
glbs.Printf("Think_Curious CheckForThinkStateTransition 6\n");
|
||||
PostThink(true);
|
||||
return;
|
||||
}
|
||||
|
@ -395,6 +402,7 @@ void Actor::Think_Curious
|
|||
LookAtCuriosity();
|
||||
}
|
||||
CheckForThinkStateTransition();
|
||||
glbs.Printf("Think_Curious CheckForThinkStateTransition 7\n");
|
||||
PostThink(true);
|
||||
return;
|
||||
}
|
||||
|
@ -411,6 +419,7 @@ void Actor::Think_Curious
|
|||
}
|
||||
}
|
||||
CheckForThinkStateTransition();
|
||||
glbs.Printf("Think_Curious CheckForThinkStateTransition 8\n");
|
||||
PostThink(true);
|
||||
return;
|
||||
}
|
||||
|
@ -506,7 +515,6 @@ void Actor::SetCuriousAnimHint
|
|||
(
|
||||
int iAnimHint
|
||||
)
|
||||
|
||||
{
|
||||
m_iCuriousAnimHint = iAnimHint;
|
||||
}
|
||||
|
|
|
@ -190,6 +190,6 @@ void Actor::Think_DisguiseRover
|
|||
assert(!"invalid think state");
|
||||
}
|
||||
|
||||
CheckForTransition(THINKSTATE_GRENADE, 0);
|
||||
CheckForTransition(THINKSTATE_GRENADE, THINKLEVEL_NORMAL);
|
||||
PostThink(true);
|
||||
}
|
||||
|
|
|
@ -189,7 +189,7 @@ void Actor::Think_DisguiseSentry
|
|||
assert(!"invalid think state");
|
||||
break;
|
||||
}
|
||||
CheckForTransition(THINKSTATE_GRENADE, 0);
|
||||
CheckForTransition(THINKSTATE_GRENADE, THINKLEVEL_NORMAL);
|
||||
PostThink(true);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -62,7 +62,7 @@ bool Actor::Grenade_Acquire
|
|||
if (PathComplete())
|
||||
{
|
||||
m_bHasDesiredLookAngles = false;
|
||||
if (m_pGrenade->velocity.lengthXY(true) >= 1024)
|
||||
if (m_pGrenade->velocity.lengthXYSquared() >= 1024)
|
||||
{
|
||||
Anim_Stand();
|
||||
}
|
||||
|
@ -119,7 +119,7 @@ void Actor::Grenade_Flee
|
|||
)
|
||||
|
||||
{
|
||||
float origin_ratio;
|
||||
//float origin_ratio;
|
||||
float fMinCloseDistSquared;
|
||||
float fCosAngle;
|
||||
float fSinAngle;
|
||||
|
@ -180,7 +180,7 @@ void Actor::Grenade_Flee
|
|||
else
|
||||
{
|
||||
|
||||
if ((origin - m_vGrenadePos).lengthXY(true) >= 100352
|
||||
if ((origin - m_vGrenadePos).lengthXYSquared() >= 100352
|
||||
|| !G_SightTrace(
|
||||
centroid,
|
||||
vec_zero,
|
||||
|
@ -302,7 +302,7 @@ void Actor::Grenade_MartyrAcquire
|
|||
m_pGrenade->velocity = vec_zero;
|
||||
|
||||
//weird ? m_pGrenade->velocity is vec_zero ???
|
||||
if (m_pGrenade->velocity.lengthXY(true) < 1024)
|
||||
if (m_pGrenade->velocity.lengthXYSquared() < 1024)
|
||||
{
|
||||
m_pGrenade->velocity = vec_zero;
|
||||
|
||||
|
@ -315,7 +315,7 @@ void Actor::Grenade_MartyrAcquire
|
|||
{
|
||||
Anim_RunToCasual(3);
|
||||
m_csPathGoalEndAnimScript = STRING_ANIM_GRENADEMARTYR_SCR;
|
||||
if ((origin-m_vGrenadePos).lengthXY(true) > 16384)
|
||||
if ((origin-m_vGrenadePos).lengthXYSquared() > 16384)
|
||||
{
|
||||
FaceMotion();
|
||||
}
|
||||
|
@ -491,7 +491,7 @@ void Actor::Begin_Grenade
|
|||
}
|
||||
vDelta = m_vGrenadePos - origin;
|
||||
vDelta.z = 0;
|
||||
fDistSquared = vDelta.lengthXY(true);
|
||||
fDistSquared = vDelta.lengthXYSquared();
|
||||
if (fDistSquared >= 65536)
|
||||
{
|
||||
m_eGrenadeState = AI_GRENSTATE_FLEE;
|
||||
|
|
|
@ -42,6 +42,7 @@ void Actor::Begin_Idle
|
|||
)
|
||||
|
||||
{
|
||||
glbs.Printf("Begin_Idle\n");
|
||||
m_csMood = m_csIdleMood;
|
||||
ClearPath();
|
||||
}
|
||||
|
@ -67,7 +68,6 @@ void Actor::IdleThink
|
|||
)
|
||||
|
||||
{
|
||||
//FIXME: revision
|
||||
IdlePoint();
|
||||
IdleLook();
|
||||
if (PathExists() && PathComplete())
|
||||
|
@ -78,28 +78,23 @@ void Actor::IdleThink
|
|||
{
|
||||
SetPathToNotBlockSentient((Sentient *)G_GetEntity(0));
|
||||
}
|
||||
if (!PathExists())
|
||||
|
||||
if (PathExists())
|
||||
{
|
||||
Anim_Idle();
|
||||
IdleTurn();
|
||||
PostThink(true);
|
||||
Anim_WalkTo(2);
|
||||
if (PathDist() <= 128.0)
|
||||
IdleTurn();
|
||||
else
|
||||
FaceMotion();
|
||||
}
|
||||
else
|
||||
{
|
||||
//FIXME: macros
|
||||
Anim_WalkTo(2);
|
||||
|
||||
if (PathDist() <= 128.0)
|
||||
{
|
||||
IdleTurn();
|
||||
PostThink(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
FaceMotion();
|
||||
}
|
||||
Anim_Idle();
|
||||
IdleTurn();
|
||||
}
|
||||
|
||||
PostThink(true);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -116,12 +111,9 @@ bool Actor::PassesTransitionConditions_Idle
|
|||
)
|
||||
|
||||
{
|
||||
glbs.Printf("PassesTransitionConditions_Idle\n");
|
||||
|
||||
if (m_bEnableEnemy)
|
||||
{
|
||||
if (level.inttime > m_iEnemyCheckTime + 500)
|
||||
UpdateEnemyInternal();
|
||||
}
|
||||
UpdateEnemy(500);
|
||||
|
||||
if (m_bLockThinkState)
|
||||
return false;
|
||||
|
|
|
@ -58,7 +58,7 @@ void Actor::Begin_Killed
|
|||
|
||||
PostEvent(
|
||||
e1,
|
||||
0.05);
|
||||
0.05f);
|
||||
m_State = 700;
|
||||
m_iStateTime = level.inttime;
|
||||
}
|
||||
|
|
|
@ -170,7 +170,7 @@ void Actor::Think_MachineGunner
|
|||
ThinkHoldGun();
|
||||
return;
|
||||
}
|
||||
if (m_ThinkStates[0] != THINKSTATE_IDLE)
|
||||
if (m_ThinkStates[THINKLEVEL_NORMAL] != THINKSTATE_IDLE)
|
||||
{
|
||||
BecomeTurretGuy();
|
||||
return;
|
||||
|
@ -208,10 +208,10 @@ void Actor::ThinkHoldGun
|
|||
float machine_gunner_hands_up_stand;
|
||||
float heightDiff;
|
||||
float right;
|
||||
vec3_t newOrigin;
|
||||
//vec3_t newOrigin;
|
||||
Vector offset;
|
||||
Vector start;
|
||||
vec3_t new_angles;
|
||||
//vec3_t new_angles;
|
||||
Vector vForward;
|
||||
|
||||
UpdateEyeOrigin();
|
||||
|
@ -249,11 +249,11 @@ void Actor::ThinkHoldGun
|
|||
|
||||
if (m_State == 1201)
|
||||
{
|
||||
heightDiff = 71.6;
|
||||
heightDiff = 71.6f;
|
||||
}
|
||||
else
|
||||
{
|
||||
heightDiff = 71.8;
|
||||
heightDiff = 71.8f;
|
||||
}
|
||||
|
||||
machine_gunner_hands_up_stand = origin[2] - (m_pTurret->origin[2] - heightDiff);
|
||||
|
|
|
@ -55,7 +55,7 @@ void Actor::Think_NoClip
|
|||
Vector total_offset;
|
||||
Vector total_offset_unit;
|
||||
float total_dist;
|
||||
vec3_t frame_offset;
|
||||
//vec3_t frame_offset;
|
||||
float frame_dist;
|
||||
|
||||
m_pszDebugState = "";
|
||||
|
|
|
@ -180,7 +180,7 @@ void Actor::Think_Turret
|
|||
if (m_State != 109)
|
||||
{
|
||||
if (m_State != 104
|
||||
|| (origin - m_vHome).lengthXY(true) <= 0.64f * m_fLeashSquared + 64.0f
|
||||
|| (origin - m_vHome).lengthXYSquared() <= 0.64f * m_fLeashSquared + 64.0f
|
||||
|| !State_Turret_RunHome(false) )
|
||||
{
|
||||
m_pszDebugState = "Idle";
|
||||
|
@ -784,13 +784,13 @@ void Actor::State_Turret_Reacquire
|
|||
)
|
||||
|
||||
{
|
||||
Sentient *v1; // ecx
|
||||
/*Sentient *v1; // ecx
|
||||
float v2; // ST08_4
|
||||
float v3; // ST0C_4
|
||||
Sentient *v4; // ecx
|
||||
float v5; // ST08_4
|
||||
float v6; // ST0C_4
|
||||
|
||||
*/
|
||||
if (PathExists() && !PathComplete())
|
||||
{
|
||||
if (CanMovePathWithLeash())
|
||||
|
|
|
@ -90,7 +90,7 @@ int ActorEnemy::UpdateThreat
|
|||
Vector vDelta;
|
||||
|
||||
m_iThreat = 0;
|
||||
m_fCurrentRangeSquared = 1e38;
|
||||
m_fCurrentRangeSquared = 1e38f;
|
||||
|
||||
if (m_pEnemy->m_bIsDisguised || m_fTotalVisibility < 1)
|
||||
return m_iThreat;
|
||||
|
@ -278,13 +278,13 @@ float ActorEnemy::UpdateLMRF
|
|||
{
|
||||
//FIXME: variable names, I did my best
|
||||
Vector vDelta;
|
||||
float fFarPlane, fLMRF = 8, fMinSightTime, fFovScale, fForward, fNormalizedRange, fRangeScale, fRange, fMaxRange;
|
||||
float fFarPlane, fLMRF, /*fMinSightTime,*/ fFovScale, fForward, /*fNormalizedRange,*/ fRangeScale, fRange/*, fMaxRange*/ ;
|
||||
float fTmp1, fTmp2, fTmp3;
|
||||
|
||||
*pbInFovAndRange = false;
|
||||
*pbVisible = false;
|
||||
|
||||
vDelta = pSelf->origin - GetEnemy()->origin;
|
||||
vDelta = pSelf->EyePosition() - GetEnemy()->origin;
|
||||
|
||||
fFarPlane = world->farplane_distance;
|
||||
|
||||
|
@ -298,30 +298,30 @@ float ActorEnemy::UpdateLMRF
|
|||
}
|
||||
|
||||
|
||||
if (Square(fRange) < vDelta.lengthXY(true))
|
||||
if (vDelta.lengthXYSquared() > Square(fRange))
|
||||
{
|
||||
return fLMRF;
|
||||
return 8.0;
|
||||
}
|
||||
|
||||
fForward = vDelta.lengthXY();
|
||||
|
||||
if (-DotProduct2D(vDelta, pSelf->m_vEyeDir) < 0)
|
||||
{
|
||||
return fLMRF;
|
||||
return 8.0;
|
||||
}
|
||||
|
||||
fTmp2 = 128.0 - DotProduct2D(vDelta, pSelf->m_vEyeDir);
|
||||
|
||||
if (fForward * pSelf->m_fFovDot > fTmp2)
|
||||
{
|
||||
return fLMRF;
|
||||
return 8.0;
|
||||
}
|
||||
|
||||
*pbInFovAndRange = true;
|
||||
|
||||
if (!pSelf->CanSee(m_pEnemy, 0, 0))
|
||||
{
|
||||
return fLMRF;
|
||||
return 8.0;
|
||||
}
|
||||
|
||||
*pbVisible = true;
|
||||
|
@ -392,7 +392,7 @@ ActorEnemy *ActorEnemySet::AddPotentialEnemy
|
|||
|
||||
NewEnemy.m_pEnemy = pEnemy;
|
||||
|
||||
NewEnemy.m_fCurrentRangeSquared = 1e38;
|
||||
NewEnemy.m_fCurrentRangeSquared = 1e38f;
|
||||
|
||||
NewEnemy.m_iLastSightChangeTime = 0;
|
||||
NewEnemy.m_vLastKnownPos = vec_zero;
|
||||
|
@ -451,25 +451,28 @@ void ActorEnemySet::CheckEnemies
|
|||
{
|
||||
float fRangeSquared;
|
||||
bool bVisible;
|
||||
bool bInFovAndRange = false;
|
||||
int nChecked;
|
||||
int iThreat;
|
||||
bool bInFovAndRange;
|
||||
//int nChecked;
|
||||
//int iThreat;
|
||||
float fVisibility;
|
||||
|
||||
ActorEnemy *pActorEnemy;
|
||||
for (int i = 1; i < m_Enemies.NumObjects();i++)
|
||||
|
||||
|
||||
for (int i = 1; i <= m_Enemies.NumObjects();i++)
|
||||
{
|
||||
pActorEnemy = &m_Enemies[i];
|
||||
pActorEnemy = &m_Enemies[i-1];
|
||||
if (!pActorEnemy->m_pEnemy
|
||||
|| pActorEnemy->m_pEnemy->m_Team != pSelf->m_Team
|
||||
|| pActorEnemy->m_pEnemy->m_Team == pSelf->m_Team
|
||||
|| pActorEnemy->m_pEnemy->IsDead()
|
||||
|| level.inttime > pActorEnemy->m_iAddTime + 10000
|
||||
|| pActorEnemy->m_pEnemy->m_iThreatBias == THREATBIAS_IGNOREME)
|
||||
{
|
||||
m_Enemies.RemoveObjectAt(i);
|
||||
i--;
|
||||
i--;//decrease i in order to not miss next object in container.
|
||||
}
|
||||
}
|
||||
|
||||
if (!m_Enemies.NumObjects())
|
||||
{
|
||||
m_iCurrentThreat = 0;
|
||||
|
@ -481,7 +484,7 @@ void ActorEnemySet::CheckEnemies
|
|||
}
|
||||
else
|
||||
{
|
||||
for (int i = 0; !bInFovAndRange && i < m_Enemies.NumObjects(); i++)
|
||||
for (int i = 0; i < m_Enemies.NumObjects(); i++)
|
||||
{
|
||||
m_iCheckCount++;
|
||||
if (m_iCheckCount > m_Enemies.NumObjects())
|
||||
|
@ -495,11 +498,7 @@ void ActorEnemySet::CheckEnemies
|
|||
if (pActorEnemy->m_pEnemy == m_pCurrentEnemy)
|
||||
{
|
||||
m_iCurrentThreat = 0;
|
||||
if (m_pCurrentEnemy)
|
||||
{
|
||||
//delete m_pCurrentEnemy;
|
||||
m_pCurrentEnemy = NULL;
|
||||
}
|
||||
m_pCurrentEnemy = NULL;
|
||||
m_fCurrentVisibility = 0.0;
|
||||
}
|
||||
}
|
||||
|
@ -509,18 +508,13 @@ void ActorEnemySet::CheckEnemies
|
|||
{
|
||||
if (pActorEnemy->m_pEnemy == m_pCurrentEnemy)
|
||||
{
|
||||
m_iCurrentThreat = 0;
|
||||
if (m_pCurrentEnemy)
|
||||
{
|
||||
//delete m_pCurrentEnemy;
|
||||
m_pCurrentEnemy = NULL;
|
||||
}
|
||||
m_fCurrentVisibility = fVisibility;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pCurrentEnemy = pActorEnemy->m_pEnemy;
|
||||
m_fCurrentVisibility = fVisibility;
|
||||
}
|
||||
|
||||
if (g_showawareness->integer)
|
||||
|
@ -548,28 +542,29 @@ void ActorEnemySet::CheckEnemies
|
|||
pActorEnemy->m_bVisible = false;
|
||||
pActorEnemy->m_iLastSightChangeTime = level.inttime;
|
||||
}
|
||||
|
||||
if (bInFovAndRange)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (m_pCurrentEnemy && m_pCurrentEnemy->IsDead())
|
||||
{
|
||||
if (m_pCurrentEnemy)
|
||||
{
|
||||
//delete m_pCurrentEnemy;
|
||||
m_pCurrentEnemy = NULL;
|
||||
}
|
||||
m_pCurrentEnemy = NULL;
|
||||
m_iCurrentThreat = 0;
|
||||
m_fCurrentVisibility = 0.0;
|
||||
}
|
||||
|
||||
m_iCurrentThreat = 0;
|
||||
|
||||
fRangeSquared = 1e37;
|
||||
fRangeSquared = 1e37f;
|
||||
|
||||
if (m_fCurrentVisibility >= 1)
|
||||
{
|
||||
for (int i = 0;i < m_Enemies.NumObjects(); i++)
|
||||
for (int i = 1;i <= m_Enemies.NumObjects(); i++)
|
||||
{
|
||||
pActorEnemy = &m_Enemies[i];
|
||||
pActorEnemy = &m_Enemies[i-1];
|
||||
pActorEnemy->UpdateThreat(pSelf);
|
||||
if (m_iCurrentThreat < pActorEnemy->m_iThreat || m_iCheckCount == pActorEnemy->m_iThreat && fRangeSquared > pActorEnemy->m_fCurrentRangeSquared)
|
||||
{
|
||||
|
@ -582,11 +577,7 @@ void ActorEnemySet::CheckEnemies
|
|||
|
||||
if ((!m_pCurrentEnemy || !m_pCurrentEnemy->m_bIsDisguised) && m_iCurrentThreat <= 0)
|
||||
{
|
||||
if (m_pCurrentEnemy)
|
||||
{
|
||||
//delete m_pCurrentEnemy;
|
||||
m_pCurrentEnemy = NULL;
|
||||
}
|
||||
m_pCurrentEnemy = NULL;
|
||||
m_iCurrentThreat = 0;
|
||||
m_fCurrentVisibility = 0.0;
|
||||
}
|
||||
|
|
|
@ -503,7 +503,7 @@ void Animate::SetSyncTime( float s )
|
|||
void Animate::UseSyncTime(int slot, int sync)
|
||||
{
|
||||
int v3; // eax
|
||||
unsigned int v4; // eax
|
||||
//unsigned int v4; // eax
|
||||
int v5; // eax
|
||||
|
||||
if (sync)
|
||||
|
@ -550,7 +550,7 @@ void Animate::PostAnimate( void )
|
|||
|
||||
deltaSyncTime = syncTime;
|
||||
|
||||
if( pauseSyncTime == 0.0f )
|
||||
if( !pauseSyncTime )
|
||||
{
|
||||
syncTime = 1.0f / syncRate * level.frametime + deltaSyncTime;
|
||||
}
|
||||
|
@ -609,27 +609,42 @@ void Animate::PostAnimate( void )
|
|||
|
||||
animFlags[ i ] &= ~ANIM_NODELTA;
|
||||
|
||||
if( ( animFlags[ i ] & ANIM_SYNC && edict->s.frameInfo[ i ].time > animtimes[ i ] ) ||
|
||||
( edict->s.frameInfo[ i ].time > animtimes[ i ] - 0.01f ) )
|
||||
bool bTemp;
|
||||
if (animFlags[i] & ANIM_SYNC)
|
||||
{
|
||||
if( animFlags[ i ] & ANIM_LOOP )
|
||||
bTemp = edict->s.frameInfo[i].time < animtimes[i];
|
||||
}
|
||||
else
|
||||
{
|
||||
bTemp = edict->s.frameInfo[i].time < animtimes[i] - 0.01f;
|
||||
}
|
||||
if( !bTemp )
|
||||
{
|
||||
if (animFlags[i] & ANIM_LOOP)
|
||||
{
|
||||
animFlags[ i ] |= ANIM_FINISHED;
|
||||
animFlags[i] |= ANIM_FINISHED;
|
||||
|
||||
if( edict->s.frameInfo[ i ].time > animtimes[ i ] )
|
||||
do
|
||||
{
|
||||
edict->s.frameInfo[ i ].time = 0;
|
||||
edict->s.frameInfo[i].time -= animtimes[i];
|
||||
} while (edict->s.frameInfo[i].time >= animtimes[i]);
|
||||
|
||||
if (edict->s.frameInfo[i].time < 0)
|
||||
{
|
||||
edict->s.frameInfo[i].time = 0;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
if( startTime != animtimes[ i ] )
|
||||
if (startTime != animtimes[i])
|
||||
{
|
||||
animFlags[ i ] |= ANIM_FINISHED;
|
||||
animFlags[i] |= ANIM_FINISHED;
|
||||
}
|
||||
|
||||
edict->s.frameInfo[ i ].time = animtimes[ i ];
|
||||
edict->s.frameInfo[i].time = animtimes[i];
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1115,7 +1115,7 @@ Event EV_SetShaderData
|
|||
"ff",
|
||||
"data0 data1",
|
||||
"sets the shader controllers for this entity.",
|
||||
EV_RETURN
|
||||
EV_NORMAL
|
||||
);
|
||||
Event EV_Entity_SetVelocity
|
||||
(
|
||||
|
|
|
@ -103,10 +103,9 @@ void QDECL G_Error( int type, const char *fmt, ... )
|
|||
va_end( argptr );
|
||||
|
||||
// need to manually crash otherwise visual studio fuck up with the stack pointer...
|
||||
*( int * )0 = 0;
|
||||
//*( int * )0 = 0;
|
||||
|
||||
assert( 0 );
|
||||
SV_Error( type, text );
|
||||
assert( !text );
|
||||
}
|
||||
|
||||
void* G_Malloc( int size )
|
||||
|
@ -251,10 +250,13 @@ G_InitGame
|
|||
*/
|
||||
void G_InitGame( int levelTime, int randomSeed )
|
||||
{
|
||||
G_Printf( "------- Game Initialization -------\n" );
|
||||
G_Printf( "==== InitGame ====\n" );
|
||||
G_Printf( "gamename: %s\n", GAMEVERSION );
|
||||
G_Printf( "gamedate: %s\n", __DATE__ );
|
||||
|
||||
SV_Error = gi.Error;
|
||||
gi.Error = G_Error;
|
||||
|
||||
srand( randomSeed );
|
||||
|
||||
CVAR_Init();
|
||||
|
@ -276,6 +278,7 @@ void G_InitGame( int levelTime, int randomSeed )
|
|||
PlayerBot::Init();
|
||||
|
||||
sv_numtraces = 0;
|
||||
sv_numpmtraces = 0;
|
||||
|
||||
if( developer->integer && !g_gametype->integer )
|
||||
{
|
||||
|
@ -552,7 +555,7 @@ void G_RunFrame( int levelTime, int frameTime )
|
|||
if( actor->IsSubclassOfActor() )
|
||||
{
|
||||
actor->m_bUpdateAnimDoneFlags = 0;
|
||||
if( actor->m_bAnimating != 0 )
|
||||
if( actor->m_bAnimating )
|
||||
actor->PreAnimate();
|
||||
}
|
||||
}
|
||||
|
@ -1467,9 +1470,6 @@ gameExport_t* GetGameAPI( gameImport_t *import )
|
|||
gi = *import;
|
||||
|
||||
#ifdef _DEBUG
|
||||
SV_Error = gi.Error;
|
||||
gi.Error = G_Error;
|
||||
|
||||
//SV_Malloc = gi.Malloc;
|
||||
///gi.Malloc = G_Malloc;
|
||||
|
||||
|
|
|
@ -378,7 +378,7 @@ const_str PathNode::GetSpecialAttack
|
|||
else
|
||||
{
|
||||
if( nodeflags >= 0 )
|
||||
return 0;
|
||||
return STRING_NULL;
|
||||
|
||||
iSpecialAttack = 2;
|
||||
csAnimation = STRING_ANIM_OVERATTACK_SCR;
|
||||
|
@ -398,7 +398,7 @@ const_str PathNode::GetSpecialAttack
|
|||
fRangeSquared = vDelta[ 0 ] * vDelta[ 0 ] + vDelta[ 1 ] * vDelta[ 1 ];
|
||||
|
||||
if( fRangeSquared < g_AttackParms[ iSpecialAttack ].fMinRangeSquared || fRangeSquared > g_AttackParms[ iSpecialAttack ].fMaxRangeSquared )
|
||||
return 0;
|
||||
return STRING_NULL;
|
||||
|
||||
fMinAngle = atan2( vDelta[ 0 ], vDelta[ 1 ] ) * ( 180.0f / M_PI ) - angles[ 1 ];
|
||||
|
||||
|
@ -426,16 +426,16 @@ const_str PathNode::GetSpecialAttack
|
|||
if( g_AttackParms[ iSpecialAttack ].fMinAngle <= g_AttackParms[ iSpecialAttack ].fMaxAngle )
|
||||
{
|
||||
if( g_AttackParms[ iSpecialAttack ].fMinAngle > fMaxAngle )
|
||||
return 0;
|
||||
return STRING_NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
if( g_AttackParms[ iSpecialAttack ].fMinAngle <= fMaxAngle )
|
||||
return 0;
|
||||
return STRING_NULL;
|
||||
}
|
||||
|
||||
if( fMaxAngle > g_AttackParms[ iSpecialAttack ].fMaxAngle )
|
||||
return 0;
|
||||
return STRING_NULL;
|
||||
|
||||
return csAnimation;
|
||||
}
|
||||
|
|
|
@ -4588,7 +4588,7 @@ void Sentient::UpdateFootsteps
|
|||
iTagNum = gi.Tag_NumForName(edict->tiki, "Bip01 R Foot");
|
||||
if (iTagNum >= 0)
|
||||
{
|
||||
m_bFootOnGround_Right = G_TIKI_IsOnGround(edict, iTagNum, 13.653847);
|
||||
m_bFootOnGround_Right = G_TIKI_IsOnGround(edict, iTagNum, 13.653847f);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -4600,7 +4600,7 @@ void Sentient::UpdateFootsteps
|
|||
iTagNum = gi.Tag_NumForName(edict->tiki, "Bip01 R Foot");
|
||||
if (iTagNum >= 0)
|
||||
{
|
||||
if (G_TIKI_IsOnGround(edict, iTagNum, 13.461539))
|
||||
if (G_TIKI_IsOnGround(edict, iTagNum, 13.461539f))
|
||||
{
|
||||
BroadcastAIEvent(10, G_AIEventRadius(10));
|
||||
}
|
||||
|
@ -4613,7 +4613,7 @@ void Sentient::UpdateFootsteps
|
|||
iTagNum = gi.Tag_NumForName(edict->tiki, "Bip01 L Foot");
|
||||
if (iTagNum >= 0)
|
||||
{
|
||||
m_bFootOnGround_Left = G_TIKI_IsOnGround(edict, iTagNum, 13.653847);
|
||||
m_bFootOnGround_Left = G_TIKI_IsOnGround(edict, iTagNum, 13.653847f);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -4625,7 +4625,7 @@ void Sentient::UpdateFootsteps
|
|||
iTagNum = gi.Tag_NumForName(edict->tiki, "Bip01 R Foot");
|
||||
if (iTagNum >= 0)
|
||||
{
|
||||
if (G_TIKI_IsOnGround(edict, iTagNum, 13.461539))
|
||||
if (G_TIKI_IsOnGround(edict, iTagNum, 13.461539f))
|
||||
{
|
||||
BroadcastAIEvent(10, G_AIEventRadius(10));
|
||||
}
|
||||
|
|
|
@ -49,7 +49,7 @@ SimpleActor::SimpleActor()
|
|||
m_fAimLimit_up = 60.0f;
|
||||
m_fAimLimit_down = -60.0f;
|
||||
|
||||
m_csNextAnimString = 0;
|
||||
m_csNextAnimString = STRING_NULL;
|
||||
m_bNextForceStart = false;
|
||||
m_fCrossblendTime = 0.5f;
|
||||
m_csCurrentPosition = STRING_STAND;
|
||||
|
@ -500,13 +500,51 @@ bool SimpleActor::PathAvoidsSquadMates
|
|||
) const
|
||||
|
||||
{
|
||||
|
||||
Entity* player;
|
||||
float fDelta;
|
||||
float fDistSoFar;
|
||||
float fDistCap;
|
||||
float vDelta2[2];
|
||||
float vMins[3];
|
||||
float vMaxs[3];
|
||||
float vPos[3];
|
||||
Sentient *pOther;
|
||||
Sentient *pBuddy[256];
|
||||
int iNumBuddies;
|
||||
int i;
|
||||
float fRatio;
|
||||
|
||||
if (ai_pathchecktime->value <= 0.0)
|
||||
return true;
|
||||
|
||||
if ((G_GetEntity(0)->origin - origin).lengthXY(true) > Square(ai_pathcheckdist->value))
|
||||
player = G_GetEntity(0);
|
||||
if (!player)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
player = G_GetEntity(0);
|
||||
player = G_GetEntity(0);
|
||||
|
||||
fDelta = (player->origin - origin).lengthXYSquared();
|
||||
if (fDelta > Square(ai_pathcheckdist->value))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
fDistSoFar = 0;
|
||||
for (auto pNode = CurrentPathNode(); pNode >= LastPathNode(); pNode--)
|
||||
{
|
||||
if (fDistSoFar <= 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
//fDistCap = (ai_pathchecktime->value * 250.0) + 0.001 - fDistSoFar;
|
||||
|
||||
//if (pNode->point[2] > fDistCap)
|
||||
{
|
||||
}
|
||||
}
|
||||
// FIXME: stub
|
||||
STUB();
|
||||
return false;
|
||||
|
@ -636,8 +674,8 @@ void SimpleActor::StopTurning
|
|||
)
|
||||
|
||||
{
|
||||
// not found in ida
|
||||
STUB();
|
||||
//fixme: this is an inline function.
|
||||
m_YawAchieved = true;
|
||||
}
|
||||
|
||||
void SimpleActor::SetDesiredYaw
|
||||
|
@ -679,7 +717,7 @@ void SimpleActor::UpdateEmotion
|
|||
int anim;
|
||||
if (IsDead())
|
||||
{
|
||||
m_eEmotionMode = EMOTION_DEAD;
|
||||
Anim_Emotion(EMOTION_DEAD);
|
||||
}
|
||||
|
||||
anim = GetEmotionAnim();
|
||||
|
@ -761,8 +799,11 @@ int SimpleActor::GetEmotionAnim
|
|||
assert(!"Unknown value for m_csMood");
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
emotionanim = "facial_idle_neutral";
|
||||
}
|
||||
|
||||
emotionanim = "facial_idle_neutral";
|
||||
}
|
||||
else if (m_csMood == STRING_CURIOUS)
|
||||
{
|
||||
|
@ -773,12 +814,16 @@ int SimpleActor::GetEmotionAnim
|
|||
assert(!"Unknown value for m_csMood");
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if (emotionanim == NULL)
|
||||
{
|
||||
emotionanim = "facial_idle_anger";
|
||||
assert(!"Unexpected behaviour in SimpleActor::GetEmotionAnim");
|
||||
//assert(!"Unexpected behaviour in SimpleActor::GetEmotionAnim");
|
||||
}
|
||||
|
||||
anim = gi.Anim_NumForName(edict->tiki, emotionanim);
|
||||
|
@ -1151,8 +1196,8 @@ void SimpleActor::ChangeMotionAnim
|
|||
)
|
||||
|
||||
{
|
||||
int lastMotionSlot;
|
||||
int firstMotionSlot;
|
||||
//int lastMotionSlot;
|
||||
//int firstMotionSlot;
|
||||
int iSlot;
|
||||
int i;
|
||||
|
||||
|
@ -1169,7 +1214,7 @@ void SimpleActor::ChangeMotionAnim
|
|||
{
|
||||
StartCrossBlendAnimSlot(iSlot);
|
||||
}
|
||||
m_AnimDialogHigh ^= 1; // toggle
|
||||
m_AnimDialogHigh = !m_AnimDialogHigh;
|
||||
|
||||
}
|
||||
|
||||
|
@ -1256,19 +1301,24 @@ void SimpleActor::UpdateAim
|
|||
|
||||
if (m_bAimAnimSet)
|
||||
{
|
||||
dir = -m_DesiredGunDir[0];
|
||||
|
||||
aimForwardSlot = GetActionSlot(0);
|
||||
aimUpSlot = aimForwardSlot + 1;
|
||||
aimDownSlot = aimForwardSlot + 2;
|
||||
|
||||
dir = -m_DesiredGunDir[0];
|
||||
if (dir <= 180 && dir < -180)
|
||||
if (dir <= 180)
|
||||
{
|
||||
dir += 360;
|
||||
if (dir < -180)
|
||||
{
|
||||
dir += 360;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
dir -= 360;
|
||||
}
|
||||
|
||||
float factor;
|
||||
if (dir < 0)
|
||||
{
|
||||
|
@ -1283,7 +1333,7 @@ void SimpleActor::UpdateAim
|
|||
}
|
||||
else
|
||||
{
|
||||
if (dir < m_fAimLimit_up)
|
||||
if (dir > m_fAimLimit_up)
|
||||
dir = m_fAimLimit_up;
|
||||
|
||||
factor = dir / m_fAimLimit_up;
|
||||
|
@ -1574,37 +1624,37 @@ void SimpleActor::EventSetEmotion
|
|||
switch (ev->GetConstString(1))
|
||||
{
|
||||
case STRING_EMOTION_NONE:
|
||||
m_eEmotionMode = EMOTION_NONE;
|
||||
Anim_Emotion(EMOTION_NONE);
|
||||
break;
|
||||
case STRING_EMOTION_NEUTRAL:
|
||||
m_eEmotionMode = EMOTION_NEUTRAL;
|
||||
Anim_Emotion(EMOTION_NEUTRAL);
|
||||
break;
|
||||
case STRING_EMOTION_WORRY:
|
||||
m_eEmotionMode = EMOTION_WORRY;
|
||||
Anim_Emotion(EMOTION_WORRY);
|
||||
break;
|
||||
case STRING_EMOTION_PANIC:
|
||||
m_eEmotionMode = EMOTION_PANIC;
|
||||
Anim_Emotion(EMOTION_PANIC);
|
||||
break;
|
||||
case STRING_EMOTION_FEAR:
|
||||
m_eEmotionMode = EMOTION_FEAR;
|
||||
Anim_Emotion(EMOTION_FEAR);
|
||||
break;
|
||||
case STRING_EMOTION_DISGUST:
|
||||
m_eEmotionMode = EMOTION_DISGUST;
|
||||
Anim_Emotion(EMOTION_DISGUST);
|
||||
break;
|
||||
case STRING_EMOTION_ANGER:
|
||||
m_eEmotionMode = EMOTION_ANGER;
|
||||
Anim_Emotion(EMOTION_ANGER);
|
||||
break;
|
||||
case STRING_EMOTION_AIMING:
|
||||
m_eEmotionMode = EMOTION_AIMING;
|
||||
Anim_Emotion(EMOTION_AIMING);
|
||||
break;
|
||||
case STRING_EMOTION_DETERMINED:
|
||||
m_eEmotionMode = EMOTION_DETERMINED;
|
||||
Anim_Emotion(EMOTION_DETERMINED);
|
||||
break;
|
||||
case STRING_EMOTION_DEAD:
|
||||
m_eEmotionMode = EMOTION_DEAD;
|
||||
Anim_Emotion(EMOTION_DEAD);
|
||||
break;
|
||||
case STRING_EMOTION_CURIOUS:
|
||||
m_eEmotionMode = EMOTION_CURIOUS;
|
||||
Anim_Emotion(EMOTION_CURIOUS);
|
||||
break;
|
||||
default:
|
||||
assert(!"Unknown emotion mode specified in script.");
|
||||
|
@ -1666,8 +1716,10 @@ void SimpleActor::DesiredAnimation
|
|||
)
|
||||
|
||||
{
|
||||
// not found in ida
|
||||
STUB();
|
||||
//fixme: this is an inline function.
|
||||
m_eNextAnimMode = eAnimMode;
|
||||
m_csNextAnimString = csAnimString;
|
||||
m_bNextForceStart = false;
|
||||
}
|
||||
|
||||
void SimpleActor::StartAnimation
|
||||
|
@ -1677,8 +1729,10 @@ void SimpleActor::StartAnimation
|
|||
)
|
||||
|
||||
{
|
||||
// not found in ida
|
||||
STUB();
|
||||
//fixme: this is an inline function.
|
||||
m_eNextAnimMode = eAnimMode;
|
||||
m_csNextAnimString = csAnimString;
|
||||
m_bNextForceStart = true;
|
||||
}
|
||||
|
||||
void SimpleActor::DesiredAnimation
|
||||
|
@ -1688,8 +1742,11 @@ void SimpleActor::DesiredAnimation
|
|||
)
|
||||
|
||||
{
|
||||
// not found in ida
|
||||
STUB();
|
||||
//fixme: this is an inline function.
|
||||
m_eNextAnimMode = eAnimMode;
|
||||
m_csNextAnimString = STRING_NULL;
|
||||
m_NextAnimLabel = AnimLabel;
|
||||
m_bNextForceStart = false;
|
||||
}
|
||||
|
||||
void SimpleActor::StartAnimation
|
||||
|
@ -1699,8 +1756,11 @@ void SimpleActor::StartAnimation
|
|||
)
|
||||
|
||||
{
|
||||
// not found in ida
|
||||
STUB();
|
||||
//fixme: this is an inline function.
|
||||
m_eNextAnimMode = eAnimMode;
|
||||
m_csNextAnimString = STRING_NULL;
|
||||
m_NextAnimLabel = AnimLabel;
|
||||
m_bNextForceStart = true;
|
||||
}
|
||||
|
||||
void SimpleActor::ContinueAnimationAllowNoPath
|
||||
|
@ -1712,7 +1772,7 @@ void SimpleActor::ContinueAnimationAllowNoPath
|
|||
if (m_eNextAnimMode < 0)
|
||||
{
|
||||
m_bNextForceStart = false;
|
||||
m_csNextAnimString = NULL;
|
||||
m_csNextAnimString = STRING_NULL;
|
||||
m_eNextAnimMode = m_eAnimMode;
|
||||
m_NextAnimLabel = m_Anim;
|
||||
}
|
||||
|
@ -1724,17 +1784,19 @@ void SimpleActor::ContinueAnimation
|
|||
)
|
||||
|
||||
{
|
||||
if (m_eNextAnimMode < 0)
|
||||
int eAnimMode = m_eNextAnimMode;
|
||||
if (eAnimMode < 0)
|
||||
{
|
||||
m_bNextForceStart = false;
|
||||
m_csNextAnimString = NULL;
|
||||
m_csNextAnimString = STRING_NULL;
|
||||
m_eNextAnimMode = m_eAnimMode;
|
||||
m_NextAnimLabel = m_Anim;
|
||||
eAnimMode = m_eAnimMode;
|
||||
}
|
||||
|
||||
if (m_eAnimMode <= 3 && !PathExists())
|
||||
if (eAnimMode <= 3 && !PathExists())
|
||||
{
|
||||
assert(!DumpCallTrace("ContinueAnimation() called on a pathed animation, but no path exists"));
|
||||
//assert(!DumpCallTrace("ContinueAnimation() called on a pathed animation, but no path exists"));
|
||||
Anim_Stand();
|
||||
}
|
||||
}
|
||||
|
@ -1754,19 +1816,69 @@ bool SimpleActor::UpdateSelectedAnimation
|
|||
)
|
||||
|
||||
{
|
||||
|
||||
if (m_csNextAnimString == NULL)
|
||||
if (m_csNextAnimString == STRING_NULL)
|
||||
{
|
||||
if (!m_bNextForceStart && m_pAnimThread == NULL && m_eAnimMode == m_eNextAnimMode && m_Anim == m_NextAnimLabel)
|
||||
{
|
||||
m_bStartPathGoalEndAnim = false;
|
||||
m_eNextAnimMode = -1;
|
||||
return false;
|
||||
}
|
||||
else
|
||||
if (m_bNextForceStart)
|
||||
{
|
||||
m_Anim = m_NextAnimLabel;
|
||||
//LABEL_7:
|
||||
m_eAnimMode = m_eNextAnimMode;
|
||||
if (m_eNextAnimMode != 3)
|
||||
SetPathGoalEndAnim(STRING_EMPTY);
|
||||
m_bStartPathGoalEndAnim = false;
|
||||
m_eNextAnimMode = -1;
|
||||
return true;
|
||||
}
|
||||
|
||||
if (m_pAnimThread)
|
||||
{
|
||||
if (m_eAnimMode == m_eNextAnimMode)
|
||||
{
|
||||
if (m_Anim == m_NextAnimLabel)
|
||||
{
|
||||
m_bStartPathGoalEndAnim = false;
|
||||
m_eNextAnimMode = -1;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
m_Anim = m_NextAnimLabel;
|
||||
m_eAnimMode = m_eNextAnimMode;
|
||||
if (m_eNextAnimMode != 3)
|
||||
SetPathGoalEndAnim(STRING_EMPTY);
|
||||
m_bStartPathGoalEndAnim = false;
|
||||
m_eNextAnimMode = -1;
|
||||
return true;
|
||||
}
|
||||
|
||||
if (m_bNextForceStart)
|
||||
{
|
||||
|
||||
Com_Printf("UpdateSelectedAnimation\n");
|
||||
m_Anim.TrySetScript(m_csNextAnimString);
|
||||
m_eAnimMode = m_eNextAnimMode;
|
||||
if (m_eNextAnimMode != 3)
|
||||
SetPathGoalEndAnim(STRING_EMPTY);
|
||||
m_bStartPathGoalEndAnim = false;
|
||||
m_eNextAnimMode = -1;
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!m_pAnimThread || m_eAnimMode != m_eNextAnimMode)
|
||||
{
|
||||
m_Anim.TrySetScript(m_csNextAnimString);
|
||||
m_eAnimMode = m_eNextAnimMode;
|
||||
if (m_eNextAnimMode != 3)
|
||||
SetPathGoalEndAnim(STRING_EMPTY);
|
||||
m_bStartPathGoalEndAnim = false;
|
||||
m_eNextAnimMode = -1;
|
||||
return true;
|
||||
}
|
||||
|
||||
if (m_fPathGoalTime <= level.time)
|
||||
{
|
||||
if (!m_Anim.IsFile(m_csNextAnimString))
|
||||
{
|
||||
m_Anim.TrySetScript(m_csNextAnimString);
|
||||
m_eAnimMode = m_eNextAnimMode;
|
||||
if (m_eNextAnimMode != 3)
|
||||
SetPathGoalEndAnim(STRING_EMPTY);
|
||||
|
@ -1775,27 +1887,16 @@ bool SimpleActor::UpdateSelectedAnimation
|
|||
return true;
|
||||
}
|
||||
}
|
||||
else if (m_bNextForceStart || m_pAnimThread != NULL || m_eAnimMode != m_eNextAnimMode || (m_fPathGoalTime <= level.time && !m_Anim.IsFile(m_csNextAnimString)))
|
||||
|
||||
m_eNextAnimMode = -1;
|
||||
if (m_bStartPathGoalEndAnim)
|
||||
{
|
||||
m_Anim.TrySetScript(Director.GetString(m_csNextAnimString));
|
||||
m_eAnimMode = m_eNextAnimMode;
|
||||
if (m_eNextAnimMode != 3)
|
||||
SetPathGoalEndAnim(STRING_EMPTY);
|
||||
m_bStartPathGoalEndAnim = false;
|
||||
m_eNextAnimMode = -1;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_eNextAnimMode = -1;
|
||||
if (m_bStartPathGoalEndAnim)
|
||||
|
||||
if (!m_Anim.IsFile(m_csPathGoalEndAnimScript))
|
||||
{
|
||||
m_bStartPathGoalEndAnim = false;
|
||||
if (!m_Anim.IsFile(m_csPathGoalEndAnimScript))
|
||||
{
|
||||
m_Anim.TrySetScript(Director.GetString(m_csPathGoalEndAnimScript));
|
||||
return true;
|
||||
}
|
||||
m_Anim.TrySetScript(m_csPathGoalEndAnimScript);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
|
|
|
@ -4375,7 +4375,7 @@ void Weapon::MakeNoise
|
|||
|
||||
if( attached && ( next_noise_time <= level.time || force ) )
|
||||
{
|
||||
BroadcastAIEvent( 8, radius );
|
||||
BroadcastAIEvent(AI_EVENT_MISC, radius );
|
||||
next_noise_time = level.time + 1;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -576,7 +576,7 @@ void ClassDef::BuildEventResponses( void )
|
|||
numclasses++;
|
||||
}
|
||||
|
||||
CLASS_DPrintf( "\n------------------\nEvent system initialized: "
|
||||
glbs.DPrintf( "\n------------------\nEvent system initialized: "
|
||||
"%d classes %d events %d total memory in response list\n\n", numclasses, Event::NumEventCommands(), amount );
|
||||
}
|
||||
|
||||
|
|
|
@ -27,6 +27,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
|
||||
enum
|
||||
{
|
||||
STRING_NULL = 0,
|
||||
STRING_EMPTY = 1,
|
||||
STRING_TOUCH, STRING_BLOCK, STRING_TRIGGER, STRING_USE,
|
||||
STRING_DAMAGE,STRING_LOCATION,
|
||||
|
|
|
@ -198,9 +198,9 @@ bool StateScript::AddLabel( const_str label, unsigned char *pos, bool private_se
|
|||
s.key = label;
|
||||
s.isprivate = private_section;
|
||||
|
||||
if( !label_list.findKeyValue( 0 ) )
|
||||
if( !label_list.findKeyValue(STRING_NULL) )
|
||||
{
|
||||
label_list.addKeyValue( 0 ) = s;
|
||||
label_list.addKeyValue(STRING_NULL) = s;
|
||||
}
|
||||
|
||||
reverse_label_list.AddObject( &s );
|
||||
|
@ -258,7 +258,7 @@ const_str StateScript::NearestLabel( unsigned char *pos )
|
|||
{
|
||||
unsigned int offset = pos - m_Parent->m_ProgBuffer;
|
||||
unsigned int bestOfs = 0;
|
||||
const_str label = 0;
|
||||
const_str label = STRING_NULL;
|
||||
|
||||
for( int i = 1; i <= reverse_label_list.NumObjects(); i++ )
|
||||
{
|
||||
|
@ -282,7 +282,7 @@ const_str StateScript::NearestLabel( unsigned char *pos )
|
|||
|
||||
GameScript::GameScript()
|
||||
{
|
||||
m_Filename = 0;
|
||||
m_Filename = STRING_NULL;
|
||||
successCompile = false;
|
||||
|
||||
m_ProgBuffer = NULL;
|
||||
|
@ -367,7 +367,7 @@ void ArchiveOpcode( Archiver& arc, unsigned char *code )
|
|||
__exec:
|
||||
if( !arc.Loading() )
|
||||
{
|
||||
index = archivedEvents.AddUniqueObject( *reinterpret_cast< unsigned int * >( code + 2 ) );
|
||||
index = archivedEvents.AddUniqueObject( *reinterpret_cast< const_str * >( code + 2 ) );
|
||||
}
|
||||
|
||||
arc.ArchiveUnsigned( &index );
|
||||
|
@ -411,7 +411,7 @@ __exec:
|
|||
case OP_STORE_STRING:
|
||||
if( !arc.Loading() )
|
||||
{
|
||||
index = archivedStrings.AddUniqueObject( *reinterpret_cast< unsigned int * >( code + 1 ) );
|
||||
index = archivedStrings.AddUniqueObject( *reinterpret_cast< const_str * >( code + 1 ) );
|
||||
}
|
||||
|
||||
arc.ArchiveUnsigned( &index );
|
||||
|
|
|
@ -423,6 +423,7 @@ void L_InitEvents( void )
|
|||
g_eventstats = gi.Cvar_Get( "g_eventstats", "0", 0 );
|
||||
#endif
|
||||
|
||||
gi.Printf("L_InitEvents\n");
|
||||
Event::LoadEvents();
|
||||
ClassDef::BuildEventResponses();
|
||||
|
||||
|
@ -2222,7 +2223,7 @@ bool Event::GetBoolean( int pos )
|
|||
GetConstString
|
||||
=======================
|
||||
*/
|
||||
int Event::GetConstString( int pos )
|
||||
const_str Event::GetConstString( int pos )
|
||||
{
|
||||
ScriptVariable& variable = GetValue( pos );
|
||||
|
||||
|
@ -3439,13 +3440,13 @@ void Listener::CancelWaiting( const_str name )
|
|||
}
|
||||
}
|
||||
|
||||
if( !DisableListenerNotify )
|
||||
for (int i = stoppedListeners.NumObjects(); i > 0; i--)
|
||||
{
|
||||
for( int i = stoppedListeners.NumObjects(); i > 0; i-- )
|
||||
{
|
||||
Listener *listener = stoppedListeners.ObjectAt( i );
|
||||
Listener *listener = stoppedListeners.ObjectAt(i);
|
||||
|
||||
if( listener )
|
||||
if (listener)
|
||||
{
|
||||
if (!DisableListenerNotify)
|
||||
{
|
||||
listener->StoppedNotify();
|
||||
}
|
||||
|
@ -3480,17 +3481,16 @@ void Listener::CancelWaitingAll()
|
|||
m_WaitForList = NULL;
|
||||
|
||||
if( !DisableListenerNotify )
|
||||
StoppedWaitFor(STRING_NULL, false );
|
||||
|
||||
for (int i = stoppedListeners.NumObjects(); i > 0; i--)
|
||||
{
|
||||
StoppedWaitFor( 0, false );
|
||||
Listener *listener = stoppedListeners.ObjectAt(i);
|
||||
|
||||
for( int i = stoppedListeners.NumObjects(); i > 0; i-- )
|
||||
if (listener)
|
||||
{
|
||||
Listener *listener = stoppedListeners.ObjectAt( i );
|
||||
|
||||
if( listener )
|
||||
{
|
||||
if (!DisableListenerNotify)
|
||||
listener->StoppedNotify();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -358,7 +358,7 @@ public:
|
|||
|
||||
bool GetBoolean( int pos );
|
||||
|
||||
int GetConstString( int pos );
|
||||
const_str GetConstString( int pos );
|
||||
|
||||
Entity *GetEntity( int pos );
|
||||
|
||||
|
|
|
@ -8996,6 +8996,16 @@ void ScriptThread::StoppedWaitFor( const_str name, bool bDeleting )
|
|||
}
|
||||
}
|
||||
|
||||
ScriptThread *ScriptThread::CreateThreadInternal(const ScriptVariable& label)
|
||||
{
|
||||
return m_ScriptVM->GetScriptClass()->CreateThreadInternal(label);
|
||||
}
|
||||
|
||||
ScriptThread * ScriptThread::CreateScriptInternal(const ScriptVariable & label)
|
||||
{
|
||||
return m_ScriptVM->GetScriptClass()->CreateScriptInternal(label);
|
||||
}
|
||||
|
||||
void ScriptThread::Pause()
|
||||
{
|
||||
Stop();
|
||||
|
@ -9018,35 +9028,27 @@ void ScriptThread::Stop( void )
|
|||
|
||||
void ScriptThread::Wait( float time )
|
||||
{
|
||||
Stop();
|
||||
|
||||
m_ScriptVM->m_ThreadState = THREAD_WAITING;
|
||||
|
||||
Director.AddTiming( this, time );
|
||||
StartTiming(time);
|
||||
m_ScriptVM->Suspend();
|
||||
}
|
||||
|
||||
void ScriptThread::StartTiming(float time)
|
||||
{
|
||||
if (m_ScriptVM->ThreadState() == THREAD_WAITING)
|
||||
{
|
||||
m_ScriptVM->m_ThreadState = THREAD_RUNNING;
|
||||
Director.RemoveTiming(this);
|
||||
}
|
||||
else if (m_ScriptVM->ThreadState() == THREAD_SUSPENDED)
|
||||
{
|
||||
m_ScriptVM->m_ThreadState = THREAD_RUNNING;
|
||||
CancelWaitingAll();
|
||||
}
|
||||
Stop();
|
||||
|
||||
m_ScriptVM->m_ThreadState = THREAD_WAITING;
|
||||
|
||||
if (time < 0)
|
||||
{
|
||||
time = 0;
|
||||
}
|
||||
|
||||
Director.AddTiming(this, time);
|
||||
}
|
||||
|
||||
void ScriptThread::StartTiming(void)
|
||||
{
|
||||
StartTiming(level.inttime);
|
||||
StartTiming(0);//start timing now
|
||||
}
|
||||
|
||||
CLASS_DECLARATION( Listener, ScriptThread, NULL )
|
||||
|
|
|
@ -199,11 +199,13 @@ public:
|
|||
void operator delete( void *ptr );
|
||||
#endif
|
||||
|
||||
virtual void Archive( Archiver &arc );
|
||||
virtual void Archive( Archiver &arc ) override;
|
||||
void ArchiveInternal( Archiver& arc );
|
||||
virtual void StartedWaitFor( void );
|
||||
virtual void StoppedNotify( void );
|
||||
virtual void StoppedWaitFor( const_str name, bool bDeleting );
|
||||
virtual void StartedWaitFor( void ) override;
|
||||
virtual void StoppedNotify( void ) override;
|
||||
virtual void StoppedWaitFor( const_str name, bool bDeleting ) override;
|
||||
virtual ScriptThread *CreateThreadInternal(const ScriptVariable& label) override;
|
||||
virtual ScriptThread *CreateScriptInternal(const ScriptVariable& label) override;
|
||||
|
||||
ScriptThread();
|
||||
ScriptThread( ScriptClass *scriptClass, unsigned char *pCodePos );
|
||||
|
|
|
@ -1444,7 +1444,7 @@ void ScriptVariable::setConstArrayValue( ScriptVariable *pVar, unsigned int size
|
|||
|
||||
#ifndef NO_SCRIPTENGINE
|
||||
|
||||
int ScriptVariable::constStringValue( void ) const
|
||||
const_str ScriptVariable::constStringValue( void ) const
|
||||
{
|
||||
if( GetType() == VARIABLE_CONSTSTRING )
|
||||
{
|
||||
|
@ -1663,9 +1663,7 @@ void ScriptVariable::operator*=( const ScriptVariable& value )
|
|||
break;
|
||||
|
||||
case VARIABLE_VECTOR + VARIABLE_VECTOR * VARIABLE_MAX: // ( vector ) * ( vector )
|
||||
m_data.vectorValue[ 0 ] = m_data.vectorValue[ 0 ] * value.m_data.vectorValue[ 0 ];
|
||||
m_data.vectorValue[ 1 ] = m_data.vectorValue[ 1 ] * value.m_data.vectorValue[ 1 ];
|
||||
m_data.vectorValue[ 2 ] = m_data.vectorValue[ 2 ] * value.m_data.vectorValue[ 2 ];
|
||||
setFloatValue(DotProduct(m_data.vectorValue, value.m_data.vectorValue));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -205,7 +205,7 @@ public:
|
|||
void setConstArrayValue( ScriptVariable *pVar, unsigned int size );
|
||||
|
||||
#ifndef NO_SCRIPTENGINE
|
||||
int constStringValue( void ) const;
|
||||
const_str constStringValue( void ) const;
|
||||
void setConstStringValue( const_str s );
|
||||
#endif
|
||||
|
||||
|
|
|
@ -120,7 +120,8 @@ public:
|
|||
float length( void ) const;
|
||||
float lengthfast( void ) const;
|
||||
float lengthSquared( void ) const;
|
||||
float lengthXY( bool squared = false ) const;
|
||||
float lengthXY() const;
|
||||
float lengthXYSquared() const;
|
||||
float normalize( void );
|
||||
void normalizefast( void );
|
||||
void EulerNormalize( void );
|
||||
|
@ -548,9 +549,25 @@ inline float Vector::lengthfast( void ) const
|
|||
//
|
||||
// Returns: float - length of the vector in the xy plane
|
||||
//----------------------------------------------------------------
|
||||
inline float Vector::lengthXY( bool squared ) const
|
||||
inline float Vector::lengthXY() const
|
||||
{
|
||||
return squared ? (x * x) + (y * y) : sqrt(( x * x ) + ( y * y ));
|
||||
return sqrt(( x * x ) + ( y * y ));
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------
|
||||
// Name: lengthXYSquared
|
||||
// Class: Vector
|
||||
//
|
||||
// Description: Returns length of the vector squared (using only the x
|
||||
// and y components
|
||||
//
|
||||
// Parameters: None
|
||||
//
|
||||
// Returns: float - squared length of the vector in the xy plane
|
||||
//----------------------------------------------------------------
|
||||
inline float Vector::lengthXYSquared() const
|
||||
{
|
||||
return ( x * x ) + ( y * y );
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------
|
||||
|
|
Binary file not shown.
BIN
other/RyBack/ida/gamex86.dll
Normal file
BIN
other/RyBack/ida/gamex86.dll
Normal file
Binary file not shown.
BIN
other/RyBack/ida/gamex86.idb
Normal file
BIN
other/RyBack/ida/gamex86.idb
Normal file
Binary file not shown.
|
@ -3465,17 +3465,17 @@ typedef struct spawnsort_s {
|
|||
} spawnsort_t;
|
||||
|
||||
typedef struct SafePtr2_s {
|
||||
struct Class *ptr;
|
||||
void *_vptr$;
|
||||
struct SafePtr2_s *prev;
|
||||
struct SafePtr2_s *next;
|
||||
void *_vptr$;
|
||||
void *ptr;
|
||||
} SafePtr2_t, SafePtr;
|
||||
|
||||
typedef struct SentientSPtr_s {
|
||||
struct Class *ptr;
|
||||
void *_vptr$;
|
||||
struct SafePtr2_s *prev;
|
||||
struct SafePtr2_s *next;
|
||||
Sentient_t *_vptr$;
|
||||
Sentient_t *ptr;
|
||||
} SentientSPtr_t;
|
||||
|
||||
typedef struct WeaponSPtr_s {
|
||||
|
@ -3486,10 +3486,10 @@ typedef struct WeaponSPtr_s {
|
|||
} WeaponSPtr_t;
|
||||
|
||||
typedef struct SentientSPtr2_s {
|
||||
struct Sentient_t *ptr;
|
||||
void *_vptr$;
|
||||
struct SafePtr2_s *prev;
|
||||
struct SafePtr2_s *next;
|
||||
Sentient_t *_vptr$;
|
||||
Sentient_t *ptr;
|
||||
} SentientSPtr2_t;
|
||||
|
||||
|
||||
|
@ -3595,6 +3595,11 @@ typedef struct con_map_enum_s {
|
|||
con_set_enum_t m_Set_Enum;
|
||||
} con_map_enum_t;
|
||||
|
||||
typedef struct con_timer_Element_s {
|
||||
Class_t *obj;
|
||||
int inttime;
|
||||
} con_timer_Element_t;
|
||||
|
||||
typedef struct con_timer_s {
|
||||
Class_t baseClass;
|
||||
Container_t m_Elements;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue