Added 'shadows' key to CBaseEntity.

This commit is contained in:
Marco Cawthorne 2020-03-03 22:44:35 +01:00
parent 9a5d0defac
commit d25aead1a7
2 changed files with 33 additions and 2 deletions

View file

@ -42,8 +42,16 @@ class CBaseEntity
virtual void() Initialized;
virtual void(string, string) SpawnKey;
virtual void(float flChanged) ReadEntity;
virtual float(void) predraw;
};
float CBaseEntity::predraw(void)
{
frame1time += clframetime;
addentity(this);
return PREDRAW_NEXT;
}
void CBaseEntity::ReadEntity(float flChanged)
{
if (flChanged & BASEFL_CHANGED_ORIGIN) {
@ -78,6 +86,7 @@ void CBaseEntity::ReadEntity(float flChanged)
maxs[2] = readcoord();
}
if (flChanged & BASEFL_CHANGED_FRAME) {
frame1time = 0.0;
frame = readbyte();
}
if (flChanged & BASEFL_CHANGED_SKIN) {
@ -103,6 +112,11 @@ void CBaseEntity::ReadEntity(float flChanged)
void CBaseEntity::SpawnKey(string strField, string strKey)
{
switch (strField) {
case "shadows":
if (stof(strKey) == 1) {
effects &= ~EF_NOSHADOW;
}
break;
case "targetname":
targetname = strKey;
break;
@ -141,6 +155,7 @@ void CBaseEntity::SpawnKey(string strField, string strKey)
void CBaseEntity::Init(void)
{
effects |= EF_NOSHADOW;
for (int i = 0; i < (tokenize(__fullspawndata) - 1); i += 2) {
//dprint(sprintf("SpawnData: %s %s\n", argv(i), argv(i+1)));
SpawnKey(argv(i), argv(i+1));

View file

@ -77,6 +77,10 @@ class CBaseEntity
/* Make sure StartFrame calls this */
float CBaseEntity::SendEntity(entity ePEnt, float fChanged)
{
if (!modelindex) {
return FALSE;
}
WriteByte(MSG_ENTITY, ENT_ENTITY);
WriteFloat(MSG_ENTITY, fChanged);
@ -201,7 +205,11 @@ void CBaseEntity :: CBaseEntity ( void )
gflags |= GF_CANRESPAWN;
m_oldModel = Util_FixModel(model);
precache_model(m_oldModel);
if (m_oldModel != "") {
precache_model(m_oldModel);
}
m_oldSolid = solid;
m_oldHealth = health;
m_oldOrigin = origin;
@ -211,6 +219,11 @@ void CBaseEntity :: CBaseEntity ( void )
int nfields = tokenize( __fullspawndata );
for ( int i = 1; i < ( nfields - 1 ); i += 2 ) {
switch ( argv( i ) ) {
case "shadows":
if (stof(argv( i + 1 )) == 1) {
effects &= ~EF_NOSHADOW;
}
break;
case "targetname":
m_strTargetName = argv( i + 1 );
targetname = __NULL__;
@ -268,7 +281,10 @@ void CBaseEntity :: Respawn ( void )
origin = m_oldOrigin;
angles = m_oldAngle;
setorigin( this, origin );
setmodel( this, model );
if (model != "") {
setmodel(this, model);
}
}
void CBaseEntity :: Hide ( void )