From c005b0e111e4ecae4737a2b42961653996202081 Mon Sep 17 00:00:00 2001 From: Mario Date: Mon, 22 Aug 2016 01:24:03 +1000 Subject: [PATCH] Intrusify players --- qcsrc/server/client.qh | 5 ++++- qcsrc/server/defs.qh | 3 +++ qcsrc/server/sv_main.qc | 6 +++--- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/qcsrc/server/client.qh b/qcsrc/server/client.qh index 35ff6e961..28f957479 100644 --- a/qcsrc/server/client.qh +++ b/qcsrc/server/client.qh @@ -71,8 +71,11 @@ ENDCLASS(Spectator) CLASS(Player, Client) INIT(Player) { this.classname = STR_PLAYER; + IL_PUSH(g_players, this); + } + DESTRUCTOR(Player) { + IL_REMOVE(g_players, this); } - DESTRUCTOR(Player) { } ENDCLASS(Player) METHOD(Client, m_unwind, bool(Client this)) diff --git a/qcsrc/server/defs.qh b/qcsrc/server/defs.qh index 568084045..583c6c541 100644 --- a/qcsrc/server/defs.qh +++ b/qcsrc/server/defs.qh @@ -463,3 +463,6 @@ STATIC_INIT(g_assault_objectivedecreasers) { g_assault_objectivedecreasers = IL_ IntrusiveList g_spawnpoints; STATIC_INIT(g_spawnpoints) { g_spawnpoints = IL_NEW(); } + +IntrusiveList g_players; +STATIC_INIT(g_players) { g_players = IL_NEW(); } diff --git a/qcsrc/server/sv_main.qc b/qcsrc/server/sv_main.qc index 5dbcc8fd2..ea11ea36a 100644 --- a/qcsrc/server/sv_main.qc +++ b/qcsrc/server/sv_main.qc @@ -159,8 +159,8 @@ void sys_phys_update(entity this, float dt); void StartFrame() { // TODO: if move is more than 50ms, split it into two moves (this matches QWSV behavior and the client prediction) - FOREACH_ENTITY_CLASS(STR_PLAYER, IS_FAKE_CLIENT(it), sys_phys_update(it, frametime)); - FOREACH_ENTITY_CLASS(STR_PLAYER, IS_FAKE_CLIENT(it), PlayerPreThink(it)); + IL_EACH(g_players, IS_FAKE_CLIENT(it), sys_phys_update(it, frametime)); + IL_EACH(g_players, IS_FAKE_CLIENT(it), PlayerPreThink(it)); execute_next_frame(); if (autocvar_sv_autopause && !server_is_dedicated) Pause_TryPause(true); @@ -229,7 +229,7 @@ void StartFrame() MUTATOR_CALLHOOK(SV_StartFrame); FOREACH_CLIENT(true, GlobalStats_update(it)); - FOREACH_ENTITY_CLASS(STR_PLAYER, IS_FAKE_CLIENT(it), PlayerPostThink(it)); + IL_EACH(g_players, IS_FAKE_CLIENT(it), PlayerPostThink(it)); } .vector originjitter; -- 2.39.2