env_beam/env_laser: Add ::RendererRestarted to fix textures upon video memory refreshes

This commit is contained in:
Marco Cawthorne 2023-09-20 20:53:13 -07:00
parent a1500166be
commit f5308f6e08
Signed by: eukara
GPG Key ID: CE2032F0A2882A22
3 changed files with 18 additions and 3 deletions

View File

@ -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)

View File

@ -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;

View File

@ -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] = {