From 3e5bc317d054e62e8195630677dac0d6e7d05d8c Mon Sep 17 00:00:00 2001 From: Chris Brooke Date: Mon, 15 Jul 2013 04:58:15 +0100 Subject: [PATCH] Added -exportents to q3map2. --- tools/quake3/q3map2/exportents.c | 112 +++++++++++++++++++++ tools/quake3/q3map2/main.c | 5 + tools/quake3/q3map2/q3map2.h | 5 + tools/quake3/q3map2/q3map2.vcproj | 4 + tools/quake3/q3map2/q3map2.vcxproj | 1 + tools/quake3/q3map2/q3map2.vcxproj.filters | 3 + 6 files changed, 130 insertions(+) create mode 100644 tools/quake3/q3map2/exportents.c diff --git a/tools/quake3/q3map2/exportents.c b/tools/quake3/q3map2/exportents.c new file mode 100644 index 00000000..578f9e42 --- /dev/null +++ b/tools/quake3/q3map2/exportents.c @@ -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] \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 diff --git a/tools/quake3/q3map2/main.c b/tools/quake3/q3map2/main.c index e74a89cf..07125356 100644 --- a/tools/quake3/q3map2/main.c +++ b/tools/quake3/q3map2/main.c @@ -721,6 +721,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 ); diff --git a/tools/quake3/q3map2/q3map2.h b/tools/quake3/q3map2/q3map2.h index cb1b3b67..936905d7 100644 --- a/tools/quake3/q3map2/q3map2.h +++ b/tools/quake3/q3map2/q3map2.h @@ -1762,6 +1762,11 @@ void StitchSurfaceLightmaps( void ); void StoreSurfaceLightmaps( void ); +/* exportents.c */ +void ExportEntities( void ); +int ExportEntitiesMain( int argc, char **argv ); + + /* image.c */ void ImageFree( image_t *image ); image_t *ImageFind( const char *filename ); diff --git a/tools/quake3/q3map2/q3map2.vcproj b/tools/quake3/q3map2/q3map2.vcproj index 67d56795..f2a747e8 100644 --- a/tools/quake3/q3map2/q3map2.vcproj +++ b/tools/quake3/q3map2/q3map2.vcproj @@ -302,6 +302,10 @@ RelativePath=".\lightmaps_ydnar.c" > + + diff --git a/tools/quake3/q3map2/q3map2.vcxproj b/tools/quake3/q3map2/q3map2.vcxproj index e220c144..73432a9a 100644 --- a/tools/quake3/q3map2/q3map2.vcxproj +++ b/tools/quake3/q3map2/q3map2.vcxproj @@ -193,6 +193,7 @@ + diff --git a/tools/quake3/q3map2/q3map2.vcxproj.filters b/tools/quake3/q3map2/q3map2.vcxproj.filters index 8ed13627..be4de04a 100644 --- a/tools/quake3/q3map2/q3map2.vcxproj.filters +++ b/tools/quake3/q3map2/q3map2.vcxproj.filters @@ -110,6 +110,9 @@ src + + src + src