ef2-sdk/dlls/game/surfaceflags.h
2003-11-05 00:00:00 +00:00

116 lines
5.2 KiB
C

//-----------------------------------------------------------------------------
//
// $Logfile:: /Code/DLLs/game/surfaceflags.h $
// $Revision:: 12 $
// $Author:: Steven $
// $Date:: 10/13/03 9:42a $
//
// Copyright (C) 1999 by Ritual Entertainment, Inc.
// All rights reserved.
//
// This source may not be distributed and/or modified without
// expressly written permission by Ritual Entertainment, Inc.
//
//
// DESCRIPTION: Surface flag parameters for q3map and game
//
#ifndef __SURFACEFLAGS_H__
#define __SURFACEFLAGS_H__
// This file must be identical in the game and utils directories
// contents flags are seperate bits
// a given brush can contribute multiple content bits
// these definitions also need to be in q_shared.h!
#define CONTENTS_SOLID (1<<0) // an eye is never valid in a solid
#define CONTENTS_WINDOW (1<<1) // added for BOTLIB
#define CONTENTS_AUX (1<<2) // added for BOTLIB
#define CONTENTS_LAVA (1<<3)
#define CONTENTS_SLIME (1<<4)
#define CONTENTS_WATER (1<<5)
#define CONTENTS_FOG (1<<6)
// more BOTLIB additions FIXME
#define CONTENTS_MIST (1<<6) // added for BOTLIB, same as CONTENTS_FOG
#define CONTENTS_LADDER (1<<7) // I know this is on a surfaceparm
#define CONTENTS_NOTTEAM2 (1<<8) // FIXME these can't be good
#define CONTENTS_NOTTEAM1 (1<<9)
#define CONTENTS_JUMPPAD (1<<10)
#define CONTENTS_TELEPORTER (1<<11)
#define CONTENTS_MOVER (1<<12)
// end BOTLIB additions
#define CONTENTS_USABLE (1<<12)
#define CONTENTS_SETCLIP (1<<13) // All members of this content set noclip each other
#define CONTENTS_TARGETABLE (1<<14)
#define CONTENTS_AREAPORTAL (1<<15)
#define CONTENTS_PLAYERCLIP (1<<16)
#define CONTENTS_MONSTERCLIP (1<<17)
#define CONTENTS_CAMERACLIP (1<<18)
#define CONTENTS_WEAPONCLIP (1<<19) // blocks projectiles and weapon attacks as well
#define CONTENTS_SHOOTABLE_ONLY (1<<20) // player can walk through this but can shoot it as well
#define CONTENTS_CLUSTERPORTAL (1 << 21) // added for BOTLIB
#define CONTENTS_BOTCLIP (1 << 22) // added for BOTLIB
#define CONTENTS_DONOTENTER (1 << 23) // added for BOTLIB
#define CONTENTS_ORIGIN (1<<24) // removed before bsping an entity
#define CONTENTS_BODY (1<<25) // should never be on a brush, only in game
#define CONTENTS_CORPSE (1<<26)
#define CONTENTS_DETAIL (1<<27) // brushes not used for the bsp
#define CONTENTS_STRUCTURAL (1<<28) // brushes used for the bsp
#define CONTENTS_TRANSLUCENT (1<<29) // don't consume surface fragments inside
#define CONTENTS_NOBOTCLIP (1<<30) // added for BOTLIB
#define CONTENTS_NODROP (1<<31) // don't leave bodies or items (death fog, lava)
#define CONTENTS_KEEP (CONTENTS_DETAIL)
#define SURF_NODAMAGE ( 1<<0 ) // never give falling damage
#define SURF_SLICK ( 1<<1 ) // effects game physics
#define SURF_SKY ( 1<<2 ) // lighting from environment map
#define SURF_LADDER ( 1<<3 ) // ladder surface
#define SURF_NOIMPACT ( 1<<4 ) // don't make missile explosions
#define SURF_NOMARKS ( 1<<5 ) // don't leave missile marks
#define SURF_CASTSHADOW ( 1<<6 ) // used in conjunction with nodraw allows surface to be not drawn but still cast shadows
#define SURF_NODRAW ( 1<<7 ) // don't generate a drawsurface at all
#define SURF_SKIP ( 1<<8 ) // defined for BOTLIB
#define SURF_TYPE_SAND ( 1<<9 ) // sand surface
#define SURF_NOLIGHTMAP ( 1<<10 )// surface doesn't need a lightmap
#define SURF_ALPHASHADOW ( 1<<11 )// do per-pixel shadow tests based on the texture
#define SURF_TYPE_SNOW ( 1<<12 )// snow surface
#define SURF_NOSTEPS ( 1<<13 )// no footstep sounds
#define SURF_NONSOLID ( 1<<14 )// don't collide against curves with this set
#define SURF_RICOCHET ( 1<<15 )// ricochet bullets
#define SURF_TYPE_METAL_DUCT ( 1<<16 )// metal duct surface
#define SURF_TYPE_METAL ( 1<<17 )// metal surface
#define SURF_TYPE_ROCK ( 1<<18 )// stone surface
#define SURF_TYPE_DIRT ( 1<<19 )// dirt surface
#define SURF_TYPE_GRILL ( 1<<20 )// metal grill surface
#define SURF_TYPE_ORGANIC ( 1<<21 )// oraganic (grass, loamy dirt)
#define SURF_TYPE_SQUISHY ( 1<<22 )// squishy (swamp dirt, flesh)
#define SURF_NODLIGHT ( 1<<23 )// don't dlight even if solid (solid lava, skies)
#define SURF_HINT ( 1<<24 )// choose this plane as a partitioner
#define SURF_TYPE_DEFAULT ( 1<<25 )
#define SURF_TYPE_METAL_HOLLOW ( 1<<26 )// hollow metal surface
#define SURF_TYPE_CARPET ( 1<<27 )// carpet surface
#define SURF_PATCH ( 1<<29 )
#define SURF_TERRAIN ( 1<<30 )
#define SURF_KEEP (SURF_PATCH | SURF_TERRAIN)
#define MASK_SURF_TYPE (SURF_TYPE_SAND|SURF_TYPE_SNOW|SURF_TYPE_METAL_DUCT|SURF_TYPE_METAL|SURF_TYPE_ROCK|SURF_TYPE_DIRT|SURF_TYPE_GRILL|SURF_TYPE_ORGANIC|SURF_TYPE_SQUISHY|SURF_TYPE_METAL_HOLLOW|SURF_TYPE_CARPET)
enum
{
TRACE_IGNORE_CURVE_PATCHES = ( 1 << 0 ),
TRACE_IGNORE_TERRAIN_BRUSHES = ( 1 << 1 ),
};
void ParseSurfaceParm( char *token, int * flags, int * contents );
#endif