From 883a64b7443bcff7feaa3d3b2507831c0ffc2c53 Mon Sep 17 00:00:00 2001 From: Marco Hladik Date: Tue, 29 Jun 2021 10:47:51 +0200 Subject: [PATCH] Remove ftebug_checkpvs(), undefined behaviour was causing things to pop in and out of existence. There was no fault with FTE's implementation after all. Change func_dustmotes, prop_rope and env_glow to querying player pos more reliably. --- src/gs-entbase/client/env_glow.qc | 2 +- src/gs-entbase/client/func_dustmotes.qc | 10 ++++++++-- src/gs-entbase/client/prop_rope.qc | 9 +++++++-- src/shared/defs.h | 11 ----------- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/gs-entbase/client/env_glow.qc b/src/gs-entbase/client/env_glow.qc index 78d7ccfc..7d42f5a1 100644 --- a/src/gs-entbase/client/env_glow.qc +++ b/src/gs-entbase/client/env_glow.qc @@ -168,8 +168,8 @@ env_glow::env_glow(void) m_vecColor = [1,1,1]; drawmask = MASK_ENGINE; setsize(this, [0,0,0], [0,0,0]); - setorigin(this, origin); effects &= ~EF_NOSHADOW; Init(); RendererRestarted(); + setorigin(this, origin); } diff --git a/src/gs-entbase/client/func_dustmotes.qc b/src/gs-entbase/client/func_dustmotes.qc index 264d51b5..b962cdbf 100644 --- a/src/gs-entbase/client/func_dustmotes.qc +++ b/src/gs-entbase/client/func_dustmotes.qc @@ -38,10 +38,16 @@ class func_dustmotes:CBaseEntity float func_dustmotes::predraw(void) { - if (m_flNexTime > cltime) + vector vecPlayer; + + int s = (float)getproperty(VF_ACTIVESEAT); + pSeat = &g_seats[s]; + vecPlayer = pSeat->m_vecPredictedOrigin; + + if (checkpvs(vecPlayer, this) == FALSE) return (PREDRAW_NEXT); - if (checkpvs(getproperty(VF_ORIGIN), this) == FALSE) + if (m_flNexTime > cltime) return (PREDRAW_NEXT); for (int i = 0; i < m_iCount; i++) { diff --git a/src/gs-entbase/client/prop_rope.qc b/src/gs-entbase/client/prop_rope.qc index ce143539..67a7f852 100644 --- a/src/gs-entbase/client/prop_rope.qc +++ b/src/gs-entbase/client/prop_rope.qc @@ -115,11 +115,16 @@ prop_rope::predraw(void) float travel; float segments; float sc; + vector vecPlayer; entity x = find(world, ::targetname, target); - if (checkpvs(getproperty(VF_ORIGIN), this) == FALSE) { - if (checkpvs(getproperty(VF_ORIGIN), x) == FALSE) { + int s = (float)getproperty(VF_ACTIVESEAT); + pSeat = &g_seats[s]; + vecPlayer = pSeat->m_vecPredictedOrigin; + + if (checkpvs(vecPlayer, this) == FALSE) { + if (checkpvs(vecPlayer, x) == FALSE) { return (PREDRAW_NEXT); } } diff --git a/src/shared/defs.h b/src/shared/defs.h index cc2e2143..88daf660 100644 --- a/src/shared/defs.h +++ b/src/shared/defs.h @@ -107,17 +107,6 @@ precache_model(string m) return prior(m); } -/* fun little hack for us engine bug lovers */ -var int autocvar_ftebug_checkpvs = 1; -__wrap float -checkpvs(vector viewpos, entity ent) -{ - if (autocvar_ftebug_checkpvs) - return 1; - else - return prior(viewpos, ent); -} - __wrap void setmodel(entity ent, string mname) {