// needs to be called before physics are run!
if(IS_REAL_CLIENT(this))
PM_UpdateButtons(this, CS(this));
+#elif defined(CSQC)
+ if(this.last_pushed && !WarpZoneLib_ExactTrigger_Touch(this.last_pushed, this, false))
+ this.last_pushed = NULL;
#endif
sys_phys_update(this, PHYS_INPUT_TIMELENGTH);
string to_execute_next_frame;
void execute_next_frame()
{
-#ifdef SVQC
- IL_EACH(g_moveables, it.last_pushed,
- {
- if(!WarpZoneLib_ExactTrigger_Touch(it.last_pushed, it, false))
- {
- it.last_pushed = NULL;
- }
- });
-#elif defined(CSQC)
- if(csqcplayer.last_pushed && !WarpZoneLib_ExactTrigger_Touch(csqcplayer.last_pushed, csqcplayer, false))
- {
- csqcplayer.last_pushed = NULL;
- }
-#endif
-
if(to_execute_next_frame)
{
localcmd("\n", to_execute_next_frame, "\n");
#include <common/deathtypes/all.qh>
#include <common/debug.qh>
#include <common/mapinfo.qh>
+#include <common/mapobjects/_mod.qh>
#include <common/monsters/sv_monsters.qh>
#include <common/util.qh>
#include <common/vehicles/all.qh>
void sys_phys_update(entity this, float dt);
void StartFrame()
{
+ IL_EACH(g_moveables, it.last_pushed,
+ {
+ if(!WarpZoneLib_ExactTrigger_Touch(it.last_pushed, it, false))
+ it.last_pushed = NULL;
+ });
+
// TODO: if move is more than 50ms, split it into two moves (this matches QWSV behavior and the client prediction)
IL_EACH(g_players, IS_FAKE_CLIENT(it), sys_phys_update(it, frametime));
IL_EACH(g_players, IS_FAKE_CLIENT(it), PlayerPreThink(it));