Starting to clean up more RenderFX stuff, shoving most of it to CGame
This commit is contained in:
parent
f6b26302a2
commit
e5a3f0880c
21 changed files with 261 additions and 212 deletions
|
@ -37,13 +37,6 @@ void CSQC_Ent_Update(float new)
|
|||
case ENT_PLAYER:
|
||||
Player_ReadEntity(new);
|
||||
break;
|
||||
case ENT_NPC:
|
||||
CBaseNPC n = (CBaseNPC)self;
|
||||
if (new) {
|
||||
spawnfunc_CBaseNPC();
|
||||
}
|
||||
n.ReadEntity(readfloat());
|
||||
break;
|
||||
case ENT_SPRITE:
|
||||
env_sprite spr = (env_sprite)self;
|
||||
if (new) {
|
||||
|
|
|
@ -26,6 +26,10 @@ class CBaseNPC:CBaseEntity
|
|||
float
|
||||
CBaseNPC::predraw(void)
|
||||
{
|
||||
#ifdef GS_RENDERFX
|
||||
RenderFXPass();
|
||||
#endif
|
||||
|
||||
if (lerpfrac > 0) {
|
||||
lerpfrac -= frametime * 5;
|
||||
if (lerpfrac < 0) {
|
||||
|
@ -43,7 +47,7 @@ CBaseNPC::predraw(void)
|
|||
|
||||
frame2time += clframetime;
|
||||
frame1time += clframetime;
|
||||
bonecontrol5 = getchannellevel(this, CHAN_VOICE) * 20;
|
||||
|
||||
|
||||
ProcessWordQue();
|
||||
|
||||
|
|
|
@ -59,8 +59,7 @@ void player::draw(void)
|
|||
}
|
||||
|
||||
this.subblendfrac =
|
||||
this.subblend2frac = this.pitch / 90;
|
||||
|
||||
this.subblend2frac = this.pitch;
|
||||
Animation_PlayerUpdate();
|
||||
|
||||
/*makevectors([0, this.angles[1], 0]);
|
||||
|
@ -113,7 +112,7 @@ void player::draw(void)
|
|||
}
|
||||
|
||||
/* Turn torso */
|
||||
this.bonecontrol2 = (a)/-120;
|
||||
this.basesubblendfrac = (a)/-120;
|
||||
|
||||
/* Correct the legs */
|
||||
this.angles[1] -= a;
|
||||
|
@ -139,9 +138,9 @@ float player::predraw(void)
|
|||
makevectors(ang);
|
||||
traceline(src, src + (v_forward * 8096), FALSE, self);
|
||||
|
||||
/*if (serverkeyfloat("*bspversion") == 30) {
|
||||
if (serverkeyfloat("*bspversion") == 30) {
|
||||
dynamiclight_add(trace_endpos + (v_forward * -2), 128, [1,1,1]);
|
||||
} else */{
|
||||
} else {
|
||||
float p = dynamiclight_add(src, 512, [1,1,1], 0, "textures/flashlight");
|
||||
dynamiclight_set(p, LFIELD_ANGLES, ang);
|
||||
dynamiclight_set(p, LFIELD_FLAGS, 3);
|
||||
|
|
|
@ -158,7 +158,7 @@ void View_DrawViewModel(void)
|
|||
} else {
|
||||
if (eViewModel.forceshader) {
|
||||
eViewModel.forceshader = 0;
|
||||
eViewModel.renderflags -= RF_USEAXIS;
|
||||
eViewModel.renderflags &= ~RF_USEAXIS;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
71
src/gs-entbase/baseentity.h
Normal file
71
src/gs-entbase/baseentity.h
Normal file
|
@ -0,0 +1,71 @@
|
|||
/*
|
||||
* Copyright (c) 2016-2019 Marco Hladik <marco@icculus.org>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#define GS_RENDERFX
|
||||
|
||||
#ifdef GS_RENDERFX
|
||||
enum
|
||||
{
|
||||
RM_NORMAL,
|
||||
RM_COLOR,
|
||||
RM_TEXTURE,
|
||||
RM_GLOW,
|
||||
RM_SOLID,
|
||||
RM_ADDITIVE
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
RFX_SLOWPULSE,
|
||||
RFX_FASTPULSE,
|
||||
RFX_SLOWWIDEPULSE,
|
||||
RFX_FASTWIDEPULSE,
|
||||
RFX_SLOWFADEAWAY,
|
||||
RFX_FASTFADEAWAY,
|
||||
RFX_SLOWBECOMESOLID,
|
||||
RFX_FASTBECOMESOLID,
|
||||
RFX_SLOWSTROBE,
|
||||
RFX_FASTSTROBE,
|
||||
RFX_FASTERSTROBE,
|
||||
RFX_SLOWFLICKER,
|
||||
RFX_FASTFLICKER,
|
||||
RFX_CONSTANTGLOW,
|
||||
RFX_DISTORT,
|
||||
RFX_HOLOGRAM
|
||||
};
|
||||
#endif
|
||||
|
||||
enumflags
|
||||
{
|
||||
BASEFL_CHANGED_ORIGIN,
|
||||
BASEFL_CHANGED_ANGLES,
|
||||
BASEFL_CHANGED_MODELINDEX,
|
||||
BASEFL_CHANGED_SIZE,
|
||||
BASEFL_CHANGED_SOLID,
|
||||
BASEFL_CHANGED_FRAME,
|
||||
BASEFL_CHANGED_SKIN,
|
||||
BASEFL_CHANGED_MOVETYPE,
|
||||
BASEFL_CHANGED_EFFECTS,
|
||||
BASEFL_CHANGED_BODY,
|
||||
#ifdef GS_RENDERFX
|
||||
BASEFL_CHANGED_RENDERCOLOR,
|
||||
BASEFL_CHANGED_RENDERAMT,
|
||||
BASEFL_CHANGED_RENDERFX,
|
||||
BASEFL_CHANGED_RENDERMODE,
|
||||
#else
|
||||
BASEFL_CHANGED_ALPHA,
|
||||
#endif
|
||||
};
|
|
@ -3,6 +3,7 @@
|
|||
#endif
|
||||
|
||||
#includelist
|
||||
baseentity.h
|
||||
materials.h
|
||||
client/baseentity.cpp
|
||||
client/env_cubemap.cpp
|
||||
|
|
|
@ -17,23 +17,16 @@
|
|||
string __fullspawndata;
|
||||
string Sentences_GetSamples(string);
|
||||
|
||||
// keep in sync with client/baseentity.cpp
|
||||
enumflags
|
||||
{
|
||||
BASEFL_CHANGED_ORIGIN,
|
||||
BASEFL_CHANGED_ANGLES,
|
||||
BASEFL_CHANGED_MODELINDEX,
|
||||
BASEFL_CHANGED_SIZE,
|
||||
BASEFL_CHANGED_SOLID,
|
||||
BASEFL_CHANGED_FRAME,
|
||||
BASEFL_CHANGED_SKIN,
|
||||
BASEFL_CHANGED_MOVETYPE,
|
||||
BASEFL_CHANGED_ALPHA,
|
||||
BASEFL_CHANGED_EFFECTS
|
||||
};
|
||||
|
||||
class CBaseEntity
|
||||
{
|
||||
#ifdef GS_RENDERFX
|
||||
int m_iRenderFX;
|
||||
float m_iRenderMode;
|
||||
float m_flRenderAmt;
|
||||
vector m_vecRenderColor;
|
||||
#endif
|
||||
|
||||
int m_iBody;
|
||||
float m_flSentenceTime;
|
||||
sound_t *m_pSentenceQue;
|
||||
int m_iSentenceCount;
|
||||
|
@ -51,11 +44,51 @@ class CBaseEntity
|
|||
virtual void() ProcessWordQue;
|
||||
virtual void(float flChanged) ReadEntity;
|
||||
virtual float(void) predraw;
|
||||
|
||||
#ifdef GS_RENDERFX
|
||||
virtual void() RenderFXPass;
|
||||
#endif
|
||||
};
|
||||
|
||||
#ifdef GS_RENDERFX
|
||||
void
|
||||
CBaseEntity::RenderFXPass(void)
|
||||
{
|
||||
if (m_iRenderFX == RFX_HOLOGRAM) {
|
||||
scale = 1.0 * random();
|
||||
}
|
||||
|
||||
switch (m_iRenderMode) {
|
||||
case RM_NORMAL:
|
||||
break;
|
||||
case RM_COLOR:
|
||||
break;
|
||||
case RM_TEXTURE:
|
||||
break;
|
||||
case RM_GLOW:
|
||||
effects = EF_ADDITIVE | EF_FULLBRIGHT;
|
||||
break;
|
||||
case RM_SOLID:
|
||||
break;
|
||||
case RM_ADDITIVE:
|
||||
effects = EF_ADDITIVE;
|
||||
break;
|
||||
}
|
||||
|
||||
colormod = m_vecRenderColor;
|
||||
alpha = m_flRenderAmt;
|
||||
}
|
||||
#endif
|
||||
|
||||
float
|
||||
CBaseEntity::predraw(void)
|
||||
{
|
||||
#ifdef GS_RENDERFX
|
||||
RenderFXPass();
|
||||
#endif
|
||||
|
||||
/* mouth flapping action */
|
||||
bonecontrol5 = getchannellevel(this, CHAN_VOICE) * 20;
|
||||
frame1time += clframetime;
|
||||
ProcessWordQue();
|
||||
addentity(this);
|
||||
|
@ -154,12 +187,34 @@ void CBaseEntity::ReadEntity(float flChanged)
|
|||
if (flChanged & BASEFL_CHANGED_SKIN) {
|
||||
skin = readbyte() - 128;
|
||||
}
|
||||
if (flChanged & BASEFL_CHANGED_ALPHA) {
|
||||
alpha = readfloat();
|
||||
}
|
||||
if (flChanged & BASEFL_CHANGED_EFFECTS) {
|
||||
effects = readfloat();
|
||||
}
|
||||
if (flChanged & BASEFL_CHANGED_BODY) {
|
||||
m_iBody = readbyte();
|
||||
setcustomskin(this, "", sprintf("geomset 1 %i\n", m_iBody));
|
||||
}
|
||||
|
||||
#ifdef GS_RENDERFX
|
||||
if (flChanged & BASEFL_CHANGED_RENDERFX) {
|
||||
m_iRenderFX = readbyte();
|
||||
}
|
||||
if (flChanged & BASEFL_CHANGED_RENDERMODE) {
|
||||
m_iRenderMode = readbyte();
|
||||
}
|
||||
if (flChanged & BASEFL_CHANGED_RENDERCOLOR) {
|
||||
m_vecRenderColor[0] = readfloat();
|
||||
m_vecRenderColor[1] = readfloat();
|
||||
m_vecRenderColor[2] = readfloat();
|
||||
}
|
||||
if (flChanged & BASEFL_CHANGED_RENDERAMT) {
|
||||
m_flRenderAmt = readfloat();
|
||||
}
|
||||
#else
|
||||
if (flChanged & BASEFL_CHANGED_ALPHA) {
|
||||
alpha = readfloat();
|
||||
}
|
||||
#endif
|
||||
|
||||
if (modelindex) {
|
||||
drawmask = MASK_ENGINE;
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
#endif
|
||||
|
||||
#includelist
|
||||
baseentity.h
|
||||
materials.h
|
||||
server/defs.h
|
||||
server/baseentity.cpp
|
||||
|
|
|
@ -14,31 +14,6 @@
|
|||
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
enum
|
||||
{
|
||||
RM_NORMAL,
|
||||
RM_COLOR,
|
||||
RM_TEXTURE,
|
||||
RM_GLOW,
|
||||
RM_SOLID,
|
||||
RM_ADDITIVE
|
||||
};
|
||||
|
||||
// keep in sync with client/baseentity.cpp
|
||||
enumflags
|
||||
{
|
||||
BASEFL_CHANGED_ORIGIN,
|
||||
BASEFL_CHANGED_ANGLES,
|
||||
BASEFL_CHANGED_MODELINDEX,
|
||||
BASEFL_CHANGED_SIZE,
|
||||
BASEFL_CHANGED_SOLID,
|
||||
BASEFL_CHANGED_FRAME,
|
||||
BASEFL_CHANGED_SKIN,
|
||||
BASEFL_CHANGED_MOVETYPE,
|
||||
BASEFL_CHANGED_ALPHA,
|
||||
BASEFL_CHANGED_EFFECTS
|
||||
};
|
||||
|
||||
class CBaseEntity
|
||||
{
|
||||
string m_strTarget;
|
||||
|
@ -49,6 +24,9 @@ class CBaseEntity
|
|||
vector m_oldOrigin;
|
||||
vector m_oldAngle;
|
||||
|
||||
int m_iBody;
|
||||
int oldnet_body;
|
||||
|
||||
vector oldnet_origin;
|
||||
vector oldnet_angles;
|
||||
float oldnet_modelindex;
|
||||
|
@ -56,20 +34,29 @@ class CBaseEntity
|
|||
vector oldnet_maxs;
|
||||
float oldnet_solid;
|
||||
float oldnet_movetype;
|
||||
float oldnet_alpha;
|
||||
float oldnet_frame;
|
||||
float oldnet_skin;
|
||||
float oldnet_effects;
|
||||
|
||||
float m_rendermode;
|
||||
float m_renderamt;
|
||||
vector m_rendercolor;
|
||||
|
||||
#ifdef GS_RENDERFX
|
||||
int m_iRenderFX;
|
||||
float m_iRenderMode;
|
||||
float m_flRenderAmt;
|
||||
vector m_vecRenderColor;
|
||||
|
||||
int m_old_iRenderFX;
|
||||
float m_old_iRenderMode;
|
||||
float m_old_flRenderAmt;
|
||||
vector m_old_vecRenderColor;
|
||||
#else
|
||||
float oldnet_alpha;
|
||||
#endif
|
||||
|
||||
string m_parent;
|
||||
|
||||
void() CBaseEntity;
|
||||
virtual void() Respawn;
|
||||
virtual void() Hide;
|
||||
virtual void() RendermodeUpdate;
|
||||
virtual void() ParentUpdate;
|
||||
virtual float(entity, float) SendEntity;
|
||||
virtual void(int iHitBody) Pain;
|
||||
|
@ -120,12 +107,33 @@ float CBaseEntity::SendEntity(entity ePEnt, float fChanged)
|
|||
if (fChanged & BASEFL_CHANGED_SKIN) {
|
||||
WriteByte(MSG_ENTITY, skin + 128);
|
||||
}
|
||||
if (fChanged & BASEFL_CHANGED_ALPHA) {
|
||||
WriteFloat(MSG_ENTITY, alpha);
|
||||
}
|
||||
if (fChanged & BASEFL_CHANGED_EFFECTS) {
|
||||
WriteFloat(MSG_ENTITY, effects);
|
||||
}
|
||||
if (fChanged & BASEFL_CHANGED_BODY) {
|
||||
WriteByte(MSG_ENTITY, m_iBody);
|
||||
}
|
||||
|
||||
#ifdef GS_RENDERFX
|
||||
if (fChanged & BASEFL_CHANGED_RENDERFX) {
|
||||
WriteByte(MSG_ENTITY, m_iRenderFX);
|
||||
}
|
||||
if (fChanged & BASEFL_CHANGED_RENDERMODE) {
|
||||
WriteByte(MSG_ENTITY, m_iRenderMode);
|
||||
}
|
||||
if (fChanged & BASEFL_CHANGED_RENDERCOLOR) {
|
||||
WriteFloat(MSG_ENTITY, m_vecRenderColor[0]);
|
||||
WriteFloat(MSG_ENTITY, m_vecRenderColor[1]);
|
||||
WriteFloat(MSG_ENTITY, m_vecRenderColor[2]);
|
||||
}
|
||||
if (fChanged & BASEFL_CHANGED_RENDERAMT) {
|
||||
WriteFloat(MSG_ENTITY, m_flRenderAmt);
|
||||
}
|
||||
#else
|
||||
if (fChanged & BASEFL_CHANGED_ALPHA) {
|
||||
WriteFloat(MSG_ENTITY, alpha);
|
||||
}
|
||||
#endif
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -180,15 +188,34 @@ void CBaseEntity::ParentUpdate(void)
|
|||
SendFlags |= BASEFL_CHANGED_SKIN;
|
||||
oldnet_skin = skin;
|
||||
}
|
||||
if (alpha != oldnet_alpha) {
|
||||
SendFlags |= BASEFL_CHANGED_ALPHA;
|
||||
oldnet_alpha = alpha;
|
||||
}
|
||||
if (effects != oldnet_effects) {
|
||||
SendFlags |= BASEFL_CHANGED_EFFECTS;
|
||||
oldnet_effects = effects;
|
||||
}
|
||||
|
||||
#ifdef GS_RENDERFX
|
||||
if (m_old_iRenderFX != m_iRenderFX) {
|
||||
SendFlags |= BASEFL_CHANGED_RENDERFX;
|
||||
m_old_iRenderFX = m_iRenderFX;
|
||||
}
|
||||
if (m_old_iRenderMode != m_iRenderMode) {
|
||||
SendFlags |= BASEFL_CHANGED_RENDERMODE;
|
||||
m_old_iRenderMode = m_iRenderMode;
|
||||
}
|
||||
if (m_old_flRenderAmt != m_flRenderAmt) {
|
||||
SendFlags |= BASEFL_CHANGED_RENDERAMT;
|
||||
m_old_flRenderAmt = m_flRenderAmt;
|
||||
}
|
||||
if (m_old_vecRenderColor != m_vecRenderColor) {
|
||||
SendFlags |= BASEFL_CHANGED_RENDERCOLOR;
|
||||
m_old_vecRenderColor = m_vecRenderColor;
|
||||
}
|
||||
#else
|
||||
if (alpha != oldnet_alpha) {
|
||||
SendFlags |= BASEFL_CHANGED_ALPHA;
|
||||
oldnet_alpha = alpha;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (m_parent) {
|
||||
entity p = find(world, CBaseEntity::m_strTargetName, m_parent);
|
||||
|
||||
|
@ -210,9 +237,9 @@ void CBaseEntity :: CBaseEntity ( void )
|
|||
}
|
||||
}
|
||||
|
||||
/*m_renderamt = 255;
|
||||
m_rendercolor = [1,1,1];
|
||||
m_rendermode = 0;*/
|
||||
/*m_flRenderAmt = 255;
|
||||
m_vecRenderColor = [1,1,1];
|
||||
m_iRenderMode = 0;*/
|
||||
|
||||
gflags = GF_CANRESPAWN;
|
||||
effects |= EF_NOSHADOW;
|
||||
|
@ -243,19 +270,22 @@ void CBaseEntity :: CBaseEntity ( void )
|
|||
target = __NULL__;
|
||||
break;
|
||||
case "color":
|
||||
m_rendercolor = stov( argv( i + 1 ) );
|
||||
m_vecRenderColor = stov( argv( i + 1 ) );
|
||||
break;
|
||||
case "alpha":
|
||||
m_renderamt = stof( argv( i + 1 ) );
|
||||
m_flRenderAmt = stof( argv( i + 1 ) );
|
||||
break;
|
||||
case "renderamt":
|
||||
m_renderamt = stof( argv( i + 1 ) ) / 255;
|
||||
m_flRenderAmt = stof( argv( i + 1 ) ) / 255;
|
||||
break;
|
||||
case "rendercolor":
|
||||
m_rendercolor = stov( argv( i + 1 ) ) / 255;
|
||||
m_vecRenderColor = stov( argv( i + 1 ) ) / 255;
|
||||
break;
|
||||
case "rendermode":
|
||||
m_rendermode = stof( argv( i + 1 ) );
|
||||
m_iRenderMode = stoi( argv( i + 1 ) );
|
||||
break;
|
||||
case "renderfx":
|
||||
m_iRenderFX = stoi( argv( i + 1 ) );
|
||||
break;
|
||||
case "parentname":
|
||||
m_parent = argv(i+1);
|
||||
|
@ -278,29 +308,6 @@ void CBaseEntity :: CBaseEntity ( void )
|
|||
m_oldHealth = health;
|
||||
m_oldOrigin = origin;
|
||||
m_oldAngle = angles;
|
||||
|
||||
RendermodeUpdate();
|
||||
}
|
||||
|
||||
void CBaseEntity::RendermodeUpdate(void)
|
||||
{
|
||||
if (m_rendermode == RM_NORMAL) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (m_rendermode == RM_SOLID && m_renderamt != 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
colormod = m_rendercolor;
|
||||
alpha = bound(0.001, m_renderamt, 1.0);
|
||||
|
||||
if ( m_rendermode == RM_ADDITIVE ) {
|
||||
effects = EF_FLAG2; // SSQC: EF_ADDITIVE
|
||||
} else if ( m_rendermode == RM_GLOW ) {
|
||||
effects = EF_FLAG2 | EF_FULLBRIGHT;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void CBaseEntity :: Respawn ( void )
|
||||
|
|
|
@ -56,8 +56,6 @@ enumflags {
|
|||
|
||||
class CBaseMonster:CBaseEntity
|
||||
{
|
||||
int body;
|
||||
int oldnet_body;
|
||||
vector oldnet_velocity;
|
||||
float m_flPitch;
|
||||
int m_iFlags;
|
||||
|
@ -92,8 +90,6 @@ class CBaseMonster:CBaseEntity
|
|||
virtual void() IdleNoise;
|
||||
virtual void() Gib;
|
||||
virtual void(string) Sound;
|
||||
virtual float(entity, float) SendEntity;
|
||||
virtual void() ParentUpdate;
|
||||
|
||||
/* sequences */
|
||||
virtual void() FreeState;
|
||||
|
@ -133,45 +129,6 @@ void CBaseMonster::Sound(string msg)
|
|||
sound(this, CHAN_VOICE, msg, 1.0, ATTN_NORM);
|
||||
}
|
||||
|
||||
float CBaseMonster::SendEntity(entity ePEnt, float fChanged)
|
||||
{
|
||||
if (modelindex == 0) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
WriteByte(MSG_ENTITY, ENT_NPC);
|
||||
WriteFloat(MSG_ENTITY, fChanged);
|
||||
|
||||
if (fChanged & NPC_MODELINDEX)
|
||||
WriteShort(MSG_ENTITY, modelindex);
|
||||
if (fChanged & NPC_ORIGIN_X)
|
||||
WriteCoord(MSG_ENTITY, origin[0]);
|
||||
if (fChanged & NPC_ORIGIN_Y)
|
||||
WriteCoord(MSG_ENTITY, origin[1]);
|
||||
if (fChanged & NPC_ORIGIN_Z)
|
||||
WriteCoord(MSG_ENTITY, origin[2]);
|
||||
if (fChanged & NPC_ANGLES_X)
|
||||
WriteFloat(MSG_ENTITY, angles[0]);
|
||||
if (fChanged & NPC_ANGLES_Y)
|
||||
WriteFloat(MSG_ENTITY, angles[1]);
|
||||
if (fChanged & NPC_ANGLES_Z)
|
||||
WriteFloat(MSG_ENTITY, angles[2]);
|
||||
if (fChanged & NPC_VELOCITY_X)
|
||||
WriteCoord(MSG_ENTITY, velocity[0]);
|
||||
if (fChanged & NPC_VELOCITY_Y)
|
||||
WriteCoord(MSG_ENTITY, velocity[1]);
|
||||
if (fChanged & NPC_VELOCITY_Z)
|
||||
WriteCoord(MSG_ENTITY, velocity[2]);
|
||||
if (fChanged & NPC_FRAME)
|
||||
WriteByte(MSG_ENTITY, frame);
|
||||
if (fChanged & NPC_SKIN)
|
||||
WriteByte(MSG_ENTITY, skin);
|
||||
if (fChanged & NPC_BODY)
|
||||
WriteByte(MSG_ENTITY, body);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void CBaseMonster::Gib(void)
|
||||
{
|
||||
takedamage = DAMAGE_NO;
|
||||
|
@ -383,44 +340,6 @@ void CBaseMonster::PlayerUse(void)
|
|||
|
||||
}
|
||||
|
||||
void CBaseMonster::ParentUpdate(void)
|
||||
{
|
||||
if (modelindex != oldnet_modelindex)
|
||||
SendFlags |= NPC_MODELINDEX;
|
||||
if (origin[0] != oldnet_origin[0])
|
||||
SendFlags |= NPC_ORIGIN_X;
|
||||
if (origin[1] != oldnet_origin[1])
|
||||
SendFlags |= NPC_ORIGIN_Y;
|
||||
if (origin[2] != oldnet_origin[2])
|
||||
SendFlags |= NPC_ORIGIN_Z;
|
||||
if (angles[0] != oldnet_angles[0])
|
||||
SendFlags |= NPC_ANGLES_X;
|
||||
if (angles[1] != oldnet_angles[1])
|
||||
SendFlags |= NPC_ANGLES_Y;
|
||||
if (angles[2] != oldnet_angles[2])
|
||||
SendFlags |= NPC_ANGLES_Z;
|
||||
if (velocity[0] != oldnet_velocity[0])
|
||||
SendFlags |= NPC_VELOCITY_X;
|
||||
if (velocity[1] != oldnet_velocity[1])
|
||||
SendFlags |= NPC_VELOCITY_Y;
|
||||
if (velocity[2] != oldnet_velocity[2])
|
||||
SendFlags |= NPC_VELOCITY_Z;
|
||||
if (frame != oldnet_frame)
|
||||
SendFlags |= NPC_FRAME;
|
||||
if (skin != oldnet_skin)
|
||||
SendFlags |= NPC_SKIN;
|
||||
if (body != oldnet_body)
|
||||
SendFlags |= NPC_BODY;
|
||||
|
||||
oldnet_modelindex = modelindex;
|
||||
oldnet_origin = origin;
|
||||
oldnet_angles = angles;
|
||||
oldnet_velocity = velocity;
|
||||
oldnet_frame = frame;
|
||||
oldnet_skin = skin;
|
||||
oldnet_body = body;
|
||||
}
|
||||
|
||||
void CBaseMonster::Pain(int iHitBody)
|
||||
{
|
||||
|
||||
|
|
|
@ -47,10 +47,10 @@ void env_fade :: Trigger (void)
|
|||
{
|
||||
WriteByte(MSG_MULTICAST, SVC_CGAMEPACKET);
|
||||
WriteByte(MSG_MULTICAST, EV_FADE);
|
||||
WriteByte(MSG_MULTICAST, m_rendercolor[0]);
|
||||
WriteByte(MSG_MULTICAST, m_rendercolor[1]);
|
||||
WriteByte(MSG_MULTICAST, m_rendercolor[2]);
|
||||
WriteByte(MSG_MULTICAST, m_renderamt);
|
||||
WriteFloat(MSG_MULTICAST, m_vecRenderColor[0]);
|
||||
WriteFloat(MSG_MULTICAST, m_vecRenderColor[1]);
|
||||
WriteFloat(MSG_MULTICAST, m_vecRenderColor[2]);
|
||||
WriteFloat(MSG_MULTICAST, m_flRenderAmt);
|
||||
WriteFloat(MSG_MULTICAST, m_flFadeDuration);
|
||||
WriteFloat(MSG_MULTICAST, m_flFadeHold);
|
||||
WriteByte(MSG_MULTICAST, spawnflags);
|
||||
|
|
|
@ -43,15 +43,17 @@ void env_render::Trigger(void)
|
|||
(eFind = find(eFind, CBaseTrigger::m_strTargetName, m_strTarget));) {
|
||||
CBaseEntity trigger = (CBaseEntity) eFind;
|
||||
if (!(spawnflags & SF_NORENDERMODE)) {
|
||||
trigger.m_rendermode = m_rendermode;
|
||||
trigger.m_iRenderMode = m_iRenderMode;
|
||||
}
|
||||
if (!(spawnflags & SF_NORENDERCOLOR)) {
|
||||
trigger.m_rendercolor = m_rendercolor;
|
||||
trigger.m_vecRenderColor = m_vecRenderColor;
|
||||
}
|
||||
if (!(spawnflags & SF_NORENDERAMT)) {
|
||||
trigger.m_renderamt = m_renderamt;
|
||||
trigger.m_flRenderAmt = m_flRenderAmt;
|
||||
}
|
||||
if (!(spawnflags & SF_NORENDERFX)) {
|
||||
trigger.m_iRenderFX = m_iRenderFX;
|
||||
}
|
||||
trigger.RendermodeUpdate();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -662,11 +662,11 @@ void monster_scientist::monster_scientist(void)
|
|||
precache_sound(sci_sndidle[i]);
|
||||
}
|
||||
|
||||
body = -1;
|
||||
m_iBody = -1;
|
||||
for (int i = 1; i < (tokenize(__fullspawndata)-1); i += 2) {
|
||||
switch (argv(i)) {
|
||||
case "body":
|
||||
body = stoi(argv(i+1)) + 1;
|
||||
m_iBody = stoi(argv(i+1)) + 1;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -677,13 +677,13 @@ void monster_scientist::monster_scientist(void)
|
|||
CBaseEntity::CBaseEntity();
|
||||
precache_model(m_oldModel);
|
||||
|
||||
if (body == -1) {
|
||||
if (m_iBody == -1) {
|
||||
/* This stuff needs to be persistent because we can't guarantee that
|
||||
* the client-side geomset refresh happens. Don't shove this into Respawn */
|
||||
body = floor(random(1,5));
|
||||
m_iBody = floor(random(1,5));
|
||||
}
|
||||
|
||||
switch (body) {
|
||||
switch (m_iBody) {
|
||||
case 1:
|
||||
m_flPitch = 105;
|
||||
netname = "Walter";
|
||||
|
|
|
@ -79,7 +79,6 @@ void Game_Input(void)
|
|||
BASEFL_CHANGED_FRAME |
|
||||
BASEFL_CHANGED_SKIN |
|
||||
BASEFL_CHANGED_MOVETYPE |
|
||||
BASEFL_CHANGED_ALPHA |
|
||||
BASEFL_CHANGED_EFFECTS;
|
||||
}
|
||||
bprint(PRINT_HIGH, "Respawning all map entities...\n");
|
||||
|
|
|
@ -69,5 +69,4 @@ void item_suit::item_suit(void)
|
|||
precache_sound("fvox/hev_logon.wav");
|
||||
precache_sound("fvox/bell.wav");
|
||||
CBaseTrigger::CBaseTrigger();
|
||||
Respawn();
|
||||
}
|
||||
|
|
|
@ -67,7 +67,7 @@ void monster_hevsuit_dead::Respawn(void)
|
|||
void monster_hevsuit_dead::monster_hevsuit_dead(void)
|
||||
{
|
||||
model = "models/player.mdl";
|
||||
body = 2;
|
||||
m_iBody = 2;
|
||||
|
||||
for (int i = 1; i < (tokenize(__fullspawndata)-1); i += 2) {
|
||||
switch (argv(i)) {
|
||||
|
@ -75,7 +75,7 @@ void monster_hevsuit_dead::monster_hevsuit_dead(void)
|
|||
m_iPose = stoi(argv(i+1));
|
||||
break;
|
||||
case "body":
|
||||
body = stoi(argv(i+1)) + 1;
|
||||
m_iBody = stoi(argv(i+1)) + 1;
|
||||
break;
|
||||
case "skin":
|
||||
skin = stoi(argv(i+1));
|
||||
|
|
|
@ -74,7 +74,7 @@ void monster_hgrunt_dead::monster_hgrunt_dead(void)
|
|||
m_iPose = stoi(argv(i+1));
|
||||
break;
|
||||
case "body":
|
||||
body = stoi(argv(i+1)) + 1;
|
||||
m_iBody = stoi(argv(i+1)) + 1;
|
||||
break;
|
||||
case "skin":
|
||||
skin = stoi(argv(i+1));
|
||||
|
|
|
@ -214,11 +214,11 @@ monster_scientist::monster_scientist(void)
|
|||
m_talkStopFollow = "!SC_STOP";
|
||||
|
||||
/* by default a random character etc. is chosen */
|
||||
body = -1;
|
||||
m_iBody = -1;
|
||||
for (int i = 1; i < (tokenize(__fullspawndata)-1); i += 2) {
|
||||
switch (argv(i)) {
|
||||
case "body":
|
||||
body = stoi(argv(i+1)) + 1;
|
||||
m_iBody = stoi(argv(i+1)) + 1;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -231,11 +231,11 @@ monster_scientist::monster_scientist(void)
|
|||
base_health = Skill_GetValue("scientist_health");
|
||||
|
||||
/* has the body not been overriden, etc. choose a character for us */
|
||||
if (body == -1) {
|
||||
body = floor(random(1,5));
|
||||
if (m_iBody == -1) {
|
||||
m_iBody = floor(random(1,5));
|
||||
}
|
||||
|
||||
switch (body) {
|
||||
switch (m_iBody) {
|
||||
case 1:
|
||||
m_flPitch = 105;
|
||||
netname = "Walter";
|
||||
|
|
|
@ -106,7 +106,7 @@ void monster_scientist_dead::monster_scientist_dead(void)
|
|||
m_iPose = stoi(argv(i+1));
|
||||
break;
|
||||
case "body":
|
||||
body = stoi(argv(i+1)) + 1;
|
||||
m_iBody = stoi(argv(i+1)) + 1;
|
||||
break;
|
||||
case "skin":
|
||||
skin = stoi(argv(i+1));
|
||||
|
|
|
@ -100,7 +100,7 @@ void monster_sitting_scientist::monster_sitting_scientist(void)
|
|||
m_iPose = stoi(argv(i+1));
|
||||
break;
|
||||
case "body":
|
||||
body = stoi(argv(i+1)) + 1;
|
||||
m_iBody = stoi(argv(i+1)) + 1;
|
||||
break;
|
||||
case "skin":
|
||||
skin = stoi(argv(i+1));
|
||||
|
@ -110,13 +110,13 @@ void monster_sitting_scientist::monster_sitting_scientist(void)
|
|||
}
|
||||
}
|
||||
|
||||
if (body == -1) {
|
||||
if (m_iBody == -1) {
|
||||
/* This stuff needs to be persistent because we can't guarantee that
|
||||
* the client-side geomset refresh happens. Don't shove this into Respawn */
|
||||
body = floor(random(1,5));
|
||||
m_iBody = floor(random(1,5));
|
||||
}
|
||||
|
||||
switch (body) {
|
||||
switch (m_iBody) {
|
||||
case 1:
|
||||
m_flPitch = 105;
|
||||
netname = "Walter";
|
||||
|
|
|
@ -17,7 +17,6 @@
|
|||
enum {
|
||||
ENT_ENTITY = 1,
|
||||
ENT_PLAYER,
|
||||
ENT_NPC,
|
||||
ENT_AMBIENTSOUND,
|
||||
ENT_ENVLASER,
|
||||
ENT_SPRITE,
|
||||
|
|
Loading…
Reference in a new issue