From: TimePath Date: Thu, 14 Apr 2016 02:42:54 +0000 (+1000) Subject: Merge remote-tracking branch 'illwieckz/exportents' X-Git-Tag: xonotic-v0.8.2~11 X-Git-Url: http://de.git.xonotic.org/?a=commitdiff_plain;h=8a00fda721f6912ec1af097b9a69db4db10ffbdb;hp=8bc246a01343d9c9dd3a8b678681710cf04a2953;p=xonotic%2Fnetradiant.git Merge remote-tracking branch 'illwieckz/exportents' --- diff --git a/Makefile b/Makefile index 2ad7c0a8..ff07c428 100644 --- 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/CMakeLists.txt b/tools/quake3/CMakeLists.txt index 3314788b..e6831203 100644 --- a/tools/quake3/CMakeLists.txt +++ b/tools/quake3/CMakeLists.txt @@ -80,6 +80,7 @@ radiant_tool(q3map2 q3map2/convert_map.c q3map2/convert_obj.c q3map2/decals.c + q3map2/exportents.c q3map2/facebsp.c q3map2/fixaas.c q3map2/fog.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/help.c b/tools/quake3/q3map2/help.c index 641aed59..5cc81ab9 100644 --- a/tools/quake3/q3map2/help.c +++ b/tools/quake3/q3map2/help.c @@ -286,6 +286,14 @@ void HelpExport() HelpOptions("Exporting lightmaps", 0, 80, exportl, sizeof(exportl)/sizeof(struct HelpOption)); } +void HelpExportEnts() +{ + struct HelpOption exportents[] = { + {"-exportents ", "Exports the entities to a text file (.ent)"}, + }; + HelpOptions("ExportEnts Stage", 0, 80, exportents, sizeof(exportents)/sizeof(struct HelpOption)); +} + void HelpFixaas() { struct HelpOption fixaas[] = { @@ -369,6 +377,7 @@ void HelpMain(const char* arg) {"-scale", "Scaling"}, {"-convert", "Converting & Decompiling"}, {"-export", "Exporting lightmaps"}, + {"-exportents", "Exporting entities"}, {"-fixaas", "Fixing AAS checksum"}, {"-info", "Get info about BSP file"}, {"-import", "Importing lightmaps"}, @@ -382,6 +391,7 @@ void HelpMain(const char* arg) HelpScale, HelpConvert, HelpExport, + HelpExportEnts, HelpFixaas, HelpInfo, HelpImport, diff --git a/tools/quake3/q3map2/main.c b/tools/quake3/q3map2/main.c index c106c91b..146ced8e 100644 --- a/tools/quake3/q3map2/main.c +++ b/tools/quake3/q3map2/main.c @@ -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 ); diff --git a/tools/quake3/q3map2/q3map2.h b/tools/quake3/q3map2/q3map2.h index 695568b3..eaa964ff 100644 --- a/tools/quake3/q3map2/q3map2.h +++ b/tools/quake3/q3map2/q3map2.h @@ -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 );