NSRenderableEntity: add SetBoneControl methods.

This commit is contained in:
Marco Cawthorne 2022-07-10 16:39:15 -07:00
parent 2735bd26f6
commit 98afd5fa28
Signed by: eukara
GPG Key ID: CE2032F0A2882A22
4 changed files with 118 additions and 3 deletions

View File

@ -36,6 +36,7 @@ enumflags
RDENT_CHANGED_RENDERCOLOR, RDENT_CHANGED_RENDERCOLOR,
RDENT_CHANGED_RENDERAMT, RDENT_CHANGED_RENDERAMT,
RDENT_CHANGED_RENDERMODE, RDENT_CHANGED_RENDERMODE,
RDENT_CHANGED_CONTROLLER
}; };
#ifdef CLIENT #ifdef CLIENT
@ -65,8 +66,14 @@ class NSRenderableEntity:NSEntity
#endif #endif
/* new */ /* new */
PREDICTED_FLOAT(m_flBoneControl1);
PREDICTED_FLOAT(m_flBoneControl2);
PREDICTED_FLOAT(m_flBoneControl3);
PREDICTED_FLOAT(m_flBoneControl4);
PREDICTED_FLOAT(m_flBoneControl5);
PREDICTED_INT(m_iBody); PREDICTED_INT(m_iBody);
PREDICTED_FLOAT_N(frame); PREDICTED_FLOAT_N(frame);
PREDICTED_FLOAT_N(colormap);
PREDICTED_FLOAT_N(skin); PREDICTED_FLOAT_N(skin);
PREDICTED_FLOAT_N(effects); PREDICTED_FLOAT_N(effects);
/* model events */ /* model events */

View File

