]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - tools/quake2/q2map/qbsp.c
my own uncrustify run
[xonotic/netradiant.git] / tools / quake2 / q2map / qbsp.c
index 2809390c91bdaee14e99bcb20c1cf81426b31bc4..128fb7ab1576f74871102144dce0d151c8018cbc 100644 (file)
@@ -1,79 +1,76 @@
 /*
-Copyright (C) 1999-2006 Id Software, Inc. and contributors.
-For a list of contributors, see the accompanying CONTRIBUTORS file.
+   Copyright (C) 1999-2006 Id Software, Inc. and contributors.
+   For a list of contributors, see the accompanying CONTRIBUTORS file.
 
-This file is part of GtkRadiant.
+   This file is part of GtkRadiant.
 
-GtkRadiant 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.
+   GtkRadiant 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.
 
-GtkRadiant 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.
+   GtkRadiant 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 GtkRadiant; if not, write to the Free Software
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-*/
+   You should have received a copy of the GNU General Public License
+   along with GtkRadiant; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
 // csg4.c
 
 #include "qbsp.h"
 
-extern float subdivide_size;
+extern float subdivide_size;
 
-char           source[1024];
-char           name[1024];
+char source[1024];
+char name[1024];
 
-vec_t          microvolume = 1.0;
-qboolean       noprune;
-qboolean       glview;
-qboolean       nodetail;
-qboolean       fulldetail;
-qboolean       onlyents;
-qboolean       nomerge;
-qboolean       nowater;
-qboolean       nofill;
-qboolean       nocsg;
-qboolean       noweld;
-qboolean       noshare;
-qboolean       nosubdiv;
-qboolean       notjunc;
-qboolean       noopt;
-qboolean       leaktest;
-qboolean       verboseentities;
+vec_t microvolume = 1.0;
+qboolean noprune;
+qboolean glview;
+qboolean nodetail;
+qboolean fulldetail;
+qboolean onlyents;
+qboolean nomerge;
+qboolean nowater;
+qboolean nofill;
+qboolean nocsg;
+qboolean noweld;
+qboolean noshare;
+qboolean nosubdiv;
+qboolean notjunc;
+qboolean noopt;
+qboolean leaktest;
+qboolean verboseentities;
 
-char           outbase[32];
+char outbase[32];
 
-int                    block_xl = -8, block_xh = 7, block_yl = -8, block_yh = 7;
+int block_xl = -8, block_xh = 7, block_yl = -8, block_yh = 7;
 
