/* * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * In addition, as a special exception, the author gives permission to * link the code of this program with the Half-Life Game Engine ("HL * Engine") and Modified Game Libraries ("MODs") developed by Valve, * L.L.C ("Valve"). You must obey the GNU General Public License in all * respects for all of the code used other than the HL Engine and MODs * from Valve. If you modify this file, you may extend this exception * to your version of the file, but you are not obligated to do so. If * you do not wish to do so, delete this exception statement from your * version. * */ #ifndef CONST_H #define CONST_H #ifdef _WIN32 #pragma once #endif // Max # of clients allowed in a server. #define MAX_CLIENTS 32 // How many bits to use to encode an edict. #define MAX_EDICT_BITS 11 // # of bits needed to represent max edicts // Max # of edicts in a level (2048) #define MAX_EDICTS BIT(MAX_EDICT_BITS) // How many data slots to use when in multiplayer (must be power of 2) #define MULTIPLAYER_BACKUP 64 // Same for single player #define SINGLEPLAYER_BACKUP 8 // // Constants shared by the engine and dlls // This header file included by engine files and DLL files. // Most came from server.h // edict->flags #define FL_FLY BIT(0) // Changes the SV_Movestep() behavior to not need to be on ground #define FL_SWIM BIT(1) // Changes the SV_Movestep() behavior to not need to be on ground (but stay in water) #define FL_CONVEYOR BIT(2) #define FL_CLIENT BIT(3) #define FL_INWATER BIT(4) #define FL_MONSTER BIT(5) #define FL_GODMODE BIT(6) #define FL_NOTARGET BIT(7) #define FL_SKIPLOCALHOST BIT(8) // Don't send entity to local host, it's predicting this entity itself #define FL_ONGROUND BIT(9) // At rest / on the ground #define FL_PARTIALGROUND BIT(10) // not all corners are valid #define FL_WATERJUMP BIT(11) // player jumping out of water #define FL_FROZEN BIT(12) // Player is frozen for 3rd person camera #define FL_FAKECLIENT BIT(13) // JAC: fake client, simulated server side; don't send network messages to them #define FL_DUCKING BIT(14) // Player flag -- Player is fully crouched #define FL_FLOAT BIT(15) // Apply floating force to this entity when in water #define FL_GRAPHED BIT(16) // worldgraph has this ent listed as something that blocks a connection // UNDONE: Do we need these? #define FL_IMMUNE_WATER BIT(17) #define FL_IMMUNE_SLIME BIT(18) #define FL_IMMUNE_LAVA BIT(19) #define FL_PROXY BIT(20) // This is a spectator proxy #define FL_ALWAYSTHINK BIT(21) // Brush model flag -- call think every frame regardless of nextthink - ltime (for constantly changing velocity/path) #define FL_BASEVELOCITY BIT(22) // Base velocity has been applied this frame (used to convert base velocity into momentum) #define FL_MONSTERCLIP BIT(23) // Only collide in with monsters who have FL_MONSTERCLIP set #define FL_ONTRAIN BIT(24) // Player is _controlling_ a train, so movement commands should be ignored on client during prediction. #define FL_WORLDBRUSH BIT(25) // Not moveable/removeable brush entity (really part of the world, but represented as an entity for transparency or something) #define FL_SPECTATOR BIT(26) // This client is a spectator, don't run touch functions, etc. #define FL_CUSTOMENTITY BIT(29) // This is a custom entity #define FL_KILLME BIT(30) // This entity is marked for death -- This allows the engine to kill ents at the appropriate time #define FL_DORMANT BIT(31) // Entity is dormant, no updates to client // SV_EmitSound2 flags #define SND_EMIT2_NOPAS BIT(0) // never to do check PAS #define SND_EMIT2_INVOKER BIT(1) // do not send to the client invoker // Engine edict->spawnflags #define SF_NOTINDEATHMATCH BIT(11) // Do not spawn when deathmatch and loading entities from a file // Goes into globalvars_t.trace_flags #define FTRACE_SIMPLEBOX BIT(0) // Traceline with a simple box // walkmove modes #define WALKMOVE_NORMAL 0 // normal walkmove #define WALKMOVE_WORLDONLY 1 // doesn't hit ANY entities, no matter what the solid type #define WALKMOVE_CHECKONLY 2 // move, but don't touch triggers // edict->movetype values #define MOVETYPE_NONE 0 // never moves //#define MOVETYPE_ANGLENOCLIP 1 //#define MOVETYPE_ANGLECLIP 2 #define MOVETYPE_WALK 3 // Player only - moving on the ground #define MOVETYPE_STEP 4 // gravity, special edge handling -- monsters use this #define MOVETYPE_FLY 5 // No gravity, but still collides with stuff #define MOVETYPE_TOSS 6 // gravity/collisions #define MOVETYPE_PUSH 7 // no clip to world, push and crush #define MOVETYPE_NOCLIP 8 // No gravity, no collisions, still do velocity/avelocity #define MOVETYPE_FLYMISSILE 9 // extra size to monsters #define MOVETYPE_BOUNCE 10 // Just like Toss, but reflect velocity when contacting surfaces #define MOVETYPE_BOUNCEMISSILE 11 // bounce w/o gravity #define MOVETYPE_FOLLOW 12 // track movement of aiment #define MOVETYPE_PUSHSTEP 13 // BSP model that needs physics/world collisions (uses nearest hull for world collision) // edict->solid values // NOTE: Some movetypes will cause collisions independent of SOLID_NOT/SOLID_TRIGGER when the entity moves // SOLID only effects OTHER entities colliding with this one when they move - UGH! #define SOLID_NOT 0 // no interaction with other objects #define SOLID_TRIGGER 1 // touch on edge, but not blocking #define SOLID_BBOX 2 // touch on edge, block #define SOLID_SLIDEBOX 3 // touch on edge, but not an onground #define SOLID_BSP 4 // bsp clip, touch on edge, block // edict->deadflag values #define DEAD_NO 0 // alive #define DEAD_DYING 1 // playing death animation or still falling off of a ledge waiting to hit ground #define DEAD_DEAD 2 // dead. lying still. #define DEAD_RESPAWNABLE 3 // do respawn the entity #define DEAD_DISCARDBODY 4 #define DAMAGE_NO 0 #define DAMAGE_YES 1 #define DAMAGE_AIM 2 // edict->effects values #define EF_BRIGHTFIELD BIT(0) // swirling cloud of particles #define EF_MUZZLEFLASH BIT(1) // single frame ELIGHT on entity attachment 0 #define EF_BRIGHTLIGHT BIT(2) // DLIGHT centered at entity origin #define EF_DIMLIGHT BIT(3) // player flashlight #define EF_INVLIGHT BIT(4) // get lighting from ceiling #define EF_NOINTERP BIT(5) // don't interpolate the next frame #define EF_LIGHT BIT(6) // rocket flare glow sprite #define EF_NODRAW BIT(7) // don't draw entity #define EF_NIGHTVISION BIT(8) // player nightvision #define EF_SNIPERLASER BIT(9) // sniper laser effect #define EF_FIBERCAMERA BIT(10) // fiber camera #define EF_FORCEVISIBILITY BIT(11) // force visibility #define EF_OWNER_VISIBILITY BIT(12) // visibility for owner #define EF_OWNER_NO_VISIBILITY BIT(13) // no visibility for owner // state->eflags values #define EFLAG_SLERP 1 // do studio interpolation of this entity // // temp entity events // #define TE_BEAMPOINTS 0 // beam effect between two points // coord coord coord (start position) // coord coord coord (end position) // short (sprite index) // byte (starting frame) // byte (frame rate in 0.1's) // byte (life in 0.1's) // byte (line width in 0.1's) // byte (noise amplitude in 0.01's) // byte,byte,byte (color) // byte (brightness) // byte (scroll speed in 0.1's) #define TE_BEAMENTPOINT 1 // beam effect between point and entity // short (start entity) // coord coord coord (end position) // short (sprite index) // byte (starting frame) // byte (frame rate in 0.1's) // byte (life in 0.1's) // byte (line width in 0.1's) // byte (noise amplitude in 0.01's) // byte,byte,byte (color) // byte (brightness) // byte (scroll speed in 0.1's) #define TE_GUNSHOT 2 // particle effect plus ricochet sound // coord coord coord (position) #define TE_EXPLOSION 3 // additive sprite, 2 dynamic lights, flickering particles, explosion sound, move vertically 8 pps // coord coord coord (position) // short (sprite index) // byte (scale in 0.1's) // byte (framerate) // byte (flags) // // The Explosion effect has some flags to control performance/aesthetic features: #define TE_EXPLFLAG_NONE 0 // all flags clear makes default Half-Life explosion #define TE_EXPLFLAG_NOADDITIVE 1 // sprite will be drawn opaque (ensure that the sprite you send is a non-additive sprite) #define TE_EXPLFLAG_NODLIGHTS 2 // do not render dynamic lights #define TE_EXPLFLAG_NOSOUND 4 // do not play client explosion sound #define TE_EXPLFLAG_NOPARTICLES 8 // do not draw particles #define TE_TAREXPLOSION 4 // Quake1 "tarbaby" explosion with sound // coord coord coord (position) #define TE_SMOKE 5 // alphablend sprite, move vertically 30 pps // coord coord coord (position) // short (sprite index) // byte (scale in 0.1's) // byte (framerate) #define TE_TRACER 6 // tracer effect from point to point // coord, coord, coord (start) // coord, coord, coord (end) #define TE_LIGHTNING 7 // TE_BEAMPOINTS with simplified parameters // coord, coord, coord (start) // coord, coord, coord (end) // byte (life in 0.1's) // byte (width in 0.1's) // byte (amplitude in 0.01's) // short (sprite model index) #define TE_BEAMENTS 8 // short (start entity) // short (end entity) // short (sprite index) // byte (starting frame) // byte (frame rate in 0.1's) // byte (life in 0.1's) // byte (line width in 0.1's) // byte (noise amplitude in 0.01's) // byte,byte,byte (color) // byte (brightness) // byte (scroll speed in 0.1's) #define TE_SPARKS 9 // 8 random tracers with gravity, ricochet sprite // coord coord coord (position) #define TE_LAVASPLASH 10 // Quake1 lava splash // coord coord coord (position) #define TE_TELEPORT 11 // Quake1 teleport splash // coord coord coord (position) #define TE_EXPLOSION2 12 // Quake1 colormaped (base palette) particle explosion with sound // coord coord coord (position) // byte (starting color) // byte (num colors) #define TE_BSPDECAL 13 // Decal from the .BSP file // coord, coord, coord (x,y,z), decal position (center of texture in world) // short (texture index of precached decal texture name) // short (entity index) // [optional - only included if previous short is non-zero (not the world)] short (index of model of above entity) #define TE_IMPLOSION 14 // tracers moving toward a point // coord, coord, coord (position) // byte (radius) // byte (count) // byte (life in 0.1's) #define TE_SPRITETRAIL 15 // line of moving glow sprites with gravity, fadeout, and collisions // coord, coord, coord (start) // coord, coord, coord (end) // short (sprite index) // byte (count) // byte (life in 0.1's) // byte (scale in 0.1's) // byte (velocity along vector in 10's) // byte (randomness of velocity in 10's) #define TE_BEAM 16 // obsolete #define TE_SPRITE 17 // additive sprite, plays 1 cycle // coord, coord, coord (position) // short (sprite index) // byte (scale in 0.1's) // byte (brightness) #define TE_BEAMSPRITE 18 // A beam with a sprite at the end // coord, coord, coord (start position) // coord, coord, coord (end position) // short (beam sprite index) // short (end sprite index) #define TE_BEAMTORUS 19 // screen aligned beam ring, expands to max radius over lifetime // coord coord coord (center position) // coord coord coord (axis and radius) // short (sprite index) // byte (starting frame) // byte (frame rate in 0.1's) // byte (life in 0.1's) // byte (line width in 0.1's) // byte (noise amplitude in 0.01's) // byte,byte,byte (color) // byte (brightness) // byte (scroll speed in 0.1's) #define TE_BEAMDISK 20 // disk that expands to max radius over lifetime // coord coord coord (center position) // coord coord coord (axis and radius) // short (sprite index) // byte (starting frame) // byte (frame rate in 0.1's) // byte (life in 0.1's) // byte (line width in 0.1's) // byte (noise amplitude in 0.01's) // byte,byte,byte (color) // byte (brightness) // byte (scroll speed in 0.1's) #define TE_BEAMCYLINDER 21 // cylinder that expands to max radius over lifetime // coord coord coord (center position) // coord coord coord (axis and radius) // short (sprite index) // byte (starting frame) // byte (frame rate in 0.1's) // byte (life in 0.1's) // byte (line width in 0.1's) // byte (noise amplitude in 0.01's) // byte,byte,byte (color) // byte (brightness) // byte (scroll speed in 0.1's) #define TE_BEAMFOLLOW 22 // create a line of decaying beam segments until entity stops moving // short (entity:attachment to follow) // short (sprite index) // byte (life in 0.1's) // byte (line width in 0.1's) // byte,byte,byte (color) // byte (brightness) #define TE_GLOWSPRITE 23 // coord, coord, coord (pos) short (model index) byte (scale / 10) #define TE_BEAMRING 24 // connect a beam ring to two entities // short (start entity) // short (end entity) // short (sprite index) // byte (starting frame) // byte (frame rate in 0.1's) // byte (life in 0.1's) // byte (line width in 0.1's) // byte (noise amplitude in 0.01's) // byte,byte,byte (color) // byte (brightness) // byte (scroll speed in 0.1's) #define TE_STREAK_SPLASH 25 // oriented shower of tracers // coord coord coord (start position) // coord coord coord (direction vector) // byte (color) // short (count) // short (base speed) // short (ramdon velocity) #define TE_BEAMHOSE 26 // obsolete #define TE_DLIGHT 27 // dynamic light, effect world, minor entity effect // coord, coord, coord (pos) // byte (radius in 10's) // byte byte byte (color) // byte (brightness) // byte (life in 10's) // byte (decay rate in 10's) #define TE_ELIGHT 28 // point entity light, no world effect // short (entity:attachment to follow) // coord coord coord (initial position) // coord (radius) // byte byte byte (color) // byte (life in 0.1's) // coord (decay rate) #define TE_TEXTMESSAGE 29 // short 1.2.13 x (-1 = center) // short 1.2.13 y (-1 = center) // byte Effect 0 = fade in/fade out // 1 is flickery credits // 2 is write out (training room) // 4 bytes r,g,b,a color1 (text color) // 4 bytes r,g,b,a color2 (effect color) // ushort 8.8 fadein time // ushort 8.8 fadeout time // ushort 8.8 hold time // optional ushort 8.8 fxtime (time the highlight lags behing the leading text in effect 2) // string text message (512 chars max sz string) #define TE_LINE 30 // coord, coord, coord (startpos) // coord, coord, coord (endpos) // short life in 0.1 s // 3 bytes r, g, b #define TE_BOX 31 // coord, coord, coord (boxmins) // coord, coord, coord (boxmaxs) // short life in 0.1 s // 3 bytes r, g, b #define TE_KILLBEAM 99 // kill all beams attached to entity // short (entity) #define TE_LARGEFUNNEL 100 // coord coord coord (funnel position) // short (sprite index) // short (flags) #define TE_BLOODSTREAM 101 // particle spray // coord coord coord (start position) // coord coord coord (spray vector) // byte (color) // byte (speed) #define TE_SHOWLINE 102 // line of particles every 5 units, dies in 30 seconds // coord coord coord (start position) // coord coord coord (end position) #define TE_BLOOD 103 // particle spray // coord coord coord (start position) // coord coord coord (spray vector) // byte (color) // byte (speed) #define TE_DECAL 104 // Decal applied to a brush entity (not the world) // coord, coord, coord (x,y,z), decal position (center of texture in world) // byte (texture index of precached decal texture name) // short (entity index) #define TE_FIZZ 105 // create alpha sprites inside of entity, float upwards // short (entity) // short (sprite index) // byte (density) #define TE_MODEL 106 // create a moving model that bounces and makes a sound when it hits // coord, coord, coord (position) // coord, coord, coord (velocity) // angle (initial yaw) // short (model index) // byte (bounce sound type) // byte (life in 0.1's) #define TE_EXPLODEMODEL 107 // spherical shower of models, picks from set // coord, coord, coord (origin) // coord (velocity) // short (model index) // short (count) // byte (life in 0.1's) #define TE_BREAKMODEL 108 // box of models or sprites // coord, coord, coord (position) // coord, coord, coord (size) // coord, coord, coord (velocity) // byte (random velocity in 10's) // short (sprite or model index) // byte (count) // byte (life in 0.1 secs) // byte (flags) #define TE_GUNSHOTDECAL 109 // decal and ricochet sound // coord, coord, coord (position) // short (entity index???) // byte (decal???) #define TE_SPRITE_SPRAY 110 // spay of alpha sprites // coord, coord, coord (position) // coord, coord, coord (velocity) // short (sprite index) // byte (count) // byte (speed) // byte (noise) #define TE_ARMOR_RICOCHET 111 // quick spark sprite, client ricochet sound. // coord, coord, coord (position) // byte (scale in 0.1's) #define TE_PLAYERDECAL 112 // ??? // byte (playerindex) // coord, coord, coord (position) // short (entity???) // byte (decal number???) // [optional] short (model index???) #define TE_BUBBLES 113 // create alpha sprites inside of box, float upwards // coord, coord, coord (min start position) // coord, coord, coord (max start position) // coord (float height) // short (model index) // byte (count) // coord (speed) #define TE_BUBBLETRAIL 114 // create alpha sprites along a line, float upwards // coord, coord, coord (min start position) // coord, coord, coord (max start position) // coord (float height) // short (model index) // byte (count) // coord (speed) #define TE_BLOODSPRITE 115 // spray of opaque sprite1's that fall, single sprite2 for 1..2 secs (this is a high-priority tent) // coord, coord, coord (position) // short (sprite1 index) // short (sprite2 index) // byte (color) // byte (scale) #define TE_WORLDDECAL 116 // Decal applied to the world brush // coord, coord, coord (x,y,z), decal position (center of texture in world) // byte (texture index of precached decal texture name) #define TE_WORLDDECALHIGH 117 // Decal (with texture index > 256) applied to world brush // coord, coord, coord (x,y,z), decal position (center of texture in world) // byte (texture index of precached decal texture name - 256) #define TE_DECALHIGH 118 // Same as TE_DECAL, but the texture index was greater than 256 // coord, coord, coord (x,y,z), decal position (center of texture in world) // byte (texture index of precached decal texture name - 256) // short (entity index) #define TE_PROJECTILE 119 // Makes a projectile (like a nail) (this is a high-priority tent) // coord, coord, coord (position) // coord, coord, coord (velocity) // short (modelindex) // byte (life) // byte (owner) projectile won't collide with owner (if owner == 0, projectile will hit any client). #define TE_SPRAY 120 // Throws a shower of sprites or models // coord, coord, coord (position) // coord, coord, coord (direction) // short (modelindex) // byte (count) // byte (speed) // byte (noise) // byte (rendermode) #define TE_PLAYERSPRITES 121 // sprites emit from a player's bounding box (ONLY use for players!) // byte (playernum) // short (sprite modelindex) // byte (count) // byte (variance) (0 = no variance in size) (10 = 10% variance in size) #define TE_PARTICLEBURST 122 // very similar to lavasplash. // coord (origin) // short (radius) // byte (particle color) // byte (duration * 10) (will be randomized a bit) #define TE_FIREFIELD 123 // makes a field of fire. // coord (origin) // short (radius) (fire is made in a square around origin. -radius, -radius to radius, radius) // short (modelindex) // byte (count) // byte (flags) // byte (duration (in seconds) * 10) (will be randomized a bit) // // to keep network traffic low, this message has associated flags that fit into a byte: #define TEFIRE_FLAG_ALLFLOAT 1 // all sprites will drift upwards as they animate #define TEFIRE_FLAG_SOMEFLOAT 2 // some of the sprites will drift upwards. (50% chance) #define TEFIRE_FLAG_LOOP 4 // if set, sprite plays at 15 fps, otherwise plays at whatever rate stretches the animation over the sprite's duration. #define TEFIRE_FLAG_ALPHA 8 // if set, sprite is rendered alpha blended at 50% else, opaque #define TEFIRE_FLAG_PLANAR 16 // if set, all fire sprites have same initial Z instead of randomly filling a cube. #define TEFIRE_FLAG_ADDITIVE 32 // if set, sprite is rendered non-opaque with additive #define TE_PLAYERATTACHMENT 124 // attaches a TENT to a player (this is a high-priority tent) // byte (entity index of player) // coord (vertical offset) (attachment origin.z = player origin.z + vertical offset) // short (model index) // short (life * 10) #define TE_KILLPLAYERATTACHMENTS 125 // will expire all TENTS attached to a player. // byte (entity index of player) #define TE_MULTIGUNSHOT 126 // much more compact shotgun message // This message is used to make a client approximate a 'spray' of gunfire. // Any weapon that fires more than one bullet per frame and fires in a bit of a spread is // a good candidate for MULTIGUNSHOT use. (shotguns) // // NOTE: This effect makes the client do traces for each bullet, these client traces ignore // entities that have studio models.Traces are 4096 long. // // coord (origin) // coord (origin) // coord (origin) // coord (direction) // coord (direction) // coord (direction) // coord (x noise * 100) // coord (y noise * 100) // byte (count) // byte (bullethole decal texture index) #define TE_USERTRACER 127 // larger message than the standard tracer, but allows some customization. // coord (origin) // coord (origin) // coord (origin) // coord (velocity) // coord (velocity) // coord (velocity) // byte (life * 10) // byte (color) this is an index into an array of color vectors in the engine. (0 -) // byte (length * 10) #define MSG_BROADCAST 0 // unreliable to all #define MSG_ONE 1 // reliable to one (msg_entity) #define MSG_ALL 2 // reliable to all #define MSG_INIT 3 // write to the init string #define MSG_PVS 4 // Ents in PVS of org #define MSG_PAS 5 // Ents in PAS of org #define MSG_PVS_R 6 // Reliable to PVS #define MSG_PAS_R 7 // Reliable to PAS #define MSG_ONE_UNRELIABLE 8 // Send to one client, but don't put in reliable stream, put in unreliable datagram ( could be dropped ) #define MSG_SPEC 9 // Sends to all spectator proxies // contents of a spot in the world #define CONTENTS_EMPTY -1 #define CONTENTS_SOLID -2 #define CONTENTS_WATER -3 #define CONTENTS_SLIME -4 #define CONTENTS_LAVA -5 #define CONTENTS_SKY -6 #define CONTENTS_LADDER -16 #define CONTENT_FLYFIELD -17 #define CONTENT_GRAVITY_FLYFIELD -18 #define CONTENT_FOG -19 #define CONTENT_EMPTY -1 #define CONTENT_SOLID -2 #define CONTENT_WATER -3 #define CONTENT_SLIME -4 #define CONTENT_LAVA -5 #define CONTENT_SKY -6 // channels #define CHAN_AUTO 0 #define CHAN_WEAPON 1 #define CHAN_VOICE 2 #define CHAN_ITEM 3 #define CHAN_BODY 4 #define CHAN_STREAM 5 // allocate stream channel from the static or dynamic area #define CHAN_STATIC 6 // allocate channel from the static area #define CHAN_NETWORKVOICE_BASE 7 // voice data coming across the network #define CHAN_NETWORKVOICE_END 500 // network voice data reserves slots (CHAN_NETWORKVOICE_BASE through CHAN_NETWORKVOICE_END). #define CHAN_BOT 501 // channel used for bot chatter. // attenuation values #define ATTN_NONE 0 #define ATTN_NORM 0.8f #define ATTN_IDLE 2.0f #define ATTN_STATIC 1.25f // pitch values #define PITCH_NORM 100 // non-pitch shifted #define PITCH_LOW 95 // other values are possible - 0-255, where 255 is very high #define PITCH_HIGH 120 // volume values #define VOL_NORM 1.0f // buttons #ifndef IN_BUTTONS_H #include "in_buttons.h" #endif // Break Model Defines #define BREAK_TYPEMASK 0x4F #define BREAK_GLASS 0x01 #define BREAK_METAL 0x02 #define BREAK_FLESH 0x04 #define BREAK_WOOD 0x08 #define BREAK_SMOKE 0x10 #define BREAK_TRANS 0x20 #define BREAK_CONCRETE 0x40 #define BREAK_2 0x80 // Colliding temp entity sounds #define BOUNCE_GLASS BREAK_GLASS #define BOUNCE_METAL BREAK_METAL #define BOUNCE_FLESH BREAK_FLESH #define BOUNCE_WOOD BREAK_WOOD #define BOUNCE_SHRAP 0x10 #define BOUNCE_SHELL 0x20 #define BOUNCE_CONCRETE BREAK_CONCRETE #define BOUNCE_SHOTSHELL 0x80 // Temp entity bounce sound types #define TE_BOUNCE_NULL 0 #define TE_BOUNCE_SHELL 1 #define TE_BOUNCE_SHOTSHELL 2 // Rendering constants enum { kRenderNormal, // src kRenderTransColor, // c*a+dest*(1-a) kRenderTransTexture, // src*a+dest*(1-a) kRenderGlow, // src*a+dest -- No Z buffer checks kRenderTransAlpha, // src*srca+dest*(1-srca) kRenderTransAdd, // src*a+dest }; enum { kRenderFxNone = 0, kRenderFxPulseSlow, kRenderFxPulseFast, kRenderFxPulseSlowWide, kRenderFxPulseFastWide, kRenderFxFadeSlow, kRenderFxFadeFast, kRenderFxSolidSlow, kRenderFxSolidFast, kRenderFxStrobeSlow, kRenderFxStrobeFast, kRenderFxStrobeFaster, kRenderFxFlickerSlow, kRenderFxFlickerFast, kRenderFxNoDissipation, kRenderFxDistort, // Distort/scale/translate flicker kRenderFxHologram, // kRenderFxDistort + distance fade kRenderFxDeadPlayer, // kRenderAmt is the player index kRenderFxExplode, // Scale up really big! kRenderFxGlowShell, // Glowing Shell kRenderFxClampMinScale, // Keep this sprite from getting very small (SPRITES only!) kRenderFxLightMultiplier, // CTM !!!CZERO added to tell the studiorender that the value in iuser2 is a lightmultiplier }; typedef struct { byte r, g, b; } color24; typedef struct { unsigned r, g, b, a; } colorVec; #ifdef _WIN32 #pragma pack(push, 2) #endif typedef struct { unsigned short r, g, b, a; } PackedColorVec; #ifdef _WIN32 #pragma pack(pop) #endif typedef struct link_s { struct link_s *prev, *next; } link_t; typedef struct edict_s edict_t; typedef struct { vec3_t normal; float dist; } plane_t; typedef struct { qboolean allsolid; // if true, plane is not valid qboolean startsolid; // if true, the initial point was in a solid area qboolean inopen, inwater; float fraction; // time completed, 1.0 = didn't hit anything vec3_t endpos; // final position plane_t plane; // surface normal at impact edict_t *ent; // entity the surface is on int hitgroup; // 0 == generic, non zero is specific body part } trace_t; #endif // CONST_H