nuclide/src/gs-entbase/server/env_render.qc

120 lines
3.6 KiB
Plaintext

/*
* Copyright (c) 2016-2022 Vera Visions LLC.
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED env_render (1 0 0) (-8 -8 -8) (8 8 8) SF_NORENDERFX SF_NORENDERAMT SF_NORENDERMODE SF_NORENDERCOLOR
Changes the visual appearance of a target.
-------- KEYS --------
"targetname" : Name
"target" : Target when triggered.
"killtarget" : Target to kill when triggered.
"rendermode" : Render-Mode the target changes to.
"renderamt" : Render-Amount the target changes to.
"rendercolor" : Render-Color the target changes to.
"renderfx" : Render-FX the target changes to.
-------- SPAWNFLAGS --------
SF_NORENDERFX : Don't set the Render-FX attribute on the target.
SF_NORENDERAMT : Don't set the Render-Amount attribute on the target.
SF_NORENDERMODE : Don't set the Render-Mode attribute on the target.
SF_NORENDERCOLOR : Don't set the Render-Color attribute on the target.
-------- NOTES --------
The Render-FX values are currently unimplemented, except for the hologram setting.
Supported Render-Mode ("rendermode") values:
0 : Normal; Default.
1 : Color; Tints the entity after whatever "rendercolor" is set to.
2 : Texture; ???
3 : Glow; object scales against the camera depending on distance like a flare.
4 : Solid; Make transparent by respecting transparent pixels (GoldSrc)
5 : Additive; Blend the object additively against the world.
6 : Fullbright; Render the object without lighting.
Supported Render-FX ("renderfx") values:
0 : Normal
1 : Slow pulse
2 : Fast pulse
3 : Slow, wide, pulse
4 : Fast, wide, pulse
5 : Slow fade away
6 : Fast fade away
7 : Slow become solid
8 : Fast become solid
9 : Slow strobe
10 : Fast strobe
11 : Faster strobe
12 : Slow flicker
13 : Fast flicker
14 : Constant glow
15 : Distort
16 : Hologram
-------- TRIVIA --------
This entity was introduced in Half-Life (1998).
*/
enumflags
{
SF_NORENDERFX,
SF_NORENDERAMT,
SF_NORENDERMODE,
SF_NORENDERCOLOR
};
class
env_render:NSRenderableEntity
{
public:
void env_render(void);
virtual void Trigger(entity,int);
};
void
env_render::env_render(void)
{
}
void
env_render::Trigger(entity act, int state)
{
for (entity e = world;
(e = find(e, ::targetname, target));) {
NSRenderableEntity trigger = (NSRenderableEntity)e;
NSLog("^2env_render::^3Trigger^7: with spawnflags %d", spawnflags);
NSLog("\tTarget: %s", target);
if (!HasSpawnFlags(SF_NORENDERMODE)) {
NSLog("\tMode change from %d to %d", trigger.m_iRenderMode, m_iRenderMode);
trigger.SetRenderMode(m_iRenderMode);
}
if (!HasSpawnFlags(SF_NORENDERCOLOR)) {
NSLog("\tColor change from %v to %v", trigger.m_vecRenderColor, m_vecRenderColor);
trigger.SetRenderColor(m_vecRenderColor);
}
if (!HasSpawnFlags(SF_NORENDERAMT)) {
NSLog("\tAmt change from %d to %d", trigger.m_flRenderAmt, m_flRenderAmt);
trigger.SetRenderAmt(m_flRenderAmt);
}
if (!HasSpawnFlags(SF_NORENDERFX)) {
NSLog("\tFX change from %d to %d", trigger.m_iRenderFX, m_iRenderFX);
trigger.SetRenderFX(m_iRenderFX);
}
}
}