From 9442a597fa89733d934503edf0e9eb82d530ae25 Mon Sep 17 00:00:00 2001 From: Marco Hladik Date: Sat, 28 Mar 2020 11:43:08 +0100 Subject: [PATCH] moved sprite.cpp into gs-entbase/client/env_sprite.cpp --- src/client/cstrike/progs.src | 1 - src/client/entities.c | 7 ++- src/client/entry.c | 2 +- src/client/gearbox/progs.src | 1 - src/client/hunger/progs.src | 1 - src/client/poke646/progs.src | 1 - src/client/rewolf/decore.cpp | 2 +- src/client/rewolf/progs.src | 1 - src/client/scihunt/progs.src | 1 - src/client/tfc/progs.src | 1 - src/client/valve/progs.src | 1 - src/gs-entbase/client.src | 1 + .../client/env_sprite.cpp} | 62 +++++++++++-------- src/gs-entbase/server/env_sprite.cpp | 1 + src/shared/effects.c | 6 +- 15 files changed, 50 insertions(+), 39 deletions(-) rename src/{client/sprite.cpp => gs-entbase/client/env_sprite.cpp} (64%) diff --git a/src/client/cstrike/progs.src b/src/client/cstrike/progs.src index 5f8ad30f..88dc70ec 100644 --- a/src/client/cstrike/progs.src +++ b/src/client/cstrike/progs.src @@ -22,7 +22,6 @@ ../cstrike/init.c ../fade.c -../sprite.cpp ../titles.c ../text.c diff --git a/src/client/entities.c b/src/client/entities.c index e08c44f7..86c7907e 100644 --- a/src/client/entities.c +++ b/src/client/entities.c @@ -45,7 +45,12 @@ void CSQC_Ent_Update(float new) n.ReadEntity(readfloat()); break; case ENT_SPRITE: - Sprite_Animated(); + env_sprite spr = (env_sprite)self; + if (new) { + spawnfunc_env_sprite(); + } + spr.ReadEntity(readfloat()); + break; break; case ENT_SPRAY: Spray_Parse(); diff --git a/src/client/entry.c b/src/client/entry.c index faa6df49..28b3ce14 100644 --- a/src/client/entry.c +++ b/src/client/entry.c @@ -479,7 +479,7 @@ CSQC_Parse_Event(void) Fade_Parse(); break; case EV_SPRITE: - Sprite_ParseEvent(); + EnvSprite_ParseEvent(); break; case EV_TEXT: GameText_Parse(); diff --git a/src/client/gearbox/progs.src b/src/client/gearbox/progs.src index a9d52890..c3e99a48 100644 --- a/src/client/gearbox/progs.src +++ b/src/client/gearbox/progs.src @@ -18,7 +18,6 @@ ../../vgui/include.src ../util.c ../fade.c -../sprite.cpp ../titles.c ../text.c ../sentences.c diff --git a/src/client/hunger/progs.src b/src/client/hunger/progs.src index b0d7d140..a21e7051 100644 --- a/src/client/hunger/progs.src +++ b/src/client/hunger/progs.src @@ -18,7 +18,6 @@ ../../vgui/include.src ../util.c ../fade.c -../sprite.cpp ../titles.c ../text.c ../sentences.c diff --git a/src/client/poke646/progs.src b/src/client/poke646/progs.src index 727b8dea..3dd298a3 100644 --- a/src/client/poke646/progs.src +++ b/src/client/poke646/progs.src @@ -18,7 +18,6 @@ ../../vgui/include.src ../util.c ../fade.c -../sprite.cpp ../titles.c ../text.c ../sentences.c diff --git a/src/client/rewolf/decore.cpp b/src/client/rewolf/decore.cpp index 8b882ff7..b7919be6 100644 --- a/src/client/rewolf/decore.cpp +++ b/src/client/rewolf/decore.cpp @@ -129,7 +129,7 @@ class decore_torch:CBaseDecor CBaseDecor::Initialized(); this.effects |= EF_FULLBRIGHT; - sprite flame = spawn(sprite); + env_sprite flame = spawn(env_sprite); setorigin(flame, origin + [0,0,24]); setmodel(flame, "sprites/torch.spr"); flame.effects = EF_ADDITIVE; diff --git a/src/client/rewolf/progs.src b/src/client/rewolf/progs.src index 14c59566..323b1874 100755 --- a/src/client/rewolf/progs.src +++ b/src/client/rewolf/progs.src @@ -22,7 +22,6 @@ init.c ../fade.c -../sprite.cpp ../titles.c ../text.c ../sentences.c diff --git a/src/client/scihunt/progs.src b/src/client/scihunt/progs.src index f28c1448..d68dae4d 100644 --- a/src/client/scihunt/progs.src +++ b/src/client/scihunt/progs.src @@ -20,7 +20,6 @@ ../util.c ../fade.c -../sprite.cpp ../titles.c ../text.c ../sentences.c diff --git a/src/client/tfc/progs.src b/src/client/tfc/progs.src index 70ab1cfc..6dd06a07 100755 --- a/src/client/tfc/progs.src +++ b/src/client/tfc/progs.src @@ -23,7 +23,6 @@ vgui_chooseteam.cpp init.c ../fade.c -../sprite.cpp ../titles.c ../text.c ../sentences.c diff --git a/src/client/valve/progs.src b/src/client/valve/progs.src index 0649bf25..133fa6d7 100755 --- a/src/client/valve/progs.src +++ b/src/client/valve/progs.src @@ -21,7 +21,6 @@ ../valve/init.c ../fade.c -../sprite.cpp ../titles.c ../text.c diff --git a/src/gs-entbase/client.src b/src/gs-entbase/client.src index 629105a8..fbe82ccf 100644 --- a/src/gs-entbase/client.src +++ b/src/gs-entbase/client.src @@ -9,6 +9,7 @@ client/env_cubemap.cpp client/env_glow.cpp client/env_sound.cpp client/env_soundscape.cpp +client/env_sprite.cpp client/env_particle.cpp client/env_laser.cpp client/func_lod.cpp diff --git a/src/client/sprite.cpp b/src/gs-entbase/client/env_sprite.cpp similarity index 64% rename from src/client/sprite.cpp rename to src/gs-entbase/client/env_sprite.cpp index bf163036..6531d0fe 100644 --- a/src/client/sprite.cpp +++ b/src/gs-entbase/client/env_sprite.cpp @@ -14,16 +14,19 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -class sprite +class env_sprite:CBaseEntity { float framerate; int loops; int maxframe; - + + virtual void() Init; + virtual void() Initialized; + virtual void(float flChanged) ReadEntity; virtual void() think; }; -void sprite::think(void) +void env_sprite::think(void) { if (frame >= (maxframe-1)) { if (loops == 0) { @@ -37,32 +40,41 @@ void sprite::think(void) nextthink = time + (1 / framerate); } - -void Sprite_Animated(void) + +void env_sprite::ReadEntity(float flChanged) { - spawnfunc_sprite(); - sprite me = (sprite)self; - me.origin[0] = readcoord(); - me.origin[1] = readcoord(); - me.origin[2] = readcoord(); - me.modelindex = readfloat(); - me.framerate = readfloat(); - me.scale = readfloat(); - me.alpha = readfloat(); - me.effects = readfloat(); - me.colormod[0] = readfloat(); - me.colormod[1] = readfloat(); - me.colormod[2] = readfloat(); - me.drawmask = MASK_ENGINE; - me.nextthink = time + (1 / me.framerate); - me.maxframe = modelframecount(me.modelindex); - me.loops = 1; /* repeats */ - setorigin(me, me.origin); + origin[0] = readcoord(); + origin[1] = readcoord(); + origin[2] = readcoord(); + modelindex = readfloat(); + framerate = readfloat(); + scale = readfloat(); + alpha = readfloat(); + effects = readfloat(); + colormod[0] = readfloat(); + colormod[1] = readfloat(); + colormod[2] = readfloat(); + drawmask = MASK_ENGINE; + nextthink = time + (1 / framerate); + maxframe = modelframecount(modelindex); + loops = 1; /* repeats */ + setorigin(this, origin); } -void Sprite_ParseEvent(void) +/* make sure we're not spawning on the client-side */ +void env_sprite::Init(void) { - sprite spr = spawn(sprite); +} +void env_sprite::Initialized(void) +{ +} +void env_sprite::env_sprite(void) +{ +} + +void EnvSprite_ParseEvent(void) +{ + env_sprite spr = spawn(env_sprite); spr.origin[0] = readcoord(); spr.origin[1] = readcoord(); spr.origin[2] = readcoord(); diff --git a/src/gs-entbase/server/env_sprite.cpp b/src/gs-entbase/server/env_sprite.cpp index 61e731dd..8d3ec05d 100644 --- a/src/gs-entbase/server/env_sprite.cpp +++ b/src/gs-entbase/server/env_sprite.cpp @@ -55,6 +55,7 @@ float env_sprite::Network(entity pvsent, float flags) return FALSE; } WriteByte(MSG_ENTITY, ENT_SPRITE); + WriteFloat(MSG_ENTITY, 666); WriteCoord(MSG_ENTITY, origin[0]); WriteCoord(MSG_ENTITY, origin[1]); WriteCoord(MSG_ENTITY, origin[2]); diff --git a/src/shared/effects.c b/src/shared/effects.c index 3a4b3e33..1ce0f18d 100755 --- a/src/shared/effects.c +++ b/src/shared/effects.c @@ -134,7 +134,7 @@ Effect_CreateExplosion(vector vPos) msg_entity = self; multicast(vPos, MULTICAST_PVS); #else - sprite eExplosion = spawn(sprite); + env_sprite eExplosion = spawn(env_sprite); setorigin(eExplosion, vPos); setmodel(eExplosion, "sprites/fexplo.spr"); sound(eExplosion, CHAN_WEAPON, sprintf("weapons/explode%d.wav", floor(random() * 3) + 3), 1, ATTN_NORM); @@ -164,7 +164,7 @@ void Effect_CreateBlood(vector pos, vector color) { msg_entity = self; multicast(pos, MULTICAST_PVS); #else - sprite eBlood = spawn(sprite); + env_sprite eBlood = spawn(env_sprite); setorigin(eBlood, pos); setmodel(eBlood, "sprites/bloodspray.spr"); @@ -179,7 +179,7 @@ void Effect_CreateBlood(vector pos, vector color) { eBlood.nextthink = time + 0.05f; for (int i = 0; i < 3; i++) { - sprite ePart = spawn(sprite); + env_sprite ePart = spawn(env_sprite); setorigin(ePart, pos); setmodel(ePart, "sprites/blood.spr"); ePart.movetype = MOVETYPE_BOUNCE;