FTEQW
Documentation of the FTE engine source tree.
world.h
Go to the documentation of this file.
1/*
2Copyright (C) 1996-1997 Id Software, Inc.
3
4This program is free software; you can redistribute it and/or
5modify it under the terms of the GNU General Public License
6as published by the Free Software Foundation; either version 2
7of the License, or (at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12
13See the GNU General Public License for more details.
14
15You should have received a copy of the GNU General Public License
16along with this program; if not, write to the Free Software
17Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18
19*/
20// world.h
21
22#include "../client/quakedef.h"
23
24typedef struct plane_s
25{
27 float dist;
29
30typedef struct csurface_s
31{
32 char name[16];
33 int flags;
34 int value;
36
37typedef struct cplane_s
38{
40 float dist;
41 qbyte type; // for fast side tests
42 qbyte signbits; // signx + (signy<<1) + (signz<<1)
45
46/*
47typedef struct trace_s
48{
49 qboolean allsolid; // if true, plane is not valid
50 qboolean startsolid; // if true, the initial point was in a solid area
51 qboolean inopen, inwater;
52 float fraction; // time completed, 1.0 = didn't hit anything
53 vec3_t endpos; // final position
54 plane_t plane; // surface normal at impact
55 edict_t *ent; // entity the surface is on
56} trace_t;
57*/
58
59//these two structures must match (except for extra qw members)
60typedef struct trace_s
61{
62//DON'T ADD ANYTHING BETWEEN THIS LINE
63//q2 game dll code will memcpy the lot from trace_t to q2trace_t.
64 qboolean allsolid; // if true, plane is not valid
65 qboolean startsolid; // if true, the initial point was in a solid area
66 float fraction; // time completed, 1.0 = didn't hit anything (nudged closer to the start point to cover precision issues)
67 vec3_t endpos; // final position
68 cplane_t plane; // surface normal at impact
69 const q2csurface_t *surface; // q2-compat surface hit
70 unsigned int contents; // contents on other side of surface hit
71 void *ent; // not set by CM_*() functions
72//AND THIS LINE
73 int entnum;
74
76 float truefraction; //can be negative, also has floating point precision issues, etc.
83
84typedef struct q2trace_s
85{
86 qboolean allsolid; // if true, plane is not valid
87 qboolean startsolid; // if true, the initial point was in a solid area
88 float fraction; // time completed, 1.0 = didn't hit anything
89 vec3_t endpos; // final position
90 cplane_t plane; // surface normal at impact
91 const q2csurface_t *surface; // surface hit
92 int contents; // contents on other side of surface hit
93 void *ent; // not set by CM_*() functions
95
96
97// edict->flags
98#define FL_FLY (1<<0)
99#define FL_SWIM (1<<1)
100//#define FL_GLIMPSE (1<<2)
101#define FL_CLIENT (1<<3)
102#define FL_INWATER (1<<4)
103#define FL_MONSTER (1<<5)
104#define FL_GODMODE (1<<6)
105#define FL_NOTARGET (1<<7)
106#define FL_ITEM (1<<8)
107#define FL_ONGROUND (1<<9)
108#define FL_PARTIALGROUND (1<<10) // not all corners are valid
109#define FL_WATERJUMP (1<<11) // player jumping out of water
110#define FL_JUMPRELEASED (1<<12)
111//#define FLRE_ISBOT (1<<13)
112#define FL_FINDABLE_NONSOLID (1<<14) //a cpqwsv feature
113#define FL_MOVECHAIN_ANGLE (1<<15) // hexen2 - when in a move chain, will update the angle
114#define FLQW_LAGGEDMOVE (1<<16)
115#define FLH2_HUNTFACE (1<<16)
116#define FLH2_NOZ (1<<17)
117 //18
118 //19
119#define FL_HUBSAVERESET (1<<20) //hexen2, ent is reverted to original state on map changes.
120#define FL_CLASS_DEPENDENT (1<<21) //hexen2
121 //22
122 //23
123
124
125
126#define MOVE_NORMAL 0
127#define MOVE_NOMONSTERS (1<<0)
128#define MOVE_MISSILE (1<<1)
129#ifdef HAVE_LEGACY
130#define MOVE_WORLDONLY (MOVE_NOMONSTERS|MOVE_MISSILE) //use MOVE_OTHERONLY instead
131#endif
132#define MOVE_HITMODEL (1<<2)
133#define MOVE_RESERVED (1<<3) //so we are less likly to get into tricky situations when we want to steal annother future DP extension.
134#define MOVE_TRIGGERS (1<<4) //triggers must be marked with FINDABLE_NONSOLID (an alternative to solid-corpse)
135#define MOVE_EVERYTHING (1<<5) //can return triggers and non-solid items if they're marked with FINDABLE_NONSOLID (works even if the items are not properly linked)
136#define MOVE_LAGGED (1<<6) //trace touches current last-known-state, instead of actual ents (just affects players for now)
137#define MOVE_ENTCHAIN (1<<7) //chain of impacted ents, otherwise result shows only world
138#define MOVE_OTHERONLY (1<<8) //test the trace against a single entity, ignoring non-solid/owner/etc flags (but respecting contents).
139#define MOVE_IGNOREHULL (1u<<31) //used on tracelines etc to simplify the code a little
140
141#ifdef USEAREAGRID
142//this macro does it in two steps to avoid float precision issues.
143//it also ensures that it will return at least one grid section.
144#define CALCAREAGRIDBOUNDS(w,min,max) \
145 ming[0] = floor(((min)[0]+(w)->gridbias[0]) / (w)->gridscale[0]); \
146 ming[1] = floor(((min)[1]+(w)->gridbias[1]) / (w)->gridscale[1]); \
147 maxg[0] = floor(((max)[0]+(w)->gridbias[0]) / (w)->gridscale[0]); \
148 maxg[1] = floor(((max)[1]+(w)->gridbias[1]) / (w)->gridscale[1]); \
149 ming[0] = bound(0, ming[0], (w)->gridsize[0]-1); \
150 ming[1] = bound(0, ming[1], (w)->gridsize[1]-1); \
151 maxg[0] = bound(ming[0], maxg[0], (w)->gridsize[0]-1)+1; \
152 maxg[1] = bound(ming[1], maxg[1], (w)->gridsize[1]-1)+1;
153#else
154#define EDICT_FROM_AREA(l) STRUCT_FROM_LINK(l,wedict_t,area)
155#endif
156
157#if defined(Q2SERVER) || !defined(USEAREAGRID)
158//q2 game code embeds a link_t struct inside the public edicts.
159//this is why we can't have nice things.
160
161//a binary tree. ents straddling a node are inserted into the parent.
162//this is a problem when your root note passes through '0 0 0' and you have shitty mods with 2000 such ents.
163typedef struct areanode_s
164{
165 int axis; // -1 = leaf node
166 float dist;
170#endif
171
172typedef struct wedict_s wedict_t;
173#define PROG_TO_WEDICT (wedict_t*)PROG_TO_EDICT
174#define WEDICT_NUM_UB (wedict_t *)EDICT_NUM_UB //ent number isn't bounded
175#define WEDICT_NUM_PB (wedict_t *)EDICT_NUM_PB //pre-bound
176#define G_WEDICT (wedict_t *)G_EDICT
177
178typedef struct
179{
184
185#ifdef USERBE
186typedef struct
187{
188 void (QDECL *End)(struct world_s *world);
189 void (QDECL *RemoveJointFromEntity)(struct world_s *world, wedict_t *ed);
190 void (QDECL *RemoveFromEntity)(struct world_s *world, wedict_t *ed);
191 qboolean (QDECL *RagMatrixToBody)(rbebody_t *bodyptr, float *mat);
192 qboolean (QDECL *RagCreateBody)(struct world_s *world, rbebody_t *bodyptr, rbebodyinfo_t *bodyinfo, float *mat, wedict_t *ent);
193 void (QDECL *RagMatrixFromJoint)(rbejoint_t *joint, rbejointinfo_t *info, float *mat);
194 void (QDECL *RagMatrixFromBody)(struct world_s *world, rbebody_t *bodyptr, float *mat);
195 void (QDECL *RagEnableJoint)(rbejoint_t *joint, qboolean enabled);
196 void (QDECL *RagCreateJoint)(struct world_s *world, rbejoint_t *joint, rbejointinfo_t *info, rbebody_t *body1, rbebody_t *body2, vec3_t aaa2[3]);
197 void (QDECL *RagDestroyBody)(struct world_s *world, rbebody_t *bodyptr);
198 void (QDECL *RagDestroyJoint)(struct world_s *world, rbejoint_t *joint);
199 void (QDECL *RunFrame)(struct world_s *world, double frametime, double gravity);
200 void (QDECL *PushCommand)(struct world_s *world, rbecommandqueue_t *cmd);
201// void (QDECL *ExpandBodyAABB)(struct world_s *world, rbebody_t *bodyptr, float *mins, float *maxs); //expands an aabb to include the size of the body.
202 void (QDECL *Trace) (struct world_s *world, wedict_t *ed, vec3_t start, vec3_t end, trace_t *trace);
204#endif
205
207{
208 void (QDECL *Event_Touch)(struct world_s *w, wedict_t *s, wedict_t *o, trace_t *trace);
209 void (QDECL *Event_Think)(struct world_s *w, wedict_t *s);
210 void (QDECL *Event_Sound) (float *origin, wedict_t *entity, int channel, const char *sample, int volume, float attenuation, float pitchadj, float timeoffset, unsigned int flags);
211 qboolean (QDECL *Event_ContentsTransition) (struct world_s *w, wedict_t *ent, int oldwatertype, int newwatertype);
212 model_t *(QDECL *Get_CModel)(struct world_s *w, int modelindex);
213 void (QDECL *Get_FrameState)(struct world_s *w, wedict_t *s, framestate_t *fstate);
214 void (QDECL *Event_Backdate)(struct world_s *w, wedict_t *s, float timestamp); //called for MOVE_LAGGED+MOVE_HITMODEL traces
215
216 unsigned int keydestmask; //menu:kdm_menu, csqc:kdm_game, server:0
217 unsigned int max_edicts; //limiting factor... 1024 fields*4*MAX_EDICTS == a heck of a lot.
218 unsigned int num_edicts; // increases towards MAX_EDICTS
219/*FTE_DEPRECATED*/ unsigned int edict_size; //still used in copyentity
220 wedict_t *edicts; // can NOT be array indexed.
222 qboolean usesolidcorpse; //to disable SOLID_CORPSE when running hexen2 due to conflict.
224 unsigned int spawncount; //number of times it got restarted, so we can stop events from happening after vm restarts
225 qboolean remasterlogic; //workarounds needed
226
227#ifdef USEAREAGRID
230 size_t gridsize[2];
231 areagridlink_t *gridareas; //[gridsize[0]*gridsize[1]]
232 areagridlink_t jumboarea; //node containing ents too large to fit.
234#endif
235
236 double physicstime; // the last time global physics were run
237 unsigned int framenum;
238 int lastcheck; // used by PF_checkclient
239 double lastchecktime; // for monster ai
240 qbyte *lastcheckpvs; // for monster ai
241
242 /*antilag*/
246 unsigned int maxlagents;
247
248 /*qc globals*/
249 struct {
261
262 //used by menu+csqc.
265 } g;
266
267#ifdef USERBE
270#endif
271
272#if defined(Q2SERVER) || !defined(USEAREAGRID)
276#ifndef USEAREAGRID
278#endif
279#endif
280
281#ifdef ENGINE_ROUTING
283#endif
284};
285typedef struct world_s world_t;
286
287void PF_Common_RegisterCvars(void);
288
289
290
291
292qboolean QDECL World_RegisterPhysicsEngine(const char *enginename, void(QDECL*World_Bullet_Start)(world_t*world));
293void QDECL World_UnregisterPhysicsEngine(const char *enginename);
294qboolean QDECL World_GenerateCollisionMesh(world_t *world, model_t *mod, wedict_t *ed, vec3_t geomcenter);
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312void World_Destroy (world_t *w);
313void World_RBE_Start(world_t *world);
314void World_RBE_Shutdown(world_t *world);
315
316
317void World_ClearWorld (world_t *w, qboolean relink);
318// called after the world model has been loaded, before linking any entities
319void World_ClearWorld_Nodes (world_t *w, qboolean relink); //legacy code for q2 compat.
320
322// call before removing an entity, and before trying to move one,
323// so it doesn't clip against itself
324// flags ent->v.modified
325
326void QDECL World_LinkEdict (world_t *w, wedict_t *ent, qboolean touch_triggers);
327// Needs to be called any time an entity changes origin, mins, maxs, or solid
328// flags ent->v.modified
329// sets ent->v.absmin and ent->v.absmax
330// if touchtriggers, calls prog functions for the intersected triggers
331
332#define AREA_ALL 0
333#define AREA_SOLID 1
334#define AREA_TRIGGER 2
335extern int World_AreaEdicts (world_t *w, vec3_t mins, vec3_t maxs, wedict_t **list, int maxcount, int areatype);
336
337#ifdef USEAREAGRID
339extern size_t areagridsequence;
340#else
342#define World_TouchAllLinks(w,e) World_TouchLinks(w,e,(w)->areanodes)
343#endif
344
347// returns the CONTENTS_* value from the world at the given point.
348// does not check any entities at all
349
351
352qboolean World_TransformedTrace (struct model_s *model, int hulloverride, framestate_t *framestate, vec3_t start, vec3_t end, vec3_t mins, vec3_t maxs, qboolean capsule, struct trace_s *trace, vec3_t origin, vec3_t angles, unsigned int hitcontentsmask);
353
354/*
355 World_Move:
356 mins and maxs are reletive
357
358 if the entire move stays in a solid volume, trace.allsolid will be set
359
360 if the starting point is in a solid, it will be allowed to move out
361 to an open area
362
363 nomonsters is used for line of sight or edge testing, where mosnters
364 shouldn't be considered solid objects
365
366 passedict is explicitly excluded from clipping checks (normally NULL)
367*/
369
370
371#ifdef Q2SERVER
372typedef struct q2edict_s q2edict_t;
373
376int VARGS WorldQ2_AreaEdicts (world_t *w, const vec3_t mins, const vec3_t maxs, q2edict_t **list,
377 int maxcount, int areatype);
378trace_t WorldQ2_Move (world_t *w, vec3_t start, vec3_t mins, vec3_t maxs, vec3_t end, int hitcontentsmask, q2edict_t *passedict);
379#endif
380
381
382/*sv_move.c*/
383#if defined(CSQC_DAT) || !defined(CLIENTONLY)
385qboolean World_movestep (world_t *world, wedict_t *ent, vec3_t move, vec3_t axis[3], qboolean relink, qboolean noenemy, void (*set_move_trace)(pubprogfuncs_t *inst, trace_t *trace));
388#endif
389
390//
391// sv_phys.c
392//
393void WPhys_Init(void);
395void SV_SetMoveVars(void);
397qboolean SV_Physics (void);
400void SV_ProgStartFrame (void);
qboolean
Definition: api_menu.h:34
vec_t vec3_t[3]
Definition: api_menu.h:40
vec_t vec2_t[2]
Definition: api_menu.h:39
cvar_t model
Definition: cl_main.c:153
void(QDECL *vgui_frame)(void)
entity_t * ent
Definition: com_mesh.c:717
trace plane dist
Definition: com_mesh.c:2551
dBodyID dBodyID body2
Definition: com_phys_ode.c:453
dBodyID body1
Definition: com_phys_ode.c:453
dVector3 gravity
Definition: com_phys_ode.c:306
unsigned char qbyte
Definition: common.h:127
struct @319::xidevinfo::@353 axis[2]
GLint GLenum type
Definition: glquake.h:157
GLuint GLcharARB * name
Definition: glquake.h:155
GLfloat GLfloat GLfloat GLfloat w
Definition: glquake.h:158
static png_size_t start
Definition: image.c:1419
vec3_t up
Definition: pmove.c:33
int const void * p
Definition: pr_lua.c:232
evalc_t angles
Definition: pr_menu.c:1357
evalc_t origin
Definition: pr_menu.c:1356
evalc_t mins
Definition: pr_menu.c:1354
evalc_t maxs
Definition: pr_menu.c:1355
int64_t pint_t
Definition: progtype.h:20
double pvec_t
Definition: progtype.h:19
vec3_t end
Definition: r_d3.c:692
Definition: world.h:164
int axis
Definition: world.h:165
float dist
Definition: world.h:166
link_t edicts
Definition: world.h:168
struct areanode_s * children[2]
Definition: world.h:167
Definition: world.h:38
vec3_t normal
Definition: world.h:39
qbyte type
Definition: world.h:41
qbyte signbits
Definition: world.h:42
qbyte pad[2]
Definition: world.h:43
float dist
Definition: world.h:40
Definition: world.h:31
int flags
Definition: world.h:33
int value
Definition: world.h:34
Definition: merged.h:59
Definition: world.h:179
vec3_t origin
Definition: world.h:181
vec3_t angles
Definition: world.h:182
qboolean present
Definition: world.h:180
Definition: gl_model.h:972
Definition: world.h:25
vec3_t normal
Definition: world.h:26
float dist
Definition: world.h:27
Definition: progslib.h:121
Definition: q2game.h:153
Definition: world.h:85
cplane_t plane
Definition: world.h:90
void * ent
Definition: world.h:93
int contents
Definition: world.h:92
qboolean startsolid
Definition: world.h:87
vec3_t endpos
Definition: world.h:89
const q2csurface_t * surface
Definition: world.h:91
qboolean allsolid
Definition: world.h:86
float fraction
Definition: world.h:88
Definition: progdefs.h:491
Definition: progdefs.h:496
Definition: progdefs.h:551
Definition: progdefs.h:515
Definition: progdefs.h:519
Definition: world.h:187
void(QDECL *RagDestroyJoint)(struct world_s *world
float * mat
Definition: world.h:191
rbejointinfo_t * info
Definition: world.h:193
double frametime
Definition: world.h:199
rbebody_t float * mat
Definition: world.h:194
wedict_t vec3_t vec3_t end
Definition: world.h:202
void(QDECL *End)(struct world_s *world)
void(QDECL *RagDestroyBody)(struct world_s *world
qboolean enabled
Definition: world.h:195
rbecommandqueue_t * cmd
Definition: world.h:200
void(QDECL *RemoveFromEntity)(struct world_s *world
rbebody_t rbebodyinfo_t * bodyinfo
Definition: world.h:192
wedict_t * ed
Definition: world.h:189
Definition: world.h:61
float truefraction
Definition: world.h:76
int brush_id
Definition: world.h:77
int triangle_id
Definition: world.h:80
const q2csurface_t * surface
Definition: world.h:69
void * ent
Definition: world.h:71
int entnum
Definition: world.h:73
qboolean allsolid
Definition: world.h:64
qboolean startsolid
Definition: world.h:65
int brush_face
Definition: world.h:78
float fraction
Definition: world.h:66
cplane_t plane
Definition: world.h:68
qboolean inopen
Definition: world.h:75
vec3_t endpos
Definition: world.h:67
int bone_id
Definition: world.h:81
unsigned int contents
Definition: world.h:70
qboolean inwater
Definition: world.h:75
int surface_id
Definition: world.h:79
Definition: pr_common.h:13
Definition: world.h:207
vec2_t gridbias
Definition: world.h:228
int numareanodes
Definition: world.h:275
qboolean(QDECL *Event_ContentsTransition)(struct world_s *w
qbyte * lastcheckpvs
Definition: world.h:240
unsigned int num_edicts
Definition: world.h:218
wedict_t int const char int float float float unsigned int flags
Definition: world.h:210
model_t *QDECL * Get_CModel(struct world_s *w, int modelindex)
wedict_t wedict_t trace_t * trace
Definition: world.h:208
pvec_t * time
Definition: world.h:253
wedict_t wedict_t * o
Definition: world.h:208
pvec_t * v_forward
Definition: world.h:257
size_t gridsize[2]
Definition: world.h:230
pvec_t * physics_mode
Definition: world.h:256
int areanodedepth
Definition: world.h:274
pint_t * newmis
Definition: world.h:252
double physicstime
Definition: world.h:236
pvec_t * v_right
Definition: world.h:258
struct pubprogfuncs_s * progs
Definition: world.h:221
qboolean remasterlogic
Definition: world.h:225
qboolean rbe_hasphysicsents
Definition: world.h:268
rigidbodyengine_t * rbe
Definition: world.h:269
pvec_t * frametime
Definition: world.h:254
unsigned int keydestmask
Definition: world.h:216
vec2_t gridscale
Definition: world.h:229
wedict_t int const char int float float float timeoffset
Definition: world.h:210
void * waypoints
Definition: world.h:282
pint_t * self
Definition: world.h:250
areagridlink_t portallist
Definition: world.h:233
wedict_t int const char int volume
Definition: world.h:210
pvec_t * drawfont
Definition: world.h:263
areanode_t portallist
Definition: world.h:277
wedict_t int channel
Definition: world.h:210
pvec_t * v_up
Definition: world.h:259
wedict_t framestate_t * fstate
Definition: world.h:213
wedict_t int oldwatertype
Definition: world.h:211
wedict_t * entity
Definition: world.h:210
unsigned int framenum
Definition: world.h:237
pvec_t * force_retouch
Definition: world.h:255
areagridlink_t * gridareas
Definition: world.h:231
unsigned int spawncount
Definition: world.h:224
double lastchecktime
Definition: world.h:239
wedict_t * edicts
Definition: world.h:220
float lagentstime
Definition: world.h:244
float lagentsfrac
Definition: world.h:243
void(QDECL *Event_Touch)(struct world_s *w
pint_t * other
Definition: world.h:251
void(QDECL *Event_Think)(struct world_s *w
pvec_t * defaultgravitydir
Definition: world.h:260
wedict_t int const char * sample
Definition: world.h:210
wedict_t * ent
Definition: world.h:211
unsigned int maxlagents
Definition: world.h:246
model_t * worldmodel
Definition: world.h:223
wedict_t int int newwatertype
Definition: world.h:211
unsigned int max_edicts
Definition: world.h:217
pvec_t * drawfontscale
Definition: world.h:264
wedict_t int const char int float float pitchadj
Definition: world.h:210
unsigned int edict_size
Definition: world.h:219
qboolean usesolidcorpse
Definition: world.h:222
areanode_t * areanodes
Definition: world.h:273
wedict_t int const char int float attenuation
Definition: world.h:210
areagridlink_t jumboarea
Definition: world.h:232
int lastcheck
Definition: world.h:238
wedict_t * s
Definition: world.h:208
laggedentinfo_t * lagents
Definition: world.h:245
struct world_s::@255 g
wedict_t float timestamp
Definition: world.h:214
qboolean World_movestep(world_t *world, wedict_t *ent, vec3_t move, vec3_t axis[3], qboolean relink, qboolean noenemy, void(*set_move_trace)(pubprogfuncs_t *inst, trace_t *trace))
qboolean World_MoveToGoal(world_t *world, wedict_t *ent, float dist)
Definition: sv_move.c:598
void World_Physics_Frame(world_t *w)
Definition: sv_phys.c:2454
void WPhys_Init(void)
Definition: sv_phys.c:87
trace_t WPhys_Trace_Toss(world_t *w, wedict_t *ent, wedict_t *ignore)
Definition: sv_phys.c:2409
qboolean World_GetEntGravityAxis(wedict_t *ent, vec3_t axis[3])
Definition: sv_move.c:283
void World_RBE_Start(world_t *world)
Definition: world.c:2813
struct csurface_s q2csurface_t
void World_ClearWorld_Nodes(world_t *w, qboolean relink)
Definition: world.c:269
void WPhys_RunEntity(world_t *w, wedict_t *ent)
Definition: sv_phys.c:2178
int VARGS WorldQ2_AreaEdicts(world_t *w, const vec3_t mins, const vec3_t maxs, q2edict_t **list, int maxcount, int areatype)
Definition: world.c:1337
size_t areagridsequence
Definition: world.c:36
qboolean SV_Physics(void)
Definition: sv_phys.c:2554
void World_Destroy(world_t *w)
Definition: world.c:2822
qboolean World_TransformedTrace(struct model_s *model, int hulloverride, framestate_t *framestate, vec3_t start, vec3_t end, vec3_t mins, vec3_t maxs, qboolean capsule, struct trace_s *trace, vec3_t origin, vec3_t angles, unsigned int hitcontentsmask)
Definition: world.c:915
void SV_SetMoveVars(void)
Definition: sv_phys.c:2773
struct areanode_s areanode_t
qboolean QDECL World_RegisterPhysicsEngine(const char *enginename, void(QDECL *World_Bullet_Start)(world_t *world))
void QDECL World_LinkEdict(world_t *w, wedict_t *ent, qboolean touch_triggers)
Definition: world.c:512
void WPhys_RunNewmis(world_t *w)
Definition: sv_phys.c:2388
void VARGS WorldQ2_LinkEdict(world_t *w, q2edict_t *ent)
Definition: world.c:729
void PF_Common_RegisterCvars(void)
Definition: pr_bgcmd.c:57
qboolean World_CheckBottom(world_t *world, wedict_t *ent, vec3_t up)
Definition: sv_move.c:40
trace_t World_Move(world_t *w, vec3_t start, vec3_t mins, vec3_t maxs, vec3_t end, int type, wedict_t *passedict)
Definition: world.c:2396
void WPhys_CheckVelocity(world_t *w, wedict_t *ent)
Definition: sv_phys.c:154
int World_PointContentsAllBSPs(world_t *w, vec3_t p)
Definition: world.c:884
struct q2trace_s q2trace_t
void QDECL World_ReleaseCollisionMesh(wedict_t *ed)
Definition: world.c:3056
struct plane_s plane_t
struct trace_s trace_t
struct cplane_s cplane_t
void World_RBE_Shutdown(world_t *world)
Definition: world.c:2774
qboolean QDECL World_GenerateCollisionMesh(world_t *world, model_t *mod, wedict_t *ed, vec3_t geomcenter)
Definition: world.c:3029
int World_PointContentsWorldOnly(world_t *w, vec3_t p)
Definition: world.c:879
qboolean WPhys_RunThink(world_t *w, wedict_t *ent)
Definition: sv_phys.c:214
void VARGS WorldQ2_UnlinkEdict(world_t *w, q2edict_t *ent)
Definition: world.c:721
void World_TouchLinks(world_t *w, wedict_t *ent, areanode_t *node)
Definition: world.c:432
void QDECL World_UnregisterPhysicsEngine(const char *enginename)
Definition: world.c:2795
void World_TouchAllLinks(world_t *w, wedict_t *ent)
Definition: world.c:1657
void World_UnlinkEdict(wedict_t *ent)
Definition: world.c:1699
void World_ClearWorld(world_t *w, qboolean relink)
Definition: world.c:395
int World_AreaEdicts(world_t *w, vec3_t mins, vec3_t maxs, wedict_t **list, int maxcount, int areatype)
Definition: world.c:1259
void SV_ProgStartFrame(void)
Definition: sv_phys.c:1576
trace_t WorldQ2_Move(world_t *w, vec3_t start, vec3_t mins, vec3_t maxs, vec3_t end, int hitcontentsmask, q2edict_t *passedict)
Definition: world.c:2730
wedict_t * World_TestEntityPosition(world_t *w, wedict_t *ent)
Definition: world.c:901