From: terencehill Date: Fri, 15 Mar 2024 21:28:34 +0000 (+0100) Subject: Fix spectator camera having a duplicate mode if 3rd person camera is enabled (chase_a... X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=18f2adaba7b700d4a94786a072959e184a741959;p=xonotic%2Fxonotic-data.pk3dir.git Fix spectator camera having a duplicate mode if 3rd person camera is enabled (chase_active 1) --- diff --git a/qcsrc/client/view.qc b/qcsrc/client/view.qc index 689f4b4ce..bf6e22c61 100644 --- a/qcsrc/client/view.qc +++ b/qcsrc/client/view.qc @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -613,8 +614,24 @@ int WantEventchase(entity this, bool want_vehiclechase) return 0; } +bool waiting_CAMERA_SPECTATOR_update; void View_EventChase(entity this) { + if(spectatee_status > 0 && autocvar_chase_active > 0) + { + // if chase_active is enabled by the user, spectator camera never switches to 1st person + // that means CAMERA_SPECTATOR 1 behaves as 0 and is redundant, so we forcedly skip it + if (STAT(CAMERA_SPECTATOR) == 1) + { + if (!waiting_CAMERA_SPECTATOR_update) + { + Impulse_Send(IMP_weapon_drop); // switch to CAMERA_SPECTATOR 2 + waiting_CAMERA_SPECTATOR_update = true; + } + } + else waiting_CAMERA_SPECTATOR_update = false; + } + // event chase camera if(autocvar_chase_active <= 0) // greater than 0 means it's enabled manually, and this code is skipped { diff --git a/qcsrc/common/impulses/all.qh b/qcsrc/common/impulses/all.qh index d870e6d2c..da13ee4aa 100644 --- a/qcsrc/common/impulses/all.qh +++ b/qcsrc/common/impulses/all.qh @@ -14,6 +14,11 @@ REGISTRY_CHECK(IMPULSES) .void(entity this) impulse_handle; #if defined(CSQC) +void Impulse_Send(entity imp) +{ + localcmd(sprintf("\nimpulse %d\n", imp.impulse)); +} + #define IMPULSE_ALIAS(alias, id) localcmd("\nalias " #alias " \"", id ,"\"\n") #else #define IMPULSE_ALIAS(alias, id)