-#ifndef T_JUMPPADS_H
-#define T_JUMPPADS_H
+#pragma once
-const float PUSH_ONCE = 1;
-const float PUSH_SILENT = 2;
+
+const int PUSH_ONCE = BIT(0); // legacy, deactivate with relay instead
+const int PUSH_SILENT = BIT(1); // not used?
+
+IntrusiveList g_jumppads;
+STATIC_INIT(g_jumppads) { g_jumppads = IL_NEW(); }
.float pushltime;
.float istypefrag;
.float jumppadcount;
.entity jumppadsused[NUM_JUMPPADSUSED];
-float trigger_push_calculatevelocity_flighttime;
-
#ifdef SVQC
-void() SUB_UseTargets;
-void trigger_push_use();
+void SUB_UseTargets(entity this, entity actor, entity trigger);
+void trigger_push_use(entity this, entity actor, entity trigger);
+bool trigger_push_testorigin(entity tracetest_ent, entity targ, entity jp, vector org);
+bool trigger_push_testorigin_for_item(entity tracetest_ent, entity item, vector org);
#endif
/*
tgt - target entity (can be either a point or a model entity; if it is
the latter, its midpoint is used)
ht - jump height, measured from the higher one of org and tgt's midpoint
+ pushed_entity - object that is to be pushed
Returns: velocity for the jump
- the global trigger_push_calculatevelocity_flighttime is set to the total
- jump time
*/
+vector trigger_push_calculatevelocity(vector org, entity tgt, float ht, entity pushed_entity);
-vector trigger_push_calculatevelocity(vector org, entity tgt, float ht);
-
-void trigger_push_touch();
+void trigger_push_touch(entity this, entity toucher);
.vector dest;
-void trigger_push_findtarget();
+bool trigger_push_test(entity this, entity item);
+void trigger_push_findtarget(entity this);
/*
* ENTITY PARAMETERS:
spawnfunc(info_notnull);
spawnfunc(target_position);
#endif
-#endif