diff --git a/src/gs-entbase/shared/env_beam.qc b/src/gs-entbase/shared/env_beam.qc index c22127ab..041ac74a 100644 --- a/src/gs-entbase/shared/env_beam.qc +++ b/src/gs-entbase/shared/env_beam.qc @@ -93,6 +93,7 @@ public: #else virtual float predraw(void); virtual void ReceiveEntity(float,float); + virtual void RendererRestarted(void); #endif private: @@ -384,14 +385,20 @@ env_beam::ReceiveEntity(float flNew, float flChanged) drawmask = MASK_ENGINE; setsize(this, [0,0,0], [0,0,0]); - setorigin(this, m_vecStartPos); + origin = m_vecStartPos; /* the sprite has changed, we need to query a new texture */ if (flChanged & BEAM_CHANGED_SPRITE) { - m_strTexture = spriteframe(modelnameforindex(m_iSpriteID), 0, 0.0f); + RendererRestarted(); } } +void +env_beam::RendererRestarted(void) +{ + m_strTexture = spriteframe(modelnameforindex(m_iSpriteID), 0, 0.0f); +} + #define BEAM_COUNT 16 float pseudorand(float input) diff --git a/src/gs-entbase/shared/env_glow.qc b/src/gs-entbase/shared/env_glow.qc index 523ad5f3..f9209f1c 100644 --- a/src/gs-entbase/shared/env_glow.qc +++ b/src/gs-entbase/shared/env_glow.qc @@ -296,6 +296,7 @@ env_glow::predraw(void) vector vecAngle = g_view.GetCameraAngle(); float flDist = vlen(vecPlayer - origin); + /* HACK: GoldSrc does this */ if (GetRenderMode() == RM_GLOW) scale = 1.0f; diff --git a/src/gs-entbase/shared/env_laser.qc b/src/gs-entbase/shared/env_laser.qc index a3af8f7d..8c4b0047 100644 --- a/src/gs-entbase/shared/env_laser.qc +++ b/src/gs-entbase/shared/env_laser.qc @@ -78,6 +78,7 @@ public: #else virtual float predraw(void); virtual void ReceiveEntity(float,float); + virtual void RendererRestarted(void); #endif private: @@ -285,10 +286,16 @@ env_laser::ReceiveEntity(float flNew, float flChanged) /* the sprite has changed, we need to query a new texture */ if (flChanged & LASER_CHANGED_SPRITE) { - m_strTexture = spriteframe(modelnameforindex(m_iSpriteID), 0, 0.0f); + RendererRestarted(); } } +void +env_laser::RendererRestarted(void) +{ + m_strTexture = spriteframe(modelnameforindex(m_iSpriteID), 0, 0.0f); +} + #define LASER_COUNT 16 static float env_laser_jitlut[LASER_COUNT] = {