@ -97,11 +97,30 @@ NSRenderableEntity::EvaluateEntity(void)
if (ATTR_CHANGED(velocity)) { if (ATTR_CHANGED(velocity)) {
SetSendFlags(RDENT_CHANGED_VELOCITY); SetSendFlags(RDENT_CHANGED_VELOCITY);
} }
if (ATTR_CHANGED(colormap)) {
SetSendFlags(RDENT_CHANGED_MODELINDEX);
}
if (ATTR_CHANGED(m_flBoneControl1)) {
SetSendFlags(RDENT_CHANGED_CONTROLLER);
}
if (ATTR_CHANGED(m_flBoneControl2)) {
SetSendFlags(RDENT_CHANGED_CONTROLLER);
}
if (ATTR_CHANGED(m_flBoneControl3)) {
SetSendFlags(RDENT_CHANGED_CONTROLLER);
}
if (ATTR_CHANGED(m_flBoneControl4)) {
SetSendFlags(RDENT_CHANGED_CONTROLLER);
}
if (ATTR_CHANGED(m_flBoneControl5)) {
SetSendFlags(RDENT_CHANGED_CONTROLLER);
}
SAVE_STATE(origin); SAVE_STATE(origin);
angles = Math_FixDeltaVector(angles); angles = Math_FixDeltaVector(angles);
SAVE_STATE(angles); SAVE_STATE(angles);
SAVE_STATE(modelindex); SAVE_STATE(modelindex);
SAVE_STATE(colormap);
SAVE_STATE(solid); SAVE_STATE(solid);
SAVE_STATE(movetype); SAVE_STATE(movetype);
SAVE_STATE(size); SAVE_STATE(size);
@ -111,6 +130,11 @@ NSRenderableEntity::EvaluateEntity(void)
SAVE_STATE(m_iBody); SAVE_STATE(m_iBody);
SAVE_STATE(scale); SAVE_STATE(scale);
SAVE_STATE(velocity); SAVE_STATE(velocity);
SAVE_STATE(m_flBoneControl1);
SAVE_STATE(m_flBoneControl2);
SAVE_STATE(m_flBoneControl3);
SAVE_STATE(m_flBoneControl4);
SAVE_STATE(m_flBoneControl5);
if (ATTR_CHANGED(m_iRenderMode)) { if (ATTR_CHANGED(m_iRenderMode)) {
SetSendFlags(RDENT_CHANGED_RENDERMODE); SetSendFlags(RDENT_CHANGED_RENDERMODE);
@ -268,6 +292,13 @@ NSRenderableEntity::SendEntity(entity ePEnt, float fChanged)
if (fChanged & RDENT_CHANGED_RENDERAMT) { if (fChanged & RDENT_CHANGED_RENDERAMT) {
WriteFloat(MSG_ENTITY, m_flRenderAmt); WriteFloat(MSG_ENTITY, m_flRenderAmt);
} }
if (fChanged & RDENT_CHANGED_CONTROLLER) {
WriteShort(MSG_ENTITY, m_flBoneControl1 * 32767 / 360);
WriteShort(MSG_ENTITY, m_flBoneControl2 * 32767 / 360);
WriteShort(MSG_ENTITY, m_flBoneControl3 * 32767 / 360);
WriteShort(MSG_ENTITY, m_flBoneControl4 * 32767 / 360);
WriteShort(MSG_ENTITY, m_flBoneControl5 * 32767 / 360);
}
return (1); return (1);
} }
@ -582,6 +613,13 @@ NSRenderableEntity::ReceiveEntity(float flNew, float flChanged)
if (flChanged & RDENT_CHANGED_RENDERAMT) { if (flChanged & RDENT_CHANGED_RENDERAMT) {
m_flRenderAmt = readfloat(); m_flRenderAmt = readfloat();
} }
if (flChanged & RDENT_CHANGED_CONTROLLER) {
m_flBoneControl1 = readshort() / (32767 / 360);
m_flBoneControl2 = readshort() / (32767 / 360);
m_flBoneControl3 = readshort() / (32767 / 360);
m_flBoneControl4 = readshort() / (32767 / 360);
m_flBoneControl5 = readshort() / (32767 / 360);
}
if (scale == 0.0) if (scale == 0.0)
scale = 1.0f; scale = 1.0f;
@ -630,6 +668,12 @@ NSRenderableEntity::predraw(void)
return (PREDRAW_NEXT); return (PREDRAW_NEXT);
} }
bonecontrol1 = m_flBoneControl1;
bonecontrol2 = m_flBoneControl2;
bonecontrol3 = m_flBoneControl3;
bonecontrol4 = m_flBoneControl4;
bonecontrol5 = m_flBoneControl5;
RenderFXPass(); RenderFXPass();
RenderDebugSkeleton(); RenderDebugSkeleton();
@ -757,6 +801,36 @@ NSRenderableEntity::SetRenderColor(vector newColor)
m_vecRenderColor = newColor; m_vecRenderColor = newColor;
} }
void
NSRenderableEntity::SetBoneControl1(float val)
{
m_flBoneControl1 = val;
}
void
NSRenderableEntity::SetBoneControl2(float val)
{
m_flBoneControl2 = val;
}
void
NSRenderableEntity::SetBoneControl3(float val)
{
m_flBoneControl3 = val;
}
void
NSRenderableEntity::SetBoneControl4(float val)
{
m_flBoneControl4 = val;
}
void
NSRenderableEntity::SetBoneControl5(float val)
{
m_flBoneControl5 = val;
}
#ifdef SERVER #ifdef SERVER
void void
NSRenderableEntity::Save(float handle) NSRenderableEntity::Save(float handle)

View File

@ -32,6 +32,7 @@ enumflags
SRFENT_CHANGED_RENDERCOLOR, SRFENT_CHANGED_RENDERCOLOR,
SRFENT_CHANGED_RENDERAMT, SRFENT_CHANGED_RENDERAMT,
SRFENT_CHANGED_RENDERMODE, SRFENT_CHANGED_RENDERMODE,
SRFENT_CHANGED_CONTROLLER
}; };
class NSSurfacePropEntity:NSRenderableEntity class NSSurfacePropEntity:NSRenderableEntity

View File

