]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - tools/quake3/q3map2/q3map2.h
-lightmapdir option
[xonotic/netradiant.git] / tools / quake3 / q3map2 / q3map2.h
index a4545933dfbcefec49cb991f371d2e5dab4dcf15..29e1c79101fc9cf2e5f725cae093630dbe219e3e 100644 (file)
@@ -35,11 +35,14 @@ several games based on the Quake III Arena engine, in the form of "Q3Map2."
 
 
 /* version */
-#define Q3MAP_VERSION  "2.5.17-div0"
+#ifndef Q3MAP_VERSION
+#error no Q3MAP_VERSION defined
+#endif
 #define Q3MAP_MOTD             "Your map saw the pretty lights from q3map2's BFG"
 
 
 
+
 /* -------------------------------------------------------------------------------
 
 dependencies
@@ -181,7 +184,7 @@ constants
 
 /* bsp */
 #define        MAX_PATCH_SIZE                  32
-#define        MAX_BRUSH_SIDES                 4096
+#define        MAX_BRUSH_SIDES                 1024
 #define MAX_BUILD_SIDES                        300
 
 #define        MAX_EXPANDED_AXIS               128
@@ -213,7 +216,7 @@ constants
 
 #define        MAX_PORTALS                             32768
 #define MAX_SEPERATORS                 MAX_POINTS_ON_WINDING
-#define        MAX_POINTS_ON_FIXED_WINDING     36      /* ydnar: increased this from 12 at the expense of more memory */
+#define        MAX_POINTS_ON_FIXED_WINDING     24      /* ydnar: increased this from 12 at the expense of more memory */
 #define        MAX_PORTALS_ON_LEAF             128
 
 
@@ -302,27 +305,19 @@ abstracted bsp file
 #define MAX_LIGHTMAP_SHADERS   256
 
 /* ok to increase these at the expense of more memory */
-#define        MAX_MAP_MODELS                  0x400
-#define        MAX_MAP_BRUSHES                 0x8000
-#define        MAX_MAP_ENTITIES                0x8000          //%     0x800   /* ydnar */
+#define        MAX_MAP_ENTITIES                0x1000          //%     0x800   /* ydnar */
 #define        MAX_MAP_ENTSTRING               0x80000         //%     0x40000 /* ydnar */
-#define        MAX_MAP_SHADERS                 0x800           //%     0x400   /* ydnar */
 
 #define        MAX_MAP_AREAS                   0x100           /* MAX_MAP_AREA_BYTES in q_shared must match! */
 #define        MAX_MAP_FOGS                    30                      //& 0x100       /* RBSP (32 - world fog - goggles) */
-#define        MAX_MAP_PLANES                  0x400000        //%     0x20000 /* ydnar for md */
-#define        MAX_MAP_NODES                   0x20000
-#define        MAX_MAP_BRUSHSIDES              0x400000        //%     0x20000 /* ydnar */
+#define        MAX_MAP_PLANES                  0x200000        //%     0x20000 /* ydnar for md */
 #define        MAX_MAP_LEAFS                   0x20000
-#define        MAX_MAP_LEAFFACES               0x100000        //%     0x20000 /* ydnar */
-#define        MAX_MAP_LEAFBRUSHES             0x40000
 #define        MAX_MAP_PORTALS                 0x20000
 #define        MAX_MAP_LIGHTING                0x800000
 #define        MAX_MAP_LIGHTGRID               0x100000        //%     0x800000 /* ydnar: set to points, not bytes */
-#define        MAX_MAP_VISIBILITY              0x800000
+#define        MAX_MAP_VISIBILITY              0x200000
 
 #define        MAX_MAP_DRAW_SURFS              0x20000
-#define        MAX_MAP_DRAW_VERTS              0x80000
 #define        MAX_MAP_DRAW_INDEXES    0x80000
 
 #define MAX_MAP_ADVERTISEMENTS 30
@@ -1077,6 +1072,7 @@ typedef struct
        int                                     mapEntityNum, firstDrawSurf;
        int                                     firstBrush, numBrushes;         /* only valid during BSP compile */
        epair_t                         *epairs;
+       vec3_t                          originbrush_origin;
 }
 entity_t;
 
