Compare commits
2 Commits
08cac51d5f
...
7e8d1aacdb
Author | SHA1 | Date |
---|---|---|
Marco Cawthorne | 7e8d1aacdb | |
Marco Cawthorne | 31b88f63f2 |
|
@ -51,6 +51,7 @@ Bot_AddBot_f(string botName)
|
||||||
for (i = 0i; i < g_botScriptCount; i++) {
|
for (i = 0i; i < g_botScriptCount; i++) {
|
||||||
if (g_bots[i].m_strName == botName) {
|
if (g_bots[i].m_strName == botName) {
|
||||||
foundID = i;
|
foundID = i;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -126,6 +127,10 @@ BotProfile_Init(void)
|
||||||
botScript_t currentDef;
|
botScript_t currentDef;
|
||||||
int braceDepth = 0i;
|
int braceDepth = 0i;
|
||||||
|
|
||||||
|
currentDef.m_strName = "";
|
||||||
|
currentDef.m_strNetName = "";
|
||||||
|
currentDef.m_strExtra = "";
|
||||||
|
|
||||||
g_botScriptCount = 0i;
|
g_botScriptCount = 0i;
|
||||||
|
|
||||||
if (autocvar(bot_enable, 1) == 0) {
|
if (autocvar(bot_enable, 1) == 0) {
|
||||||
|
|
|
@ -206,11 +206,12 @@ func_rotating::Blocked(entity eBlocker)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (other.takedamage == DAMAGE_YES) {
|
/* this can be crushed */
|
||||||
|
if (eBlocker.takedamage != DAMAGE_NO) {
|
||||||
/* this is to work around a Q1 BSP bug. don't attempt to damage our
|
/* this is to work around a Q1 BSP bug. don't attempt to damage our
|
||||||
* target unless we're absolutely sure he's within the bounds of the entity */
|
* target unless we're absolutely sure he's within the bounds of the entity */
|
||||||
if (WithinBounds(other))
|
if (WithinBounds(eBlocker))
|
||||||
Damage_Apply(other, this, m_flDamage, 0, DMG_CRUSH);
|
Damage_Apply(eBlocker, this, m_flDamage, 0, DMG_CRUSH);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -100,7 +100,7 @@ trigger_monsterjump::Touch(entity touchingEntity)
|
||||||
{
|
{
|
||||||
vector targetVelocity = g_vec_null;
|
vector targetVelocity = g_vec_null;
|
||||||
|
|
||||||
if (!touchingEntity.flags & FL_MONSTER) {
|
if (!(touchingEntity.flags & FL_MONSTER)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -70,6 +70,7 @@ public:
|
||||||
virtual void OnRemoveEntity(void);
|
virtual void OnRemoveEntity(void);
|
||||||
virtual void ReceiveEntity(float,float);
|
virtual void ReceiveEntity(float,float);
|
||||||
virtual void RendererRestarted(void);
|
virtual void RendererRestarted(void);
|
||||||
|
nonvirtual void LightChanged(float);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -59,8 +59,12 @@ public:
|
||||||
void env_funnel(void);
|
void env_funnel(void);
|
||||||
|
|
||||||
#ifdef SERVER
|
#ifdef SERVER
|
||||||
|
|
||||||
virtual void Respawn(void);
|
virtual void Respawn(void);
|
||||||
virtual void SpawnKey(string,string);
|
virtual void SpawnKey(string,string);
|
||||||
|
virtual void Save(float);
|
||||||
|
virtual void Restore(string, string);
|
||||||
|
|
||||||
virtual void EvaluateEntity(void);
|
virtual void EvaluateEntity(void);
|
||||||
virtual float SendEntity(entity,float);
|
virtual float SendEntity(entity,float);
|
||||||
virtual void Trigger(entity, triggermode_t);
|
virtual void Trigger(entity, triggermode_t);
|
||||||
|
@ -69,6 +73,7 @@ public:
|
||||||
virtual float predraw(void);
|
virtual float predraw(void);
|
||||||
virtual void ReceiveEntity(float,float);
|
virtual void ReceiveEntity(float,float);
|
||||||
virtual void RendererRestarted(void);
|
virtual void RendererRestarted(void);
|
||||||
|
nonvirtual void RenderGlow(vector, vector, float);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -296,7 +296,6 @@ env_instructor_hint::postdraw(void)
|
||||||
vector delta;
|
vector delta;
|
||||||
vector p2 = g_view.GetCameraOrigin();
|
vector p2 = g_view.GetCameraOrigin();
|
||||||
vector ang = g_view.GetCameraAngle();
|
vector ang = g_view.GetCameraAngle();
|
||||||
vector outputValue;
|
|
||||||
float leftValue;
|
float leftValue;
|
||||||
float upValue;
|
float upValue;
|
||||||
|
|
||||||
|
|
|
@ -98,6 +98,8 @@ public:
|
||||||
virtual float SendEntity(entity,float);
|
virtual float SendEntity(entity,float);
|
||||||
virtual void Trigger(entity, triggermode_t);
|
virtual void Trigger(entity, triggermode_t);
|
||||||
virtual void Input(entity, string, string);
|
virtual void Input(entity, string, string);
|
||||||
|
virtual void Save(float);
|
||||||
|
virtual void Restore(string, string);
|
||||||
|
|
||||||
nonvirtual void DisableSmoker(void);
|
nonvirtual void DisableSmoker(void);
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -470,7 +470,10 @@ NSGameRules::DamageRadius(vector org, entity attacker, float dmg, float r, bool
|
||||||
float diff;
|
float diff;
|
||||||
vector pos;
|
vector pos;
|
||||||
|
|
||||||
for (entity e = world; (e = findfloat(e, ::takedamage, DAMAGE_YES));) {
|
for (entity e = world; (e = nextent(e));) {
|
||||||
|
if (e.takedamage == DAMAGE_NO)
|
||||||
|
continue;
|
||||||
|
|
||||||
pos[0] = e.absmin[0] + (0.5 * (e.absmax[0] - e.absmin[0]));
|
pos[0] = e.absmin[0] + (0.5 * (e.absmax[0] - e.absmin[0]));
|
||||||
pos[1] = e.absmin[1] + (0.5 * (e.absmax[1] - e.absmin[1]));
|
pos[1] = e.absmin[1] + (0.5 * (e.absmax[1] - e.absmin[1]));
|
||||||
pos[2] = e.absmin[2] + (0.5 * (e.absmax[2] - e.absmin[2]));
|
pos[2] = e.absmin[2] + (0.5 * (e.absmax[2] - e.absmin[2]));
|
||||||
|
|
|
@ -180,7 +180,7 @@ NSTraceAttack::_FireSingle(vector vecPos, vector vecAngles, float flDamage, floa
|
||||||
_FireSingle(trace_endpos + (v_forward * 2), vecAngles, flDamage / 2, flRange);
|
_FireSingle(trace_endpos + (v_forward * 2), vecAngles, flDamage / 2, flRange);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (trace_ent.takedamage == DAMAGE_YES && trace_ent.iBleeds) {
|
if (trace_ent.takedamage != DAMAGE_NO && trace_ent.iBleeds) {
|
||||||
Sound_Play(trace_ent, CHAN_BODY, "damage_bullet.hit");
|
Sound_Play(trace_ent, CHAN_BODY, "damage_bullet.hit");
|
||||||
|
|
||||||
#ifdef CSTRIKE
|
#ifdef CSTRIKE
|
||||||
|
@ -232,7 +232,7 @@ NSTraceAttack::_FireSingle(vector vecPos, vector vecAngles, float flDamage, floa
|
||||||
}
|
}
|
||||||
|
|
||||||
/* combine them into one single Damage_Apply call later */
|
/* combine them into one single Damage_Apply call later */
|
||||||
if (trace_ent.takedamage == DAMAGE_YES) {
|
if (trace_ent.takedamage != DAMAGE_NO) {
|
||||||
if (trace_ent != m_eMultiTarget) {
|
if (trace_ent != m_eMultiTarget) {
|
||||||
_ApplyDamage();
|
_ApplyDamage();
|
||||||
m_eMultiTarget = (NSSurfacePropEntity)trace_ent;
|
m_eMultiTarget = (NSSurfacePropEntity)trace_ent;
|
||||||
|
@ -269,16 +269,22 @@ void
|
||||||
NSTraceAttack::Fire(void)
|
NSTraceAttack::Fire(void)
|
||||||
{
|
{
|
||||||
vector vecDir;
|
vector vecDir;
|
||||||
makevectors(m_eOwner.v_angle);
|
vector ownerAngle;
|
||||||
|
vector ownerDir;
|
||||||
|
|
||||||
m_eMultiTarget = __NULL__;
|
m_eMultiTarget = __NULL__;
|
||||||
m_iMultiValue = 0;
|
m_iMultiValue = 0;
|
||||||
|
makevectors(m_eOwner.v_angle);
|
||||||
|
ownerAngle = v_forward;
|
||||||
|
ownerDir = aim(m_eOwner, 100000);
|
||||||
|
|
||||||
while (m_iShots > 0) {
|
while (m_iShots > 0) {
|
||||||
|
/* use cached value */
|
||||||
|
v_forward = ownerAngle;
|
||||||
|
|
||||||
if (m_eOwner.flags & FL_CLIENT) {
|
if (m_eOwner.flags & FL_CLIENT) {
|
||||||
vecDir = aim(m_eOwner, 100000);
|
vecDir = ownerDir;
|
||||||
} else {
|
} else {
|
||||||
makevectors(m_eOwner.v_angle);
|
|
||||||
vecDir = v_forward;
|
vecDir = v_forward;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -107,6 +107,7 @@ NSMonster::TriggerTargets(void)
|
||||||
{
|
{
|
||||||
for (entity f = world; (f = find(f, ::targetname, m_strTriggerTarget));) {
|
for (entity f = world; (f = find(f, ::targetname, m_strTriggerTarget));) {
|
||||||
NSTrigger trigger = (NSTrigger)f;
|
NSTrigger trigger = (NSTrigger)f;
|
||||||
|
|
||||||
if (trigger.Trigger != __NULL__) {
|
if (trigger.Trigger != __NULL__) {
|
||||||
trigger.Trigger(this, TRIG_TOGGLE);
|
trigger.Trigger(this, TRIG_TOGGLE);
|
||||||
}
|
}
|
||||||
|
@ -206,7 +207,6 @@ void
|
||||||
NSMonster::Restore(string strKey, string strValue)
|
NSMonster::Restore(string strKey, string strValue)
|
||||||
{
|
{
|
||||||
switch (strKey) {
|
switch (strKey) {
|
||||||
|
|
||||||
case "m_flHeadYaw":
|
case "m_flHeadYaw":
|
||||||
m_flHeadYaw = ReadFloat(strValue);
|
m_flHeadYaw = ReadFloat(strValue);
|
||||||
break;
|
break;
|
||||||
|
@ -494,9 +494,6 @@ NSMonster::ActPlay(float actName)
|
||||||
void
|
void
|
||||||
NSMonster::AnimPlay(float seq)
|
NSMonster::AnimPlay(float seq)
|
||||||
{
|
{
|
||||||
/* forces a client-side update */
|
|
||||||
SetSendFlags(MONFL_CHANGED_FRAME);
|
|
||||||
|
|
||||||
SetFrame(seq);
|
SetFrame(seq);
|
||||||
m_flAnimTime = time + frameduration(modelindex, seq);
|
m_flAnimTime = time + frameduration(modelindex, seq);
|
||||||
}
|
}
|
||||||
|
@ -592,7 +589,11 @@ NSMonster::AlertNearby(void)
|
||||||
if (m_eEnemy == __NULL__)
|
if (m_eEnemy == __NULL__)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for (entity w = world; (w = findfloat(w, ::takedamage, DAMAGE_YES));) {
|
/* iterate over all living things. */
|
||||||
|
for (entity w = world; (w = nextent(w));) {
|
||||||
|
if (w.takedamage == DAMAGE_NO)
|
||||||
|
continue;
|
||||||
|
|
||||||
if (w.classname != classname)
|
if (w.classname != classname)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
@ -721,12 +722,18 @@ NSMonster::SeeThink(void)
|
||||||
if (m_iFlags & MSF_HORDE) {
|
if (m_iFlags & MSF_HORDE) {
|
||||||
m_eEnemy = NSMonster_FindClosestPlayer(this);
|
m_eEnemy = NSMonster_FindClosestPlayer(this);
|
||||||
|
|
||||||
if (m_eEnemy)
|
if (m_eEnemy) {
|
||||||
RouteToPosition(m_eEnemy.origin);
|
RouteToPosition(m_eEnemy.origin);
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (entity w = world; (w = findfloat(w, ::takedamage, DAMAGE_YES));) {
|
/* iterate through all players, monsters. */
|
||||||
|
for (entity w = world; (w = nextent(w));) {
|
||||||
|
if (w.takedamage == DAMAGE_NO)
|
||||||
|
continue;
|
||||||
|
|
||||||
/* check if 'w' could be a valid enemy */
|
/* check if 'w' could be a valid enemy */
|
||||||
if (IsValidEnemy(w) == false)
|
if (IsValidEnemy(w) == false)
|
||||||
continue;
|
continue;
|
||||||
|
@ -937,7 +944,7 @@ NSMonster::AttackMelee(void)
|
||||||
float meleeWait = Skill_GetDefValue(EntityDef_GetKeyValue(m_defMelee, "wait"));
|
float meleeWait = Skill_GetDefValue(EntityDef_GetKeyValue(m_defMelee, "wait"));
|
||||||
traceline(origin, m_eEnemy.origin, FALSE, this);
|
traceline(origin, m_eEnemy.origin, FALSE, this);
|
||||||
|
|
||||||
if (trace_fraction >= 1.0 || trace_ent.takedamage != DAMAGE_YES) {
|
if (trace_fraction >= 1.0 || trace_ent.takedamage == DAMAGE_NO) {
|
||||||
StartSoundDef(m_sndMeleeAttackMiss, CHAN_WEAPON, true);
|
StartSoundDef(m_sndMeleeAttackMiss, CHAN_WEAPON, true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1536,7 +1543,7 @@ NSMonster::Touch(entity eToucher)
|
||||||
/* leap test, are we no longer on the ground? */
|
/* leap test, are we no longer on the ground? */
|
||||||
if (m_flLeapDamage && m_bLeapAttacked == false)
|
if (m_flLeapDamage && m_bLeapAttacked == false)
|
||||||
if (HasFlags(FL_ONGROUND) == false) {
|
if (HasFlags(FL_ONGROUND) == false) {
|
||||||
if (eToucher.takedamage == DAMAGE_YES) {
|
if (eToucher.takedamage != DAMAGE_NO) {
|
||||||
Damage_Apply(eToucher, this, m_flLeapDamage, WEAPON_NONE, DMG_BLUNT);
|
Damage_Apply(eToucher, this, m_flLeapDamage, WEAPON_NONE, DMG_BLUNT);
|
||||||
m_bLeapAttacked = true;
|
m_bLeapAttacked = true;
|
||||||
}
|
}
|
||||||
|
@ -1799,7 +1806,7 @@ NSMonster::Respawn(void)
|
||||||
v_angle[2] = Math_FixDelta(v_angle[2]);
|
v_angle[2] = Math_FixDelta(v_angle[2]);
|
||||||
|
|
||||||
AddFlags(FL_MONSTER);
|
AddFlags(FL_MONSTER);
|
||||||
SetTakedamage(DAMAGE_YES);
|
SetTakedamage(DAMAGE_AIM);
|
||||||
SetVelocity([0,0,0]);
|
SetVelocity([0,0,0]);
|
||||||
SetState(MONSTER_IDLE);
|
SetState(MONSTER_IDLE);
|
||||||
SetHealth(base_health);
|
SetHealth(base_health);
|
||||||
|
@ -2270,7 +2277,10 @@ NSMonster_AlertEnemyAlliance(vector pos, float radius, int alliance)
|
||||||
if (autocvar_ai_alertdebug)
|
if (autocvar_ai_alertdebug)
|
||||||
NSMonster_Log("AI alert from %v with radius %f and alliance %i\n", pos, radius, alliance);
|
NSMonster_Log("AI alert from %v with radius %f and alliance %i\n", pos, radius, alliance);
|
||||||
|
|
||||||
for (entity w = world; (w = findfloat(w, ::takedamage, DAMAGE_YES));) {
|
for (entity w = world; (w = nextent(w));) {
|
||||||
|
if (w.takedamage == DAMAGE_NO)
|
||||||
|
continue;
|
||||||
|
|
||||||
/* out of radius */
|
/* out of radius */
|
||||||
if (vlen(pos - w.origin) > radius) {
|
if (vlen(pos - w.origin) > radius) {
|
||||||
continue;
|
continue;
|
||||||
|
|
|
@ -112,9 +112,12 @@ NSRenderableEntity::EvaluateEntity(void)
|
||||||
EVALUATE_VECTOR(origin, 0, RDENT_CHANGED_ORIGIN_X)
|
EVALUATE_VECTOR(origin, 0, RDENT_CHANGED_ORIGIN_X)
|
||||||
EVALUATE_VECTOR(origin, 1, RDENT_CHANGED_ORIGIN_Y)
|
EVALUATE_VECTOR(origin, 1, RDENT_CHANGED_ORIGIN_Y)
|
||||||
EVALUATE_VECTOR(origin, 2, RDENT_CHANGED_ORIGIN_Z)
|
EVALUATE_VECTOR(origin, 2, RDENT_CHANGED_ORIGIN_Z)
|
||||||
|
|
||||||
|
angles = Math_FixDeltaVector(angles);
|
||||||
EVALUATE_VECTOR(angles, 0, RDENT_CHANGED_ANGLES_X)
|
EVALUATE_VECTOR(angles, 0, RDENT_CHANGED_ANGLES_X)
|
||||||
EVALUATE_VECTOR(angles, 1, RDENT_CHANGED_ANGLES_Y)
|
EVALUATE_VECTOR(angles, 1, RDENT_CHANGED_ANGLES_Y)
|
||||||
EVALUATE_VECTOR(angles, 2, RDENT_CHANGED_ANGLES_Z)
|
EVALUATE_VECTOR(angles, 2, RDENT_CHANGED_ANGLES_Z)
|
||||||
|
|
||||||
EVALUATE_FIELD(modelindex, RDENT_CHANGED_MODELINDEX)
|
EVALUATE_FIELD(modelindex, RDENT_CHANGED_MODELINDEX)
|
||||||
EVALUATE_FIELD(colormap, RDENT_CHANGED_MODELINDEX)
|
EVALUATE_FIELD(colormap, RDENT_CHANGED_MODELINDEX)
|
||||||
EVALUATE_FIELD(solid, RDENT_CHANGED_SOLIDMOVETYPE)
|
EVALUATE_FIELD(solid, RDENT_CHANGED_SOLIDMOVETYPE)
|
||||||
|
|
|
@ -179,5 +179,4 @@ private:
|
||||||
|
|
||||||
#ifdef CLIENT
|
#ifdef CLIENT
|
||||||
void NSSurfacePropEntity_ReadEntity(bool);
|
void NSSurfacePropEntity_ReadEntity(bool);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -103,300 +103,6 @@ NSSurfacePropEntity::CanBleed(void)
|
||||||
return iBleeds;
|
return iBleeds;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
NETFIELD_BYTE,
|
|
||||||
NETFIELD_SHORT,
|
|
||||||
NETFIELD_FLOAT,
|
|
||||||
NETFIELD_INT,
|
|
||||||
NETFIELD_COORD,
|
|
||||||
NETFIELD_ANGLE,
|
|
||||||
NETFIELD_ENTITY,
|
|
||||||
NETFIELD_STRING
|
|
||||||
} nettype_t;
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
.variant field;
|
|
||||||
.variant field_net;
|
|
||||||
int changedflag;
|
|
||||||
__variant defaultvalue;
|
|
||||||
nettype_e type;
|
|
||||||
} netinfo_t;
|
|
||||||
|
|
||||||
netinfo_t n_NSSurfacePropEntity[] =
|
|
||||||
{
|
|
||||||
{origin[0], NSEntity::origin_net[0], SRFENT_CHANGED_ORIGIN_X, 0, NETFIELD_COORD},
|
|
||||||
{origin[1], NSEntity::origin_net[1], SRFENT_CHANGED_ORIGIN_Y, 0, NETFIELD_COORD},
|
|
||||||
{origin[2], NSEntity::origin_net[2], SRFENT_CHANGED_ORIGIN_Z, 0, NETFIELD_COORD},
|
|
||||||
{angles[0], NSEntity::angles_net[0], SRFENT_CHANGED_ANGLES_X, 0, NETFIELD_ANGLE},
|
|
||||||
{angles[1], NSEntity::angles_net[1], SRFENT_CHANGED_ANGLES_Y, 0, NETFIELD_ANGLE},
|
|
||||||
{angles[2], NSEntity::angles_net[2], SRFENT_CHANGED_ANGLES_Z, 0, NETFIELD_ANGLE},
|
|
||||||
{modelindex, NSEntity::modelindex_net, SRFENT_CHANGED_MODELINDEX, 0, NETFIELD_SHORT},
|
|
||||||
{solid, NSEntity::solid_net, SRFENT_CHANGED_SOLID, 0, NETFIELD_BYTE},
|
|
||||||
{movetype, NSEntity::movetype_net, SRFENT_CHANGED_MOVETYPE, 0, NETFIELD_BYTE},
|
|
||||||
{flags, NSEntity::flags_net, SRFENT_CHANGED_FLAGS, 0, NETFIELD_FLOAT},
|
|
||||||
{mins[0], NSEntity::mins_net[0], SRFENT_CHANGED_SIZE, 0, NETFIELD_SHORT},
|
|
||||||
{mins[1], NSEntity::mins_net[1], SRFENT_CHANGED_SIZE, 0, NETFIELD_SHORT},
|
|
||||||
{mins[2], NSEntity::mins_net[2], SRFENT_CHANGED_SIZE, 0, NETFIELD_SHORT},
|
|
||||||
{maxs[0], NSEntity::maxs_net[0], SRFENT_CHANGED_SIZE, 0, NETFIELD_SHORT},
|
|
||||||
{maxs[1], NSEntity::maxs_net[1], SRFENT_CHANGED_SIZE, 0, NETFIELD_SHORT},
|
|
||||||
{maxs[2], NSEntity::maxs_net[2], SRFENT_CHANGED_SIZE, 0, NETFIELD_SHORT},
|
|
||||||
{frame, NSRenderableEntity::frame_net, SRFENT_CHANGED_FRAME, 0, NETFIELD_SHORT},
|
|
||||||
{skin, NSRenderableEntity::skin_net, SRFENT_CHANGED_SKIN, 0, NETFIELD_BYTE},
|
|
||||||
{effects, NSRenderableEntity::effects_net, SRFENT_CHANGED_EFFECTS, 0, NETFIELD_SHORT},
|
|
||||||
{NSRenderableEntity::m_iBody, NSRenderableEntity::m_iBody_net, SRFENT_CHANGED_BODY, 0, NETFIELD_BYTE},
|
|
||||||
{scale, NSEntity::scale_net, SRFENT_CHANGED_SCALE, 0, NETFIELD_FLOAT},
|
|
||||||
{velocity[0], NSEntity::velocity_net[0], SRFENT_CHANGED_VELOCITY, 0, NETFIELD_ANGLE},
|
|
||||||
{velocity[1], NSEntity::velocity_net[1], SRFENT_CHANGED_VELOCITY, 0, NETFIELD_ANGLE},
|
|
||||||
{velocity[2], NSEntity::velocity_net[2], SRFENT_CHANGED_VELOCITY, 0, NETFIELD_ANGLE},
|
|
||||||
{NSRenderableEntity::m_iRenderMode, NSRenderableEntity::m_iRenderMode_net, SRFENT_CHANGED_RENDERMODE, 0, NETFIELD_BYTE},
|
|
||||||
{NSRenderableEntity::m_iRenderFX, NSRenderableEntity::m_iRenderFX_net, SRFENT_CHANGED_RENDERMODE, 0, NETFIELD_BYTE},
|
|
||||||
};
|
|
||||||
|
|
||||||
void
|
|
||||||
NSSurfacePropEntity::EvaluateEntity(void)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < n_NSSurfacePropEntity.length; i++) {
|
|
||||||
if (this.(n_NSSurfacePropEntity[i].field) != this.(n_NSSurfacePropEntity[i].field_net)) {
|
|
||||||
SetSendFlags(n_NSSurfacePropEntity[i].changedflag);
|
|
||||||
print(sprintf("uhh %i\n", i));
|
|
||||||
}
|
|
||||||
|
|
||||||
this.(n_NSSurfacePropEntity[i].field_net) = this.(n_NSSurfacePropEntity[i].field);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Make sure StartFrame calls this */
|
|
||||||
float
|
|
||||||
NSSurfacePropEntity::SendEntity(entity ePEnt, float fChanged)
|
|
||||||
{
|
|
||||||
if (!modelindex)
|
|
||||||
return (0);
|
|
||||||
|
|
||||||
if (clienttype(ePEnt) != CLIENTTYPE_REAL)
|
|
||||||
return (0);
|
|
||||||
|
|
||||||
WriteByte(MSG_ENTITY, ENT_SURFPROP);
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
if (fChanged == 0xFFFFFF) {
|
|
||||||
for (int i = 0; i < n_NSSurfacePropEntity.length; i++) {
|
|
||||||
/* unflag everything that's the default value */
|
|
||||||
if (this.(n_NSSurfacePropEntity[i].field) == this.(n_NSSurfacePropEntity[i].defaultvalue))
|
|
||||||
fChanged &= ~n_NSSurfacePropEntity[i].changedflag;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* broadcast how much data is expected to be read */
|
|
||||||
WriteFloat(MSG_ENTITY, fChanged);
|
|
||||||
|
|
||||||
for (int i = 0; i < n_NSSurfacePropEntity.length; i++) {
|
|
||||||
if (fChanged & n_NSSurfacePropEntity[i].changedflag) {
|
|
||||||
switch (n_NSSurfacePropEntity[i].type) {
|
|
||||||
case NETFIELD_BYTE:
|
|
||||||
WriteByte(MSG_ENTITY, this.(n_NSSurfacePropEntity[i].field));
|
|
||||||
break;
|
|
||||||
case NETFIELD_SHORT:
|
|
||||||
WriteShort(MSG_ENTITY, this.(n_NSSurfacePropEntity[i].field));
|
|
||||||
break;
|
|
||||||
case NETFIELD_FLOAT:
|
|
||||||
WriteFloat(MSG_ENTITY, this.(n_NSSurfacePropEntity[i].field));
|
|
||||||
break;
|
|
||||||
case NETFIELD_INT:
|
|
||||||
WriteInt(MSG_ENTITY, this.(n_NSSurfacePropEntity[i].field));
|
|
||||||
break;
|
|
||||||
case NETFIELD_COORD:
|
|
||||||
WriteCoord(MSG_ENTITY, this.(n_NSSurfacePropEntity[i].field));
|
|
||||||
break;
|
|
||||||
case NETFIELD_ANGLE:
|
|
||||||
WriteShort(MSG_ENTITY, this.(n_NSSurfacePropEntity[i].field) * 32767 / 360);
|
|
||||||
break;
|
|
||||||
case NETFIELD_ENTITY:
|
|
||||||
WriteEntity(MSG_ENTITY, this.(n_NSSurfacePropEntity[i].field));
|
|
||||||
break;
|
|
||||||
case NETFIELD_STRING:
|
|
||||||
WriteString(MSG_ENTITY, this.(n_NSSurfacePropEntity[i].field));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return (1);
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
|
|
||||||
void
|
|
||||||
NSSurfacePropEntity::EvaluateEntity(void)
|
|
||||||
{
|
|
||||||
EVALUATE_VECTOR(origin, 0, SRFENT_CHANGED_ORIGIN_X)
|
|
||||||
EVALUATE_VECTOR(origin, 1, SRFENT_CHANGED_ORIGIN_Y)
|
|
||||||
EVALUATE_VECTOR(origin, 2, SRFENT_CHANGED_ORIGIN_Z)
|
|
||||||
EVALUATE_VECTOR(angles, 0, SRFENT_CHANGED_ANGLES_X)
|
|
||||||
EVALUATE_VECTOR(angles, 1, SRFENT_CHANGED_ANGLES_Y)
|
|
||||||
EVALUATE_VECTOR(angles, 2, SRFENT_CHANGED_ANGLES_Z)
|
|
||||||
EVALUATE_FIELD(modelindex, SRFENT_CHANGED_MODELINDEX)
|
|
||||||
EVALUATE_FIELD(solid, SRFENT_CHANGED_SOLIDMOVETYPE)
|
|
||||||
EVALUATE_FIELD(movetype, SRFENT_CHANGED_SOLIDMOVETYPE)
|
|
||||||
EVALUATE_FIELD(flags, SRFENT_CHANGED_FLAGS)
|
|
||||||
EVALUATE_VECTOR(mins, 0, SRFENT_CHANGED_SIZE)
|
|
||||||
EVALUATE_VECTOR(mins, 1, SRFENT_CHANGED_SIZE)
|
|
||||||
EVALUATE_VECTOR(mins, 2, SRFENT_CHANGED_SIZE)
|
|
||||||
EVALUATE_VECTOR(maxs, 0, SRFENT_CHANGED_SIZE)
|
|
||||||
EVALUATE_VECTOR(maxs, 1, SRFENT_CHANGED_SIZE)
|
|
||||||
EVALUATE_VECTOR(maxs, 2, SRFENT_CHANGED_SIZE)
|
|
||||||
EVALUATE_FIELD(frame, SRFENT_CHANGED_FRAME)
|
|
||||||
EVALUATE_FIELD(skin, SRFENT_CHANGED_SKIN)
|
|
||||||
EVALUATE_FIELD(effects, SRFENT_CHANGED_EFFECTS)
|
|
||||||
EVALUATE_FIELD(m_iBody, SRFENT_CHANGED_BODY)
|
|
||||||
EVALUATE_FIELD(scale, SRFENT_CHANGED_SCALE)
|
|
||||||
EVALUATE_VECTOR(m_vecAxialScale, 0, SRFENT_CHANGED_SCALE)
|
|
||||||
EVALUATE_VECTOR(m_vecAxialScale, 1, SRFENT_CHANGED_SCALE)
|
|
||||||
EVALUATE_VECTOR(m_vecAxialScale, 2, SRFENT_CHANGED_SCALE)
|
|
||||||
EVALUATE_VECTOR(velocity, 0, SRFENT_CHANGED_VELOCITY)
|
|
||||||
EVALUATE_VECTOR(velocity, 1, SRFENT_CHANGED_VELOCITY)
|
|
||||||
EVALUATE_VECTOR(velocity, 2, SRFENT_CHANGED_VELOCITY)
|
|
||||||
EVALUATE_VECTOR(avelocity, 0, SRFENT_CHANGED_ANGULARVELOCITY)
|
|
||||||
EVALUATE_VECTOR(avelocity, 1, SRFENT_CHANGED_ANGULARVELOCITY)
|
|
||||||
EVALUATE_VECTOR(avelocity, 2, SRFENT_CHANGED_ANGULARVELOCITY)
|
|
||||||
EVALUATE_FIELD(m_iRenderMode, SRFENT_CHANGED_RENDERMODE)
|
|
||||||
EVALUATE_FIELD(m_iRenderFX, SRFENT_CHANGED_RENDERMODE)
|
|
||||||
EVALUATE_VECTOR(m_vecRenderColor, 0, SRFENT_CHANGED_RENDERCOLOR)
|
|
||||||
EVALUATE_VECTOR(m_vecRenderColor, 1, SRFENT_CHANGED_RENDERCOLOR)
|
|
||||||
EVALUATE_VECTOR(m_vecRenderColor, 2, SRFENT_CHANGED_RENDERCOLOR)
|
|
||||||
EVALUATE_FIELD(m_flRenderAmt, SRFENT_CHANGED_RENDERAMT)
|
|
||||||
EVALUATE_FIELD(m_flBoneControl1, SRFENT_CHANGED_CONTROLLER)
|
|
||||||
EVALUATE_FIELD(m_flBoneControl2, SRFENT_CHANGED_CONTROLLER)
|
|
||||||
EVALUATE_FIELD(m_flBoneControl3, SRFENT_CHANGED_CONTROLLER)
|
|
||||||
EVALUATE_FIELD(m_flBoneControl4, SRFENT_CHANGED_CONTROLLER)
|
|
||||||
EVALUATE_FIELD(m_flBoneControl5, SRFENT_CHANGED_CONTROLLER)
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Make sure StartFrame calls this */
|
|
||||||
float
|
|
||||||
NSSurfacePropEntity::SendEntity(entity ePEnt, float flChanged)
|
|
||||||
{
|
|
||||||
if (!modelindex)
|
|
||||||
return (0);
|
|
||||||
|
|
||||||
if (clienttype(ePEnt) != CLIENTTYPE_REAL)
|
|
||||||
return (0);
|
|
||||||
|
|
||||||
WriteByte(MSG_ENTITY, ENT_SURFPROP);
|
|
||||||
|
|
||||||
/* broadcast how much data is expected to be read */
|
|
||||||
WriteFloat(MSG_ENTITY, flChanged);
|
|
||||||
SENDENTITY_COORD(origin[0], SRFENT_CHANGED_ORIGIN_X)
|
|
||||||
SENDENTITY_COORD(origin[1], SRFENT_CHANGED_ORIGIN_Y)
|
|
||||||
SENDENTITY_COORD(origin[2], SRFENT_CHANGED_ORIGIN_Z)
|
|
||||||
SENDENTITY_ANGLE(angles[0], SRFENT_CHANGED_ANGLES_X)
|
|
||||||
SENDENTITY_ANGLE(angles[1], SRFENT_CHANGED_ANGLES_Y)
|
|
||||||
SENDENTITY_ANGLE(angles[2], SRFENT_CHANGED_ANGLES_Z)
|
|
||||||
SENDENTITY_SHORT(modelindex, SRFENT_CHANGED_MODELINDEX)
|
|
||||||
SENDENTITY_BYTE(solid, SRFENT_CHANGED_SOLIDMOVETYPE)
|
|
||||||
SENDENTITY_BYTE(movetype, SRFENT_CHANGED_SOLIDMOVETYPE)
|
|
||||||
SENDENTITY_INT(flags, SRFENT_CHANGED_FLAGS)
|
|
||||||
SENDENTITY_COORD(mins[0], SRFENT_CHANGED_SIZE)
|
|
||||||
SENDENTITY_COORD(mins[1], SRFENT_CHANGED_SIZE)
|
|
||||||
SENDENTITY_COORD(mins[2], SRFENT_CHANGED_SIZE)
|
|
||||||
SENDENTITY_COORD(maxs[0], SRFENT_CHANGED_SIZE)
|
|
||||||
SENDENTITY_COORD(maxs[1], SRFENT_CHANGED_SIZE)
|
|
||||||
SENDENTITY_COORD(maxs[2], SRFENT_CHANGED_SIZE)
|
|
||||||
SENDENTITY_BYTE(frame, SRFENT_CHANGED_FRAME)
|
|
||||||
SENDENTITY_FLOAT(skin, SRFENT_CHANGED_SKIN)
|
|
||||||
SENDENTITY_FLOAT(effects, SRFENT_CHANGED_EFFECTS)
|
|
||||||
SENDENTITY_SHORT(m_iBody, SRFENT_CHANGED_BODY)
|
|
||||||
SENDENTITY_FLOAT(scale, SRFENT_CHANGED_SCALE)
|
|
||||||
SENDENTITY_FLOAT(m_vecAxialScale[0], SRFENT_CHANGED_SCALE)
|
|
||||||
SENDENTITY_FLOAT(m_vecAxialScale[1], SRFENT_CHANGED_SCALE)
|
|
||||||
SENDENTITY_FLOAT(m_vecAxialScale[2], SRFENT_CHANGED_SCALE)
|
|
||||||
SENDENTITY_COORD(velocity[0], SRFENT_CHANGED_VELOCITY)
|
|
||||||
SENDENTITY_COORD(velocity[1], SRFENT_CHANGED_VELOCITY)
|
|
||||||
SENDENTITY_COORD(velocity[2], SRFENT_CHANGED_VELOCITY)
|
|
||||||
SENDENTITY_COORD(avelocity[0], SRFENT_CHANGED_ANGULARVELOCITY)
|
|
||||||
SENDENTITY_COORD(avelocity[1], SRFENT_CHANGED_ANGULARVELOCITY)
|
|
||||||
SENDENTITY_COORD(avelocity[2], SRFENT_CHANGED_ANGULARVELOCITY)
|
|
||||||
SENDENTITY_BYTE(m_iRenderMode, SRFENT_CHANGED_RENDERMODE)
|
|
||||||
SENDENTITY_BYTE(m_iRenderFX, SRFENT_CHANGED_RENDERMODE)
|
|
||||||
SENDENTITY_COLOR(m_vecRenderColor[0], SRFENT_CHANGED_RENDERCOLOR)
|
|
||||||
SENDENTITY_COLOR(m_vecRenderColor[1], SRFENT_CHANGED_RENDERCOLOR)
|
|
||||||
SENDENTITY_COLOR(m_vecRenderColor[2], SRFENT_CHANGED_RENDERCOLOR)
|
|
||||||
SENDENTITY_COLOR(m_flRenderAmt, SRFENT_CHANGED_RENDERAMT)
|
|
||||||
SENDENTITY_ANGLE(m_flBoneControl1, SRFENT_CHANGED_CONTROLLER)
|
|
||||||
SENDENTITY_ANGLE(m_flBoneControl2, SRFENT_CHANGED_CONTROLLER)
|
|
||||||
SENDENTITY_ANGLE(m_flBoneControl3, SRFENT_CHANGED_CONTROLLER)
|
|
||||||
SENDENTITY_ANGLE(m_flBoneControl4, SRFENT_CHANGED_CONTROLLER)
|
|
||||||
SENDENTITY_ANGLE(m_flBoneControl5, SRFENT_CHANGED_CONTROLLER)
|
|
||||||
|
|
||||||
return (1);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#else
|
|
||||||
/*
|
|
||||||
============
|
|
||||||
NSSurfacePropEntity::ReceiveEntity
|
|
||||||
============
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
NSSurfacePropEntity::ReceiveEntity(float flNew, float flChanged)
|
|
||||||
{
|
|
||||||
READENTITY_COORD(origin[0], SRFENT_CHANGED_ORIGIN_X)
|
|
||||||
READENTITY_COORD(origin[1], SRFENT_CHANGED_ORIGIN_Y)
|
|
||||||
READENTITY_COORD(origin[2], SRFENT_CHANGED_ORIGIN_Z)
|
|
||||||
READENTITY_ANGLE(angles[0], SRFENT_CHANGED_ANGLES_X)
|
|
||||||
READENTITY_ANGLE(angles[1], SRFENT_CHANGED_ANGLES_Y)
|
|
||||||
READENTITY_ANGLE(angles[2], SRFENT_CHANGED_ANGLES_Z)
|
|
||||||
READENTITY_SHORT(modelindex, SRFENT_CHANGED_MODELINDEX)
|
|
||||||
READENTITY_BYTE(solid, SRFENT_CHANGED_SOLIDMOVETYPE)
|
|
||||||
READENTITY_BYTE(movetype, SRFENT_CHANGED_SOLIDMOVETYPE)
|
|
||||||
READENTITY_INT(flags, SRFENT_CHANGED_FLAGS)
|
|
||||||
READENTITY_COORD(mins[0], SRFENT_CHANGED_SIZE)
|
|
||||||
READENTITY_COORD(mins[1], SRFENT_CHANGED_SIZE)
|
|
||||||
READENTITY_COORD(mins[2], SRFENT_CHANGED_SIZE)
|
|
||||||
READENTITY_COORD(maxs[0], SRFENT_CHANGED_SIZE)
|
|
||||||
READENTITY_COORD(maxs[1], SRFENT_CHANGED_SIZE)
|
|
||||||
READENTITY_COORD(maxs[2], SRFENT_CHANGED_SIZE)
|
|
||||||
READENTITY_BYTE(frame, SRFENT_CHANGED_FRAME)
|
|
||||||
READENTITY_FLOAT(skin, SRFENT_CHANGED_SKIN)
|
|
||||||
READENTITY_FLOAT(effects, SRFENT_CHANGED_EFFECTS)
|
|
||||||
READENTITY_SHORT(m_iBody, SRFENT_CHANGED_BODY)
|
|
||||||
READENTITY_FLOAT(scale, SRFENT_CHANGED_SCALE)
|
|
||||||
READENTITY_FLOAT(m_vecAxialScale[0], SRFENT_CHANGED_SCALE)
|
|
||||||
READENTITY_FLOAT(m_vecAxialScale[1], SRFENT_CHANGED_SCALE)
|
|
||||||
READENTITY_FLOAT(m_vecAxialScale[2], SRFENT_CHANGED_SCALE)
|
|
||||||
READENTITY_COORD(velocity[0], SRFENT_CHANGED_VELOCITY)
|
|
||||||
READENTITY_COORD(velocity[1], SRFENT_CHANGED_VELOCITY)
|
|
||||||
READENTITY_COORD(velocity[2], SRFENT_CHANGED_VELOCITY)
|
|
||||||
READENTITY_COORD(avelocity[0], SRFENT_CHANGED_ANGULARVELOCITY)
|
|
||||||
READENTITY_COORD(avelocity[1], SRFENT_CHANGED_ANGULARVELOCITY)
|
|
||||||
READENTITY_COORD(avelocity[2], SRFENT_CHANGED_ANGULARVELOCITY)
|
|
||||||
READENTITY_BYTE(m_iRenderMode, SRFENT_CHANGED_RENDERMODE)
|
|
||||||
READENTITY_BYTE(m_iRenderFX, SRFENT_CHANGED_RENDERMODE)
|
|
||||||
READENTITY_COLOR(m_vecRenderColor[0], SRFENT_CHANGED_RENDERCOLOR)
|
|
||||||
READENTITY_COLOR(m_vecRenderColor[1], SRFENT_CHANGED_RENDERCOLOR)
|
|
||||||
READENTITY_COLOR(m_vecRenderColor[2], SRFENT_CHANGED_RENDERCOLOR)
|
|
||||||
READENTITY_COLOR(m_flRenderAmt, SRFENT_CHANGED_RENDERAMT)
|
|
||||||
READENTITY_ANGLE(m_flBoneControl1, SRFENT_CHANGED_CONTROLLER)
|
|
||||||
READENTITY_ANGLE(m_flBoneControl2, SRFENT_CHANGED_CONTROLLER)
|
|
||||||
READENTITY_ANGLE(m_flBoneControl3, SRFENT_CHANGED_CONTROLLER)
|
|
||||||
READENTITY_ANGLE(m_flBoneControl4, SRFENT_CHANGED_CONTROLLER)
|
|
||||||
READENTITY_ANGLE(m_flBoneControl5, SRFENT_CHANGED_CONTROLLER)
|
|
||||||
|
|
||||||
if (scale == 0.0)
|
|
||||||
scale = 1.0f;
|
|
||||||
|
|
||||||
if (flChanged & SRFENT_CHANGED_SIZE)
|
|
||||||
setsize(this, mins * scale, maxs * scale);
|
|
||||||
if (flChanged & SRFENT_CHANGED_BODY)
|
|
||||||
setcustomskin(this, "", sprintf("geomset 0 %i\ngeomset 1 %i\n", m_iBody, m_iBody));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef SERVER
|
|
||||||
void
|
void
|
||||||
NSSurfacePropEntity::SetTakedamage(float type)
|
NSSurfacePropEntity::SetTakedamage(float type)
|
||||||
{
|
{
|
||||||
|
@ -643,11 +349,9 @@ NSSurfacePropEntity::SpawnKey(string strKey, string strValue)
|
||||||
m_vecBloodColor = ReadVector(strValue);
|
m_vecBloodColor = ReadVector(strValue);
|
||||||
break;
|
break;
|
||||||
/* Input/Output system */
|
/* Input/Output system */
|
||||||
#ifdef SERVER
|
|
||||||
case "OnBreak":
|
case "OnBreak":
|
||||||
m_strOnBreak = PrepareOutput(m_strOnBreak, ReadString(strValue));
|
m_strOnBreak = PrepareOutput(m_strOnBreak, ReadString(strValue));
|
||||||
break;
|
break;
|
||||||
#endif
|
|
||||||
default:
|
default:
|
||||||
super::SpawnKey(strKey, strValue);
|
super::SpawnKey(strKey, strValue);
|
||||||
break;
|
break;
|
||||||
|
@ -739,9 +443,171 @@ NSSurfacePropEntity::TimeSinceDeath(void)
|
||||||
return time - m_flDeathTime;
|
return time - m_flDeathTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
void
|
||||||
|
NSSurfacePropEntity::EvaluateEntity(void)
|
||||||
|
{
|
||||||
|
EVALUATE_VECTOR(origin, 0, SRFENT_CHANGED_ORIGIN_X)
|
||||||
|
EVALUATE_VECTOR(origin, 1, SRFENT_CHANGED_ORIGIN_Y)
|
||||||
|
EVALUATE_VECTOR(origin, 2, SRFENT_CHANGED_ORIGIN_Z)
|
||||||
|
EVALUATE_VECTOR(angles, 0, SRFENT_CHANGED_ANGLES_X)
|
||||||
|
EVALUATE_VECTOR(angles, 1, SRFENT_CHANGED_ANGLES_Y)
|
||||||
|
EVALUATE_VECTOR(angles, 2, SRFENT_CHANGED_ANGLES_Z)
|
||||||
|
EVALUATE_FIELD(modelindex, SRFENT_CHANGED_MODELINDEX)
|
||||||
|
EVALUATE_FIELD(solid, SRFENT_CHANGED_SOLIDMOVETYPE)
|
||||||
|
EVALUATE_FIELD(movetype, SRFENT_CHANGED_SOLIDMOVETYPE)
|
||||||
|
EVALUATE_FIELD(flags, SRFENT_CHANGED_FLAGS)
|
||||||
|
EVALUATE_VECTOR(mins, 0, SRFENT_CHANGED_SIZE)
|
||||||
|
EVALUATE_VECTOR(mins, 1, SRFENT_CHANGED_SIZE)
|
||||||
|
EVALUATE_VECTOR(mins, 2, SRFENT_CHANGED_SIZE)
|
||||||
|
EVALUATE_VECTOR(maxs, 0, SRFENT_CHANGED_SIZE)
|
||||||
|
EVALUATE_VECTOR(maxs, 1, SRFENT_CHANGED_SIZE)
|
||||||
|
EVALUATE_VECTOR(maxs, 2, SRFENT_CHANGED_SIZE)
|
||||||
|
EVALUATE_FIELD(frame, SRFENT_CHANGED_FRAME)
|
||||||
|
EVALUATE_FIELD(skin, SRFENT_CHANGED_SKIN)
|
||||||
|
EVALUATE_FIELD(effects, SRFENT_CHANGED_EFFECTS)
|
||||||
|
EVALUATE_FIELD(m_iBody, SRFENT_CHANGED_BODY)
|
||||||
|
EVALUATE_FIELD(scale, SRFENT_CHANGED_SCALE)
|
||||||
|
EVALUATE_VECTOR(m_vecAxialScale, 0, SRFENT_CHANGED_SCALE)
|
||||||
|
EVALUATE_VECTOR(m_vecAxialScale, 1, SRFENT_CHANGED_SCALE)
|
||||||
|
EVALUATE_VECTOR(m_vecAxialScale, 2, SRFENT_CHANGED_SCALE)
|
||||||
|
EVALUATE_VECTOR(velocity, 0, SRFENT_CHANGED_VELOCITY)
|
||||||
|
EVALUATE_VECTOR(velocity, 1, SRFENT_CHANGED_VELOCITY)
|
||||||
|
EVALUATE_VECTOR(velocity, 2, SRFENT_CHANGED_VELOCITY)
|
||||||
|
EVALUATE_VECTOR(avelocity, 0, SRFENT_CHANGED_ANGULARVELOCITY)
|
||||||
|
EVALUATE_VECTOR(avelocity, 1, SRFENT_CHANGED_ANGULARVELOCITY)
|
||||||
|
EVALUATE_VECTOR(avelocity, 2, SRFENT_CHANGED_ANGULARVELOCITY)
|
||||||
|
EVALUATE_FIELD(m_iRenderMode, SRFENT_CHANGED_RENDERMODE)
|
||||||
|
EVALUATE_FIELD(m_iRenderFX, SRFENT_CHANGED_RENDERMODE)
|
||||||
|
EVALUATE_VECTOR(m_vecRenderColor, 0, SRFENT_CHANGED_RENDERCOLOR)
|
||||||
|
EVALUATE_VECTOR(m_vecRenderColor, 1, SRFENT_CHANGED_RENDERCOLOR)
|
||||||
|
EVALUATE_VECTOR(m_vecRenderColor, 2, SRFENT_CHANGED_RENDERCOLOR)
|
||||||
|
EVALUATE_FIELD(m_flRenderAmt, SRFENT_CHANGED_RENDERAMT)
|
||||||
|
EVALUATE_FIELD(m_flBoneControl1, SRFENT_CHANGED_CONTROLLER)
|
||||||
|
EVALUATE_FIELD(m_flBoneControl2, SRFENT_CHANGED_CONTROLLER)
|
||||||
|
EVALUATE_FIELD(m_flBoneControl3, SRFENT_CHANGED_CONTROLLER)
|
||||||
|
EVALUATE_FIELD(m_flBoneControl4, SRFENT_CHANGED_CONTROLLER)
|
||||||
|
EVALUATE_FIELD(m_flBoneControl5, SRFENT_CHANGED_CONTROLLER)
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Make sure StartFrame calls this */
|
||||||
|
float
|
||||||
|
NSSurfacePropEntity::SendEntity(entity ePEnt, float flChanged)
|
||||||
|
{
|
||||||
|
if (!modelindex)
|
||||||
|
return (0);
|
||||||
|
|
||||||
|
if (clienttype(ePEnt) != CLIENTTYPE_REAL)
|
||||||
|
return (0);
|
||||||
|
|
||||||
|
WriteByte(MSG_ENTITY, ENT_SURFPROP);
|
||||||
|
|
||||||
|
/* broadcast how much data is expected to be read */
|
||||||
|
WriteFloat(MSG_ENTITY, flChanged);
|
||||||
|
SENDENTITY_COORD(origin[0], SRFENT_CHANGED_ORIGIN_X)
|
||||||
|
SENDENTITY_COORD(origin[1], SRFENT_CHANGED_ORIGIN_Y)
|
||||||
|
SENDENTITY_COORD(origin[2], SRFENT_CHANGED_ORIGIN_Z)
|
||||||
|
SENDENTITY_ANGLE(angles[0], SRFENT_CHANGED_ANGLES_X)
|
||||||
|
SENDENTITY_ANGLE(angles[1], SRFENT_CHANGED_ANGLES_Y)
|
||||||
|
SENDENTITY_ANGLE(angles[2], SRFENT_CHANGED_ANGLES_Z)
|
||||||
|
SENDENTITY_SHORT(modelindex, SRFENT_CHANGED_MODELINDEX)
|
||||||
|
SENDENTITY_BYTE(solid, SRFENT_CHANGED_SOLIDMOVETYPE)
|
||||||
|
SENDENTITY_BYTE(movetype, SRFENT_CHANGED_SOLIDMOVETYPE)
|
||||||
|
SENDENTITY_INT(flags, SRFENT_CHANGED_FLAGS)
|
||||||
|
SENDENTITY_COORD(mins[0], SRFENT_CHANGED_SIZE)
|
||||||
|
SENDENTITY_COORD(mins[1], SRFENT_CHANGED_SIZE)
|
||||||
|
SENDENTITY_COORD(mins[2], SRFENT_CHANGED_SIZE)
|
||||||
|
SENDENTITY_COORD(maxs[0], SRFENT_CHANGED_SIZE)
|
||||||
|
SENDENTITY_COORD(maxs[1], SRFENT_CHANGED_SIZE)
|
||||||
|
SENDENTITY_COORD(maxs[2], SRFENT_CHANGED_SIZE)
|
||||||
|
SENDENTITY_BYTE(frame, SRFENT_CHANGED_FRAME)
|
||||||
|
SENDENTITY_FLOAT(skin, SRFENT_CHANGED_SKIN)
|
||||||
|
SENDENTITY_FLOAT(effects, SRFENT_CHANGED_EFFECTS)
|
||||||
|
SENDENTITY_SHORT(m_iBody, SRFENT_CHANGED_BODY)
|
||||||
|
SENDENTITY_FLOAT(scale, SRFENT_CHANGED_SCALE)
|
||||||
|
SENDENTITY_FLOAT(m_vecAxialScale[0], SRFENT_CHANGED_SCALE)
|
||||||
|
SENDENTITY_FLOAT(m_vecAxialScale[1], SRFENT_CHANGED_SCALE)
|
||||||
|
SENDENTITY_FLOAT(m_vecAxialScale[2], SRFENT_CHANGED_SCALE)
|
||||||
|
SENDENTITY_COORD(velocity[0], SRFENT_CHANGED_VELOCITY)
|
||||||
|
SENDENTITY_COORD(velocity[1], SRFENT_CHANGED_VELOCITY)
|
||||||
|
SENDENTITY_COORD(velocity[2], SRFENT_CHANGED_VELOCITY)
|
||||||
|
SENDENTITY_COORD(avelocity[0], SRFENT_CHANGED_ANGULARVELOCITY)
|
||||||
|
SENDENTITY_COORD(avelocity[1], SRFENT_CHANGED_ANGULARVELOCITY)
|
||||||
|
SENDENTITY_COORD(avelocity[2], SRFENT_CHANGED_ANGULARVELOCITY)
|
||||||
|
SENDENTITY_BYTE(m_iRenderMode, SRFENT_CHANGED_RENDERMODE)
|
||||||
|
SENDENTITY_BYTE(m_iRenderFX, SRFENT_CHANGED_RENDERMODE)
|
||||||
|
SENDENTITY_COLOR(m_vecRenderColor[0], SRFENT_CHANGED_RENDERCOLOR)
|
||||||
|
SENDENTITY_COLOR(m_vecRenderColor[1], SRFENT_CHANGED_RENDERCOLOR)
|
||||||
|
SENDENTITY_COLOR(m_vecRenderColor[2], SRFENT_CHANGED_RENDERCOLOR)
|
||||||
|
SENDENTITY_COLOR(m_flRenderAmt, SRFENT_CHANGED_RENDERAMT)
|
||||||
|
SENDENTITY_ANGLE(m_flBoneControl1, SRFENT_CHANGED_CONTROLLER)
|
||||||
|
SENDENTITY_ANGLE(m_flBoneControl2, SRFENT_CHANGED_CONTROLLER)
|
||||||
|
SENDENTITY_ANGLE(m_flBoneControl3, SRFENT_CHANGED_CONTROLLER)
|
||||||
|
SENDENTITY_ANGLE(m_flBoneControl4, SRFENT_CHANGED_CONTROLLER)
|
||||||
|
SENDENTITY_ANGLE(m_flBoneControl5, SRFENT_CHANGED_CONTROLLER)
|
||||||
|
|
||||||
|
return (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
/*
|
||||||
|
============
|
||||||
|
NSSurfacePropEntity::ReceiveEntity
|
||||||
|
============
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
NSSurfacePropEntity::ReceiveEntity(float flNew, float flChanged)
|
||||||
|
{
|
||||||
|
READENTITY_COORD(origin[0], SRFENT_CHANGED_ORIGIN_X)
|
||||||
|
READENTITY_COORD(origin[1], SRFENT_CHANGED_ORIGIN_Y)
|
||||||
|
READENTITY_COORD(origin[2], SRFENT_CHANGED_ORIGIN_Z)
|
||||||
|
READENTITY_ANGLE(angles[0], SRFENT_CHANGED_ANGLES_X)
|
||||||
|
READENTITY_ANGLE(angles[1], SRFENT_CHANGED_ANGLES_Y)
|
||||||
|
READENTITY_ANGLE(angles[2], SRFENT_CHANGED_ANGLES_Z)
|
||||||
|
READENTITY_SHORT(modelindex, SRFENT_CHANGED_MODELINDEX)
|
||||||
|
READENTITY_BYTE(solid, SRFENT_CHANGED_SOLIDMOVETYPE)
|
||||||
|
READENTITY_BYTE(movetype, SRFENT_CHANGED_SOLIDMOVETYPE)
|
||||||
|
READENTITY_INT(flags, SRFENT_CHANGED_FLAGS)
|
||||||
|
READENTITY_COORD(mins[0], SRFENT_CHANGED_SIZE)
|
||||||
|
READENTITY_COORD(mins[1], SRFENT_CHANGED_SIZE)
|
||||||
|
READENTITY_COORD(mins[2], SRFENT_CHANGED_SIZE)
|
||||||
|
READENTITY_COORD(maxs[0], SRFENT_CHANGED_SIZE)
|
||||||
|
READENTITY_COORD(maxs[1], SRFENT_CHANGED_SIZE)
|
||||||
|
READENTITY_COORD(maxs[2], SRFENT_CHANGED_SIZE)
|
||||||
|
READENTITY_BYTE(frame, SRFENT_CHANGED_FRAME)
|
||||||
|
READENTITY_FLOAT(skin, SRFENT_CHANGED_SKIN)
|
||||||
|
READENTITY_FLOAT(effects, SRFENT_CHANGED_EFFECTS)
|
||||||
|
READENTITY_SHORT(m_iBody, SRFENT_CHANGED_BODY)
|
||||||
|
READENTITY_FLOAT(scale, SRFENT_CHANGED_SCALE)
|
||||||
|
READENTITY_FLOAT(m_vecAxialScale[0], SRFENT_CHANGED_SCALE)
|
||||||
|
READENTITY_FLOAT(m_vecAxialScale[1], SRFENT_CHANGED_SCALE)
|
||||||
|
READENTITY_FLOAT(m_vecAxialScale[2], SRFENT_CHANGED_SCALE)
|
||||||
|
READENTITY_COORD(velocity[0], SRFENT_CHANGED_VELOCITY)
|
||||||
|
READENTITY_COORD(velocity[1], SRFENT_CHANGED_VELOCITY)
|
||||||
|
READENTITY_COORD(velocity[2], SRFENT_CHANGED_VELOCITY)
|
||||||
|
READENTITY_COORD(avelocity[0], SRFENT_CHANGED_ANGULARVELOCITY)
|
||||||
|
READENTITY_COORD(avelocity[1], SRFENT_CHANGED_ANGULARVELOCITY)
|
||||||
|
READENTITY_COORD(avelocity[2], SRFENT_CHANGED_ANGULARVELOCITY)
|
||||||
|
READENTITY_BYTE(m_iRenderMode, SRFENT_CHANGED_RENDERMODE)
|
||||||
|
READENTITY_BYTE(m_iRenderFX, SRFENT_CHANGED_RENDERMODE)
|
||||||
|
READENTITY_COLOR(m_vecRenderColor[0], SRFENT_CHANGED_RENDERCOLOR)
|
||||||
|
READENTITY_COLOR(m_vecRenderColor[1], SRFENT_CHANGED_RENDERCOLOR)
|
||||||
|
READENTITY_COLOR(m_vecRenderColor[2], SRFENT_CHANGED_RENDERCOLOR)
|
||||||
|
READENTITY_COLOR(m_flRenderAmt, SRFENT_CHANGED_RENDERAMT)
|
||||||
|
READENTITY_ANGLE(m_flBoneControl1, SRFENT_CHANGED_CONTROLLER)
|
||||||
|
READENTITY_ANGLE(m_flBoneControl2, SRFENT_CHANGED_CONTROLLER)
|
||||||
|
READENTITY_ANGLE(m_flBoneControl3, SRFENT_CHANGED_CONTROLLER)
|
||||||
|
READENTITY_ANGLE(m_flBoneControl4, SRFENT_CHANGED_CONTROLLER)
|
||||||
|
READENTITY_ANGLE(m_flBoneControl5, SRFENT_CHANGED_CONTROLLER)
|
||||||
|
|
||||||
|
if (scale == 0.0)
|
||||||
|
scale = 1.0f;
|
||||||
|
|
||||||
|
if (flChanged & SRFENT_CHANGED_SIZE)
|
||||||
|
setsize(this, mins * scale, maxs * scale);
|
||||||
|
if (flChanged & SRFENT_CHANGED_BODY)
|
||||||
|
setcustomskin(this, "", sprintf("geomset 0 %i\ngeomset 1 %i\n", m_iBody, m_iBody));
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef CLIENT
|
|
||||||
void
|
void
|
||||||
NSSurfacePropEntity::RenderFire(void)
|
NSSurfacePropEntity::RenderFire(void)
|
||||||
{
|
{
|
||||||
|
@ -763,21 +629,7 @@ NSSurfacePropEntity::predraw(void)
|
||||||
RenderFire();
|
RenderFire();
|
||||||
return super::predraw();
|
return super::predraw();
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
void
|
|
||||||
NSSurfacePropEntity::SetModel(string newModel)
|
|
||||||
{
|
|
||||||
NSRenderableEntity::SetModel(newModel);
|
|
||||||
|
|
||||||
#ifdef SERVER
|
|
||||||
if (model && HasPropData() == false) {
|
|
||||||
m_iPropData = PropData_ForModel(model);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef CLIENT
|
|
||||||
void
|
void
|
||||||
NSSurfacePropEntity_ReadEntity(bool new)
|
NSSurfacePropEntity_ReadEntity(bool new)
|
||||||
{
|
{
|
||||||
|
@ -790,3 +642,15 @@ NSSurfacePropEntity_ReadEntity(bool new)
|
||||||
rend.ReceiveEntity(new, fl);
|
rend.ReceiveEntity(new, fl);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
void
|
||||||
|
NSSurfacePropEntity::SetModel(string newModel)
|
||||||
|
{
|
||||||
|
NSRenderableEntity::SetModel(newModel);
|
||||||
|
|
||||||
|
#ifdef SERVER
|
||||||
|
if (model && HasPropData() == false) {
|
||||||
|
m_iPropData = PropData_ForModel(model);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
|
@ -461,7 +461,7 @@ SurfData_Impact(entity e, vector org, vector ang)
|
||||||
SurfData_ImpactID_Net(texdata, org, ang);
|
SurfData_ImpactID_Net(texdata, org, ang);
|
||||||
} else
|
} else
|
||||||
SurfData_Impact_SurfaceParm(e, org, ang);
|
SurfData_Impact_SurfaceParm(e, org, ang);
|
||||||
} else { /* anything with takedamage = DAMAGE_YES is a NSurfacePropEntity. */
|
} else { /* anything with else is a NSurfacePropEntity. */
|
||||||
NSSurfacePropEntity foo = (NSSurfacePropEntity)e;
|
NSSurfacePropEntity foo = (NSSurfacePropEntity)e;
|
||||||
|
|
||||||
if (foo.HasSurfaceData() && foo.GetSurfaceData(SURFDATA_MATERIAL) != -1)
|
if (foo.HasSurfaceData() && foo.GetSurfaceData(SURFDATA_MATERIAL) != -1)
|
||||||
|
|
Loading…
Reference in New Issue