@ -74,6 +74,21 @@ NSSurfacePropEntity::EvaluateEntity(void)
if (ATTR_CHANGED(velocity)) { if (ATTR_CHANGED(velocity)) {
SetSendFlags(SRFENT_CHANGED_VELOCITY); SetSendFlags(SRFENT_CHANGED_VELOCITY);
} }
if (ATTR_CHANGED(m_flBoneControl1)) {
SetSendFlags(SRFENT_CHANGED_CONTROLLER);
}
if (ATTR_CHANGED(m_flBoneControl2)) {
SetSendFlags(SRFENT_CHANGED_CONTROLLER);
}
if (ATTR_CHANGED(m_flBoneControl3)) {
SetSendFlags(SRFENT_CHANGED_CONTROLLER);
}
if (ATTR_CHANGED(m_flBoneControl4)) {
SetSendFlags(SRFENT_CHANGED_CONTROLLER);
}
if (ATTR_CHANGED(m_flBoneControl5)) {
SetSendFlags(SRFENT_CHANGED_CONTROLLER);
}
SAVE_STATE(origin); SAVE_STATE(origin);
SAVE_STATE(angles); SAVE_STATE(angles);
@ -88,6 +103,11 @@ NSSurfacePropEntity::EvaluateEntity(void)
SAVE_STATE(m_iBody); SAVE_STATE(m_iBody);
SAVE_STATE(scale); SAVE_STATE(scale);
SAVE_STATE(velocity); SAVE_STATE(velocity);
SAVE_STATE(m_flBoneControl1);
SAVE_STATE(m_flBoneControl2);
SAVE_STATE(m_flBoneControl3);
SAVE_STATE(m_flBoneControl4);
SAVE_STATE(m_flBoneControl5);
if (ATTR_CHANGED(m_iRenderMode)) { if (ATTR_CHANGED(m_iRenderMode)) {
SetSendFlags(SRFENT_CHANGED_RENDERMODE); SetSendFlags(SRFENT_CHANGED_RENDERMODE);
@ -232,7 +252,13 @@ NSSurfacePropEntity::SendEntity(entity ePEnt, float fChanged)
if (fChanged & SRFENT_CHANGED_RENDERAMT) { if (fChanged & SRFENT_CHANGED_RENDERAMT) {
WriteFloat(MSG_ENTITY, m_flRenderAmt); WriteFloat(MSG_ENTITY, m_flRenderAmt);
} }
if (fChanged & SRFENT_CHANGED_CONTROLLER) {
WriteShort(MSG_ENTITY, m_flBoneControl1 * 32767 / 360);
WriteShort(MSG_ENTITY, m_flBoneControl2 * 32767 / 360);
WriteShort(MSG_ENTITY, m_flBoneControl3 * 32767 / 360);
WriteShort(MSG_ENTITY, m_flBoneControl4 * 32767 / 360);
WriteShort(MSG_ENTITY, m_flBoneControl5 * 32767 / 360);
}
return (1); return (1);
} }
@ -319,6 +345,13 @@ NSSurfacePropEntity::ReceiveEntity(float flNew, float flChanged)
if (flChanged & SRFENT_CHANGED_RENDERAMT) { if (flChanged & SRFENT_CHANGED_RENDERAMT) {
m_flRenderAmt = readfloat(); m_flRenderAmt = readfloat();
} }
if (flChanged & SRFENT_CHANGED_CONTROLLER) {
m_flBoneControl1 = readshort() / (32767 / 360);
m_flBoneControl2 = readshort() / (32767 / 360);
m_flBoneControl3 = readshort() / (32767 / 360);
m_flBoneControl4 = readshort() / (32767 / 360);
m_flBoneControl5 = readshort() / (32767 / 360);
}
if (modelindex) { if (modelindex) {
drawmask = MASK_ENGINE; drawmask = MASK_ENGINE;
@ -533,7 +566,7 @@ NSSurfacePropEntity::Input(entity eAct, string strInput, string strData)
Extinguish(); Extinguish();
break; break;
default: default:
NSRenderableEntity::Input(eAct, strInput, strData); super::Input(eAct, strInput, strData);
} }
} }
@ -559,7 +592,7 @@ NSSurfacePropEntity::SpawnKey(string strKey, string strValue)
break; break;
#endif #endif
default: default:
NSRenderableEntity::SpawnKey(strKey, strValue); super::SpawnKey(strKey, strValue);
break; break;
} }
} }