NSRenderableEntity: add new methods SetAxialScale() and GetAxialScale(). These can be used in combination with the isotropic scaler which uses SetScale().
This commit is contained in:
parent
7350bf98d4
commit
bc67e0ab47
4 changed files with 68 additions and 2 deletions
|
@ -1582,6 +1582,9 @@ NSMonster::EvaluateEntity(void)
|
|||
EVALUATE_FIELD(effects, MONFL_CHANGED_EFFECTS)
|
||||
EVALUATE_FIELD(m_iBody, MONFL_CHANGED_BODY)
|
||||
EVALUATE_FIELD(scale, MONFL_CHANGED_SCALE)
|
||||
EVALUATE_VECTOR(m_vecAxialScale, 0, MONFL_CHANGED_SCALE)
|
||||
EVALUATE_VECTOR(m_vecAxialScale, 1, MONFL_CHANGED_SCALE)
|
||||
EVALUATE_VECTOR(m_vecAxialScale, 2, MONFL_CHANGED_SCALE)
|
||||
EVALUATE_VECTOR(velocity, 0, MONFL_CHANGED_VELOCITY)
|
||||
EVALUATE_VECTOR(velocity, 1, MONFL_CHANGED_VELOCITY)
|
||||
EVALUATE_VECTOR(velocity, 2, MONFL_CHANGED_VELOCITY)
|
||||
|
@ -1635,6 +1638,9 @@ NSMonster::SendEntity(entity ePEnt, float flChanged)
|
|||
SENDENTITY_FLOAT(effects, MONFL_CHANGED_EFFECTS)
|
||||
SENDENTITY_SHORT(m_iBody, MONFL_CHANGED_BODY)
|
||||
SENDENTITY_FLOAT(scale, MONFL_CHANGED_SCALE)
|
||||
SENDENTITY_FLOAT(m_vecAxialScale[0], MONFL_CHANGED_SCALE)
|
||||
SENDENTITY_FLOAT(m_vecAxialScale[1], MONFL_CHANGED_SCALE)
|
||||
SENDENTITY_FLOAT(m_vecAxialScale[2], MONFL_CHANGED_SCALE)
|
||||
SENDENTITY_COORD(velocity[0], MONFL_CHANGED_VELOCITY)
|
||||
SENDENTITY_COORD(velocity[1], MONFL_CHANGED_VELOCITY)
|
||||
SENDENTITY_COORD(velocity[2], MONFL_CHANGED_VELOCITY)
|
||||
|
@ -1715,6 +1721,9 @@ NSMonster::ReceiveEntity(float flNew, float flChanged)
|
|||
READENTITY_FLOAT(effects, MONFL_CHANGED_EFFECTS)
|
||||
READENTITY_SHORT(m_iBody, MONFL_CHANGED_BODY)
|
||||
READENTITY_FLOAT(scale, MONFL_CHANGED_SCALE)
|
||||
READENTITY_FLOAT(m_vecAxialScale[0], MONFL_CHANGED_SCALE)
|
||||
READENTITY_FLOAT(m_vecAxialScale[1], MONFL_CHANGED_SCALE)
|
||||
READENTITY_FLOAT(m_vecAxialScale[2], MONFL_CHANGED_SCALE)
|
||||
READENTITY_COORD(velocity[0], MONFL_CHANGED_VELOCITY)
|
||||
READENTITY_COORD(velocity[1], MONFL_CHANGED_VELOCITY)
|
||||
READENTITY_COORD(velocity[2], MONFL_CHANGED_VELOCITY)
|
||||
|
|
|
@ -105,6 +105,7 @@ private:
|
|||
PREDICTED_FLOAT(m_iRenderMode)
|
||||
PREDICTED_FLOAT(m_flRenderAmt)
|
||||
PREDICTED_VECTOR(m_vecRenderColor)
|
||||
PREDICTED_VECTOR(m_vecAxialScale)
|
||||
|
||||
/* model events */
|
||||
float m_flBaseTime;
|
||||
|
@ -172,6 +173,9 @@ public:
|
|||
nonvirtual void SetBoneControl4(float);
|
||||
/** Sets the value of the bone controller #5. */
|
||||
nonvirtual void SetBoneControl5(float);
|
||||
/** Sets the axial, anisotropic scale of an entity, affecting the individual axis (forward, right, up). */
|
||||
nonvirtual void SetAxialScale(vector);
|
||||
|
||||
/** Returns the bodygroup of the entity. */
|
||||
nonvirtual int GetBody(void);
|
||||
/** Returns the body within a given group. */
|
||||
|
@ -194,10 +198,13 @@ public:
|
|||
nonvirtual float GetBoneControl4(void);
|
||||
/** Returns the value of the entity's bone controller #5. */
|
||||
nonvirtual float GetBoneControl5(void);
|
||||
/** Returns the axial/anisotropic scale of the entity, same as input format (forward, right, up) */
|
||||
nonvirtual vector GetAxialScale(void);
|
||||
|
||||
#ifdef CLIENT
|
||||
/** Called by predraw(); and will set the appropriate rendering specific fields. */
|
||||
nonvirtual void RenderFXPass(void);
|
||||
nonvirtual void RenderAxialScale(void);
|
||||
#endif
|
||||
};
|
||||
|
||||
|
|
|
@ -29,6 +29,7 @@ NSRenderableEntity::NSRenderableEntity(void)
|
|||
m_flBoneControl4 = 0.5f;
|
||||
m_flBoneControl5 = 0.5f;
|
||||
m_iBody = 0i;
|
||||
m_vecAxialScale = [1,1,1];
|
||||
|
||||
effects |= EF_NOSHADOW;
|
||||
|
||||
|
@ -117,6 +118,9 @@ NSRenderableEntity::EvaluateEntity(void)
|
|||
EVALUATE_FIELD(effects, RDENT_CHANGED_EFFECTS)
|
||||
EVALUATE_FIELD(m_iBody, RDENT_CHANGED_BODY)
|
||||
EVALUATE_FIELD(scale, RDENT_CHANGED_SCALE)
|
||||
EVALUATE_VECTOR(m_vecAxialScale, 0, RDENT_CHANGED_SCALE)
|
||||
EVALUATE_VECTOR(m_vecAxialScale, 1, RDENT_CHANGED_SCALE)
|
||||
EVALUATE_VECTOR(m_vecAxialScale, 2, RDENT_CHANGED_SCALE)
|
||||
EVALUATE_VECTOR(velocity, 0, RDENT_CHANGED_VELOCITY)
|
||||
EVALUATE_VECTOR(velocity, 1, RDENT_CHANGED_VELOCITY)
|
||||
EVALUATE_VECTOR(velocity, 2, RDENT_CHANGED_VELOCITY)
|
||||
|
@ -201,6 +205,9 @@ NSRenderableEntity::SendEntity(entity ePEnt, float flChanged)
|
|||
SENDENTITY_FLOAT(effects, RDENT_CHANGED_EFFECTS)
|
||||
SENDENTITY_SHORT(m_iBody, RDENT_CHANGED_BODY)
|
||||
SENDENTITY_FLOAT(scale, RDENT_CHANGED_SCALE)
|
||||
SENDENTITY_FLOAT(m_vecAxialScale[0], RDENT_CHANGED_SCALE)
|
||||
SENDENTITY_FLOAT(m_vecAxialScale[1], RDENT_CHANGED_SCALE)
|
||||
SENDENTITY_FLOAT(m_vecAxialScale[2], RDENT_CHANGED_SCALE)
|
||||
SENDENTITY_COORD(velocity[0], RDENT_CHANGED_VELOCITY)
|
||||
SENDENTITY_COORD(velocity[1], RDENT_CHANGED_VELOCITY)
|
||||
SENDENTITY_COORD(velocity[2], RDENT_CHANGED_VELOCITY)
|
||||
|
@ -258,6 +265,9 @@ NSRenderableEntity::ReceiveEntity(float flNew, float flChanged)
|
|||
READENTITY_FLOAT(effects, RDENT_CHANGED_EFFECTS)
|
||||
READENTITY_SHORT(m_iBody, RDENT_CHANGED_BODY)
|
||||
READENTITY_FLOAT(scale, RDENT_CHANGED_SCALE)
|
||||
READENTITY_FLOAT(m_vecAxialScale[0], RDENT_CHANGED_SCALE)
|
||||
READENTITY_FLOAT(m_vecAxialScale[1], RDENT_CHANGED_SCALE)
|
||||
READENTITY_FLOAT(m_vecAxialScale[2], RDENT_CHANGED_SCALE)
|
||||
READENTITY_COORD(velocity[0], RDENT_CHANGED_VELOCITY)
|
||||
READENTITY_COORD(velocity[1], RDENT_CHANGED_VELOCITY)
|
||||
READENTITY_COORD(velocity[2], RDENT_CHANGED_VELOCITY)
|
||||
|
@ -522,6 +532,19 @@ NSRenderableEntity::RenderDebugSkeleton(void)
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
NSRenderableEntity::RenderAxialScale(void)
|
||||
{
|
||||
/* only bother if we're non-standard */
|
||||
if (m_vecAxialScale != [1,1,1]) {
|
||||
makevectors(angles);
|
||||
v_forward *= m_vecAxialScale[0];
|
||||
v_right *= m_vecAxialScale[1];
|
||||
v_up *= m_vecAxialScale[2];
|
||||
renderflags |= RF_USEAXIS;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
============
|
||||
NSRenderableEntity::predraw
|
||||
|
@ -531,6 +554,7 @@ entities, so TODO: make things like anims, sentences apply
|
|||
only to relevant child-classes
|
||||
============
|
||||
*/
|
||||
var vector autocvar_testscale = [1,1,1];
|
||||
float
|
||||
NSRenderableEntity::predraw(void)
|
||||
{
|
||||
|
@ -554,6 +578,8 @@ NSRenderableEntity::predraw(void)
|
|||
processmodelevents(modelindex, frame, m_flBaseTime,
|
||||
frame1time, HandleAnimEvent);
|
||||
|
||||
RenderAxialScale();
|
||||
|
||||
if (alpha > 0.0) {
|
||||
/* TODO: Move this somewhere more sane */
|
||||
if (m_iRenderFX == RFX_Q2PULSE) {
|
||||
|
@ -654,6 +680,12 @@ NSRenderableEntity::SetBoneControl5(float val)
|
|||
m_flBoneControl5 = val;
|
||||
}
|
||||
|
||||
void
|
||||
NSRenderableEntity::SetAxialScale(vector scaleVec)
|
||||
{
|
||||
m_vecAxialScale = scaleVec;
|
||||
}
|
||||
|
||||
int
|
||||
NSRenderableEntity::GetBody(void)
|
||||
{
|
||||
|
@ -720,6 +752,12 @@ NSRenderableEntity::GetBoneControl5(void)
|
|||
return m_flBoneControl5;
|
||||
}
|
||||
|
||||
vector
|
||||
NSRenderableEntity::GetAxialScale(void)
|
||||
{
|
||||
return m_vecAxialScale;
|
||||
}
|
||||
|
||||
void
|
||||
NSRenderableEntity::HandleAnimEvent(float flTimeStamp, int iCode, string strData)
|
||||
{
|
||||
|
|
|
@ -796,6 +796,9 @@ NSTalkMonster::SendEntity(entity ePEnt, float flChanged)
|
|||
SENDENTITY_FLOAT(effects, MONFL_CHANGED_EFFECTS)
|
||||
SENDENTITY_SHORT(m_iBody, MONFL_CHANGED_BODY)
|
||||
SENDENTITY_FLOAT(scale, MONFL_CHANGED_SCALE)
|
||||
SENDENTITY_FLOAT(m_vecAxialScale[0], MONFL_CHANGED_SCALE)
|
||||
SENDENTITY_FLOAT(m_vecAxialScale[1], MONFL_CHANGED_SCALE)
|
||||
SENDENTITY_FLOAT(m_vecAxialScale[2], MONFL_CHANGED_SCALE)
|
||||
SENDENTITY_COORD(velocity[0], MONFL_CHANGED_VELOCITY)
|
||||
SENDENTITY_COORD(velocity[1], MONFL_CHANGED_VELOCITY)
|
||||
SENDENTITY_COORD(velocity[2], MONFL_CHANGED_VELOCITY)
|
||||
|
@ -805,7 +808,9 @@ NSTalkMonster::SendEntity(entity ePEnt, float flChanged)
|
|||
SENDENTITY_ANGLE(m_vecRenderColor[1], MONFL_CHANGED_RENDERCOLOR)
|
||||
SENDENTITY_ANGLE(m_vecRenderColor[2], MONFL_CHANGED_RENDERCOLOR)
|
||||
SENDENTITY_ANGLE(m_flRenderAmt, MONFL_CHANGED_RENDERAMT)
|
||||
SENDENTITY_FLOAT(m_flHeadYaw, MONFL_CHANGED_HEADYAW)
|
||||
SENDENTITY_FLOAT(bonecontrol1, MONFL_CHANGED_HEADYAW)
|
||||
SENDENTITY_FLOAT(subblendfrac, MONFL_CHANGED_HEADYAW)
|
||||
SENDENTITY_FLOAT(frame1time, MONFL_CHANGED_HEADYAW)
|
||||
|
||||
return (1);
|
||||
}
|
||||
|
@ -955,6 +960,8 @@ NSTalkMonster::predraw(void)
|
|||
basesubblendfrac = autocvar(basesubblendfrac, 0);
|
||||
basesubblend2frac = autocvar(basesubblend2frac, 0);
|
||||
|
||||
RenderAxialScale();
|
||||
|
||||
addentity(this);
|
||||
_RenderDebugViewCone();
|
||||
|
||||
|
@ -993,6 +1000,9 @@ NSTalkMonster::ReceiveEntity(float flNew, float flChanged)
|
|||
READENTITY_FLOAT(effects, MONFL_CHANGED_EFFECTS)
|
||||
READENTITY_SHORT(m_iBody, MONFL_CHANGED_BODY)
|
||||
READENTITY_FLOAT(scale, MONFL_CHANGED_SCALE)
|
||||
READENTITY_FLOAT(m_vecAxialScale[0], MONFL_CHANGED_SCALE)
|
||||
READENTITY_FLOAT(m_vecAxialScale[1], MONFL_CHANGED_SCALE)
|
||||
READENTITY_FLOAT(m_vecAxialScale[2], MONFL_CHANGED_SCALE)
|
||||
READENTITY_COORD(velocity[0], MONFL_CHANGED_VELOCITY)
|
||||
READENTITY_COORD(velocity[1], MONFL_CHANGED_VELOCITY)
|
||||
READENTITY_COORD(velocity[2], MONFL_CHANGED_VELOCITY)
|
||||
|
@ -1002,7 +1012,9 @@ NSTalkMonster::ReceiveEntity(float flNew, float flChanged)
|
|||
READENTITY_ANGLE(m_vecRenderColor[1], MONFL_CHANGED_RENDERCOLOR)
|
||||
READENTITY_ANGLE(m_vecRenderColor[2], MONFL_CHANGED_RENDERCOLOR)
|
||||
READENTITY_ANGLE(m_flRenderAmt, MONFL_CHANGED_RENDERAMT)
|
||||
READENTITY_FLOAT(m_flHeadYaw, MONFL_CHANGED_HEADYAW)
|
||||
READENTITY_FLOAT(bonecontrol1, MONFL_CHANGED_HEADYAW)
|
||||
READENTITY_FLOAT(subblendfrac, MONFL_CHANGED_HEADYAW)
|
||||
READENTITY_FLOAT(frame1time, MONFL_CHANGED_HEADYAW)
|
||||
|
||||
if (scale == 0.0)
|
||||
scale = 1.0f;
|
||||
|
|
Loading…
Reference in a new issue