diff options
Diffstat (limited to 'apps/plugins/sdl/progs/quake/world.h')
-rw-r--r-- | apps/plugins/sdl/progs/quake/world.h | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/apps/plugins/sdl/progs/quake/world.h b/apps/plugins/sdl/progs/quake/world.h new file mode 100644 index 0000000000..cddb94fca0 --- /dev/null +++ b/apps/plugins/sdl/progs/quake/world.h | |||
@@ -0,0 +1,78 @@ | |||
1 | /* | ||
2 | Copyright (C) 1996-1997 Id Software, Inc. | ||
3 | |||
4 | This program is free software; you can redistribute it and/or | ||
5 | modify it under the terms of the GNU General Public License | ||
6 | as published by the Free Software Foundation; either version 2 | ||
7 | of the License, or (at your option) any later version. | ||
8 | |||
9 | This program is distributed in the hope that it will be useful, | ||
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
12 | |||
13 | See the GNU General Public License for more details. | ||
14 | |||
15 | You should have received a copy of the GNU General Public License | ||
16 | along with this program; if not, write to the Free Software | ||
17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | |||
19 | */ | ||
20 | // world.h | ||
21 | |||
22 | typedef struct | ||
23 | { | ||
24 | vec3_t normal; | ||
25 | float dist; | ||
26 | } plane_t; | ||
27 | |||
28 | typedef struct | ||
29 | { | ||
30 | qboolean allsolid; // if true, plane is not valid | ||
31 | qboolean startsolid; // if true, the initial point was in a solid area | ||
32 | qboolean inopen, inwater; | ||
33 | float fraction; // time completed, 1.0 = didn't hit anything | ||
34 | vec3_t endpos; // final position | ||
35 | plane_t plane; // surface normal at impact | ||
36 | edict_t *ent; // entity the surface is on | ||
37 | } trace_t; | ||
38 | |||
39 | |||
40 | #define MOVE_NORMAL 0 | ||
41 | #define MOVE_NOMONSTERS 1 | ||
42 | #define MOVE_MISSILE 2 | ||
43 | |||
44 | |||
45 | void SV_ClearWorld (void); | ||
46 | // called after the world model has been loaded, before linking any entities | ||
47 | |||
48 | void SV_UnlinkEdict (edict_t *ent); | ||
49 | // call before removing an entity, and before trying to move one, | ||
50 | // so it doesn't clip against itself | ||
51 | // flags ent->v.modified | ||
52 | |||
53 | void SV_LinkEdict (edict_t *ent, qboolean touch_triggers); | ||
54 | // Needs to be called any time an entity changes origin, mins, maxs, or solid | ||
55 | // flags ent->v.modified | ||
56 | // sets ent->v.absmin and ent->v.absmax | ||
57 | // if touchtriggers, calls prog functions for the intersected triggers | ||
58 | |||
59 | int SV_PointContents (vec3_t p); | ||
60 | int SV_TruePointContents (vec3_t p); | ||
61 | // returns the CONTENTS_* value from the world at the given point. | ||
62 | // does not check any entities at all | ||
63 | // the non-true version remaps the water current contents to content_water | ||
64 | |||
65 | edict_t *SV_TestEntityPosition (edict_t *ent); | ||
66 | |||
67 | trace_t SV_Move (vec3_t start, vec3_t mins, vec3_t maxs, vec3_t end, int type, edict_t *passedict); | ||
68 | // mins and maxs are reletive | ||
69 | |||
70 | // if the entire move stays in a solid volume, trace.allsolid will be set | ||
71 | |||
72 | // if the starting point is in a solid, it will be allowed to move out | ||
73 | // to an open area | ||
74 | |||
75 | // nomonsters is used for line of sight or edge testing, where mosnters | ||
76 | // shouldn't be considered solid objects | ||
77 | |||
78 | // passedict is explicitly excluded from clipping checks (normally NULL) | ||