Xonotic QuakeC
The free, fast arena FPS with crisp movement and a wide array of weapons
common.qh
Go to the documentation of this file.
1#pragma once
2
3// uncomment this if your mod uses the roll angle in fixangle
4// #define KEEP_ROLL
5
8
11
23void WarpZone_SetUp(entity e, vector my_org, vector my_ang, vector other_org, vector other_ang);
24void WarpZone_Camera_SetUp(entity e, vector my_org, vector my_ang);
25
28
32
33#define MOVE_NOTHING -1
34entity WarpZone_trace_forent; // temp, callback is allowed to change it
35USING(WarpZone_trace_callback_t, void(vector start, vector hit, vector end)); // called on every elementary trace
37entity WarpZone_trace_transform; // transform accumulator during a trace
38entity WarpZone_trace_firstzone; // first warpzone hit by a trace (can differ from the requested zone in case of _ThroughZone, the trace is aborted then)
39entity WarpZone_trace_lastzone; // first warpzone hit by a trace (can differ from the requested zone in case of _ThroughZone, the trace is aborted then)
40vector WarpZone_tracetoss_velocity; // ending velocity of a tracetoss (post-transform)
41float WarpZone_tracetoss_time; // duration of toss (approximate)
42void WarpZone_TraceBox(vector org, vector min, vector max, vector end, float nomonsters, entity forent);
44void WarpZone_TraceLine(vector org, vector end, float nomonsters, entity forent);
45void WarpZone_TraceToss(entity e, entity forent);
47void WarpZone_TrailParticles(entity own, float eff, vector org, vector end);
48#ifdef CSQC
49void WarpZone_TrailParticles_WithMultiplier(entity own, float eff, vector org, vector end, float f, float boxflags);
50#endif
51
54// also set: warpzone parameters, so WarpZone_TransformOrigin can transform vectors from blast's to victim's system
57entity WarpZone_FindRadius(vector org, float radius, float needlineofsight);
58
69
70// reference systems (chained warpzone transforms)
71void WarpZone_RefSys_Clear(entity me); // R := id
72void WarpZone_RefSys_Add(entity me, entity wz); // me.R := wz me.R
73void WarpZone_RefSys_AddInverse(entity me, entity wz); // me.R := wz^-1 me.R
74void WarpZone_RefSys_AddTransform(entity me, vector t, vector s); // me.R := [t s] me.R
75void WarpZone_RefSys_AddInverseTransform(entity me, vector t, vector s); // me.R := [t s]^-1 me.R
76
77// makes this reference system track ref's changes
78// NOTE: this is ONLY sensible if WarpZone_RefSys_Add is no longer called on "me" while doing this
79// To achieve this, make sure no touch events on warpzone are raised by this entity
80// or set a movetype that causes no warpzoning (e.g. MOVETYPE_NONE, MOVETYPE_FOLLOW)
81void WarpZone_RefSys_AddIncrementally(entity me, entity ref); // me.R := ref.R me.Rref^-1 me.R; me.Rref := ref.R
82void WarpZone_RefSys_BeginAddingIncrementally(entity me, entity ref); // me.Rref := ref.R
83
84vector WarpZone_RefSys_TransformOrigin(entity from, entity to, vector org); // return to.R from.R^-1 org
85vector WarpZone_RefSys_TransformVelocity(entity from, entity to, vector vel); // return to.R from.R^-1 vel
86vector WarpZone_RefSys_TransformAngles(entity from, entity to, vector ang); // return to.R from.R^-1 ang
87vector WarpZone_RefSys_TransformVAngles(entity from, entity to, vector ang); // return to.R from.R^-1 ang
88void WarpZone_RefSys_Copy(entity me, entity from); // to.R := from.R
89entity WarpZone_RefSys_SpawnSameRefSys(entity me); // spawn().R = me.R
90
91#ifndef BITCLR
92# define BITCLR(a,b) ((a) & ~(b))
93#endif
94#ifndef BITSET
95# define BITSET(a,b) ((a) | (b))
96#endif
97#ifndef BITXOR
98# define BITXOR(a,b) (((a) ^ (b))
99#endif
100#ifndef BITCLR_ASSIGN
101# define BITCLR_ASSIGN(a,b) ((a) &= ~(b))
102#endif
103#ifndef BITSET_ASSIGN
104# define BITSET_ASSIGN(a,b) ((a) |= (b))
105#endif
106#ifndef BITXOR_ASSIGN
107# define BITXOR_ASSIGN(a,b) ((a) ^= (b))
108#endif
110#define move_out_of_solid(e) WarpZoneLib_MoveOutOfSolid(e)
111
112bool WarpZoneLib_ExactTrigger_Touch(entity this, entity toucher, bool touchfunc);
113
114// WARNING: this kills the trace globals
115#define EXACTTRIGGER_TOUCH(e,t) if(!WarpZoneLib_ExactTrigger_Touch((e), (t), true)) return // intended for use in touch funcs
116#define EXACTTRIGGER_INIT WarpZoneLib_ExactTrigger_Init(this, true)
var entity(vector mins, vector maxs,.entity tofield) findbox_tofield_OrFallback
limitations: NULL cannot be present elements can only be present once a maximum of IL_MAX lists can e...
float radius
Definition impulse.qh:11
#define IL_NEW()
#define USING(name, T)
Definition _all.inc:72
void WarpZone_RefSys_AddInverseTransform(entity me, vector t, vector s)
Definition common.qc:735
vector WarpZone_UnTransformVelocity(entity wz, vector v)
Definition common.qc:550
void WarpZone_SetUp(entity e, vector my_org, vector my_ang, vector other_org, vector other_ang)
Definition common.qc:64
vector WarpZone_TransformVAngles(entity wz, vector v)
Definition common.qc:524
void WarpZone_RefSys_Add(entity me, entity wz)
Definition common.qc:731
void WarpZone_TraceToss_ThroughZone(entity e, entity forent, entity zone, WarpZone_trace_callback_t cb)
Definition common.qc:353
void WarpZone_RefSys_Clear(entity me)
Definition common.qc:715
vector WarpZone_RefSys_TransformVelocity(entity from, entity to, vector vel)
Definition common.qc:773
void WarpZone_TraceToss(entity e, entity forent)
Definition common.qc:462
entity WarpZone_Find(vector mi, vector ma)
Definition common.qc:167
float WarpZoneLib_BoxTouchesBrush(vector mi, vector ma, entity e, entity ig)
Definition common.qc:133
vector warpzone_targetforward
Definition common.qh:19
var WarpZone_trace_callback_t WarpZone_trace_callback_t_null
Definition common.qh:36
bool WarpZoneLib_ExactTrigger_Touch(entity this, entity toucher, bool touchfunc)
Definition common.qc:815
vector warpzone_forward
Definition common.qh:16
float WarpZone_PlaneDist(entity wz, vector v)
Definition common.qc:499
entity WarpZone_trace_firstzone
Definition common.qh:38
vector warpzone_shift
Definition common.qh:13
vector WarpZone_findradius_findorigin
Definition common.qh:55
void WarpZone_Camera_SetUp(entity e, vector my_org, vector my_ang)
Definition common.qc:93
float warpzone_fadestart
Definition common.qh:21
void WarpZone_TraceLine(vector org, vector end, float nomonsters, entity forent)
Definition common.qc:348
float warpzone_cameras_exist
Definition common.qh:10
vector WarpZone_TransformVelocity(entity wz, vector v)
Definition common.qc:514
vector warpzone_targetorigin
Definition common.qh:17
void WarpZone_TrailParticles_WithMultiplier(entity own, float eff, vector org, vector end, float f, float boxflags)
void WarpZone_TraceBox(vector org, vector min, vector max, vector end, float nomonsters, entity forent)
Definition common.qc:343
void WarpZone_RefSys_BeginAddingIncrementally(entity me, entity ref)
Definition common.qc:760
vector WarpZone_UnTransformVAngles(entity wz, vector v)
Definition common.qc:560
vector WarpZone_TransformAngles(entity wz, vector v)
Definition common.qc:519
vector warpzone_transform
Definition common.qh:20
vector WarpZone_findradius_nearest
Definition common.qh:53
void WarpZone_TrailParticles(entity own, float eff, vector org, vector end)
Definition common.qc:474
float warpzone_fadeend
Definition common.qh:22
void WarpZone_MakeAllOther()
Definition common.qc:189
vector WarpZone_UnTransformOrigin(entity wz, vector v)
Definition common.qc:545
void WarpZone_TraceBox_ThroughZone(vector org, vector min, vector max, vector end, float nomonsters, entity forent, entity zone, WarpZone_trace_callback_t cb)
Definition common.qc:212
void WarpZone_RefSys_AddIncrementally(entity me, entity ref)
Definition common.qc:749
entity WarpZone_trace_lastzone
Definition common.qh:39
vector WarpZone_TransformOrigin(entity wz, vector v)
Definition common.qc:509
entity WarpZone_RefSys_SpawnSameRefSys(entity me)
Definition common.qc:808
vector WarpZoneLib_NearestPointOnBox(vector mi, vector ma, vector org)
Definition common.qc:581
vector warpzone_origin
Definition common.qh:14
vector WarpZone_tracetoss_velocity
Definition common.qh:40
void WarpZone_RefSys_AddTransform(entity me, vector t, vector s)
Definition common.qc:723
entity WarpZone_trace_transform
Definition common.qh:37
float WarpZone_findradius_findradius
Definition common.qh:56
float WarpZone_TargetPlaneDist(entity wz, vector v)
Definition common.qc:504
void WarpZone_MakeAllSolid()
Definition common.qc:179
float warpzone_isboxy
Definition common.qh:12
vector warpzone_targetangles
Definition common.qh:18
void(vector start, vector hit, vector end) WarpZone_trace_callback_t
Definition common.qh:35
IntrusiveList g_warpzones
Definition common.qh:6
void WarpZone_RefSys_AddInverse(entity me, entity wz)
Definition common.qc:743
vector WarpZone_RefSys_TransformOrigin(entity from, entity to, vector org)
Definition common.qc:765
entity WarpZone_FindRadius(vector org, float radius, float needlineofsight)
void WarpZone_RefSys_Copy(entity me, entity from)
Definition common.qc:797
float warpzone_warpzones_exist
Definition common.qh:9
vector warpzone_angles
Definition common.qh:15
vector WarpZone_UnTransformAngles(entity wz, vector v)
Definition common.qc:555
float WarpZone_tracetoss_time
Definition common.qh:41
vector WarpZone_findradius_dist
Definition common.qh:52
vector WarpZone_RefSys_TransformVAngles(entity from, entity to, vector ang)
Definition common.qc:789
vector WarpZone_RefSys_TransformAngles(entity from, entity to, vector ang)
Definition common.qc:781
entity WarpZone_trace_forent
Definition common.qh:34
int WarpZoneLib_MoveOutOfSolid(entity e)
Definition common.qc:848
float min(float f,...)
float max(float f,...)
vector
Definition self.qh:92
vector org
Definition self.qh:92
entity entity toucher
Definition self.qh:72
vector vector ang
Definition self.qh:92
#define STATIC_INIT(func)
during worldspawn
Definition static.qh:32