1 /*
2 ===========================================================================
3 Copyright (C) 1999 - 2005, Id Software, Inc.
4 Copyright (C) 2000 - 2013, Raven Software, Inc.
5 Copyright (C) 2001 - 2013, Activision, Inc.
6 Copyright (C) 2013 - 2015, OpenJK contributors
7 
8 This file is part of the OpenJK source code.
9 
10 OpenJK is free software; you can redistribute it and/or modify it
11 under the terms of the GNU General Public License version 2 as
12 published by the Free Software Foundation.
13 
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 GNU General Public License for more details.
18 
19 You should have received a copy of the GNU General Public License
20 along with this program; if not, see <http://www.gnu.org/licenses/>.
21 ===========================================================================
22 */
23 
24 
25 // This file must be identical in the quake and utils directories
26 
27 // contents flags are seperate bits
28 // a given brush can contribute multiple content bits
29 
30 // these definitions also need to be in q_shared.h!
31 
32 #define CONTENTS_NONE			(0x00000000u)
33 #define	CONTENTS_SOLID			(0x00000001u)	// Default setting. An eye is never valid in a solid
34 #define	CONTENTS_LAVA			(0x00000002u)	//
35 #define	CONTENTS_WATER			(0x00000004u)	//
36 #define	CONTENTS_FOG			(0x00000008u)	//
37 #define	CONTENTS_PLAYERCLIP		(0x00000010u)	// Player physically blocked
38 #define	CONTENTS_MONSTERCLIP	(0x00000020u)	// NPCs cannot physically pass through
39 #define CONTENTS_BOTCLIP		(0x00000040u)	// do not enter - NPCs try not to enter these
40 #define CONTENTS_SHOTCLIP		(0x00000080u)	// shots physically blocked
41 #define	CONTENTS_BODY			(0x00000100u)	// should never be on a brush, only in game
42 #define	CONTENTS_CORPSE			(0x00000200u)	// should never be on a brush, only in game
43 #define	CONTENTS_TRIGGER		(0x00000400u)	//
44 #define	CONTENTS_NODROP			(0x00000800u)	// don't leave bodies or items (death fog, lava)
45 #define CONTENTS_TERRAIN		(0x00001000u)	// volume contains terrain data
46 #define CONTENTS_LADDER			(0x00002000u)	//
47 #define CONTENTS_ABSEIL			(0x00004000u)	// used like ladder to define where an NPC can abseil
48 #define CONTENTS_OPAQUE			(0x00008000u)	// defaults to on, when off, solid can be seen through
49 #define CONTENTS_OUTSIDE		(0x00010000u)	// volume is considered to be in the outside (i.e. not indoors)
50 #define CONTENTS_SLIME			(0x00020000u)	// CHC needs this since we use same tools
51 #define CONTENTS_LIGHTSABER		(0x00040000u)	// ""
52 #define CONTENTS_TELEPORTER		(0x00080000u)	// ""
53 #define CONTENTS_ITEM			(0x00100000u)	// ""
54 #define CONTENTS_UNUSED00200000	(0x00200000u)	//
55 #define CONTENTS_UNUSED00400000	(0x00400000u)	//
56 #define CONTENTS_UNUSED00800000	(0x00800000u)	//
57 #define CONTENTS_UNUSED01000000	(0x01000000u)	//
58 #define CONTENTS_UNUSED02000000	(0x02000000u)	//
59 #define CONTENTS_UNUSED04000000	(0x04000000u)	//
60 #define	CONTENTS_DETAIL			(0x08000000u)	// brushes not used for the bsp
61 #define	CONTENTS_INSIDE			(0x10000000u)	// volume is considered to be inside (i.e. indoors)
62 #define CONTENTS_UNUSED20000000	(0x20000000u)	//
63 #define CONTENTS_UNUSED40000000	(0x40000000u)	//
64 #define	CONTENTS_TRANSLUCENT	(0x80000000u)	// don't consume surface fragments inside
65 #define CONTENTS_ALL			(0xFFFFFFFFu)
66 
67 #define SURF_NONE				(0x00000000u)
68 #define SURF_UNUSED00000001		(0x00000001u)	//
69 #define SURF_UNUSED00000002		(0x00000002u)	//
70 #define SURF_UNUSED00000004		(0x00000004u)	//
71 #define SURF_UNUSED00000008		(0x00000008u)	//
72 #define SURF_UNUSED00000010		(0x00000010u)	//
73 #define SURF_UNUSED00000020		(0x00000020u)	//
74 #define SURF_UNUSED00000040		(0x00000040u)	//
75 #define SURF_UNUSED00000080		(0x00000080u)	//
76 #define SURF_UNUSED00000100		(0x00000100u)	//
77 #define SURF_UNUSED00000200		(0x00000200u)	//
78 #define SURF_UNUSED00000400		(0x00000400u)	//
79 #define SURF_UNUSED00000800		(0x00000800u)	//
80 #define SURF_UNUSED00001000		(0x00001000u)	//
81 #define	SURF_SKY				(0x00002000u)	// lighting from environment map
82 #define	SURF_SLICK				(0x00004000u)	// affects game physics
83 #define	SURF_METALSTEPS			(0x00008000u)	// CHC needs this since we use same tools (though this flag is temp?)
84 #define SURF_FORCEFIELD			(0x00010000u)	// CHC ""			(but not temp)
85 #define SURF_UNUSED00020000		(0x00020000u)	//
86 #define	SURF_NODAMAGE			(0x00040000u)	// never give falling damage
87 #define	SURF_NOIMPACT			(0x00080000u)	// don't make missile explosions
88 #define	SURF_NOMARKS			(0x00100000u)	// don't leave missile marks
89 #define	SURF_NODRAW				(0x00200000u)	// don't generate a drawsurface at all
90 #define	SURF_NOSTEPS			(0x00400000u)	// no footstep sounds
91 #define	SURF_NODLIGHT			(0x00800000u)	// don't dlight even if solid (solid lava, skies)
92 #define	SURF_NOMISCENTS			(0x01000000u)	// no client models allowed on this surface
93 #define	SURF_FORCESIGHT			(0x02000000u)	// not visible without Force Sight
94 #define SURF_UNUSED04000000		(0x04000000u)	//
95 #define SURF_UNUSED08000000		(0x08000000u)	//
96 #define SURF_UNUSED10000000		(0x10000000u)	//
97 #define SURF_UNUSED20000000		(0x20000000u)	//
98 #define SURF_UNUSED40000000		(0x40000000u)	//
99 #define SURF_UNUSED80000000		(0x80000000u)	//
100 
101 #define MATERIAL_BITS			5
102 #define MATERIAL_MASK			0x1f	// mask to get the material type
103 
104 #define MATERIAL_NONE			0			// for when the artist hasn't set anything up =)
105 #define MATERIAL_SOLIDWOOD		1			// freshly cut timber
106 #define MATERIAL_HOLLOWWOOD		2			// termite infested creaky wood
107 #define MATERIAL_SOLIDMETAL		3			// solid girders
108 #define MATERIAL_HOLLOWMETAL	4			// hollow metal machines
109 #define MATERIAL_SHORTGRASS		5			// manicured lawn
110 #define MATERIAL_LONGGRASS		6			// long jungle grass
111 #define MATERIAL_DIRT			7			// hard mud
112 #define MATERIAL_SAND			8			// sandy beach
113 #define MATERIAL_GRAVEL			9			// lots of small stones
114 #define MATERIAL_GLASS			10			//
115 #define MATERIAL_CONCRETE		11			// hardened concrete pavement
116 #define MATERIAL_MARBLE			12			// marble floors
117 #define MATERIAL_WATER			13			// light covering of water on a surface
118 #define MATERIAL_SNOW			14			// freshly laid snow
119 #define MATERIAL_ICE			15			// packed snow/solid ice
120 #define MATERIAL_FLESH			16			// hung meat, corpses in the world
121 #define MATERIAL_MUD			17			// wet soil
122 #define MATERIAL_BPGLASS		18			// bulletproof glass
123 #define MATERIAL_DRYLEAVES		19			// dried up leaves on the floor
124 #define MATERIAL_GREENLEAVES	20			// fresh leaves still on a tree
125 #define MATERIAL_FABRIC			21			// Cotton sheets
126 #define MATERIAL_CANVAS			22			// tent material
127 #define MATERIAL_ROCK			23			//
128 #define MATERIAL_RUBBER			24			// hard tire like rubber
129 #define MATERIAL_PLASTIC		25			//
130 #define MATERIAL_TILES			26			// tiled floor
131 #define MATERIAL_CARPET			27			// lush carpet
132 #define MATERIAL_PLASTER		28			// drywall style plaster
133 #define MATERIAL_SHATTERGLASS	29			// glass with the Crisis Zone style shattering
134 #define MATERIAL_ARMOR			30			// body armor
135 #define MATERIAL_COMPUTER		31			// computers/electronic equipment
136 #define MATERIAL_LAST			32			// number of materials
137 
138 // Defined as a macro here so one change will affect all the relevant files
139 
140 #define MATERIALS	\
141 	"none",			\
142 	"solidwood",	\
143 	"hollowwood",	\
144 	"solidmetal",	\
145 	"hollowmetal",	\
146 	"shortgrass",	\
147 	"longgrass",	\
148 	"dirt",	   		\
149 	"sand",	   		\
150 	"gravel",		\
151 	"glass",		\
152 	"concrete",		\
153 	"marble",		\
154 	"water",		\
155 	"snow",	   		\
156 	"ice",			\
157 	"flesh",		\
158 	"mud",			\
159 	"bpglass",		\
160 	"dryleaves",	\
161 	"greenleaves",	\
162 	"fabric",		\
163 	"canvas",		\
164 	"rock",			\
165 	"rubber",		\
166 	"plastic",		\
167 	"tiles",		\
168 	"carpet",		\
169 	"plaster",		\
170 	"shatterglass",	\
171 	"armor",		\
172 	"computer"/* this was missing, see enums above, plus ShaderEd2 pulldown options */
173