From 61ea2dfe6cd8015864d159a05def3b582bf91d3a Mon Sep 17 00:00:00 2001 From: Marco Hladik Date: Wed, 22 Apr 2020 20:33:15 +0200 Subject: [PATCH] Add get/set methods for rendermodes so we can issue network-updates directly instead of wasting attributes to keep track of changes. --- src/gs-entbase/client/baseentity.cpp | 4 ++ src/gs-entbase/server/baseentity.cpp | 56 ++++++++++++-------- src/gs-entbase/server/basetrigger.cpp | 2 +- src/gs-entbase/server/cycler_sprite.cpp | 2 +- src/gs-entbase/server/env_render.cpp | 14 ++--- src/gs-entbase/server/func_ladder.cpp | 9 +--- src/gs-entbase/server/trigger_once.cpp | 8 +-- src/gs-entbase/server/trigger_transition.cpp | 2 +- 8 files changed, 49 insertions(+), 48 deletions(-) diff --git a/src/gs-entbase/client/baseentity.cpp b/src/gs-entbase/client/baseentity.cpp index 1a6f068e..1cae058d 100644 --- a/src/gs-entbase/client/baseentity.cpp +++ b/src/gs-entbase/client/baseentity.cpp @@ -14,6 +14,10 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +/* a lot of the rendering info is assembled with the following url: + * https://sites.google.com/site/svenmanor/rendermodes + * for reference. I thank thee fellow soldiers at sven manor! */ + var int autocvar_cl_showtriggers = FALSE; string __fullspawndata; diff --git a/src/gs-entbase/server/baseentity.cpp b/src/gs-entbase/server/baseentity.cpp index 4693682d..5a381025 100644 --- a/src/gs-entbase/server/baseentity.cpp +++ b/src/gs-entbase/server/baseentity.cpp @@ -44,11 +44,6 @@ class CBaseEntity float m_flRenderAmt; vector m_vecRenderColor; - int m_old_iRenderFX; - float m_old_iRenderMode; - float m_old_flRenderAmt; - vector m_old_vecRenderColor; - int m_spawn_iRenderFX; float m_spawn_iRenderMode; float m_spawn_flRenderAmt; @@ -66,8 +61,42 @@ class CBaseEntity virtual float(entity, float) SendEntity; virtual void(int iHitBody) Pain; virtual void(int iHitBody) Death; + +#ifdef GS_RENDERFX + virtual void(int) SetRenderFX; + virtual void(float) SetRenderMode; + virtual void(float) SetRenderAmt; + virtual void(vector) SetRenderColor; +#endif }; +#ifdef GS_RENDERFX +void +CBaseEntity::SetRenderFX(int newFX) +{ + m_iRenderFX = newFX; + SendFlags |= BASEFL_CHANGED_RENDERFX; +} +void +CBaseEntity::SetRenderMode(float newMode) +{ + m_iRenderMode = newMode; + SendFlags |= BASEFL_CHANGED_RENDERMODE; +} +void +CBaseEntity::SetRenderAmt(float newAmt) +{ + m_flRenderAmt = newAmt; + SendFlags |= BASEFL_CHANGED_RENDERAMT; +} +void +CBaseEntity::SetRenderColor(vector newColor) +{ + m_vecRenderColor = newColor; + SendFlags |= BASEFL_CHANGED_RENDERCOLOR; +} +#endif + /* Make sure StartFrame calls this */ float CBaseEntity::SendEntity(entity ePEnt, float fChanged) @@ -206,22 +235,7 @@ CBaseEntity::ParentUpdate(void) oldnet_body = m_iBody; } #ifdef GS_RENDERFX - if (m_old_iRenderFX != m_iRenderFX) { - SendFlags |= BASEFL_CHANGED_RENDERFX; - m_old_iRenderFX = m_iRenderFX; - } - if (m_old_iRenderMode != m_iRenderMode) { - SendFlags |= BASEFL_CHANGED_RENDERMODE; - m_old_iRenderMode = m_iRenderMode; - } - if (m_old_flRenderAmt != m_flRenderAmt) { - SendFlags |= BASEFL_CHANGED_RENDERAMT; - m_old_flRenderAmt = m_flRenderAmt; - } - if (m_old_vecRenderColor != m_vecRenderColor) { - SendFlags |= BASEFL_CHANGED_RENDERCOLOR; - m_old_vecRenderColor = m_vecRenderColor; - } + #else if (alpha != oldnet_alpha) { SendFlags |= BASEFL_CHANGED_ALPHA; diff --git a/src/gs-entbase/server/basetrigger.cpp b/src/gs-entbase/server/basetrigger.cpp index cc1689ec..11dc89a2 100644 --- a/src/gs-entbase/server/basetrigger.cpp +++ b/src/gs-entbase/server/basetrigger.cpp @@ -133,7 +133,7 @@ CBaseTrigger::InitBrushTrigger(void) setmodel(this, m_oldModel); movetype = MOVETYPE_NONE; solid = SOLID_BSPTRIGGER; - m_iRenderMode = RM_TRIGGER; + SetRenderMode(RM_TRIGGER); } void diff --git a/src/gs-entbase/server/cycler_sprite.cpp b/src/gs-entbase/server/cycler_sprite.cpp index 223ff550..bae34909 100644 --- a/src/gs-entbase/server/cycler_sprite.cpp +++ b/src/gs-entbase/server/cycler_sprite.cpp @@ -24,7 +24,7 @@ Decorative, does nothing yet. */ -class cycler_sprite:CBaseTrigger +class cycler_sprite:CBaseEntity { }; diff --git a/src/gs-entbase/server/env_render.cpp b/src/gs-entbase/server/env_render.cpp index f0a3791a..64eef77a 100644 --- a/src/gs-entbase/server/env_render.cpp +++ b/src/gs-entbase/server/env_render.cpp @@ -47,26 +47,22 @@ env_render::Trigger(void) CBaseEntity trigger = (CBaseEntity)e; dprint(sprintf("^2env_render::^3Trigger^7: with spawnflags %d\n", spawnflags)); - print(sprintf("\tTarget: %s\n", m_strTarget)); + dprint(sprintf("\tTarget: %s\n", m_strTarget)); if (!(spawnflags & SF_NORENDERMODE)) { dprint(sprintf("\tMode change from %d to %d\n", trigger.m_iRenderMode, m_iRenderMode)); - trigger.m_iRenderMode = m_iRenderMode; - trigger.SendFlags |= BASEFL_CHANGED_RENDERMODE; + trigger.SetRenderMode(m_iRenderMode); } if (!(spawnflags & SF_NORENDERCOLOR)) { dprint(sprintf("\tColor change from %v to %v\n", trigger.m_vecRenderColor, m_vecRenderColor)); - trigger.m_vecRenderColor = m_vecRenderColor; - trigger.SendFlags |= BASEFL_CHANGED_RENDERCOLOR; + trigger.SetRenderColor(m_vecRenderColor); } if (!(spawnflags & SF_NORENDERAMT)) { dprint(sprintf("\tAmt change from %d to %d\n", trigger.m_flRenderAmt, m_flRenderAmt)); - trigger.m_flRenderAmt = m_flRenderAmt; - trigger.SendFlags |= BASEFL_CHANGED_RENDERAMT; + trigger.SetRenderAmt(m_flRenderAmt); } if (!(spawnflags & SF_NORENDERFX)) { dprint(sprintf("\tFX change from %i to %i\n", trigger.m_iRenderFX, m_iRenderFX)); - trigger.m_iRenderFX = m_iRenderFX; - trigger.SendFlags |= BASEFL_CHANGED_RENDERFX; + trigger.SetRenderFX(m_iRenderFX); } } } diff --git a/src/gs-entbase/server/func_ladder.cpp b/src/gs-entbase/server/func_ladder.cpp index e20d04a9..34b01be2 100644 --- a/src/gs-entbase/server/func_ladder.cpp +++ b/src/gs-entbase/server/func_ladder.cpp @@ -41,14 +41,7 @@ void func_ladder::Respawn(void) movetype = MOVETYPE_NONE; skin = CONTENT_LADDER; solid = SOLID_BSP; - -#ifdef GS_DEVELOPER - m_iRenderMode = RM_SOLID; - m_flRenderAmt = 0.25f; -#else - m_iRenderMode = RM_SOLID; - m_flRenderAmt = 0.0f; -#endif + SetRenderMode(RM_TRIGGER); } void func_ladder::func_ladder(void) diff --git a/src/gs-entbase/server/trigger_once.cpp b/src/gs-entbase/server/trigger_once.cpp index fbf2516c..88e2b1d5 100644 --- a/src/gs-entbase/server/trigger_once.cpp +++ b/src/gs-entbase/server/trigger_once.cpp @@ -59,13 +59,7 @@ void trigger_once::Respawn(void) { solid = SOLID_TRIGGER; -#ifdef GS_DEVELOPER - m_iRenderMode = RM_SOLID; - m_flRenderAmt = 0.25f; -#else - m_iRenderMode = RM_SOLID; - m_flRenderAmt = 0.0f; -#endif + SetRenderMode(RM_TRIGGER); } void diff --git a/src/gs-entbase/server/trigger_transition.cpp b/src/gs-entbase/server/trigger_transition.cpp index 5eb20ab8..f05af242 100644 --- a/src/gs-entbase/server/trigger_transition.cpp +++ b/src/gs-entbase/server/trigger_transition.cpp @@ -34,5 +34,5 @@ trigger_transition::trigger_transition(void) setmodel(this, model); model = __NULL__; modelindex = 0; - m_iRenderMode = RM_TRIGGER; + SetRenderMode(RM_TRIGGER); }