Added -exportents to q3map2.
authorChris Brooke <chris.brooke@justfixit.co.uk>
Mon, 15 Jul 2013 03:58:15 +0000 (04:58 +0100)
committerThomas Debesse <dev@illwieckz.net>
Thu, 14 Apr 2016 02:35:37 +0000 (04:35 +0200)
Makefile
tools/quake3/q3map2/exportents.c [new file with mode: 0644]
tools/quake3/q3map2/main.c
tools/quake3/q3map2/q3map2.h

index 2ad7c0a..ff07c42 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -509,6 +509,7 @@ $(INSTALLDIR)/q3map2.$(EXE): \
        tools/quake3/q3map2/convert_obj.o \
        tools/quake3/q3map2/convert_map.o \
        tools/quake3/q3map2/decals.o \
+       tools/quake3/q3map2/exportents.o \
        tools/quake3/q3map2/facebsp.o \
        tools/quake3/q3map2/fixaas.o \
        tools/quake3/q3map2/fog.o \
diff --git a/tools/quake3/q3map2/exportents.c b/tools/quake3/q3map2/exportents.c
new file mode 100644 (file)
index 0000000..578f9e4
--- /dev/null
@@ -0,0 +1,112 @@
+/* -------------------------------------------------------------------------------
+
+   Copyright (C) 1999-2013 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 EXPORTENTS_C
+
+
+
+/* dependencies */
+#include "q3map2.h"
+
+
+
+
+/* -------------------------------------------------------------------------------
+
+   this file contains code that exports entities to a .ent file.
+
+   ------------------------------------------------------------------------------- */
+
+/*
+   ExportEntities()
+   exports the entities to a text file (.ent)
+ */
+
+void ExportEntities( void ){
+        char filename[ 1024 ];
+        FILE *file;
+               
+        /* note it */
+        Sys_FPrintf( SYS_VRB, "--- ExportEntities ---\n" );
+               
+        /* do some path mangling */
+        strcpy( filename, source );
+        StripExtension( filename );
+        strcat( filename, ".ent" );
+               
+        /* sanity check */
+        if ( bspEntData == NULL || bspEntDataSize == 0 ) {
+                Sys_Printf( "WARNING: No BSP entity data. aborting...\n" );
+                return;
+        }
+               
+        /* write it */
+        Sys_Printf( "Writing %s\n", filename );
+        Sys_FPrintf( SYS_VRB, "(%d bytes)\n", bspEntDataSize );
+        file = fopen( filename, "w" );
+               
+        if ( file == NULL ) {
+                Error( "Unable to open %s for writing", filename );
+        }
+               
+        fprintf( file, "%s\n", bspEntData );
+        fclose( file );
+}
+
+
+
+/*
+   ExportEntitiesMain()
+   exports the entities to a text file (.ent)
+ */
+
+int ExportEntitiesMain( int argc, char **argv ){
+        /* arg checking */
+        if ( argc < 1 ) {
+                Sys_Printf( "Usage: q3map -exportents [-v] <mapname>\n" );
+                return 0;
+        }
+               
+        /* do some path mangling */
+        strcpy( source, ExpandArg( argv[ argc - 1 ] ) );
+        StripExtension( source );
+        DefaultExtension( source, ".bsp" );
+               
+        /* load the bsp */
+        Sys_Printf( "Loading %s\n", source );
+        LoadBSPFile( source );
+               
+        /* export the lightmaps */
+        ExportEntities();
+               
+        /* return to sender */
+        return 0;
+}
\ No newline at end of file
index c106c91..146ced8 100644 (file)
@@ -237,6 +237,11 @@ int main( int argc, char **argv ){
                r = LightMain( argc, argv );
        }
 
+       /* QBall: export entities */
+       else if ( !strcmp( argv[ 1 ], "-exportents" ) ) {
+               r = ExportEntitiesMain( argc - 1, argv + 1 );
+       }
+
        /* ydnar: lightmap export */
        else if ( !strcmp( argv[ 1 ], "-export" ) ) {
                r = ExportLightmapsMain( argc - 1, argv + 1 );
index 695568b..eaa964f 100644 (file)
@@ -1851,6 +1851,11 @@ void                        StitchSurfaceLightmaps( void );
 void                        StoreSurfaceLightmaps( qboolean fastAllocate );
 
 
+/* exportents.c */
+void                        ExportEntities( void );
+int                         ExportEntitiesMain( int argc, char **argv );
+
+
 /* image.c */
 void                        ImageFree( image_t *image );
 image_t                     *ImageFind( const char *filename );