@@ -1425,7 +1421,7 @@ rawGridPoint_t;
 
 typedef struct surfaceInfo_s
 {
-       bspModel_t                      *model;
+       int                                     modelindex;
        shaderInfo_t            *si;
        rawLightmap_t           *lm;
        int                                     parentSurfaceNum, childSurfaceNum;
@@ -1794,6 +1790,7 @@ void                                              SwapBlock( int *block, int size );
 int                                                    GetLumpElements( bspHeader_t *header, int lump, int size );
 void                                           *GetLump( bspHeader_t *header, int lump );
 int                                                    CopyLump( bspHeader_t *header, int lump, void *dest, int size );
+int                                                    CopyLump_Allocate( bspHeader_t *header, int lump, void **dest, int size, int *allocationVariable );
 void                                           AddLump( FILE *file, bspHeader_t *header, int lumpNum, const void *data, int length );
 
 void                                           LoadBSPFile( const char *filename );
@@ -1811,6 +1808,8 @@ vec_t                                             FloatForKey( const entity_t *ent, const char *key );
 void                                           GetVectorForKey( const entity_t *ent, const char *key, vec3_t vec );
 entity_t                                       *FindTargetEntity( const char *target );
 void                                           GetEntityShadowFlags( const entity_t *ent, const entity_t *ent2, int *castShadows, int *recvShadows );
+void InjectCommandLine(char **argv, int beginArgs, int endArgs);
+               
 
 
 /* bspfile_ibsp.c */
@@ -1935,7 +1934,8 @@ Q_EXTERN qboolean                 emitFlares Q_ASSIGN( qfalse );
 Q_EXTERN qboolean                      debugSurfaces Q_ASSIGN( qfalse );
 Q_EXTERN qboolean                      debugInset Q_ASSIGN( qfalse );
 Q_EXTERN qboolean                      debugPortals Q_ASSIGN( qfalse );
-
+Q_EXTERN qboolean           lightmapTriangleCheck Q_ASSIGN(qfalse);
+Q_EXTERN qboolean           lightmapExtraVisClusterNudge Q_ASSIGN(qfalse);
 Q_EXTERN double                                normalEpsilon Q_ASSIGN( 0.00001 );
 Q_EXTERN double                                distanceEpsilon Q_ASSIGN( 0.01 );
 
@@ -2118,6 +2118,7 @@ Q_EXTERN qboolean                 noCollapse Q_ASSIGN( qfalse );
 Q_EXTERN qboolean                      exportLightmaps Q_ASSIGN( qfalse );
 Q_EXTERN qboolean                      externalLightmaps Q_ASSIGN( qfalse );
 Q_EXTERN int                           lmCustomSize Q_ASSIGN( LIGHTMAP_WIDTH );
+Q_EXTERN char *                                lmCustomDir Q_ASSIGN( NULL );
 
 Q_EXTERN qboolean                      dirty Q_ASSIGN( qfalse );
 Q_EXTERN qboolean                      dirtDebug Q_ASSIGN( qfalse );
@@ -2161,6 +2162,9 @@ Q_EXTERN qboolean                 exactPointToPolygon Q_ASSIGN( qtrue );
 Q_EXTERN float                         formFactorValueScale Q_ASSIGN( 3.0f );
 Q_EXTERN float                         linearScale Q_ASSIGN( 1.0f / 8000.0f );
 
+// for .ase conversion
+Q_EXTERN qboolean                      shadersAsBitmap Q_ASSIGN( qfalse );
+
 Q_EXTERN light_t                       *lights;
 Q_EXTERN int                           numPointLights;
 Q_EXTERN int                           numSpotLights;
@@ -2299,10 +2303,12 @@ Q_EXTERN int                            numBSPEntities Q_ASSIGN( 0 );
 Q_EXTERN entity_t                      entities[ MAX_MAP_ENTITIES ];
 
 Q_EXTERN int                           numBSPModels Q_ASSIGN( 0 );
-Q_EXTERN bspModel_t                    bspModels[ MAX_MAP_MODELS ];
+Q_EXTERN int                           allocatedBSPModels Q_ASSIGN( 0 );
+Q_EXTERN bspModel_t*           bspModels Q_ASSIGN(NULL);
 
 Q_EXTERN int                           numBSPShaders Q_ASSIGN( 0 );
-Q_EXTERN bspShader_t           bspShaders[ MAX_MAP_MODELS ];
+Q_EXTERN int                           allocatedBSPShaders Q_ASSIGN( 0 );
+Q_EXTERN bspShader_t*          bspShaders Q_ASSIGN(0);
 
 Q_EXTERN int                           bspEntDataSize Q_ASSIGN( 0 );
 Q_EXTERN char                          bspEntData[ MAX_MAP_ENTSTRING ];
@@ -2314,19 +2320,24 @@ Q_EXTERN int                            numBSPPlanes Q_ASSIGN( 0 );
 Q_EXTERN bspPlane_t                    bspPlanes[ MAX_MAP_PLANES ];
 
 Q_EXTERN int                           numBSPNodes Q_ASSIGN( 0 );
-Q_EXTERN bspNode_t                     bspNodes[ MAX_MAP_NODES ];
+Q_EXTERN int                           allocatedBSPNodes Q_ASSIGN( 0 );
+Q_EXTERN bspNode_t*                    bspNodes Q_ASSIGN(NULL);
 
 Q_EXTERN int                           numBSPLeafSurfaces Q_ASSIGN( 0 );
-Q_EXTERN int                           bspLeafSurfaces[ MAX_MAP_LEAFFACES ];
+Q_EXTERN int                           allocatedBSPLeafSurfaces Q_ASSIGN( 0 );
+Q_EXTERN int*                          bspLeafSurfaces Q_ASSIGN(NULL);
 
 Q_EXTERN int                           numBSPLeafBrushes Q_ASSIGN( 0 );
-Q_EXTERN int                           bspLeafBrushes[ MAX_MAP_LEAFBRUSHES ];
+Q_EXTERN int                           allocatedBSPLeafBrushes Q_ASSIGN( 0 );
+Q_EXTERN int*                          bspLeafBrushes Q_ASSIGN(NULL);
 
 Q_EXTERN int                           numBSPBrushes Q_ASSIGN( 0 );
-Q_EXTERN bspBrush_t                    bspBrushes[ MAX_MAP_BRUSHES ];
+Q_EXTERN int                           allocatedBSPBrushes Q_ASSIGN( 0 );
+Q_EXTERN bspBrush_t*           bspBrushes Q_ASSIGN(NULL);
 
 Q_EXTERN int                           numBSPBrushSides Q_ASSIGN( 0 );
-Q_EXTERN bspBrushSide_t                bspBrushSides[ MAX_MAP_BRUSHSIDES ];
+Q_EXTERN int                           allocatedBSPBrushSides Q_ASSIGN( 0 );
+Q_EXTERN bspBrushSide_t*       bspBrushSides Q_ASSIGN(NULL);
 
 Q_EXTERN int                           numBSPLightBytes Q_ASSIGN( 0 );
 Q_EXTERN byte                          *bspLightBytes Q_ASSIGN( NULL );
@@ -2355,6 +2366,27 @@ Q_EXTERN bspFog_t                        bspFogs[ MAX_MAP_FOGS ];
 Q_EXTERN int                           numBSPAds Q_ASSIGN( 0 );
 Q_EXTERN bspAdvertisement_t    bspAds[ MAX_MAP_ADVERTISEMENTS ];
 
+#define AUTOEXPAND_BY_REALLOC(ptr, reqitem, allocated, def) \
+       do \
+       { \
+               if(reqitem >= allocated) \
+               { \
+                       if(allocated == 0) \
+                               allocated = def; \
+                       while(reqitem >= allocated && allocated) \
+                               allocated *= 2; \
+                       if(!allocated || allocated > 2147483647 / sizeof(*ptr)) \
+                       { \
+                               Error(#ptr " over 2 GB"); \
+                       } \
+                       ptr = realloc(ptr, sizeof(*ptr) * allocated); \
+                       if(!ptr) \
+                               Error(#ptr " out of memory"); \
+               } \
+       } \
+       while(0)
+
+#define AUTOEXPAND_BY_REALLOC_BSP(suffix, def) AUTOEXPAND_BY_REALLOC(bsp##suffix, numBSP##suffix, allocatedBSP##suffix, def)
 
 /* end marker */
 #endif