diff --git a/src/gs-entbase/client/baseentity.cpp b/src/gs-entbase/client/baseentity.cpp index fed51881..3decd414 100644 --- a/src/gs-entbase/client/baseentity.cpp +++ b/src/gs-entbase/client/baseentity.cpp @@ -51,36 +51,26 @@ CBaseEntity::RenderFXPass(void) abslight = 255; break; case RM_GLOW: - if (checkpvs(vecPlayer, this) == FALSE) { + if (checkpvs(vecPlayer, this) == FALSE) alpha -= clframetime; - } other = world; traceline(this.origin, vecPlayer, MOVE_OTHERONLY, this); /* If we can't trace against the player, or are two close, fade out */ - if (trace_fraction < 1.0f || vlen(origin - vecPlayer) < 128) { + if (trace_fraction < 1.0f || vlen(origin - vecPlayer) < 128) alpha -= clframetime; - } else { + else alpha += clframetime; - } - alpha = bound(0, alpha, 1.0f); + /* max alpha will be applied here to the color instead */ + colormod *= m_flRenderAmt; + alpha = bound(0.0f, alpha, 1.0f); effects = EF_ADDITIVE | EF_FULLBRIGHT; - if (alpha > 0) { - float falpha; - - /* Scale the glow somewhat with the players distance */ + /* Scale the glow somewhat with the players distance */ + if (alpha > 0.0f) scale = bound(1, vlen(vecPlayer - origin) / 256, 4); - - /* Fade out when the player is starting to move away */ - falpha = 1 - bound(0, vlen(vecPlayer - origin) / 1024, 1); - falpha *= alpha; - - /* Clamp the alpha by the glows' renderamt value */ - alpha = bound(0, falpha, m_flRenderAmt); - } break; case RM_SOLID: break; @@ -223,7 +213,8 @@ CBaseEntity::Sentence(string msg) m_flSentenceTime = time; } -void CBaseEntity::ReceiveEntity(float flChanged) +void +CBaseEntity::ReceiveEntity(float flChanged) { if (flChanged & BASEFL_CHANGED_ORIGIN) { origin[0] = readcoord(); @@ -306,57 +297,57 @@ void CBaseEntity::ReceiveEntity(float flChanged) setsize(this, mins, maxs); } -void CBaseEntity::SpawnKey(string strField, string strKey) +void +CBaseEntity::SpawnKey(string strField, string strKey) { switch (strField) { - /* compiler specific stuff */ - case "angle": - case "_minlight": - case "_cs": - break; - case "shadows": - if (stof(strKey) == 1) { - effects &= ~EF_NOSHADOW; - } - break; - case "targetname": - targetname = strKey; - break; - case "target": - target = strKey; - break; - case "origin": - origin = stov(strKey); - setorigin(this, origin); - break; - case "angles": - angles = stov(strKey); - break; - case "model": - model = strKey; - break; - case "style": - style = stof(strKey); - break; - case "color": - color = stov(strKey); - break; - case "movetype": - movetype = stof(strKey); - break; - case "solid": - solid = stof(strKey); - break; - case "scale": - scale = stof(strKey); - break; - case "spawnflags": - spawnflags = stof(strKey); - break; - default: + /* compiler specific stuff */ + case "angle": + case "_minlight": + case "_cs": + break; + case "shadows": + if (stof(strKey) == 1) + effects &= ~EF_NOSHADOW; + break; + case "targetname": + targetname = strKey; + break; + case "target": + target = strKey; + break; + case "origin": + origin = stov(strKey); + setorigin(this, origin); + break; + case "angles": + angles = stov(strKey); + break; + case "model": + model = strKey; + break; + case "style": + style = stof(strKey); + break; + case "color": + color = stov(strKey); + break; + case "movetype": + movetype = stof(strKey); + break; + case "solid": + solid = stof(strKey); + break; + case "scale": + scale = stof(strKey); + break; + case "spawnflags": + spawnflags = stof(strKey); + break; + default: #ifdef GS_DEVELOPER - print(sprintf("%s::SpawnKey: Unknown '%s' value '%s'\n", - this.classname, strField, strKey)); + print(sprintf("%s::SpawnKey: Unknown '%s' value '%s'\n", + this.classname, strField, strKey)); #endif } } @@ -395,21 +386,25 @@ CBaseEntity::ModelEvent(float fTimeStamp, int iCode, string sData) } } -void CBaseEntity::Init(void) +void +CBaseEntity::Init(void) { isCSQC = TRUE; effects |= EF_NOSHADOW; - for (int i = 0; i < (tokenize(__fullspawndata) - 1); i += 2) { + + for (int i = 0; i < (tokenize(__fullspawndata) - 1); i += 2) SpawnKey(argv(i), argv(i+1)); - } + Initialized(); } -void CBaseEntity::Initialized(void) +void +CBaseEntity::Initialized(void) { } -void CBaseEntity::CBaseEntity(void) +void +CBaseEntity::CBaseEntity(void) { } diff --git a/src/gs-entbase/client/env_glow.cpp b/src/gs-entbase/client/env_glow.cpp index 35c20bba..2ed83a7b 100644 --- a/src/gs-entbase/client/env_glow.cpp +++ b/src/gs-entbase/client/env_glow.cpp @@ -34,7 +34,6 @@ class env_glow:CBaseEntity float m_flScale; void(void) env_glow; - virtual void(void) customphysics; virtual float() predraw; virtual void(string, string) SpawnKey; }; @@ -54,19 +53,24 @@ env_glow::predraw(void) if (checkpvs(vecPlayer, this) == FALSE) return PREDRAW_NEXT; + other = world; + traceline(this.origin, vecPlayer, MOVE_OTHERONLY, this); + + /* If we can't trace against the player, or are two close, fade out */ + if (trace_fraction < 1.0f || vlen(origin - vecPlayer) < 128) + m_flAlpha -= clframetime; + else + m_flAlpha += clframetime; + m_flAlpha = bound(0.0f, m_flAlpha, 1.0f); - if (m_flAlpha < 0.0f) + if (m_flAlpha <= 0.0f) return PREDRAW_NEXT; /* Scale the glow somewhat with the players distance */ fsize = m_vecSize * m_flScale; fsize *= bound(1, vlen(vecPlayer - origin) / 256, 4); - /* Fade out when the player is starting to move away */ - falpha = 1; - falpha *= m_flAlpha; - makevectors(view_angles); /* Nudge this slightly towards the camera */ @@ -77,40 +81,19 @@ env_glow::predraw(void) makevectors(view_angles); R_BeginPolygon(m_strSprite, 1, 0); R_PolygonVertex(forg + v_right * fsize[0] - v_up * fsize[1], - [1,1], m_vecColor * m_flMaxAlpha, falpha); + [1,1], m_vecColor * m_flMaxAlpha, m_flAlpha); R_PolygonVertex(forg - v_right * fsize[0] - v_up * fsize[1], - [0,1], m_vecColor * m_flMaxAlpha, falpha); + [0,1], m_vecColor * m_flMaxAlpha, m_flAlpha); R_PolygonVertex(forg - v_right * fsize[0] + v_up * fsize[1], - [0,0], m_vecColor * m_flMaxAlpha, falpha); + [0,0], m_vecColor * m_flMaxAlpha, m_flAlpha); R_PolygonVertex(forg + v_right * fsize[0] + v_up * fsize[1], - [1,0], m_vecColor * m_flMaxAlpha, falpha); + [1,0], m_vecColor * m_flMaxAlpha, m_flAlpha); R_EndPolygon(); addentity(this); return PREDRAW_NEXT; } -void -env_glow::customphysics(void) -{ - vector vecPlayer; - int s = (float)getproperty(VF_ACTIVESEAT); - - pSeat = &g_seats[s]; - vecPlayer = pSeat->m_vecPredictedOrigin; - - other = world; - traceline(this.origin, vecPlayer, MOVE_OTHERONLY, this); - - /* If we can't trace against the player, or are two close, fade out */ - if (trace_fraction < 1.0f || vlen(origin - vecPlayer) < 128) { - m_flAlpha -= clframetime; - return; - } - - m_flAlpha += clframetime; -} - void env_glow::SpawnKey(string strField, string strKey) {