-int                    entity_num;
+int entity_num;
 
 
-node_t         *block_nodes[10][10];
+node_t      *block_nodes[10][10];
 
 
 /*
-============
-BlockTree
-
-============
-*/
-node_t *BlockTree (int xl, int yl, int xh, int yh)
-{
-       node_t  *node;
-       vec3_t  normal;
-       float   dist;
-       int             mid;
-
-       if (xl == xh && yl == yh)
-       {
-               node = block_nodes[xl+5][yl+5];
-               if (!node)
-               {       // return an empty leaf
-                       node = AllocNode ();
+   ============
+   BlockTree
+
+   ============
+ */
+node_t  *BlockTree( int xl, int yl, int xh, int yh ){
+       node_t  *node;
+       vec3_t normal;
+       float dist;
+       int mid;
+
+       if ( xl == xh && yl == yh ) {
+               node = block_nodes[xl + 5][yl + 5];
+               if ( !node ) { // return an empty leaf
+                       node = AllocNode();
                        node->planenum = PLANENUM_LEAF;
                        node->contents = 0; //CONTENTS_SOLID;
                        return node;
@@ -82,94 +79,91 @@ node_t      *BlockTree (int xl, int yl, int xh, int yh)
        }
 
        // create a seperator along the largest axis
-       node = AllocNode ();
+       node = AllocNode();
 
-       if (xh - xl > yh - yl)
-       {       // split x axis
-               mid = xl + (xh-xl)/2 + 1;
+       if ( xh - xl > yh - yl ) { // split x axis
+               mid = xl + ( xh - xl ) / 2 + 1;
                normal[0] = 1;
                normal[1] = 0;
                normal[2] = 0;
-               dist = mid*1024;
-               node->planenum = FindFloatPlane (normal, dist);
-               node->children[0] = BlockTree ( mid, yl, xh, yh);
-               node->children[1] = BlockTree ( xl, yl, mid-1, yh);
+               dist = mid * 1024;
+               node->planenum = FindFloatPlane( normal, dist );
+               node->children[0] = BlockTree( mid, yl, xh, yh );
+               node->children[1] = BlockTree( xl, yl, mid - 1, yh );
        }
        else
        {
-               mid = yl + (yh-yl)/2 + 1;
+               mid = yl + ( yh - yl ) / 2 + 1;
                normal[0] = 0;
                normal[1] = 1;
                normal[2] = 0;
-               dist = mid*1024;
-               node->planenum = FindFloatPlane (normal, dist);
-               node->children[0] = BlockTree ( xl, mid, xh, yh);
-               node->children[1] = BlockTree ( xl, yl, xh, mid-1);
+               dist = mid * 1024;
+               node->planenum = FindFloatPlane( normal, dist );
+               node->children[0] = BlockTree( xl, mid, xh, yh );
+               node->children[1] = BlockTree( xl, yl, xh, mid - 1 );
        }
 
        return node;
 }
 
 /*
-============
-ProcessBlock_Thread
-
-============
-*/
-int                    brush_start, brush_end;
-void ProcessBlock_Thread (int blocknum)
-{
-       int             xblock, yblock;
-       vec3_t          mins, maxs;
-       bspbrush_t      *brushes;
-       tree_t          *tree;
-       node_t          *node;
-
-       yblock = block_yl + blocknum / (block_xh-block_xl+1);
-       xblock = block_xl + blocknum % (block_xh-block_xl+1);
-
-       Sys_FPrintf( SYS_VRB, "############### block %2i,%2i ###############\n", xblock, yblock);
-
-       mins[0] = xblock*1024;
-       mins[1] = yblock*1024;
+   ============
+   ProcessBlock_Thread
+
+   ============
+ */
+int brush_start, brush_end;
+void ProcessBlock_Thread( int blocknum ){
+       int xblock, yblock;
+       vec3_t mins, maxs;
+       bspbrush_t  *brushes;
+       tree_t      *tree;
+       node_t      *node;
+
+       yblock = block_yl + blocknum / ( block_xh - block_xl + 1 );
+       xblock = block_xl + blocknum % ( block_xh - block_xl + 1 );
+
+       Sys_FPrintf( SYS_VRB, "############### block %2i,%2i ###############\n", xblock, yblock );
+
+       mins[0] = xblock * 1024;
+       mins[1] = yblock * 1024;
        mins[2] = -4096;
-       maxs[0] = (xblock+1)*1024;
-       maxs[1] = (yblock+1)*1024;
+       maxs[0] = ( xblock + 1 ) * 1024;
+       maxs[1] = ( yblock + 1 ) * 1024;
        maxs[2] = 4096;
 
        // the makelist and chopbrushes could be cached between the passes...
-       brushes = MakeBspBrushList (brush_start, brush_end, mins, maxs);
-       if (!brushes)
-       {
-               node = AllocNode ();
+       brushes = MakeBspBrushList( brush_start, brush_end, mins, maxs );
+       if ( !brushes ) {
+               node = AllocNode();
                node->planenum = PLANENUM_LEAF;
                node->contents = CONTENTS_SOLID;
-               block_nodes[xblock+5][yblock+5] = node;
+               block_nodes[xblock + 5][yblock + 5] = node;
                return;
        }
 
-       if (!nocsg)
-               brushes = ChopBrushes (brushes);
+       if ( !nocsg ) {
+               brushes = ChopBrushes( brushes );
+       }
 
-       tree = BrushBSP (brushes, mins, maxs);
+       tree = BrushBSP( brushes, mins, maxs );
 
-       block_nodes[xblock+5][yblock+5] = tree->headnode;
+       block_nodes[xblock + 5][yblock + 5] = tree->headnode;
 }
 
 /*
-============
-ProcessWorldModel
-
-============
-*/
-void ProcessWorldModel (void)
-{
-       entity_t        *e;
-       tree_t          *tree;
-       qboolean        leaked;
-       qboolean        optimize;
-       xmlNodePtr      polyline, leaknode;
-  char         level[ 2 ];
+   ============
+   ProcessWorldModel
+
+   ============
+ */
+void ProcessWorldModel( void ){
+       entity_t    *e;
+       tree_t      *tree;
+       qboolean leaked;
+       qboolean optimize;
+       xmlNodePtr polyline, leaknode;
+       char level[ 2 ];
 
        e = &entities[entity_num];
 
@@ -180,30 +174,38 @@ void ProcessWorldModel (void)
        //
        // perform per-block operations
        //
-       if (block_xh * 1024 > map_maxs[0])
-               block_xh = floor(map_maxs[0]/1024.0);
-       if ( (block_xl+1) * 1024 < map_mins[0])
-               block_xl = floor(map_mins[0]/1024.0);
-       if (block_yh * 1024 > map_maxs[1])
-               block_yh = floor(map_maxs[1]/1024.0);
-       if ( (block_yl+1) * 1024 < map_mins[1])
-               block_yl = floor(map_mins[1]/1024.0);
-
-       if (block_xl <-4)
+       if ( block_xh * 1024 > map_maxs[0] ) {
+               block_xh = floor( map_maxs[0] / 1024.0 );
+       }
+       if ( ( block_xl + 1 ) * 1024 < map_mins[0] ) {
+               block_xl = floor( map_mins[0] / 1024.0 );
+       }
+       if ( block_yh * 1024 > map_maxs[1] ) {
+               block_yh = floor( map_maxs[1] / 1024.0 );
+       }
+       if ( ( block_yl + 1 ) * 1024 < map_mins[1] ) {
+               block_yl = floor( map_mins[1] / 1024.0 );
+       }
+
+       if ( block_xl < -4 ) {
                block_xl = -4;
-       if (block_yl <-4)
+       }
+       if ( block_yl < -4 ) {
                block_yl = -4;
-       if (block_xh > 3)
+       }
+       if ( block_xh > 3 ) {
                block_xh = 3;
-       if (block_yh > 3)
+       }
+       if ( block_yh > 3 ) {
                block_yh = 3;
+       }
 
-       for (optimize = false ; optimize <= true ; optimize++)
+       for ( optimize = false ; optimize <= true ; optimize++ )
        {
-               Sys_FPrintf( SYS_VRB, "--------------------------------------------\n");
+               Sys_FPrintf( SYS_VRB, "--------------------------------------------\n" );
 
-               RunThreadsOnIndividual ((block_xh-block_xl+1)*(block_yh-block_yl+1),
-                       !verbose, ProcessBlock_Thread);
+               RunThreadsOnIndividual( ( block_xh - block_xl + 1 ) * ( block_yh - block_yl + 1 ),
+                                                               !verbose, ProcessBlock_Thread );
 
                //
                // build the division tree
@@ -211,96 +213,98 @@ void ProcessWorldModel (void)
                // will also get nodes.
                //
 
-               Sys_FPrintf( SYS_VRB, "--------------------------------------------\n");
+               Sys_FPrintf( SYS_VRB, "--------------------------------------------\n" );
 
-               tree = AllocTree ();
-               tree->headnode = BlockTree (block_xl-1, block_yl-1, block_xh+1, block_yh+1);
+               tree = AllocTree();
+               tree->headnode = BlockTree( block_xl - 1, block_yl - 1, block_xh + 1, block_yh + 1 );
 
-               tree->mins[0] = (block_xl)*1024;
-               tree->mins[1] = (block_yl)*1024;
+               tree->mins[0] = ( block_xl ) * 1024;
+               tree->mins[1] = ( block_yl ) * 1024;
                tree->mins[2] = map_mins[2] - 8;
 
-               tree->maxs[0] = (block_xh+1)*1024;
-               tree->maxs[1] = (block_yh+1)*1024;
+               tree->maxs[0] = ( block_xh + 1 ) * 1024;
+               tree->maxs[1] = ( block_yh + 1 ) * 1024;
                tree->maxs[2] = map_maxs[2] + 8;
 
                //
                // perform the global operations
                //
-               MakeTreePortals (tree);
+               MakeTreePortals( tree );
 
-               if (FloodEntities (tree))
-                       FillOutside (tree->headnode);
+               if ( FloodEntities( tree ) ) {
+                       FillOutside( tree->headnode );
+               }
                else
                {
 
-      Sys_FPrintf( SYS_NOXML, "**********************\n" );
-               Sys_FPrintf( SYS_NOXML, "******* leaked *******\n" );
-               Sys_FPrintf( SYS_NOXML, "**********************\n" );
-               polyline = LeakFile( tree );
-               leaknode = xmlNewNode( NULL, "message" );
-               xmlNodeSetContent( leaknode, "MAP LEAKED\n" );
-               xmlAddChild( leaknode, polyline );
-               level[0] = (int) '0' + SYS_ERR;
-               level[1] = 0;
-               xmlSetProp( leaknode, "level", (char*) &level );
-               xml_SendNode( leaknode );
-               if( leaktest )
-               {
-                       Sys_Printf ("--- MAP LEAKED, ABORTING LEAKTEST ---\n");
-                       exit( 0 );
-               }
-               leaked = true;
-/*
-                       Sys_Printf ("**** leaked ****\n");
+                       Sys_FPrintf( SYS_NOXML, "**********************\n" );
+                       Sys_FPrintf( SYS_NOXML, "******* leaked *******\n" );
+                       Sys_FPrintf( SYS_NOXML, "**********************\n" );
+                       polyline = LeakFile( tree );
+                       leaknode = xmlNewNode( NULL, "message" );
+                       xmlNodeSetContent( leaknode, "MAP LEAKED\n" );
+                       xmlAddChild( leaknode, polyline );
+                       level[0] = (int) '0' + SYS_ERR;
+                       level[1] = 0;
+                       xmlSetProp( leaknode, "level", (char*) &level );
+                       xml_SendNode( leaknode );
+                       if ( leaktest ) {
+                               Sys_Printf( "--- MAP LEAKED, ABORTING LEAKTEST ---\n" );
+                               exit( 0 );
+                       }
                        leaked = true;
-                       LeakFile (tree);
-                       if (leaktest)
-                       {
-                               Sys_Printf ("--- MAP LEAKED ---\n");
-                               exit (0);
-                       } */
+/*
+            Sys_Printf ("**** leaked ****\n");
+            leaked = true;
+            LeakFile (tree);
+            if (leaktest)
+            {
+                Sys_Printf ("--- MAP LEAKED ---\n");
+                exit (0);
+            } */
                }
 
-               MarkVisibleSides (tree, brush_start, brush_end);
-               if (noopt || leaked)
+               MarkVisibleSides( tree, brush_start, brush_end );
+               if ( noopt || leaked ) {
                        break;
-               if (!optimize)
-               {
-                       FreeTree (tree);
+               }
+               if ( !optimize ) {
+                       FreeTree( tree );
                }
        }
 
-       FloodAreas (tree);
-       if (glview)
-               WriteGLView (tree, source);
-       MakeFaces (tree->headnode);
-       FixTjuncs (tree->headnode);
+       FloodAreas( tree );
+       if ( glview ) {
+               WriteGLView( tree, source );
+       }
+       MakeFaces( tree->headnode );
+       FixTjuncs( tree->headnode );
 
-       if (!noprune)
-               PruneNodes (tree->headnode);
+       if ( !noprune ) {
+               PruneNodes( tree->headnode );
+       }
 
-       WriteBSP (tree->headnode);
+       WriteBSP( tree->headnode );
 
-       if (!leaked)
-               WritePortalFile (tree);
+       if ( !leaked ) {
+               WritePortalFile( tree );
+       }
 
-       FreeTree (tree);
+       FreeTree( tree );
 }
 
 /*
-============
-ProcessSubModel
-
-============
-*/
-void ProcessSubModel (void)
-{
-       entity_t        *e;
-       int                     start, end;
-       tree_t          *tree;
-       bspbrush_t      *list;
-       vec3_t          mins, maxs;
+   ============
+   ProcessSubModel
+
+   ============
+ */
+void ProcessSubModel( void ){
+       entity_t    *e;
+       int start, end;
+       tree_t      *tree;
+       bspbrush_t  *list;
+       vec3_t mins, maxs;
 
        e = &entities[entity_num];
 
@@ -309,118 +313,119 @@ void ProcessSubModel (void)
 
        mins[0] = mins[1] = mins[2] = -4096;
        maxs[0] = maxs[1] = maxs[2] = 4096;
-       list = MakeBspBrushList (start, end, mins, maxs);
-       if (!nocsg)
-               list = ChopBrushes (list);
-       tree = BrushBSP (list, mins, maxs);
-       MakeTreePortals (tree);
-       MarkVisibleSides (tree, start, end);
-       MakeFaces (tree->headnode);
-       FixTjuncs (tree->headnode);
-       WriteBSP (tree->headnode);
-       FreeTree (tree);
+       list = MakeBspBrushList( start, end, mins, maxs );
+       if ( !nocsg ) {
+               list = ChopBrushes( list );
+       }
+       tree = BrushBSP( list, mins, maxs );
+       MakeTreePortals( tree );
+       MarkVisibleSides( tree, start, end );
+       MakeFaces( tree->headnode );
+       FixTjuncs( tree->headnode );
+       WriteBSP( tree->headnode );
+       FreeTree( tree );
 }
 
 /*
-============
-ProcessModels
-============
-*/
-void ProcessModels (void)
-{
-       BeginBSPFile ();
-
-       for (entity_num=0 ; entity_num< num_entities ; entity_num++)
+   ============
+   ProcessModels
+   ============
+ */
+void ProcessModels( void ){
+       BeginBSPFile();
+
+       for ( entity_num = 0 ; entity_num < num_entities ; entity_num++ )
        {
-               if (!entities[entity_num].numbrushes)
+               if ( !entities[entity_num].numbrushes ) {
                        continue;
+               }
 
-               Sys_FPrintf( SYS_VRB, "############### model %i ###############\n", nummodels);
-               BeginModel ();
-               if (entity_num == 0)
-                       ProcessWorldModel ();
-               else
-                       ProcessSubModel ();
-               EndModel ();
+               Sys_FPrintf( SYS_VRB, "############### model %i ###############\n", nummodels );
+               BeginModel();
+               if ( entity_num == 0 ) {
+                       ProcessWorldModel();
+               }
+               else{
+                       ProcessSubModel();
+               }
+               EndModel();
 
                //if (!verboseentities)
                //      verbose = false;        // don't bother printing submodels
        }
 
-       EndBSPFile ();
+       EndBSPFile();
 }
 
 
 /*
-============
-main
-============
-*/
-int BSP_Main ()
-{
-       double          start, end;
-       char            path[1024];
-       int             total_bsp_time;
+   ============
+   main
+   ============
+ */
+int BSP_Main(){
+       double start, end;
+       char path[1024];
+       int total_bsp_time;
+
+       Sys_Printf( "\n----- BSP ----\n\n" );
 
-       Sys_Printf ("\n----- BSP ----\n\n");
 
-       
-       start = I_FloatTime ();
+       start = I_FloatTime();
 
-       ThreadSetDefault ();
-       SetQdirFromPath (mapname);
+       ThreadSetDefault();
+       SetQdirFromPath( mapname );
 
-       strcpy (source, ExpandArg (mapname));
-       StripExtension (source);
+       strcpy( source, ExpandArg( mapname ) );
+       StripExtension( source );
 
        // delete portal and line files
-       sprintf (path, "%s.prt", source);
-       remove (path);
-       sprintf (path, "%s.lin", source);
-       remove (path);
+       sprintf( path, "%s.prt", source );
+       remove( path );
+       sprintf( path, "%s.lin", source );
+       remove( path );
 
-       strcpy (name, ExpandArg (mapname));     
-       DefaultExtension (name, ".map");        // might be .reg
+       strcpy( name, ExpandArg( mapname ) );
+       DefaultExtension( name, ".map" );    // might be .reg
 
        //
        // if onlyents, just grab the entites and resave
        //
-       if (onlyents)
-       {
+       if ( onlyents ) {
                char out[1024];
 
-               sprintf (out, "%s.bsp", source);
-               LoadBSPFile (out);
+               sprintf( out, "%s.bsp", source );
+               LoadBSPFile( out );
                num_entities = 0;
 
-               LoadMapFile (name);
-               SetModelNumbers ();
-               SetLightStyles ();
+               LoadMapFile( name );
+               SetModelNumbers();
+               SetLightStyles();
 
-               UnparseEntities ();
+               UnparseEntities();
 
-               WriteBSPFile (out);
+               WriteBSPFile( out );
        }
        else
        {
                //
                // start from scratch
                //
-               LoadMapFile (name);
-               SetModelNumbers ();
-               SetLightStyles ();
+               LoadMapFile( name );
+               SetModelNumbers();
+               SetLightStyles();
 
-               ProcessModels ();
+               ProcessModels();
        }
 
-       end = I_FloatTime ();
-       total_bsp_time = (int) (end-start);
-       Sys_Printf("\nBSP Time: ");
-       if ( total_bsp_time > 59 )
-               Sys_Printf("%d Minutes ", total_bsp_time/60 );
-       Sys_Printf( "%d Seconds\n", total_bsp_time%60 );
+       end = I_FloatTime();
+       total_bsp_time = (int) ( end - start );
+       Sys_Printf( "\nBSP Time: " );
+       if ( total_bsp_time > 59 ) {
+               Sys_Printf( "%d Minutes ", total_bsp_time / 60 );
+       }
+       Sys_Printf( "%d Seconds\n", total_bsp_time % 60 );
 
 
        return 0;
 }
-