]> git.rm.cloudns.org Git - xonotic/netradiant.git/commitdiff
tools: deduplicate leakfile.c across q3map2 and q2map
authoruis <uis9936@gmail.com>
Fri, 16 Aug 2024 02:20:24 +0000 (05:20 +0300)
committeruis <uis9936@gmail.com>
Fri, 16 Aug 2024 13:39:16 +0000 (16:39 +0300)
This is purely conveniece change.
So change of leakfile in one place will update it for all compilers.

tools/quake2/q2map/leakfile.c [changed from file to symlink]
tools/quake2/q2map/qbsp.c
tools/quake2/q2map/qbsp.h
tools/quake3/q3map2/leakfile.c [changed from file to symlink]
tools/shared/map/leakfile.c [new file with mode: 0644]

deleted file mode 100644 (file)
index d8034a047c0558423a8eb74e35355d8a9449b6a5..0000000000000000000000000000000000000000
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
-   Copyright (C) 1999-2007 id Software, Inc. and contributors.
-   For a list of contributors, see the accompanying CONTRIBUTORS file.
-
-   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 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
- */
-
-#include "qbsp.h"
-
-/*
-   ==============================================================================
-
-   LEAF FILE GENERATION
-
-   Save out name.line for qe3 to read
-   ==============================================================================
- */
-
-
-/*
-   =============
-   LeakFile
-
-   Finds the shortest possible chain of portals
-   that leads from the outside leaf to a specifically
-   occupied leaf
-   =============
- */
-
-/*
-   void LeakFile (tree_t *tree)
-   {
-    vec3_t     mid;
-    FILE       *linefile;
-    char       filename[1024];
-    node_t     *node;
-    int                count;
-
-    if (!tree->outside_node.occupied)
-        return;
-
-    Sys_Printf ("--- LeakFile ---\n");
-
-    //
-    // write the points to the file
-    //
-    sprintf (filename, "%s.lin", source);
-    linefile = fopen (filename, "w");
-    if (!linefile)
-        Error ("Couldn't open %s\n", filename);
-
-    count = 0;
-    node = &tree->outside_node;
-    while (node->occupied > 1)
-    {
-        int                    next;
-        portal_t       *p, *nextportal;
-        node_t         *nextnode;
-        int                    s;
-
-        // find the best portal exit
-        next = node->occupied;
-        for (p=node->portals ; p ; p = p->next[!s])
-        {
-            s = (p->nodes[0] == node);
-            if (p->nodes[s]->occupied
-                && p->nodes[s]->occupied < next)
-            {
-                nextportal = p;
-                nextnode = p->nodes[s];
-                next = nextnode->occupied;
-            }
-        }
-        node = nextnode;
-        WindingCenter (nextportal->winding, mid);
-        fprintf (linefile, "%f %f %f\n", mid[0], mid[1], mid[2]);
-        count++;
-    }
-    // add the occupant center
-    GetVectorForKey (node->occupant, "origin", mid);
-
-    fprintf (linefile, "%f %f %f\n", mid[0], mid[1], mid[2]);
-    Sys_Printf ("%5i point linefile\n", count+1);
-
-    fclose (linefile);
-   }
- */
-
-/*
-   =============
-   LeakFile
-
-   Finds the shortest possible chain of portals
-   that leads from the outside leaf to a specifically
-   occupied leaf
-
-   TTimo: builds a polyline xml node
-   =============
- */
-xmlNodePtr LeakFile( tree_t *tree ){
-       vec3_t mid;
-       FILE    *linefile;
-       char filename[1024];
-       node_t  *node;
-       int count;
-       xmlNodePtr xml_node, point;
-
-       if ( !tree->outside_node.occupied ) {
-               return NULL;
-       }
-
-       Sys_FPrintf( SYS_VRB,"--- LeakFile ---\n" );
-
-       //
-       // write the points to the file
-       //
-       sprintf( filename, "%s.lin", source );
-       linefile = fopen( filename, "w" );
-       if ( !linefile ) {
-               Error( "Couldn't open %s\n", filename );
-       }
-
-       xml_node = xmlNewNode( NULL, "polyline" );
-
-       count = 0;
-       node = &tree->outside_node;
-       while ( node->occupied > 1 )
-       {
-               int next;
-               portal_t    *p, *nextportal;
-               node_t      *nextnode;
-               int s;
-
-               // find the best portal exit
-               next = node->occupied;
-               for ( p = node->portals ; p ; p = p->next[!s] )
-               {
-                       s = ( p->nodes[0] == node );
-                       if ( p->nodes[s]->occupied
-                                && p->nodes[s]->occupied < next ) {
-                               nextportal = p;
-                               nextnode = p->nodes[s];
-                               next = nextnode->occupied;
-                       }
-               }
-               node = nextnode;
-               WindingCenter( nextportal->winding, mid );
-               fprintf( linefile, "%f %f %f\n", mid[0], mid[1], mid[2] );
-               point = xml_NodeForVec( mid );
-               xmlAddChild( xml_node, point );
-               count++;
-       }
-       // add the occupant center
-       GetVectorForKey( node->occupant, "origin", mid );
-
-       fprintf( linefile, "%f %f %f\n", mid[0], mid[1], mid[2] );
-       point = xml_NodeForVec( mid );
-       xmlAddChild( xml_node, point );
-       Sys_FPrintf( SYS_VRB, "%9d point linefile\n", count + 1 );
-
-       fclose( linefile );
-
-       return xml_node;
-}
new file mode 120000 (symlink)
index 0000000000000000000000000000000000000000..ed5d4648e3f4314d014e60b2b43a2251150b6f5c
--- /dev/null
@@ -0,0 +1 @@
+../../shared/map/leakfile.c
\ No newline at end of file
index 1642c1d21fe9110692f77ce8950ceac864f6d5b4..4e71f02364cf2269bf10db34af6b6e1ca12f7391 100644 (file)
@@ -162,6 +162,7 @@ void ProcessWorldModel( void ){
        qboolean optimize;
        xmlNodePtr polyline, leaknode;
        char level[ 2 ];
+       char lineFilePath[ 1024 ];
 
        e = &entities[entity_num];
 
@@ -169,6 +170,8 @@ void ProcessWorldModel( void ){
        brush_end = brush_start + e->numbrushes;
        leaked = false;
 
+       sprintf( lineFilePath, "%s.lin", source );
+
        //
        // perform per-block operations
        //
@@ -238,7 +241,7 @@ void ProcessWorldModel( void ){
                        Sys_FPrintf( SYS_NOXML, "**********************\n" );
                        Sys_FPrintf( SYS_NOXML, "******* leaked *******\n" );
                        Sys_FPrintf( SYS_NOXML, "**********************\n" );
-                       polyline = LeakFile( tree );
+                       polyline = LeakFile( tree, lineFilePath );
                        leaknode = xmlNewNode( NULL, "message" );
                        xmlNodeAddContent( leaknode, "MAP LEAKED\n" );
                        xmlAddChild( leaknode, polyline );
index 8f3ef9e037803dcd880fb2a5b180a7db3c6f165d..da6c2b1a30864872ffd7fd30cfdb303802d5ac48 100644 (file)
@@ -338,7 +338,7 @@ void WriteGLView( tree_t *tree, char *source );
 // leakfile.c
 
 //void LeakFile (tree_t *tree);
-xmlNodePtr LeakFile( tree_t *tree );
+xmlNodePtr LeakFile( tree_t *tree, const char *lineFilePath );
 
 //=============================================================================
 
deleted file mode 100644 (file)
index 243af8a3c45ea0e3dc10775ed00da2be74c711f6..0000000000000000000000000000000000000000
+++ /dev/null
@@ -1,124 +0,0 @@
-/* -------------------------------------------------------------------------------
-
-   Copyright (C) 1999-2007 id Software, Inc. and contributors.
-   For a list of contributors, see the accompanying CONTRIBUTORS file.
-
-   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 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
-
-   ----------------------------------------------------------------------------------
-
-   This code has been altered significantly from its original form, to support
-   several games based on the Quake III Arena engine, in the form of "Q3Map2."
-
-   ------------------------------------------------------------------------------- */
-
-
-
-/* marker */
-#define LEAKFILE_C
-
-
-
-/* dependencies */
-#include "q3map2.h"
-
-
-
-/*
-   ==============================================================================
-
-   LEAK FILE GENERATION
-
-   Save out name.lin for qe3 to read
-   ==============================================================================
- */
-
-
-/*
-   =============
-   LeakFile
-
-   Finds the shortest possible chain of portals
-   that leads from the outside leaf to a specifically
-   occupied leaf
-
-   TTimo: builds a polyline xml node
-   =============
- */
-xmlNodePtr LeakFile( tree_t *tree, const char *filename ){
-       vec3_t mid;
-       FILE    *linefile;
-       node_t  *node;
-       int count;
-       xmlNodePtr xml_node, point;
-
-       if ( !tree->outside_node.occupied ) {
-               return NULL;
-       }
-
-       Sys_FPrintf( SYS_VRB,"--- LeakFile ---\n" );
-
-       //
-       // write the points to the file
-       //
-       linefile = fopen( filename, "w" );
-       if ( !linefile ) {
-               Error( "Couldn't open %s\n", filename );
-       }
-
-       xml_node = xmlNewNode( NULL, (xmlChar*)"polyline" );
-
-       count = 0;
-       node = &tree->outside_node;
-       while ( node->occupied > 1 )
-       {
-               int next;
-               portal_t    *p, *nextportal = NULL;
-               node_t      *nextnode = NULL;
-               int s;
-
-               // find the best portal exit
-               next = node->occupied;
-               for ( p = node->portals ; p ; p = p->next[!s] )
-               {
-                       s = ( p->nodes[0] == node );
-                       if ( p->nodes[s]->occupied
-                                && p->nodes[s]->occupied < next ) {
-                               nextportal = p;
-                               nextnode = p->nodes[s];
-                               next = nextnode->occupied;
-                       }
-               }
-               node = nextnode;
-               WindingCenter( nextportal->winding, mid );
-               fprintf( linefile, "%f %f %f\n", mid[0], mid[1], mid[2] );
-               point = xml_NodeForVec( mid );
-               xmlAddChild( xml_node, point );
-               count++;
-       }
-       // add the occupant center
-       GetVectorForKey( node->occupant, "origin", mid );
-
-       fprintf( linefile, "%f %f %f\n", mid[0], mid[1], mid[2] );
-       point = xml_NodeForVec( mid );
-       xmlAddChild( xml_node, point );
-       Sys_FPrintf( SYS_VRB, "%9d point linefile\n", count + 1 );
-
-       fclose( linefile );
-
-       return xml_node;
-}
new file mode 120000 (symlink)
index 0000000000000000000000000000000000000000..ed5d4648e3f4314d014e60b2b43a2251150b6f5c
--- /dev/null
@@ -0,0 +1 @@
+../../shared/map/leakfile.c
\ No newline at end of file
diff --git a/tools/shared/map/leakfile.c b/tools/shared/map/leakfile.c
new file mode 100644 (file)
index 0000000..ab49f6e
--- /dev/null
@@ -0,0 +1,127 @@
+/* -------------------------------------------------------------------------------
+
+   Copyright (C) 1999-2007 id Software, Inc. and contributors.
+   For a list of contributors, see the accompanying CONTRIBUTORS file.
+
+   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 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
+
+   ----------------------------------------------------------------------------------
+
+   This code has been altered significantly from its original form, to support
+   several games based on the Quake III Arena engine, in the form of "Q3Map2."
+
+   ------------------------------------------------------------------------------- */
+
+
+
+/* marker */
+#define LEAKFILE_C
+
+
+/* dependencies */
+#ifdef Q3MAP_VERSION
+#include "q3map2.h"
+#else
+#include "qbsp.h"
+#endif
+
+
+
+/*
+   ==============================================================================
+
+   LEAK FILE GENERATION
+
+   Save out name.lin for qe3 to read
+   ==============================================================================
+ */
+
+
+/*
+   =============
+   LeakFile
+
+   Finds the shortest possible chain of portals
+   that leads from the outside leaf to a specifically
+   occupied leaf
+
+   TTimo: builds a polyline xml node
+   =============
+ */
+xmlNodePtr LeakFile( tree_t *tree, const char *filename ){
+       vec3_t mid;
+       FILE    *linefile;
+       node_t  *node;
+       int count;
+       xmlNodePtr xml_node, point;
+
+       if ( !tree->outside_node.occupied ) {
+               return NULL;
+       }
+
+       Sys_FPrintf( SYS_VRB,"--- LeakFile ---\n" );
+
+       //
+       // write the points to the file
+       //
+       linefile = fopen( filename, "w" );
+       if ( !linefile ) {
+               Error( "Couldn't open %s\n", filename );
+       }
+
+       xml_node = xmlNewNode( NULL, (xmlChar*)"polyline" );
+
+       count = 0;
+       node = &tree->outside_node;
+       while ( node->occupied > 1 )
+       {
+               int next;
+               portal_t    *p, *nextportal = NULL;
+               node_t      *nextnode = NULL;
+               int s;
+
+               // find the best portal exit
+               next = node->occupied;
+               for ( p = node->portals ; p ; p = p->next[!s] )
+               {
+                       s = ( p->nodes[0] == node );
+                       if ( p->nodes[s]->occupied
+                                && p->nodes[s]->occupied < next ) {
+                               nextportal = p;
+                               nextnode = p->nodes[s];
+                               next = nextnode->occupied;
+                       }
+               }
+               node = nextnode;
+               WindingCenter( nextportal->winding, mid );
+               fprintf( linefile, "%f %f %f\n", mid[0], mid[1], mid[2] );
+               point = xml_NodeForVec( mid );
+               xmlAddChild( xml_node, point );
+               count++;
+       }
+       // add the occupant center
+       GetVectorForKey( node->occupant, "origin", mid );
+
+       fprintf( linefile, "%f %f %f\n", mid[0], mid[1], mid[2] );
+       point = xml_NodeForVec( mid );
+       xmlAddChild( xml_node, point );
+       Sys_FPrintf( SYS_VRB, "%9d point linefile\n", count + 1 );
+
+       fclose( linefile );
+
+       return xml_node;
+}