NSRenderableEntity: Add RFX_GLOWSHELL effect. Note that .fatness doesn't

currently work on HL MDL.
This commit is contained in:
Marco Cawthorne 2022-03-15 00:01:20 -07:00
parent dca95b5c45
commit 88a1984d09
Signed by: eukara
GPG Key ID: C196CD8BA993248A
4 changed files with 25 additions and 20 deletions

View File

@ -37,6 +37,9 @@ font_s FONT_16;
font_s FONT_20;
font_s FONT_CON;
var string g_shellchrome;
var float g_shellchromeshader;
/* clientside cvars */
var float autocvar_zoom_sensitivity = 1.0f;
var int autocvar_cl_smoothstairs = TRUE;
@ -82,7 +85,6 @@ drawstring_r(vector p, string t, vector s, vector c, float a, float f)
}
void GameMessage_Setup(string, int);
void Game_Input(void);
void View_SetMuzzleflash(int);
void Event_Callback(float mtime, __inout float btime);

View File

@ -117,6 +117,9 @@ CSQC_RendererRestarted(string rstr)
Entities_RendererRestarted();
DetailTex_Init();
g_shellchrome = spriteframe("sprites/shellchrome.spr", 0, 0.0f);
g_shellchromeshader = shaderforname("shellchrome", sprintf("{\n{\nmap %s\ntcGen environment\nrgbGen entity\n}\n}", "textures/sfx/reflection.tga"));
/* end msg */
print("Graphical resources reloaded\n");
}

View File

@ -762,15 +762,6 @@ NSMonster::SendEntity(entity ePEnt, float fChanged)
/*if (cvar("developer") == 0 && m_iRenderMode == RM_TRIGGER)
return (0);*/
#ifdef GS_RENDERFX
/* let's not waste networking power on certain render-modes where they would
* not apply anyway. this seems sensible enough. */
if (m_iRenderMode == RM_NORMAL || m_iRenderMode == RM_TRIGGER) {
fChanged &= ~BASEFL_CHANGED_RENDERCOLOR;
fChanged &= ~BASEFL_CHANGED_RENDERAMT;
}
#endif
/* broadcast how much data is expected to be read */
WriteFloat(MSG_ENTITY, fChanged);

View File

@ -105,6 +105,9 @@ NSRenderableEntity::EvaluateEntity(void)
if (ATTR_CHANGED(m_iRenderMode)) {
SetSendFlags(BASEFL_CHANGED_RENDERMODE);
}
if (ATTR_CHANGED(m_iRenderFX)) {
SetSendFlags(BASEFL_CHANGED_RENDERMODE);
}
if (ATTR_CHANGED(m_vecRenderColor)) {
SetSendFlags(BASEFL_CHANGED_RENDERCOLOR);
@ -168,16 +171,6 @@ NSRenderableEntity::SendEntity(entity ePEnt, float fChanged)
/*if (cvar("developer") == 0 && m_iRenderMode == RM_TRIGGER)
return (0);*/
#ifdef GS_RENDERFX
/* let's not waste networking power on certain render-modes where they would
* not apply anyway. this seems sensible enough. */
if (m_iRenderMode == RM_NORMAL || m_iRenderMode == RM_TRIGGER) {
if (!glowmod) /* FIXME: Get rid of this, network this hack on its own. */
fChanged &= ~BASEFL_CHANGED_RENDERCOLOR;
fChanged &= ~BASEFL_CHANGED_RENDERAMT;
}
#endif
/* broadcast how much data is expected to be read */
WriteFloat(MSG_ENTITY, fChanged);
@ -434,6 +427,22 @@ NSRenderableEntity::RenderFXPass(void)
drawflags = 7;
abslight = 128;
break;
case RFX_GLOWSHELL:
/* make this entity shellchrome */
effects = EF_ADDITIVE;
fatness = 0;
colormod = m_vecRenderColor;
forceshader = g_shellchromeshader;
alpha = 1.0;
/* copy entity into rendering queue */
addentity(this);
/* reset */
forceshader = 0;
fatness = 0;
colormod = [1,1,1];
alpha = 1.0f;
effects = 0;
break;
default:
break;
}