From 05ed789f9a7dbce4070aab8e8677a3897ac2d218 Mon Sep 17 00:00:00 2001 From: Marco Cawthorne Date: Wed, 11 Oct 2023 00:58:11 -0700 Subject: [PATCH] trigger_camera: Hacks that'll make it work (for now) --- src/gs-entbase/shared/trigger_camera.qc | 34 ++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/src/gs-entbase/shared/trigger_camera.qc b/src/gs-entbase/shared/trigger_camera.qc index 09f788a2..7eaac291 100644 --- a/src/gs-entbase/shared/trigger_camera.qc +++ b/src/gs-entbase/shared/trigger_camera.qc @@ -59,6 +59,7 @@ public: virtual void SpawnKey(string,string); virtual float SendEntity(entity,float); virtual void EvaluateEntity(void); + nonvirtual void DeactivateCamera(void); #endif private: @@ -87,6 +88,7 @@ trigger_camera::trigger_camera(void) void trigger_camera::ReceiveEntity(float flNew, float flFlags) { + bool deactiveLocalCam = false; //if (flFlags & OCAMFL_CHANGED_ORIGIN) { origin[0] = readcoord(); origin[1] = readcoord(); @@ -100,6 +102,11 @@ trigger_camera::ReceiveEntity(float flNew, float flFlags) angles[2] = readfloat(); //} + + if (m_eLooker == pSeat->m_ePlayer) { + deactiveLocalCam = true; + } + //if (flFlags & OCAMFL_CHANGED_VIEWER) { m_eLooker = findfloat(world, ::entnum, readentitynum()); //} @@ -111,6 +118,10 @@ trigger_camera::ReceiveEntity(float flNew, float flFlags) int s = (float)getproperty(VF_ACTIVESEAT); pSeat = &g_seats[s]; + if (!m_eLooker && deactiveLocalCam == true) { + pSeat->m_flCameraTime = 0.0; + } + /* not us */ if (m_eLooker != pSeat->m_ePlayer) return; @@ -126,7 +137,6 @@ trigger_camera::ReceiveEntity(float flNew, float flFlags) g_view.SetCameraAngle(angles); g_view.SetClientAngle(angles); - //error(sprintf("Wait! %f %f\n", time, pSeat->m_flCameraTime)); //} classname = "trigger_camera"; @@ -137,13 +147,13 @@ trigger_camera::SpawnKey(string strKey, string strValue) { switch (strKey) { case "target": - m_strAimAt = strValue; + m_strAimAt = ReadString(strValue); break; case "moveto": - m_strMoveTo = strValue; + m_strMoveTo = ReadString(strValue); break; case "wait": - m_flWait = stof(strValue); + m_flWait = ReadFloat(strValue); break; default: super::SpawnKey(strKey, strValue); @@ -350,6 +360,11 @@ trigger_camera::Trigger(entity act, triggermode_t state) } } + if (act == m_eLooker) { + DeactivateCamera(); + return; + } + m_eLooker = act; m_eLooker.view2 = this; NSLog("Triggering it on %s\n", act.netname); @@ -360,6 +375,17 @@ trigger_camera::Trigger(entity act, triggermode_t state) NextPath(); GoToTarget(); SetSendFlags(0xFFFFFF); + ScheduleThink(DeactivateCamera, m_flWait); pvsflags = PVSF_IGNOREPVS; } + + +void +trigger_camera::DeactivateCamera(void) +{ + NSLog("Turning it off on %s\n", m_eLooker.netname); + m_eLooker.view2 = __NULL__; + m_eLooker = __NULL__; + SetSendFlags(-1); +} #endif