From 565d8ad7e7a29a670764e9a181c04773ea7d428e Mon Sep 17 00:00:00 2001 From: Marco Hladik Date: Thu, 23 Sep 2021 01:01:59 +0200 Subject: [PATCH] PMove: Add flag FL_ONUSABLE, which will tell us if we're looking/hovering over something that we can +use on. --- src/shared/flags.h | 2 +- src/shared/player_pmove.qc | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/shared/flags.h b/src/shared/flags.h index 663ea5bb..af143b41 100644 --- a/src/shared/flags.h +++ b/src/shared/flags.h @@ -38,6 +38,6 @@ #define FL_FROZEN (1<<19) #define FL_USE_RELEASED (1<<20) #define FL_NOATTACK (1<<21) -#define FL_RESERVED1 (1<<22) +#define FL_ONUSABLE (1<<22) #define FL_RESERVED2 (1<<23) #define FL_RESERVED3 (1<<15) diff --git a/src/shared/player_pmove.qc b/src/shared/player_pmove.qc index 66497d7f..71d34f20 100644 --- a/src/shared/player_pmove.qc +++ b/src/shared/player_pmove.qc @@ -323,6 +323,23 @@ base_player::Physics_Run(void) input_buttons = saved_input_buttons; Physics_InputPostMove(); +#ifdef SERVER + /* Use Flagger */ + vector src, dest; + makevectors(input_angles); + src = origin + view_ofs; + dest = src + v_forward * 64; + traceline(src, dest, MOVE_NORMAL, this); + + flags &= ~FL_ONUSABLE; + if (trace_ent.identity == 1) { + CBaseEntity foo = (CBaseEntity)trace_ent; + if (foo.PlayerUse) { + flags |= FL_ONUSABLE; + } + } +#endif + angles[0] = Math_FixDelta(angles[0]); angles[1] = Math_FixDelta(angles[1]); angles[2] = Math_FixDelta(angles[2]);