#ifndef Q3MAP2_H
#define Q3MAP2_H
-
+#include "globaldefs.h"
/* version */
#ifndef Q3MAP_VERSION
#define Q3MAP_MOTD "Your map saw the pretty lights from q3map2's BFG"
-
-
/* -------------------------------------------------------------------------------
dependencies
------------------------------------------------------------------------------- */
/* platform-specific */
-#if defined( __linux__ ) || defined( __APPLE__ )
- #define Q_UNIX
-#endif
-
-#ifdef Q_UNIX
+#if GDEF_OS_POSIX
#include <unistd.h>
#include <pwd.h>
#include <limits.h>
#endif
-#ifdef WIN32
+#if GDEF_OS_WINDOWS
#include <windows.h>
#endif
#include "mathlib.h"
#include "md5lib.h"
#include "ddslib.h"
+#ifdef BUILD_CRUNCH
+#include "crn_rgba.h"
+#endif // BUILD_CRUNCH
#include "picomodel.h"
------------------------------------------------------------------------------- */
-#define MAC_STATIC_HACK 0
-#if defined( __APPLE__ ) && MAC_STATIC_HACK
- #define MAC_STATIC static
+#if GDEF_OS_WINDOWS
+ #define Q_stricmp stricmp
+ #define Q_strncasecmp strnicmp
#else
- #define MAC_STATIC
-#endif
-
-#if 1
- #ifdef WIN32
- #define Q_stricmp stricmp
- #define Q_strncasecmp strnicmp
- #else
- #define Q_stricmp strcasecmp
- #define Q_strncasecmp strncasecmp
- #endif
+ #define Q_stricmp strcasecmp
+ #define Q_strncasecmp strncasecmp
#endif
/* macro version */
#define C_DETAIL 0x08000000 /* THIS MUST BE THE SAME AS IN RADIANT! */
+#ifdef SMOKINGUNS
+// new Smokin'Guns surface flags
+#define Q_SURF_METAL 0x00001000
+#define Q_SURF_WOOD 0x00080000
+#define Q_SURF_CLOTH 0x00100000
+#define Q_SURF_DIRT 0x00200000
+#define Q_SURF_GLASS 0x00400000
+#define Q_SURF_PLANT 0x00800000
+#define Q_SURF_SAND 0x01000000
+#define Q_SURF_SNOW 0x02000000
+#define Q_SURF_STONE 0x04000000
+#define Q_SURF_WATER 0x08000000
+#define Q_SURF_GRASS 0x10000000
+#define Q_SURF_BREAKABLE 0x20000000
+#endif
+
+
/* shadow flags */
#define WORLDSPAWN_CAST_SHADOWS 1
#define WORLDSPAWN_RECV_SHADOWS 1
#define HINT_PRIORITY 1000 /* ydnar: force hint splits first and antiportal/areaportal splits last */
#define ANTIPORTAL_PRIORITY -1000
#define AREAPORTAL_PRIORITY -1000
-#define DETAIL_PRIORITY -3000
+#define DETAIL_PRIORITY -3000
#define PSIDE_FRONT 1
#define PSIDE_BACK 2
#define RAD_LUXEL_SIZE 3
#define SUPER_LUXEL_SIZE 4
#define SUPER_FLAG_SIZE 4
-#define FLAG_FORCE_SUBSAMPLING 1
+#define FLAG_FORCE_SUBSAMPLING 1
#define FLAG_ALREADY_SUBSAMPLED 2
#define SUPER_ORIGIN_SIZE 3
#define SUPER_NORMAL_SIZE 4
struct face_s *next;
int planenum;
int priority;
- //qboolean checked;
+ //qboolean checked;
int compileFlags;
winding_t *w;
}
shaderInfo_t *shaderInfo;
shaderInfo_t *celShader; /* :) */
+ /* jal : entity based _lightmapsamplesize */
+ int lightmapSampleSize;
/* ydnar: gs mods */
- int lightmapSampleSize; /* jal : entity based _lightmapsamplesize */
float lightmapScale;
vec3_t eMins, eMaxs;
indexMap_t *im;
float *bspLuxels[ MAX_LIGHTMAPS ];
float *radLuxels[ MAX_LIGHTMAPS ];
float *superLuxels[ MAX_LIGHTMAPS ];
- unsigned char *superFlags;
+ unsigned char *superFlags;
float *superOrigins;
float *superNormals;
int *superClusters;
game_t *GetGame( char *arg );
void InitPaths( int *argc, char **argv );
+
/* fixaas.c */
int FixAASMain( int argc, char **argv );
+
/* bsp.c */
int BSPMain( int argc, char **argv );
+
/* bsp_analyze.c */
int AnalyzeBSPMain( int argc, char **argv );
+
/* bsp_info.c */
int BSPInfoMain( int count, char **fileNames );
/* convert_bsp.c */
int ConvertBSPMain( int argc, char **argv );
+
/* convert_map.c */
int ConvertBSPToMap( char *bspName );
int ConvertBSPToMap_BP( char *bspName );
void WriteBSPFile( const char *filename );
void PrintBSPFileSizes( void );
+#ifdef SMOKINGUNS
+void WriteTexFile(char *name);
+void LoadSurfaceFlags(char *filename);
+int GetSurfaceParm(const char *tex);
+void RestoreSurfaceFlags(char *filename);
+#endif
+
epair_t *ParseEPair( void );
void ParseEntities( void );
void UnparseEntities( void );
{
#include "game_quake3.h"
,
- #include "game_quakelive.h" /* most be after game_quake3.h as they share defines! */
+ #include "game_quakelive.h" /* must be after game_quake3.h as they share defines! */
,
- #include "game_nexuiz.h" /* most be after game_quake3.h as they share defines! */
+ #include "game_nexuiz.h" /* must be after game_quake3.h as they share defines! */
,
- #include "game_xonotic.h" /* most be after game_quake3.h as they share defines! */
+ #include "game_xonotic.h" /* must be after game_quake3.h as they share defines! */
,
#include "game_tremulous.h" /*LinuxManMikeC: must be after game_quake3.h, depends on #define's set in it */
,
- #include "game_unvanquished.h"
+ #include "game_unvanquished.h" /* must be after game_tremulous.h as they share defines! */
,
#include "game_tenebrae.h"
,
#include "game_wolf.h"
,
- #include "game_wolfet.h" /* most be after game_wolf.h as they share defines! */
+ #include "game_wolfet.h" /* must be after game_wolf.h as they share defines! */
,
#include "game_etut.h"
,
,
#include "game_sof2.h"
,
- #include "game_jk2.h" /* most be after game_sof2.h as they share defines! */
+ #include "game_jk2.h" /* must be after game_sof2.h as they share defines! */
,
- #include "game_ja.h" /* most be after game_jk2.h as they share defines! */
+ #include "game_ja.h" /* must be after game_jk2.h as they share defines! */
,
#include "game_qfusion.h" /* qfusion game */
,
#include "game_reaction.h" /* must be after game_quake3.h */
+#ifdef SMOKINGUNS
+ ,
+ #include "game_smokinguns.h" /* Smokin'Guns */
+#endif
,
#include "game_darkplaces.h" /* vortex: darkplaces q1 engine */
,
Q_EXTERN qboolean noHint Q_ASSIGN( qfalse ); /* ydnar */
Q_EXTERN qboolean renameModelShaders Q_ASSIGN( qfalse ); /* ydnar */
Q_EXTERN qboolean skyFixHack Q_ASSIGN( qfalse ); /* ydnar */
-Q_EXTERN qboolean bspAlternateSplitWeights Q_ASSIGN( qfalse ); /* 27 */
-Q_EXTERN qboolean deepBSP Q_ASSIGN( qfalse ); /* div0 */
+Q_EXTERN qboolean bspAlternateSplitWeights Q_ASSIGN( qfalse ); /* 27 */
+Q_EXTERN qboolean deepBSP Q_ASSIGN( qfalse ); /* div0 */
Q_EXTERN qboolean maxAreaFaceSurface Q_ASSIGN( qfalse ); /* divVerent */
Q_EXTERN int patchSubdivisions Q_ASSIGN( 8 ); /* ydnar: -patchmeta subdivisions */
Q_EXTERN bspBrushSide_t* bspBrushSides Q_ASSIGN( NULL );
Q_EXTERN int numBSPLightBytes Q_ASSIGN( 0 );
-Q_EXTERN byte *bspLightBytes Q_ASSIGN( NULL );
+Q_EXTERN byte *bspLightBytes Q_ASSIGN( NULL );
//% Q_EXTERN int numBSPGridPoints Q_ASSIGN( 0 );
//% Q_EXTERN byte *bspGridPoints Q_ASSIGN( NULL );
Q_EXTERN byte bspVisBytes[ MAX_MAP_VISIBILITY ];
Q_EXTERN int numBSPDrawVerts Q_ASSIGN( 0 );
-Q_EXTERN bspDrawVert_t *bspDrawVerts Q_ASSIGN( NULL );
+Q_EXTERN bspDrawVert_t *bspDrawVerts Q_ASSIGN( NULL );
Q_EXTERN int numBSPDrawIndexes Q_ASSIGN( 0 );
Q_EXTERN int allocatedBSPDrawIndexes Q_ASSIGN( 0 );
-Q_EXTERN int *bspDrawIndexes Q_ASSIGN( NULL );
+Q_EXTERN int *bspDrawIndexes Q_ASSIGN( NULL );
Q_EXTERN int numBSPDrawSurfaces Q_ASSIGN( 0 );
Q_EXTERN bspDrawSurface_t *bspDrawSurfaces Q_ASSIGN( NULL );
Q_EXTERN int numBSPAds Q_ASSIGN( 0 );
Q_EXTERN bspAdvertisement_t bspAds[ MAX_MAP_ADVERTISEMENTS ];
+#ifdef SMOKINGUNS
+// Smokin'Guns globals
+Q_EXTERN qboolean compile_map;
+#endif
+
#define AUTOEXPAND_BY_REALLOC( ptr, reqitem, allocated, def ) \
do \
{ \
allocated *= 2; \
if ( !allocated || allocated > 2147483647 / (int)sizeof( *ptr ) ) \
{ \
- Error( # ptr " over 2 GB" ); \
+ Error( #ptr " over 2 GB" ); \
} \
ptr = realloc( ptr, sizeof( *ptr ) * allocated ); \
if ( !ptr ) { \
- Error( # ptr " out of memory" ); } \
+ Error( #ptr " out of memory" ); } \
} \
} \
while ( 0 )
-#define AUTOEXPAND_BY_REALLOC_BSP( suffix, def ) AUTOEXPAND_BY_REALLOC( bsp ## suffix, numBSP ## suffix, allocatedBSP ## suffix, def )
+#define AUTOEXPAND_BY_REALLOC_BSP( suffix, def ) AUTOEXPAND_BY_REALLOC( bsp##suffix, numBSP##suffix, allocatedBSP##suffix, def )
#define Image_LinearFloatFromsRGBFloat( c ) ( ( ( c ) <= 0.04045f ) ? ( c ) * ( 1.0f / 12.92f ) : (float)pow( ( ( c ) + 0.055f ) * ( 1.0f / 1.055f ), 2.4f ) )
#define Image_sRGBFloatFromLinearFloat( c ) ( ( ( c ) < 0.0031308f ) ? ( c ) * 12.92f : 1.055f * (float)pow( ( c ), 1.0f / 2.4f ) - 0.055f )