surfaceflags.h 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. // Copyright (C) 1999-2000 Id Software, Inc.
  2. //
  3. // This file must be identical in the quake and utils directories
  4. // contents flags are seperate bits
  5. // a given brush can contribute multiple content bits
  6. // these definitions also need to be in q_shared.h!
  7. #if 1
  8. // flags pasted from SOF2, be VERY CAREFUL when adding new ones since we share their tools!!!
  9. #define CONTENTS_NONE 0x00000000
  10. #define CONTENTS_SOLID 0x00000001 // Default setting. An eye is never valid in a solid
  11. #define CONTENTS_LAVA 0x00000002
  12. #define CONTENTS_WATER 0x00000004
  13. #define CONTENTS_FOG 0x00000008
  14. #define CONTENTS_PLAYERCLIP 0x00000010 // Player physically blocked
  15. #define CONTENTS_MONSTERCLIP 0x00000020 // NPCs cannot physically pass through
  16. #define CONTENTS_BOTCLIP 0x00000040 // do not enter - NPCs try not to enter these
  17. #define CONTENTS_SHOTCLIP 0x00000080 // shots physically blocked
  18. #define CONTENTS_BODY 0x00000100 // should never be on a brush, only in game
  19. #define CONTENTS_CORPSE 0x00000200 // should never be on a brush, only in game
  20. #define CONTENTS_TRIGGER 0x00000400
  21. #define CONTENTS_NODROP 0x00000800 // don't leave bodies or items (death fog, lava)
  22. #define CONTENTS_TERRAIN 0x00001000 // volume contains terrain data
  23. #define CONTENTS_LADDER 0x00002000
  24. #define CONTENTS_ABSEIL 0x00004000 // used like ladder to define where an NPC can abseil
  25. #define CONTENTS_OPAQUE 0x00008000 // defaults to on, when off, solid can be seen through
  26. #define CONTENTS_OUTSIDE 0x00010000 // volume is considered to be in the outside (i.e. not indoors)
  27. // CONTENTS_INSIDE added 10/31/02 by Aurelio.
  28. #define CONTENTS_INSIDE 0x10000000 // volume is considered to be inside (i.e. indoors)
  29. #define CONTENTS_SLIME 0x00020000 // CHC needs this since we use same tools
  30. #define CONTENTS_LIGHTSABER 0x00040000 // ""
  31. #define CONTENTS_TELEPORTER 0x00080000 // ""
  32. #define CONTENTS_ITEM 0x00100000 // ""
  33. #define CONTENTS_DETAIL 0x08000000 // brushes not used for the bsp
  34. #define CONTENTS_TRANSLUCENT 0x80000000 // don't consume surface fragments inside
  35. // flags pasted from SOF2, be VERY CAREFUL when adding new ones since we share their tools!!!
  36. #define SURF_SKY 0x00002000 // lighting from environment map
  37. #define SURF_SLICK 0x00004000 // affects game physics
  38. #define SURF_METALSTEPS 0x00008000 // CHC needs this since we use same tools (though this flag is temp?)
  39. #define SURF_FORCEFIELD 0x00010000 // CHC "" (but not temp)
  40. #define SURF_NODAMAGE 0x00040000 // never give falling damage
  41. #define SURF_NOIMPACT 0x00080000 // don't make missile explosions
  42. #define SURF_NOMARKS 0x00100000 // don't leave missile marks
  43. #define SURF_NODRAW 0x00200000 // don't generate a drawsurface at all
  44. #define SURF_NOSTEPS 0x00400000 // no footstep sounds
  45. #define SURF_NODLIGHT 0x00800000 // don't dlight even if solid (solid lava, skies)
  46. #define SURF_NOMISCENTS 0x01000000 // no client models allowed on this surface
  47. #define SURF_FORCESIGHT 0x02000000 // not visible without Force Sight
  48. #define SURF_PATCH 0x80000000 // Mark this face as a patch(editor only)
  49. #define MATERIAL_BITS 5
  50. #define MATERIAL_MASK 0x1f // mask to get the material type
  51. #define MATERIAL_NONE 0 // for when the artist hasn't set anything up =)
  52. #define MATERIAL_SOLIDWOOD 1 // freshly cut timber
  53. #define MATERIAL_HOLLOWWOOD 2 // termite infested creaky wood
  54. #define MATERIAL_SOLIDMETAL 3 // solid girders
  55. #define MATERIAL_HOLLOWMETAL 4 // hollow metal machines
  56. #define MATERIAL_SHORTGRASS 5 // manicured lawn
  57. #define MATERIAL_LONGGRASS 6 // long jungle grass
  58. #define MATERIAL_DIRT 7 // hard mud
  59. #define MATERIAL_SAND 8 // sandy beach
  60. #define MATERIAL_GRAVEL 9 // lots of small stones
  61. #define MATERIAL_GLASS 10 //
  62. #define MATERIAL_CONCRETE 11 // hardened concrete pavement
  63. #define MATERIAL_MARBLE 12 // marble floors
  64. #define MATERIAL_WATER 13 // light covering of water on a surface
  65. #define MATERIAL_SNOW 14 // freshly laid snow
  66. #define MATERIAL_ICE 15 // packed snow/solid ice
  67. #define MATERIAL_FLESH 16 // hung meat, corpses in the world
  68. #define MATERIAL_MUD 17 // wet soil
  69. #define MATERIAL_BPGLASS 18 // bulletproof glass
  70. #define MATERIAL_DRYLEAVES 19 // dried up leaves on the floor
  71. #define MATERIAL_GREENLEAVES 20 // fresh leaves still on a tree
  72. #define MATERIAL_FABRIC 21 // Cotton sheets
  73. #define MATERIAL_CANVAS 22 // tent material
  74. #define MATERIAL_ROCK 23 //
  75. #define MATERIAL_RUBBER 24 // hard tire like rubber
  76. #define MATERIAL_PLASTIC 25 //
  77. #define MATERIAL_TILES 26 // tiled floor
  78. #define MATERIAL_CARPET 27 // lush carpet
  79. #define MATERIAL_PLASTER 28 // drywall style plaster
  80. #define MATERIAL_SHATTERGLASS 29 // glass with the Crisis Zone style shattering
  81. #define MATERIAL_ARMOR 30 // body armor
  82. #define MATERIAL_COMPUTER 31 // computers/electronic equipment
  83. #define MATERIAL_LAST 32 // number of materials
  84. // Defined as a macro here so one change will affect all the relevant files
  85. #define MATERIALS \
  86. "none", \
  87. "solidwood", \
  88. "hollowwood", \
  89. "solidmetal", \
  90. "hollowmetal", \
  91. "shortgrass", \
  92. "longgrass", \
  93. "dirt", \
  94. "sand", \
  95. "gravel", \
  96. "glass", \
  97. "concrete", \
  98. "marble", \
  99. "water", \
  100. "snow", \
  101. "ice", \
  102. "flesh", \
  103. "mud", \
  104. "bpglass", \
  105. "dryleaves", \
  106. "greenleaves", \
  107. "fabric", \
  108. "canvas", \
  109. "rock", \
  110. "rubber", \
  111. "plastic", \
  112. "tiles", \
  113. "carpet", \
  114. "plaster", \
  115. "shatterglass", \
  116. "armor", \
  117. "computer"/* this was missing, see enums above, plus ShaderEd2 pulldown options */
  118. #else
  119. /*
  120. #define CONTENTS_NONE 0
  121. #define CONTENTS_SOLID 1 // an eye is never valid in a solid
  122. #define CONTENTS_LAVA 8
  123. #define CONTENTS_SLIME 16
  124. #define CONTENTS_WATER 32
  125. #define CONTENTS_FOG 64
  126. #define CONTENTS_LADDER 128
  127. #define CONTENTS_LIGHTSABER 0x1000 // Used for lightsaber buddies, blocking, deflecting.
  128. #define CONTENTS_AREAPORTAL 0x8000
  129. Ghoul2 Insert Start
  130. #define CONTENTS_GHOUL2 0x4000 // used to set trace to do point to poly ghoul2 checks. Never set as a contents of an object/surface
  131. Ghoul2 Insert End
  132. #define CONTENTS_PLAYERCLIP 0x10000
  133. #define CONTENTS_MONSTERCLIP 0x20000
  134. #define CONTENTS_SHOTCLIP 0x40000 //These are not needed if CONTENTS_SOLID is included
  135. //q3 bot specific contents types
  136. #define CONTENTS_TELEPORTER 0x40000
  137. #define CONTENTS_JUMPPAD 0x80000 //needed for bspc
  138. #define CONTENTS_ITEM 0x80000 //Items can be touched but do not block movement (like triggers) but can be hit by the infoString trace
  139. #define CONTENTS_CLUSTERPORTAL 0x100000
  140. #define CONTENTS_DONOTENTER 0x200000
  141. #define CONTENTS_BOTCLIP 0x400000
  142. #define CONTENTS_ORIGIN 0x1000000 // removed before bsping an entity
  143. #define CONTENTS_BODY 0x2000000 // should never be on a brush, only in game
  144. #define CONTENTS_CORPSE 0x4000000
  145. #define CONTENTS_DETAIL 0x8000000 // brushes not used for the bsp
  146. #define CONTENTS_STRUCTURAL 0x10000000 // brushes used for the bsp
  147. #define CONTENTS_TRANSLUCENT 0x20000000 // don't consume surface fragments inside
  148. #define CONTENTS_TRIGGER 0x40000000
  149. #define CONTENTS_NODROP 0x80000000 // don't leave bodies or items (death fog, lava)
  150. #define SURF_NODAMAGE 0x1 // never give falling damage
  151. #define SURF_SLICK 0x2 // effects game physics
  152. #define SURF_SKY 0x4 // lighting from environment map
  153. #define SURF_NOIMPACT 0x10 // don't make missile explosions
  154. #define SURF_NOMARKS 0x20 // don't leave missile marks
  155. #define SURF_FLESH 0x40 // make flesh sounds and effects
  156. #define SURF_NODRAW 0x80 // don't generate a drawsurface at all
  157. #define SURF_HINT 0x100 // make a primary bsp splitter
  158. #define SURF_SKIP 0x200 // completely ignore, allowing non-closed brushes
  159. #define SURF_NOLIGHTMAP 0x400 // surface doesn't need a lightmap
  160. #define SURF_POINTLIGHT 0x800 // generate lighting info at vertexes
  161. #define SURF_METALSTEPS 0x1000 // clanking footsteps
  162. #define SURF_NOSTEPS 0x2000 // no footstep sounds
  163. #define SURF_NONSOLID 0x4000 // don't collide against curves with this set
  164. #define SURF_LIGHTFILTER 0x8000 // act as a light filter during q3map -light
  165. #define SURF_ALPHASHADOW 0x10000 // do per-pixel light shadow casting in q3map
  166. #define SURF_NODLIGHT 0x20000 // don't dlight even if solid (solid lava, skies)
  167. #define SURF_FORCEFIELD 0x40000 // the surface in question is a forcefield
  168. */
  169. #endif