From 11c8d70a674be3c427f4c404ca2e6a9093e9222a Mon Sep 17 00:00:00 2001 From: Timothee Besset Date: Tue, 9 Jul 2013 18:08:19 -0500 Subject: [PATCH 01/16] find the right path to macports --- apple/Makefile | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/apple/Makefile b/apple/Makefile index fc069ff8..14a367f1 100644 --- a/apple/Makefile +++ b/apple/Makefile @@ -8,7 +8,9 @@ CONFDIR = $(RESOURCES)/etc DATADIR = $(RESOURCES)/share LIBDIR = $(RESOURCES)/lib INSTDIR = $(RESOURCES)/install -PREFIX_SED_EXPR = 's:/opt/local:@executable_path/..:g' +# makefiles are terrible +PORT_PATH := $(shell which port | sed 's:/bin/port::') +PREFIX_SED_EXPR = "s:$(PORT_PATH):@executable_path/..:g" VERSION = 1.6.4 DMG = $(TARGET)/GtkRadiant-$(VERSION).dmg VOLUME_NAME = "GtkRadiant $(VERSION)" @@ -21,27 +23,27 @@ all: install bundle find $(TARGET) -name .turd -delete -gtk-runtime-gdk-pixbuf-2.0: - cp -r /opt/local/lib/gdk-pixbuf-2.0 $(LIBDIR) + cp -r $(PORT_PATH)/lib/gdk-pixbuf-2.0 $(LIBDIR) find $(LIBDIR)/gdk-pixbuf-2.0 -type f ! -name "*.so" -delete gdk-pixbuf-query-loaders | sed $(PREFIX_SED_EXPR) > \ $(CONFDIR)/gtk-2.0/gdk-pixbuf.loaders -gtk-runtime-pango: - cp -r /opt/local/lib/pango $(LIBDIR) + cp -r $(PORT_PATH)/lib/pango $(LIBDIR) find $(LIBDIR)/pango -type f ! -name "*.so" -delete pango-querymodules | sed $(PREFIX_SED_EXPR) > \ $(CONFDIR)/pango/pango.modules -gtk-runtime: -gtk-runtime-gdk-pixbuf-2.0 -gtk-runtime-pango - cp -r /opt/local/lib/gtk-2.0 $(LIBDIR) + cp -r $(PORT_PATH)/lib/gtk-2.0 $(LIBDIR) find $(LIBDIR)/gtk-2.0 -type f ! -name "*.so" -delete rm -rf $(LIBDIR)/gtk-2.0/{includes,modules} rm -rf $(LIBDIR)/gtk-2.0/*/printbackends - cp -r /opt/local/share/themes/Default $(RESOURCES)/share + cp -r $(PORT_PATH)/share/themes/Default $(RESOURCES)/share gtk-query-immodules-2.0 | sed $(PREFIX_SED_EXPR) > \ $(CONFDIR)/gtk-2.0/gtk.immodules From 3e5bc317d054e62e8195630677dac0d6e7d05d8c Mon Sep 17 00:00:00 2001 From: Chris Brooke Date: Mon, 15 Jul 2013 04:58:15 +0100 Subject: [PATCH 02/16] 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 From 65175c80b1e6bd07d03be8827104e3ca81fa042a Mon Sep 17 00:00:00 2001 From: Chris Brooke Date: Mon, 15 Jul 2013 07:16:51 +0100 Subject: [PATCH 03/16] oops forgot q3map2_urt (added -exportents) --- tools/urt/tools/quake3/q3map2/exportents.c | 112 ++++++++++++++++++ tools/urt/tools/quake3/q3map2/main.c | 5 + tools/urt/tools/quake3/q3map2/q3map2.h | 5 + .../urt/tools/quake3/q3map2/q3map2_urt.vcproj | 22 ++++ .../tools/quake3/q3map2/q3map2_urt.vcxproj | 1 + .../quake3/q3map2/q3map2_urt.vcxproj.filters | 3 + 6 files changed, 148 insertions(+) create mode 100644 tools/urt/tools/quake3/q3map2/exportents.c diff --git a/tools/urt/tools/quake3/q3map2/exportents.c b/tools/urt/tools/quake3/q3map2/exportents.c new file mode 100644 index 00000000..578f9e42 --- /dev/null +++ b/tools/urt/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/urt/tools/quake3/q3map2/main.c b/tools/urt/tools/quake3/q3map2/main.c index 47542ef1..2e9921b9 100644 --- a/tools/urt/tools/quake3/q3map2/main.c +++ b/tools/urt/tools/quake3/q3map2/main.c @@ -606,6 +606,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/urt/tools/quake3/q3map2/q3map2.h b/tools/urt/tools/quake3/q3map2/q3map2.h index f5715b02..a41cb0df 100644 --- a/tools/urt/tools/quake3/q3map2/q3map2.h +++ b/tools/urt/tools/quake3/q3map2/q3map2.h @@ -1749,6 +1749,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/urt/tools/quake3/q3map2/q3map2_urt.vcproj b/tools/urt/tools/quake3/q3map2/q3map2_urt.vcproj index 1ec8e97a..3cdd42cf 100644 --- a/tools/urt/tools/quake3/q3map2/q3map2_urt.vcproj +++ b/tools/urt/tools/quake3/q3map2/q3map2_urt.vcproj @@ -837,6 +837,28 @@ /> + + + + + + + + + diff --git a/tools/urt/tools/quake3/q3map2/q3map2_urt.vcxproj.filters b/tools/urt/tools/quake3/q3map2/q3map2_urt.vcxproj.filters index 3a2b471c..0b6e7f87 100644 --- a/tools/urt/tools/quake3/q3map2/q3map2_urt.vcxproj.filters +++ b/tools/urt/tools/quake3/q3map2/q3map2_urt.vcxproj.filters @@ -65,6 +65,9 @@ src + + src + src\bsp From 3d1b78ed2f6cb752f315cfc7c653b791a0487333 Mon Sep 17 00:00:00 2001 From: Chris Brooke Date: Fri, 19 Jul 2013 07:08:28 +0100 Subject: [PATCH 04/16] fix for broken bsp menu (broken by increasing MAX_TEXTUREDIRS to 1024) --- radiant/qedefs.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radiant/qedefs.h b/radiant/qedefs.h index aa5bbeae..499e4faa 100644 --- a/radiant/qedefs.h +++ b/radiant/qedefs.h @@ -36,7 +36,7 @@ #define MAX_POINTS 1024 #define CMD_TEXTUREWAD 60000 -#define CMD_BSPCOMMAND 61000 +#define CMD_BSPCOMMAND 62000 #define PITCH 0 #define YAW 1 From 17778777746f237812f92aa2fa467d769baef4cb Mon Sep 17 00:00:00 2001 From: Walter Julius Hennecke Date: Sun, 21 Jul 2013 13:19:59 +0200 Subject: [PATCH 05/16] Fix STVEF game support install routine --- radiant/preferences.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/radiant/preferences.cpp b/radiant/preferences.cpp index b0dd1165..186f28e4 100644 --- a/radiant/preferences.cpp +++ b/radiant/preferences.cpp @@ -3720,10 +3720,10 @@ void CGameInstall::Run() { fprintf( fg, " caulk_shader=\"textures/common/caulk\"\n" ); // Hardcoded fix for "missing" shaderlist in gamepack Str dest = m_strEngine.GetBuffer(); - dest += "/base/scripts/shaderlist.txt"; + dest += "/baseEF/scripts/shaderlist.txt"; if( CheckFile( dest.GetBuffer() ) != PATH_FILE ) { Str source = gameInstallPath.GetBuffer(); - source += "base/scripts/default_shaderlist.txt"; + source += "baseEF/scripts/default_shaderlist.txt"; radCopyFile( source.GetBuffer(), dest.GetBuffer() ); } break; From 60a0f490529f6e8e00f0cc3f277bf2f1bb24e4b7 Mon Sep 17 00:00:00 2001 From: Chris Brooke Date: Mon, 22 Jul 2013 03:06:06 +0100 Subject: [PATCH 06/16] some more gtk spin-button cleanup ( Preferences / Surface Inspector / Patch Inspector / Arbitrary Rotation / gtkGenSurf plugin ) --- contrib/gtkgensurf/gendlgs.cpp | 14 ++++++------- contrib/gtkgensurf/view.cpp | 4 ++-- plugins/surface/surfacedialog.cpp | 34 +++++++++++++++---------------- radiant/gtkdlgs.cpp | 6 +++--- radiant/patchdialog.cpp | 10 ++++----- radiant/preferences.cpp | 4 ++-- radiant/surfacedialog.cpp | 14 ++++++------- 7 files changed, 43 insertions(+), 43 deletions(-) diff --git a/contrib/gtkgensurf/gendlgs.cpp b/contrib/gtkgensurf/gendlgs.cpp index 5766aa90..b4151a24 100644 --- a/contrib/gtkgensurf/gendlgs.cpp +++ b/contrib/gtkgensurf/gendlgs.cpp @@ -1518,7 +1518,7 @@ GtkWidget* create_main_dialog(){ g_object_set_data( G_OBJECT( dlg ), "roughness", entry ); g_signal_connect( G_OBJECT( entry ), "focus_out_event", G_CALLBACK( doublevariable_entryfocusout ), &Roughness ); - adj = gtk_adjustment_new( 1, 1, 32767, 1, 10, 10 ); + adj = gtk_adjustment_new( 1, 1, 32767, 1, 10, 0 ); g_signal_connect( G_OBJECT( adj ), "value_changed", G_CALLBACK( general_random ), NULL ); spin = gtk_spin_button_new( GTK_ADJUSTMENT( adj ), 1, 0 ); gtk_widget_show( spin ); @@ -1652,7 +1652,7 @@ GtkWidget* create_main_dialog(){ (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), 0, 0 ); g_object_set_data( G_OBJECT( dlg ), "nv_text", label ); - adj = gtk_adjustment_new( 8, 1, MAX_ROWS, 1, 10, 10 ); + adj = gtk_adjustment_new( 8, 1, MAX_ROWS, 1, 10, 0 ); g_signal_connect( G_OBJECT( adj ), "value_changed", G_CALLBACK( extents_nhnv_spin ), &NH ); spin = gtk_spin_button_new( GTK_ADJUSTMENT( adj ), 1, 0 ); gtk_widget_show( spin ); @@ -1662,7 +1662,7 @@ GtkWidget* create_main_dialog(){ gtk_widget_set_usize( spin, 60, -2 ); g_object_set_data( G_OBJECT( dlg ), "nh", spin ); - adj = gtk_adjustment_new( 8, 1, MAX_ROWS, 1, 10, 10 ); + adj = gtk_adjustment_new( 8, 1, MAX_ROWS, 1, 10, 0 ); g_signal_connect( G_OBJECT( adj ), "value_changed", G_CALLBACK( extents_nhnv_spin ), &NV ); spin = gtk_spin_button_new( GTK_ADJUSTMENT( adj ), 1, 0 ); gtk_widget_show( spin ); @@ -1684,7 +1684,7 @@ GtkWidget* create_main_dialog(){ gtk_box_pack_start( GTK_BOX( vbox ), label, FALSE, TRUE, 0 ); gtk_object_set_data( GTK_OBJECT( dlg ), "snap_text", label ); - adj = gtk_adjustment_new( 8, 0, 256, 1, 10, 10 ); + adj = gtk_adjustment_new( 8, 0, 256, 1, 10, 0 ); g_signal_connect( G_OBJECT( adj ), "value_changed", G_CALLBACK( extents_snaptogrid_spin ), &SP ); spin = gtk_spin_button_new( GTK_ADJUSTMENT( adj ), 1, 0 ); gtk_widget_show( spin ); @@ -1701,7 +1701,7 @@ GtkWidget* create_main_dialog(){ gtk_widget_show( label ); gtk_box_pack_start( GTK_BOX( hbox2 ), label, FALSE, TRUE, 0 ); - adj = gtk_adjustment_new( 0, 0, 110, 1, 10, 10 ); + adj = gtk_adjustment_new( 0, 0, 110, 1, 10, 0 ); g_signal_connect( G_OBJECT( adj ), "value_changed", G_CALLBACK( extents_decimate ), NULL ); g_object_set_data( G_OBJECT( dlg ), "decimate_adj", adj ); scale = gtk_hscale_new( GTK_ADJUSTMENT( adj ) ); @@ -1944,7 +1944,7 @@ GtkWidget* create_main_dialog(){ gtk_misc_set_alignment( GTK_MISC( label ), 1, 0.5 ); g_object_set_data( G_OBJECT( dlg ), "fix_rate_text", label ); - adj = gtk_adjustment_new( 0, -65536, 65536, 1, 16, 16 ); + adj = gtk_adjustment_new( 0, -65536, 65536, 1, 16, 0 ); g_signal_connect( G_OBJECT( adj ), "value_changed", G_CALLBACK( fix_value_changed ), NULL ); spin = gtk_spin_button_new( GTK_ADJUSTMENT( adj ), 1, 0 ); gtk_widget_show( spin ); @@ -2061,7 +2061,7 @@ GtkWidget* create_main_dialog(){ gtk_widget_show( label ); gtk_box_pack_start( GTK_BOX( hbox2 ), label, FALSE, TRUE, 0 ); - adj = gtk_adjustment_new( 60, 0, 90, 1, 10, 10 ); + adj = gtk_adjustment_new( 60, 0, 90, 1, 10, 0 ); spin = gtk_spin_button_new( GTK_ADJUSTMENT( adj ), 1, 0 ); gtk_widget_show( spin ); gtk_box_pack_start( GTK_BOX( hbox2 ), spin, FALSE, TRUE, 0 ); diff --git a/contrib/gtkgensurf/view.cpp b/contrib/gtkgensurf/view.cpp index 06b175ad..c48f664a 100644 --- a/contrib/gtkgensurf/view.cpp +++ b/contrib/gtkgensurf/view.cpp @@ -393,14 +393,14 @@ void CreateViewWindow(){ gtk_misc_set_alignment( GTK_MISC( label ), 1, 0.5 ); gtk_box_pack_start( GTK_BOX( hbox ), label, FALSE, TRUE, 0 ); - adj = gtk_adjustment_new( 30, -90, 90, 1, 10, 10 ); + adj = gtk_adjustment_new( 30, -90, 90, 1, 10, 0 ); gtk_signal_connect( adj, "value_changed", GTK_SIGNAL_FUNC( preview_spin ), &elevation ); spin = gtk_spin_button_new( GTK_ADJUSTMENT( adj ), 1, 0 ); gtk_widget_show( spin ); gtk_box_pack_start( GTK_BOX( hbox ), spin, FALSE, TRUE, 0 ); g_signal_connect( G_OBJECT( spin ), "focus_out_event", G_CALLBACK( doublevariable_spinfocusout ), &elevation ); - adj = gtk_adjustment_new( 30, 0, 359, 1, 10, 10 ); + adj = gtk_adjustment_new( 30, 0, 359, 1, 10, 0 ); gtk_signal_connect( adj, "value_changed", GTK_SIGNAL_FUNC( preview_spin ), &azimuth ); spin = gtk_spin_button_new( GTK_ADJUSTMENT( adj ), 1, 0 ); gtk_widget_show( spin ); diff --git a/plugins/surface/surfacedialog.cpp b/plugins/surface/surfacedialog.cpp index 986890e2..0c9255b4 100644 --- a/plugins/surface/surfacedialog.cpp +++ b/plugins/surface/surfacedialog.cpp @@ -1016,7 +1016,7 @@ GtkWidget* create_SurfaceInspector( void ){ gtk_container_add( GTK_CONTAINER( eventbox ), lock_valuechange_togglebutton ); // Value Spins - hshift_value_spinbutton_adj = gtk_adjustment_new( 0.0, -8192.0, 8192.0, 2.0, 8.0, 8.0 ); + hshift_value_spinbutton_adj = gtk_adjustment_new( 0.0, -8192.0, 8192.0, 2.0, 8.0, 0.0 ); hshift_value_spinbutton = gtk_spin_button_new( GTK_ADJUSTMENT( hshift_value_spinbutton_adj ), 1, 2 ); gtk_widget_show( hshift_value_spinbutton ); gtk_table_attach( GTK_TABLE( table1 ), hshift_value_spinbutton, 1, 2, 2, 3, @@ -1026,7 +1026,7 @@ GtkWidget* create_SurfaceInspector( void ){ gtk_spin_button_set_wrap( GTK_SPIN_BUTTON( hshift_value_spinbutton ), TRUE ); gtk_widget_set_sensitive( GTK_WIDGET( hshift_value_spinbutton ), FALSE ); - vshift_value_spinbutton_adj = gtk_adjustment_new( 0.0, -8192.0, 8192.0, 2.0, 8.0, 8.0 ); + vshift_value_spinbutton_adj = gtk_adjustment_new( 0.0, -8192.0, 8192.0, 2.0, 8.0, 0.0 ); vshift_value_spinbutton = gtk_spin_button_new( GTK_ADJUSTMENT( vshift_value_spinbutton_adj ), 1, 2 ); gtk_widget_show( vshift_value_spinbutton ); gtk_table_attach( GTK_TABLE( table1 ), vshift_value_spinbutton, 1, 2, 4, 5, @@ -1036,7 +1036,7 @@ GtkWidget* create_SurfaceInspector( void ){ gtk_spin_button_set_wrap( GTK_SPIN_BUTTON( vshift_value_spinbutton ), TRUE ); gtk_widget_set_sensitive( GTK_WIDGET( vshift_value_spinbutton ), FALSE ); - hscale_value_spinbutton_adj = gtk_adjustment_new( 0.0, -1024.0, 1024.0, 1.0, 4.0, 4.0 ); + hscale_value_spinbutton_adj = gtk_adjustment_new( 0.0, -1024.0, 1024.0, 1.0, 4.0, 0.0 ); hscale_value_spinbutton = gtk_spin_button_new( GTK_ADJUSTMENT( hscale_value_spinbutton_adj ), 1, 4 ); gtk_widget_show( hscale_value_spinbutton ); gtk_table_attach( GTK_TABLE( table1 ), hscale_value_spinbutton, 1, 2, 6, 7, @@ -1046,7 +1046,7 @@ GtkWidget* create_SurfaceInspector( void ){ gtk_spin_button_set_wrap( GTK_SPIN_BUTTON( hscale_value_spinbutton ), TRUE ); gtk_widget_set_sensitive( GTK_WIDGET( hscale_value_spinbutton ), FALSE ); - vscale_value_spinbutton_adj = gtk_adjustment_new( 0.0, -1024.0, 1024.0, 1.0, 4.0, 4.0 ); + vscale_value_spinbutton_adj = gtk_adjustment_new( 0.0, -1024.0, 1024.0, 1.0, 4.0, 0.0 ); vscale_value_spinbutton = gtk_spin_button_new( GTK_ADJUSTMENT( vscale_value_spinbutton_adj ), 1, 4 ); gtk_widget_show( vscale_value_spinbutton ); gtk_table_attach( GTK_TABLE( table1 ), vscale_value_spinbutton, 1, 2, 8, 9, @@ -1056,7 +1056,7 @@ GtkWidget* create_SurfaceInspector( void ){ gtk_spin_button_set_wrap( GTK_SPIN_BUTTON( vscale_value_spinbutton ), TRUE ); gtk_widget_set_sensitive( GTK_WIDGET( vscale_value_spinbutton ), FALSE ); - rotate_value_spinbutton_adj = gtk_adjustment_new( 0.0, -360.0, 360.0, 1.0, 10.0, 10.0 ); + rotate_value_spinbutton_adj = gtk_adjustment_new( 0.0, -360.0, 360.0, 1.0, 10.0, 0.0 ); rotate_value_spinbutton = gtk_spin_button_new( GTK_ADJUSTMENT( rotate_value_spinbutton_adj ), 1, 4 ); gtk_widget_show( rotate_value_spinbutton ); gtk_table_attach( GTK_TABLE( table1 ), rotate_value_spinbutton, 1, 2, 10, 11, @@ -1067,7 +1067,7 @@ GtkWidget* create_SurfaceInspector( void ){ gtk_widget_set_sensitive( GTK_WIDGET( rotate_value_spinbutton ), FALSE ); // Offset Spins - hshift_offset_spinbutton_adj = gtk_adjustment_new( 0.0, -8192.0, 8192.0, 2.0, 8.0, 8.0 ); + hshift_offset_spinbutton_adj = gtk_adjustment_new( 0.0, -8192.0, 8192.0, 2.0, 8.0, 0.0 ); hshift_offset_spinbutton = gtk_spin_button_new( GTK_ADJUSTMENT( hshift_offset_spinbutton_adj ), 0, 2 ); gtk_widget_show( hshift_offset_spinbutton ); gtk_table_attach( GTK_TABLE( table1 ), hshift_offset_spinbutton, 2, 3, 2, 3, @@ -1077,7 +1077,7 @@ GtkWidget* create_SurfaceInspector( void ){ gtk_spin_button_set_update_policy( GTK_SPIN_BUTTON( hshift_offset_spinbutton ), GTK_UPDATE_IF_VALID ); gtk_spin_button_set_wrap( GTK_SPIN_BUTTON( hshift_offset_spinbutton ), TRUE ); - vshift_offset_spinbutton_adj = gtk_adjustment_new( 0.0, -8192.0, 8192.0, 2.0, 8.0, 8.0 ); + vshift_offset_spinbutton_adj = gtk_adjustment_new( 0.0, -8192.0, 8192.0, 2.0, 8.0, 0.0 ); vshift_offset_spinbutton = gtk_spin_button_new( GTK_ADJUSTMENT( vshift_offset_spinbutton_adj ), 0, 2 ); gtk_widget_show( vshift_offset_spinbutton ); gtk_table_attach( GTK_TABLE( table1 ), vshift_offset_spinbutton, 2, 3, 4, 5, @@ -1087,7 +1087,7 @@ GtkWidget* create_SurfaceInspector( void ){ gtk_spin_button_set_update_policy( GTK_SPIN_BUTTON( vshift_offset_spinbutton ), GTK_UPDATE_IF_VALID ); gtk_spin_button_set_wrap( GTK_SPIN_BUTTON( vshift_offset_spinbutton ), TRUE ); - hscale_offset_spinbutton_adj = gtk_adjustment_new( 0.0, -1024.0, 1024.0, 1.0, 4.0, 4.0 ); + hscale_offset_spinbutton_adj = gtk_adjustment_new( 0.0, -1024.0, 1024.0, 1.0, 4.0, 0.0 ); hscale_offset_spinbutton = gtk_spin_button_new( GTK_ADJUSTMENT( hscale_offset_spinbutton_adj ), 0, 4 ); gtk_widget_show( hscale_offset_spinbutton ); gtk_table_attach( GTK_TABLE( table1 ), hscale_offset_spinbutton, 2, 3, 6, 7, @@ -1097,7 +1097,7 @@ GtkWidget* create_SurfaceInspector( void ){ gtk_spin_button_set_update_policy( GTK_SPIN_BUTTON( hscale_offset_spinbutton ), GTK_UPDATE_IF_VALID ); gtk_spin_button_set_wrap( GTK_SPIN_BUTTON( hscale_offset_spinbutton ), TRUE ); - vscale_offset_spinbutton_adj = gtk_adjustment_new( 0.0, -1024.0, 1024.0, 1.0, 4.0, 4.0 ); + vscale_offset_spinbutton_adj = gtk_adjustment_new( 0.0, -1024.0, 1024.0, 1.0, 4.0, 0.0 ); vscale_offset_spinbutton = gtk_spin_button_new( GTK_ADJUSTMENT( vscale_offset_spinbutton_adj ), 0, 4 ); gtk_widget_show( vscale_offset_spinbutton ); gtk_table_attach( GTK_TABLE( table1 ), vscale_offset_spinbutton, 2, 3, 8, 9, @@ -1107,7 +1107,7 @@ GtkWidget* create_SurfaceInspector( void ){ gtk_spin_button_set_update_policy( GTK_SPIN_BUTTON( vscale_offset_spinbutton ), GTK_UPDATE_IF_VALID ); gtk_spin_button_set_wrap( GTK_SPIN_BUTTON( vscale_offset_spinbutton ), TRUE ); - rotate_offset_spinbutton_adj = gtk_adjustment_new( 0.0, -360.0, 360.0, 1.0, 10.0, 10.0 ); + rotate_offset_spinbutton_adj = gtk_adjustment_new( 0.0, -360.0, 360.0, 1.0, 10.0, 0.0 ); rotate_offset_spinbutton = gtk_spin_button_new( GTK_ADJUSTMENT( rotate_offset_spinbutton_adj ), 0, 4 ); gtk_widget_show( rotate_offset_spinbutton ); gtk_table_attach( GTK_TABLE( table1 ), rotate_offset_spinbutton, 2, 3, 10, 11, @@ -1118,7 +1118,7 @@ GtkWidget* create_SurfaceInspector( void ){ gtk_spin_button_set_wrap( GTK_SPIN_BUTTON( rotate_offset_spinbutton ), TRUE ); // Step Spins - hshift_step_spinbutton_adj = gtk_adjustment_new( 0.0, -8192.0, 8192.0, 2.0, 8.0, 8.0 ); + hshift_step_spinbutton_adj = gtk_adjustment_new( 0.0, -8192.0, 8192.0, 2.0, 8.0, 0.0 ); hshift_step_spinbutton = gtk_spin_button_new( GTK_ADJUSTMENT( hshift_step_spinbutton_adj ), 1, 2 ); gtk_widget_show( hshift_step_spinbutton ); gtk_table_attach( GTK_TABLE( table1 ), hshift_step_spinbutton, 3, 4, 2, 3, @@ -1126,7 +1126,7 @@ GtkWidget* create_SurfaceInspector( void ){ (GtkAttachOptions) ( 0 ), 0, 0 ); gtk_spin_button_set_update_policy( GTK_SPIN_BUTTON( hshift_step_spinbutton ), GTK_UPDATE_IF_VALID ); - vshift_step_spinbutton_adj = gtk_adjustment_new( 0.0, -8192.0, 8192.0, 2.0, 8.0, 8.0 ); + vshift_step_spinbutton_adj = gtk_adjustment_new( 0.0, -8192.0, 8192.0, 2.0, 8.0, 0.0 ); vshift_step_spinbutton = gtk_spin_button_new( GTK_ADJUSTMENT( vshift_step_spinbutton_adj ), 1, 2 ); gtk_widget_show( vshift_step_spinbutton ); gtk_table_attach( GTK_TABLE( table1 ), vshift_step_spinbutton, 3, 4, 4, 5, @@ -1134,7 +1134,7 @@ GtkWidget* create_SurfaceInspector( void ){ (GtkAttachOptions) ( 0 ), 0, 0 ); gtk_spin_button_set_update_policy( GTK_SPIN_BUTTON( vshift_step_spinbutton ), GTK_UPDATE_IF_VALID ); - hscale_step_spinbutton_adj = gtk_adjustment_new( 0.0, -1024.0, 1024.0, 1.0, 4.0, 4.0 ); + hscale_step_spinbutton_adj = gtk_adjustment_new( 0.0, -1024.0, 1024.0, 1.0, 4.0, 0.0 ); hscale_step_spinbutton = gtk_spin_button_new( GTK_ADJUSTMENT( hscale_step_spinbutton_adj ), 1, 4 ); gtk_widget_show( hscale_step_spinbutton ); gtk_table_attach( GTK_TABLE( table1 ), hscale_step_spinbutton, 3, 4, 6, 7, @@ -1142,7 +1142,7 @@ GtkWidget* create_SurfaceInspector( void ){ (GtkAttachOptions) ( 0 ), 0, 0 ); gtk_spin_button_set_update_policy( GTK_SPIN_BUTTON( hscale_step_spinbutton ), GTK_UPDATE_IF_VALID ); - vscale_step_spinbutton_adj = gtk_adjustment_new( 0.0, -1024.0, 1024.0, 1.0, 4.0, 4.0 ); + vscale_step_spinbutton_adj = gtk_adjustment_new( 0.0, -1024.0, 1024.0, 1.0, 4.0, 0.0 ); vscale_step_spinbutton = gtk_spin_button_new( GTK_ADJUSTMENT( vscale_step_spinbutton_adj ), 1, 4 ); gtk_widget_show( vscale_step_spinbutton ); gtk_table_attach( GTK_TABLE( table1 ), vscale_step_spinbutton, 3, 4, 8, 9, @@ -1150,7 +1150,7 @@ GtkWidget* create_SurfaceInspector( void ){ (GtkAttachOptions) ( 0 ), 0, 0 ); gtk_spin_button_set_update_policy( GTK_SPIN_BUTTON( vscale_step_spinbutton ), GTK_UPDATE_IF_VALID ); - rotate_step_spinbutton_adj = gtk_adjustment_new( 0.0, -360.0, 360.0, 1.0, 10.0, 10.0 ); + rotate_step_spinbutton_adj = gtk_adjustment_new( 0.0, -360.0, 360.0, 1.0, 10.0, 0.0 ); rotate_step_spinbutton = gtk_spin_button_new( GTK_ADJUSTMENT( rotate_step_spinbutton_adj ), 1, 4 ); gtk_widget_show( rotate_step_spinbutton ); gtk_table_attach( GTK_TABLE( table1 ), rotate_step_spinbutton, 3, 4, 10, 11, @@ -1216,7 +1216,7 @@ GtkWidget* create_SurfaceInspector( void ){ gtk_label_set_justify( GTK_LABEL( label ), GTK_JUSTIFY_LEFT ); gtk_misc_set_alignment( GTK_MISC( label ), 0.5, 1 ); - fit_width_spinbutton_adj = gtk_adjustment_new( 1, 1, 32, 1, 10, 10 ); + fit_width_spinbutton_adj = gtk_adjustment_new( 1, 1, 32, 1, 10, 0 ); fit_width_spinbutton = gtk_spin_button_new( GTK_ADJUSTMENT( fit_width_spinbutton_adj ), 1, 0 ); gtk_widget_show( fit_width_spinbutton ); gtk_table_attach( GTK_TABLE( table5 ), fit_width_spinbutton, 1, 2, 1, 2, @@ -1225,7 +1225,7 @@ GtkWidget* create_SurfaceInspector( void ){ gtk_spin_button_set_numeric( GTK_SPIN_BUTTON( fit_width_spinbutton ), TRUE ); gtk_spin_button_set_update_policy( GTK_SPIN_BUTTON( fit_width_spinbutton ), GTK_UPDATE_IF_VALID ); - fit_height_spinbutton_adj = gtk_adjustment_new( 1, 1, 32, 1, 10, 10 ); + fit_height_spinbutton_adj = gtk_adjustment_new( 1, 1, 32, 1, 10, 0 ); fit_height_spinbutton = gtk_spin_button_new( GTK_ADJUSTMENT( fit_height_spinbutton_adj ), 1, 0 ); gtk_widget_show( fit_height_spinbutton ); gtk_table_attach( GTK_TABLE( table5 ), fit_height_spinbutton, 2, 3, 1, 2, diff --git a/radiant/gtkdlgs.cpp b/radiant/gtkdlgs.cpp index d609efdd..b541a131 100644 --- a/radiant/gtkdlgs.cpp +++ b/radiant/gtkdlgs.cpp @@ -1732,7 +1732,7 @@ void DoRotateDlg(){ (GtkAttachOptions) ( 0 ), (GtkAttachOptions) ( 0 ), 0, 0 ); - adj = gtk_adjustment_new( 0, -359, 359, 1, 10, 10 ); + adj = gtk_adjustment_new( 0, -359, 359, 1, 10, 0 ); x = gtk_spin_button_new( GTK_ADJUSTMENT( adj ), 1, 0 ); g_object_set_data( G_OBJECT( dlg ), "x", x ); gtk_widget_show( x ); @@ -1742,7 +1742,7 @@ void DoRotateDlg(){ gtk_widget_set_usize( x, 60, -2 ); gtk_spin_button_set_wrap( GTK_SPIN_BUTTON( x ), TRUE ); - adj = gtk_adjustment_new( 0, -359, 359, 1, 10, 10 ); + adj = gtk_adjustment_new( 0, -359, 359, 1, 10, 0 ); y = gtk_spin_button_new( GTK_ADJUSTMENT( adj ), 1, 0 ); g_object_set_data( G_OBJECT( dlg ), "y", y ); gtk_widget_show( y ); @@ -1751,7 +1751,7 @@ void DoRotateDlg(){ (GtkAttachOptions) ( 0 ), 0, 0 ); gtk_spin_button_set_wrap( GTK_SPIN_BUTTON( y ), TRUE ); - adj = gtk_adjustment_new( 0, -359, 359, 1, 10, 10 ); + adj = gtk_adjustment_new( 0, -359, 359, 1, 10, 0 ); z = gtk_spin_button_new( GTK_ADJUSTMENT( adj ), 1, 0 ); g_object_set_data( G_OBJECT( dlg ), "z", z ); gtk_widget_show( z ); diff --git a/radiant/patchdialog.cpp b/radiant/patchdialog.cpp index 357a581f..a7821649 100644 --- a/radiant/patchdialog.cpp +++ b/radiant/patchdialog.cpp @@ -509,7 +509,7 @@ void PatchDialog::BuildDialog(){ sprintf( buf, "%g", l_pPIIncrement->shift[0] ); gtk_entry_set_text( GTK_ENTRY( entry ), buf ); - adj = gtk_adjustment_new( 0, -8192, 8192, 1, 1, 1 ); + adj = gtk_adjustment_new( 0, -8192, 8192, 1, 1, 0 ); gtk_signal_connect( adj, "value_changed", GTK_SIGNAL_FUNC( OnSpinChanged ), entry ); g_object_set_data( G_OBJECT( m_pWidget ), "hshift_adj", adj ); @@ -529,7 +529,7 @@ void PatchDialog::BuildDialog(){ sprintf( buf, "%g", l_pPIIncrement->shift[1] ); gtk_entry_set_text( GTK_ENTRY( entry ), buf ); - adj = gtk_adjustment_new( 0, -8192, 8192, 1, 1, 1 ); + adj = gtk_adjustment_new( 0, -8192, 8192, 1, 1, 0 ); gtk_signal_connect( adj, "value_changed", GTK_SIGNAL_FUNC( OnSpinChanged ), entry ); g_object_set_data( G_OBJECT( m_pWidget ), "vshift_adj", adj ); @@ -549,7 +549,7 @@ void PatchDialog::BuildDialog(){ sprintf( buf, "%g", l_pPIIncrement->scale[0] ); gtk_entry_set_text( GTK_ENTRY( entry ), buf ); - adj = gtk_adjustment_new( 0, -1000, 1000, 1, 1, 1 ); + adj = gtk_adjustment_new( 0, -1000, 1000, 1, 1, 0 ); gtk_signal_connect( adj, "value_changed", GTK_SIGNAL_FUNC( OnSpinChanged ), entry ); g_object_set_data( G_OBJECT( m_pWidget ), "hscale_adj", adj ); @@ -569,7 +569,7 @@ void PatchDialog::BuildDialog(){ sprintf( buf, "%g", l_pPIIncrement->scale[1] ); gtk_entry_set_text( GTK_ENTRY( entry ), buf ); - adj = gtk_adjustment_new( 0, -1000, 1000, 1, 1, 1 ); + adj = gtk_adjustment_new( 0, -1000, 1000, 1, 1, 0 ); gtk_signal_connect( adj, "value_changed", GTK_SIGNAL_FUNC( OnSpinChanged ), entry ); g_object_set_data( G_OBJECT( m_pWidget ), "vscale_adj", adj ); @@ -589,7 +589,7 @@ void PatchDialog::BuildDialog(){ sprintf( buf, "%g", l_pPIIncrement->rotate ); gtk_entry_set_text( GTK_ENTRY( entry ), buf ); - adj = gtk_adjustment_new( 0, -1000, 1000, 1, 1, 1 ); // NOTE: Arnout - this really should be 360 but can't change it anymore as it could break existing maps + adj = gtk_adjustment_new( 0, -1000, 1000, 1, 1, 0 ); // NOTE: Arnout - this really should be 360 but can't change it anymore as it could break existing maps gtk_signal_connect( adj, "value_changed", GTK_SIGNAL_FUNC( OnSpinChanged ), entry ); g_object_set_data( G_OBJECT( m_pWidget ), "rotate_adj", adj ); diff --git a/radiant/preferences.cpp b/radiant/preferences.cpp index b0dd1165..7b2a4329 100644 --- a/radiant/preferences.cpp +++ b/radiant/preferences.cpp @@ -2385,7 +2385,7 @@ void PrefsDlg::BuildDialog(){ (GtkAttachOptions) ( 0 ), 0, 0 ); // spinner (allows undo levels to be set to zero) - spin = gtk_spin_button_new( GTK_ADJUSTMENT( gtk_adjustment_new( 1, 0, 64, 1, 10, 10 ) ), 1, 0 ); + spin = gtk_spin_button_new( GTK_ADJUSTMENT( gtk_adjustment_new( 1, 0, 64, 1, 10, 0 ) ), 1, 0 ); gtk_widget_show( spin ); gtk_table_attach( GTK_TABLE( table ), spin, 1, 2, 1, 2, (GtkAttachOptions) ( GTK_FILL ), @@ -2456,7 +2456,7 @@ void PrefsDlg::BuildDialog(){ AddDialogData( check, &m_bAutoSave, DLG_CHECK_BOOL ); // spinner - spin = gtk_spin_button_new( GTK_ADJUSTMENT( gtk_adjustment_new( 1, 1, 60, 1, 10, 10 ) ), 1, 0 ); + spin = gtk_spin_button_new( GTK_ADJUSTMENT( gtk_adjustment_new( 1, 1, 60, 1, 10, 0 ) ), 1, 0 ); gtk_widget_show( spin ); gtk_box_pack_start( GTK_BOX( hbox2 ), spin, FALSE, FALSE, 0 ); gtk_widget_set_usize( spin, 60, -2 ); diff --git a/radiant/surfacedialog.cpp b/radiant/surfacedialog.cpp index 9161e6c5..26e9fba7 100644 --- a/radiant/surfacedialog.cpp +++ b/radiant/surfacedialog.cpp @@ -545,7 +545,7 @@ void SurfaceDlg::BuildDialog() { (GtkAttachOptions) ( GTK_FILL ), (GtkAttachOptions) ( 0 ), 0, 0 ); - spin = gtk_spin_button_new( GTK_ADJUSTMENT( gtk_adjustment_new( 0, -8192, 8192, 2, 8, 8 ) ), 0, 0 ); + spin = gtk_spin_button_new( GTK_ADJUSTMENT( gtk_adjustment_new( 0, -8192, 8192, 2, 8, 0 ) ), 0, 0 ); g_object_set_data( G_OBJECT( dlg ), "hshift", spin ); gtk_signal_connect( GTK_OBJECT( gtk_spin_button_get_adjustment( GTK_SPIN_BUTTON( spin ) ) ), "value_changed", GTK_SIGNAL_FUNC( OnUpdate ), NULL ); @@ -579,7 +579,7 @@ void SurfaceDlg::BuildDialog() { (GtkAttachOptions) ( GTK_FILL ), (GtkAttachOptions) ( 0 ), 0, 0 ); - spin = gtk_spin_button_new( GTK_ADJUSTMENT( gtk_adjustment_new( 0, -8192, 8192, 2, 8, 8 ) ), 0, 0 ); + spin = gtk_spin_button_new( GTK_ADJUSTMENT( gtk_adjustment_new( 0, -8192, 8192, 2, 8, 0 ) ), 0, 0 ); g_object_set_data( G_OBJECT( dlg ), "vshift", spin ); gtk_signal_connect( GTK_OBJECT( gtk_spin_button_get_adjustment( GTK_SPIN_BUTTON( spin ) ) ), "value_changed", GTK_SIGNAL_FUNC( OnUpdate ), NULL ); @@ -613,7 +613,7 @@ void SurfaceDlg::BuildDialog() { (GtkAttachOptions) ( GTK_FILL ), (GtkAttachOptions) ( 0 ), 0, 0 ); - spin = gtk_spin_button_new( GTK_ADJUSTMENT( gtk_adjustment_new( 0, -1000, 1000, 1, 10, 10 ) ), 0, 0 ); + spin = gtk_spin_button_new( GTK_ADJUSTMENT( gtk_adjustment_new( 0, -1000, 1000, 1, 10, 0 ) ), 0, 0 ); g_object_set_data( G_OBJECT( dlg ), "hscale", spin ); gtk_signal_connect( GTK_OBJECT( gtk_spin_button_get_adjustment( GTK_SPIN_BUTTON( spin ) ) ), "value_changed", GTK_SIGNAL_FUNC( OnUpdate ), NULL ); @@ -647,7 +647,7 @@ void SurfaceDlg::BuildDialog() { (GtkAttachOptions) ( GTK_FILL ), (GtkAttachOptions) ( 0 ), 0, 0 ); - spin = gtk_spin_button_new( GTK_ADJUSTMENT( gtk_adjustment_new( 0, -1000, 1000, 1, 10, 10 ) ), 0, 0 ); + spin = gtk_spin_button_new( GTK_ADJUSTMENT( gtk_adjustment_new( 0, -1000, 1000, 1, 10, 0 ) ), 0, 0 ); g_object_set_data( G_OBJECT( dlg ), "vscale", spin ); gtk_signal_connect( GTK_OBJECT( gtk_spin_button_get_adjustment( GTK_SPIN_BUTTON( spin ) ) ), "value_changed", GTK_SIGNAL_FUNC( OnUpdate ), NULL ); @@ -681,7 +681,7 @@ void SurfaceDlg::BuildDialog() { (GtkAttachOptions) ( GTK_FILL ), (GtkAttachOptions) ( 0 ), 0, 0 ); - spin = gtk_spin_button_new( GTK_ADJUSTMENT( gtk_adjustment_new( 0, -360, 360, 1, 10, 10 ) ), 1, 0 ); + spin = gtk_spin_button_new( GTK_ADJUSTMENT( gtk_adjustment_new( 0, -360, 360, 1, 10, 0 ) ), 1, 0 ); g_object_set_data( G_OBJECT( dlg ), "rotate", spin ); gtk_signal_connect( GTK_OBJECT( gtk_spin_button_get_adjustment( GTK_SPIN_BUTTON( spin ) ) ), "value_changed", GTK_SIGNAL_FUNC( OnUpdate ), NULL ); @@ -807,7 +807,7 @@ void SurfaceDlg::BuildDialog() { GTK_SIGNAL_FUNC( OnBtnPatchFit ), NULL ); gtk_widget_set_usize( button, 60, -2 ); - spin = gtk_spin_button_new( GTK_ADJUSTMENT( gtk_adjustment_new( 1, 1, 32, 1, 10, 10 ) ), 1, 0 ); + spin = gtk_spin_button_new( GTK_ADJUSTMENT( gtk_adjustment_new( 1, 1, 32, 1, 10, 0 ) ), 1, 0 ); gtk_widget_show( spin ); gtk_table_attach( GTK_TABLE( table ), spin, 2, 3, 1, 2, (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), @@ -815,7 +815,7 @@ void SurfaceDlg::BuildDialog() { gtk_widget_set_usize( spin, 60, -2 ); AddDialogData( spin, &m_nWidth, DLG_SPIN_INT ); - spin = gtk_spin_button_new( GTK_ADJUSTMENT( gtk_adjustment_new( 1, 1, 32, 1, 10, 10 ) ), 1, 0 ); + spin = gtk_spin_button_new( GTK_ADJUSTMENT( gtk_adjustment_new( 1, 1, 32, 1, 10, 0 ) ), 1, 0 ); gtk_widget_show( spin ); gtk_table_attach( GTK_TABLE( table ), spin, 3, 4, 1, 2, (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), From 449340a95eea26a59360dc9ed4192a3dd49fcae3 Mon Sep 17 00:00:00 2001 From: Chris Brooke Date: Thu, 25 Jul 2013 23:55:21 +0100 Subject: [PATCH 07/16] Added 'Always use Caulk for new brushes' to preferences --- radiant/preferences.cpp | 10 ++++++++++ radiant/preferences.h | 1 + radiant/xywindow.cpp | 16 +++++++++++++++- 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/radiant/preferences.cpp b/radiant/preferences.cpp index 7b2a4329..4e8ab92e 100644 --- a/radiant/preferences.cpp +++ b/radiant/preferences.cpp @@ -131,6 +131,7 @@ #define DOSLEEP_KEY "SleepMode" #define SUBDIVISIONS_KEY "Subdivisions" #define DEFAULTTEXURESCALE_KEY "DefaultTextureScale" +#define CAULKNEWBRUSHES_KEY "CaulkNewBrushes" #define CLIPCAULK_KEY "ClipCaulk" #define PATCHSHOWBOUNDS_KEY "PatchShowBounds" #define NATIVEGUI_KEY "NativeGUI" @@ -2582,6 +2583,14 @@ void PrefsDlg::BuildDialog(){ (GtkAttachOptions) ( 0 ), 0, 0 ); AddDialogData( entry, &m_fDefTextureScale, DLG_ENTRY_FLOAT ); + + // caulk new brushes + check = gtk_check_button_new_with_label( _( "Always use caulk for new brushes" ) ); + gtk_widget_show( check ); + gtk_box_pack_start( GTK_BOX( vbox ), check, FALSE, FALSE, 0 ); + g_object_set_data( G_OBJECT( dialog ), "check_caulkbrush", check ); + AddDialogData( check, &m_bCaulkNewBrushes, DLG_CHECK_BOOL ); + // Add the page to the notebook gtk_notebook_append_page( GTK_NOTEBOOK( notebook ), pageframe, preflabel ); @@ -3045,6 +3054,7 @@ void PrefsDlg::LoadPrefs(){ mLocalPrefs.GetPref( SELECTMODELS_KEY, &m_bSelectModels, TRUE ); mLocalPrefs.GetPref( SHADERLISTONLY_KEY, &m_bTexturesShaderlistOnly, FALSE ); mLocalPrefs.GetPref( DEFAULTTEXURESCALE_KEY, &m_fDefTextureScale, g_pGameDescription->mTextureDefaultScale ); + mLocalPrefs.GetPref( CAULKNEWBRUSHES_KEY, &m_bCaulkNewBrushes, TRUE ); mLocalPrefs.GetPref( SUBDIVISIONS_KEY, &m_nSubdivisions, SUBDIVISIONS_DEF ); mLocalPrefs.GetPref( CLIPCAULK_KEY, &m_bClipCaulk, FALSE ); mLocalPrefs.GetPref( SNAPTTOGRID_KEY, &m_bSnapTToGrid, FALSE ); diff --git a/radiant/preferences.h b/radiant/preferences.h index 5368e87a..53ed92ec 100644 --- a/radiant/preferences.h +++ b/radiant/preferences.h @@ -641,6 +641,7 @@ bool m_bGLLighting; bool m_bTexturesShaderlistOnly; int m_nSubdivisions; float m_fDefTextureScale; +bool m_bCaulkNewBrushes; bool m_bFloatingZ; bool m_bLatchedFloatingZ; // Gef: Kyro GL_POINT workaround diff --git a/radiant/xywindow.cpp b/radiant/xywindow.cpp index 3a0812b7..d0d2e6fd 100644 --- a/radiant/xywindow.cpp +++ b/radiant/xywindow.cpp @@ -1596,7 +1596,21 @@ void XYWnd::NewBrushDrag( int x, int y ){ } } - n = Brush_Create( mins, maxs, &g_qeglobals.d_texturewin.texdef ); + // Caulk the new brush + if ( g_PrefsDlg.m_bCaulkNewBrushes == TRUE ) { + texdef_t tex; + IShader *shad = QERApp_Shader_ForName( "textures/common/caulk" ); + + tex.SetName( shad->getName() ); + tex.scale[0] = g_PrefsDlg.m_fDefTextureScale; + tex.scale[1] = g_PrefsDlg.m_fDefTextureScale; + tex.flags = shad->getFlags(); + + n = Brush_Create( mins, maxs, &tex ); + } else { + n = Brush_Create( mins, maxs, &g_qeglobals.d_texturewin.texdef ); + } + if ( !n ) { return; } From 949547b125dfab2e62b552f66c3bbf7595070609 Mon Sep 17 00:00:00 2001 From: Chris Brooke Date: Fri, 26 Jul 2013 22:25:56 +0100 Subject: [PATCH 08/16] Added a toggle button to the main toolbar for creating Structural/Detail brushes --- include/qertypes.h | 2 ++ install/bitmaps/toggle_detail.png | Bin 0 -> 3653 bytes install/bitmaps/toggle_struct.png | Bin 0 -> 3653 bytes radiant/mainframe.cpp | 31 ++++++++++++++++++++++++++++++ radiant/mainframe.h | 3 +++ radiant/xywindow.cpp | 18 ++++++++++++++--- 6 files changed, 51 insertions(+), 3 deletions(-) create mode 100644 install/bitmaps/toggle_detail.png create mode 100644 install/bitmaps/toggle_struct.png diff --git a/include/qertypes.h b/include/qertypes.h index 50dec5f2..b3631d88 100644 --- a/include/qertypes.h +++ b/include/qertypes.h @@ -874,6 +874,8 @@ typedef struct // set to true after OpenGL has been initialized and extensions have been tested bool m_bOpenGLReady; + // set this to true and any new brushes will be detail by default (else they are structural) + bool m_bMakeDetail; } QEGlobals_t; #endif // _QERTYPES_H_ diff --git a/install/bitmaps/toggle_detail.png b/install/bitmaps/toggle_detail.png new file mode 100644 index 0000000000000000000000000000000000000000..e91acc51c289415f5b70c737ac684a605a29c78b GIT binary patch literal 3653 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 XXtN4AzW!y~00000NkvXXu0mjfgJ#xR literal 0 HcmV?d00001 diff --git a/install/bitmaps/toggle_struct.png b/install/bitmaps/toggle_struct.png new file mode 100644 index 0000000000000000000000000000000000000000..c773aa5cfaf9d9ca5842a90a7f197b4253ea3457 GIT binary patch literal 3653 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 X*zgTaEs$>k00000NkvXXu0mjf6++mm literal 0 HcmV?d00001 diff --git a/radiant/mainframe.cpp b/radiant/mainframe.cpp index 805bc6e8..72c9e028 100644 --- a/radiant/mainframe.cpp +++ b/radiant/mainframe.cpp @@ -690,6 +690,7 @@ gint HandleCommand( GtkWidget *widget, gpointer data ){ case ID_SELECT_SNAPTOGRID: g_pParentWnd->OnSnapToGrid(); break; case ID_SELECT_ALL: g_pParentWnd->OnSelectAll(); break; case ID_SELECTION_INVERT: g_pParentWnd->OnSelectionInvert(); break; + case ID_TOGGLE_DETAIL: g_pParentWnd->OnToggleDetail(); break; }} return TRUE; @@ -1756,6 +1757,11 @@ void MainFrame::create_main_toolbar( GtkWidget *window, GtkWidget *vbox ){ g_object_set_data( G_OBJECT( window ), "tb_view_clipper", w ); } + w = gtk_toolbar_append_element( GTK_TOOLBAR( toolbar ), GTK_TOOLBAR_CHILD_TOGGLEBUTTON, NULL, + "", _( "Make Detail Brushes" ), "", new_image_icon("toggle_struct.png"), + GTK_SIGNAL_FUNC( HandleCommand ), GINT_TO_POINTER( ID_TOGGLE_DETAIL ) ); + g_object_set_data( G_OBJECT( window ), "tb_toggle_detail", w ); + gtk_toolbar_append_space( GTK_TOOLBAR( toolbar ) ); w = gtk_toolbar_append_item( GTK_TOOLBAR( toolbar ), "", _( "Change views" ), "", @@ -5454,6 +5460,31 @@ void MainFrame::OnClipSelected(){ } } +void MainFrame::OnToggleDetail(){ + GtkWidget *w = GTK_WIDGET( g_object_get_data( G_OBJECT( m_pWidget ), "tb_toggle_detail" ) ); + g_bIgnoreCommands++; + + if ( g_qeglobals.m_bMakeDetail == TRUE ) { + g_qeglobals.m_bMakeDetail = FALSE; + Sys_Printf( "Structural Brush mode activated\n" ); + + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( w ), FALSE ); + gtk_button_set_image( GTK_BUTTON( w ),new_image_icon( "toggle_struct.png" ) ); + + } + else + { + g_qeglobals.m_bMakeDetail = TRUE; + Sys_Printf( "Detail Brush mode activated\n" ); + + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( w ), TRUE ); + gtk_button_set_image( GTK_BUTTON( w ), new_image_icon( "toggle_detail.png" ) ); + + } + + g_bIgnoreCommands--; +} + void MainFrame::OnSplitSelected(){ if ( m_pActiveXY ) { Undo_Start( "split selected" ); diff --git a/radiant/mainframe.h b/radiant/mainframe.h index f0b14d17..73f8ccee 100644 --- a/radiant/mainframe.h +++ b/radiant/mainframe.h @@ -427,6 +427,8 @@ struct SKeyInfo #define ID_TEXTUREWINDOW_SCALEUP 40321 #define ID_TEXTUREWINDOW_SCALEDOWN 40322 +#define ID_TOGGLE_DETAIL 40323 + class CSynapseClientRadiant : public CSynapseClient { public: @@ -695,6 +697,7 @@ void OnHelp(); void OnHelpLinks(); void OnHelpBugreport(); void OnViewClipper(); +void OnToggleDetail(); void OnCameraAngledown(); void OnCameraAngleup(); void OnCameraBack( bool keydown ); diff --git a/radiant/xywindow.cpp b/radiant/xywindow.cpp index d0d2e6fd..560eb8fe 100644 --- a/radiant/xywindow.cpp +++ b/radiant/xywindow.cpp @@ -1595,7 +1595,7 @@ void XYWnd::NewBrushDrag( int x, int y ){ maxs[i] = temp; } } - + // Caulk the new brush if ( g_PrefsDlg.m_bCaulkNewBrushes == TRUE ) { texdef_t tex; @@ -1605,16 +1605,28 @@ void XYWnd::NewBrushDrag( int x, int y ){ tex.scale[0] = g_PrefsDlg.m_fDefTextureScale; tex.scale[1] = g_PrefsDlg.m_fDefTextureScale; tex.flags = shad->getFlags(); - + n = Brush_Create( mins, maxs, &tex ); } else { n = Brush_Create( mins, maxs, &g_qeglobals.d_texturewin.texdef ); } - + if ( !n ) { return; } + // structural or detail? + face_t *f; + + for ( f = n->brush_faces ; f ; f = f->next ) { + if ( g_qeglobals.m_bMakeDetail == TRUE ) { + f->texdef.contents |= CONTENTS_DETAIL; + } else { + f->texdef.contents &= ~CONTENTS_DETAIL; + } + } + // + vec3_t vSize; VectorSubtract( maxs, mins, vSize ); g_strStatus.Format( "Size X:: %.1f Y:: %.1f Z:: %.1f", vSize[0], vSize[1], vSize[2] ); From a7ef4116ffb56c273ad76a1dadef084bf75ea4df Mon Sep 17 00:00:00 2001 From: "Timothee \"TTimo\" Besset" Date: Fri, 9 Aug 2013 22:59:23 -0500 Subject: [PATCH 09/16] Disable T key to hide group dialog. Would have to check that no textbox is active, pita. Just use Escape. --- radiant/groupdialog.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/radiant/groupdialog.cpp b/radiant/groupdialog.cpp index c2b82d07..75cd814f 100644 --- a/radiant/groupdialog.cpp +++ b/radiant/groupdialog.cpp @@ -671,6 +671,8 @@ void SetInspectorMode( int iType ){ // I did witness an expose event on the notebook widget though, but for some reason it's not traveling down.. // so when hiding the group dialog, we are setting the page to 0, the page switch does an expose and triggers drawing.. (see OnDialogKey) gtk_notebook_set_current_page( GTK_NOTEBOOK( g_pGroupDlg->m_pNotebook ), 1 ); + // FIXME: https://github.com/TTimo/GtkRadiant/issues/192 +// Sys_Printf( "show widget: set page to 1\n" ); } break; @@ -1142,6 +1144,8 @@ static gint OnDialogKey( GtkWidget* widget, GdkEventKey* event, gpointer data ) // make the "ViewTextures" and "ViewEntityInfo" keys that normally bring this dialog up hide it as well - copypasta from mainframe_keypress // NOTE: maybe we could also check the state of the notebook, see if those are actually displayed .. if they are not, then switch the notebook pages rather than hiding? bool hide = false; + // Disable this, it makes the dialog hide whenever you type 'T' when editing entities etc. - Esc key is enough +#if 0 unsigned int code = gdk_keyval_to_upper( event->keyval ); for ( int i = 0; i < g_nCommandCount; i++ ) { if ( g_Commands[i].m_nKey == code ) { // find a match? @@ -1165,13 +1169,15 @@ static gint OnDialogKey( GtkWidget* widget, GdkEventKey* event, gpointer data ) } } } - +#endif if ( g_pParentWnd->CurrentStyle() != MainFrame::eFloating && ( hide || event->keyval == GDK_Escape ) ) { // toggle off the group view (whatever part of it is currently displayed) // this used to be done with a g_pParentWnd->OnViewEntity(); but it had bad consequences gtk_widget_hide( widget ); // set the group notebook page back to 0, so that when we recall the texture view there is an expose event coming up gtk_notebook_set_current_page( GTK_NOTEBOOK( g_pGroupDlg->m_pNotebook ), 0 ); + // FIXME: https://github.com/TTimo/GtkRadiant/issues/192 +// Sys_Printf( "hide widget and set page to 0\n" ); return TRUE; } return FALSE; From 32aee4bd50866cc96e1d81497c84712a06586e58 Mon Sep 17 00:00:00 2001 From: Christian Ratzenhofer Date: Wed, 21 Aug 2013 12:40:08 +0200 Subject: [PATCH 10/16] Add support for RTCW to the game setup dialog --- config.py | 2 +- radiant/preferences.cpp | 23 +++++++++++++++++++++++ radiant/preferences.h | 3 +++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/config.py b/config.py index 88fb8000..f32ed3ea 100644 --- a/config.py +++ b/config.py @@ -28,7 +28,7 @@ class Config: # platforms for which to assemble a setup self.setup_platforms = [ 'local', 'x86', 'x64', 'win32' ] # paks to assemble in the setup - self.setup_packs = [ 'Q3Pack', 'UrTPack', 'ETPack', 'QLPack', 'Q2Pack', 'Q2WPack', 'JAPack', 'STVEFPack' ] + self.setup_packs = [ 'Q3Pack', 'UrTPack', 'ETPack', 'QLPack', 'Q2Pack', 'Q2WPack', 'JAPack', 'STVEFPack', 'WolfPack' ] def __repr__( self ): return 'config: target=%s config=%s' % ( self.target_selected, self.config_selected ) diff --git a/radiant/preferences.cpp b/radiant/preferences.cpp index bcf6468b..b8bf1c04 100644 --- a/radiant/preferences.cpp +++ b/radiant/preferences.cpp @@ -3432,6 +3432,9 @@ void CGameInstall::BuildDialog() { case GAME_STVEF: gtk_combo_box_append_text( GTK_COMBO_BOX( combo ), _( "Star Trek - Voyager: Elite Force" ) ); break; + case GAME_WOLF: + gtk_combo_box_append_text( GTK_COMBO_BOX( combo ), _( "Return To Castle Wolfenstein" ) ); + break; } iGame++; } @@ -3580,6 +3583,10 @@ void CGameInstall::Run() { gamePack = STVEF_PACK; gameFilePath += STVEF_GAME; break; + case GAME_WOLF: + gamePack = WOLF_PACK; + gameFilePath += WOLF_GAME; + break; default: Error( "Invalid game selected: %d", m_availGames[ m_nComboSelect ] ); } @@ -3738,6 +3745,19 @@ void CGameInstall::Run() { } break; } + case GAME_WOLF: { + fprintf( fg, " prefix=\".wolf\"\n" ); + fprintf( fg, " basegame=\"main\"\n" ); + // Hardcoded fix for "missing" shaderlist in gamepack + Str dest = m_strEngine.GetBuffer(); + dest += "/main/scripts/shaderlist.txt"; + if( CheckFile( dest.GetBuffer() ) != PATH_FILE ) { + Str source = gameInstallPath.GetBuffer(); + source += "main/scripts/default_shaderlist.txt"; + radCopyFile( source.GetBuffer(), dest.GetBuffer() ); + } + break; + } } fprintf( fg, "/>\n" ); fclose( fg ); @@ -3796,6 +3816,9 @@ void CGameInstall::ScanGames() { if ( stricmp( dirname, STVEF_PACK ) == 0 ) { m_availGames[ iGame++ ] = GAME_STVEF; } + if ( stricmp( dirname, WOLF_PACK ) == 0) { + m_availGames[ iGame++ ] = GAME_WOLF; + } } Sys_Printf( "No installable games found in: %s\n", pakPaths.GetBuffer() ); diff --git a/radiant/preferences.h b/radiant/preferences.h index 53ed92ec..e15b9064 100644 --- a/radiant/preferences.h +++ b/radiant/preferences.h @@ -215,6 +215,7 @@ void Dump(); #define ET_GAME "et.game" #define QL_GAME "ql.game" #define STVEF_GAME "stvef.game" +#define WOLF_GAME "wolf.game" #define Q3_PACK "Q3Pack" #define URT_PACK "UrTPack" @@ -229,6 +230,7 @@ void Dump(); #define ET_PACK "ETPack" #define QL_PACK "QLPack" #define STVEF_PACK "STVEFPack" +#define WOLF_PACK "WolfPack" class CGameInstall : public Dialog { public: @@ -256,6 +258,7 @@ enum gameType_e { GAME_ET, GAME_QL, GAME_STVEF, + GAME_WOLF, GAME_COUNT }; From 61aa13c1f9a594affe331b5e88b165821146d148 Mon Sep 17 00:00:00 2001 From: "Timothee \"TTimo\" Besset" Date: Sat, 24 Aug 2013 08:17:05 -0500 Subject: [PATCH 11/16] fix another edge case in the floating texture window management --- radiant/groupdialog.cpp | 9 ++++++++- radiant/gtkmisc.cpp | 7 +++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/radiant/groupdialog.cpp b/radiant/groupdialog.cpp index 75cd814f..a7c088b0 100644 --- a/radiant/groupdialog.cpp +++ b/radiant/groupdialog.cpp @@ -1138,6 +1138,13 @@ static void switch_page( GtkNotebook *notebook, GtkNotebookPage *page, guint pag // ============================================================================= // GroupDlg class +static gint OnDeleteHide( GtkWidget *widget ) { + gtk_widget_hide( widget ); + // see OnDialogKey + gtk_notebook_set_current_page( GTK_NOTEBOOK( g_pGroupDlg->m_pNotebook ), 0 ); + return TRUE; +} + // NOTE: when a key is hit with group window focused, we catch in this handler but it gets propagated to mainframe too // therefore the message will be intercepted and used as a ID_SELECTION_DESELECT static gint OnDialogKey( GtkWidget* widget, GdkEventKey* event, gpointer data ) { @@ -1207,7 +1214,7 @@ void GroupDlg::Create(){ load_window_pos( dlg, g_PrefsDlg.mWindowInfo.posEntityWnd ); gtk_window_set_title( GTK_WINDOW( dlg ), "Entities" ); - gtk_signal_connect( GTK_OBJECT( dlg ), "delete_event", GTK_SIGNAL_FUNC( widget_delete_hide ), NULL ); + gtk_signal_connect( GTK_OBJECT( dlg ), "delete_event", GTK_SIGNAL_FUNC( OnDeleteHide ), NULL ); // catch 'Esc' gtk_signal_connect( GTK_OBJECT( dlg ), "key_press_event", GTK_SIGNAL_FUNC( OnDialogKey ), NULL ); diff --git a/radiant/gtkmisc.cpp b/radiant/gtkmisc.cpp index 6259d14b..c34ca8cb 100644 --- a/radiant/gtkmisc.cpp +++ b/radiant/gtkmisc.cpp @@ -138,10 +138,9 @@ void load_window_pos( GtkWidget *wnd, window_position_t& pos ){ #endif } -gint widget_delete_hide( GtkWidget *widget ){ - gtk_widget_hide( widget ); - - return TRUE; +gint widget_delete_hide( GtkWidget *widget ) { + gtk_widget_hide( widget ); + return TRUE; } From 666847b0ce4f60ce5e8863fa0958da8195fb091e Mon Sep 17 00:00:00 2001 From: TTimo Date: Sat, 24 Aug 2013 22:50:12 +0000 Subject: [PATCH 12/16] switch to xp compatible compiler toolchain, add/fix an archive and upload script for the VM builder --- contrib/bkgrnd2d/bkgrnd2d.vcxproj | 8 ++--- contrib/bobtoolz/bobtoolz.vcxproj | 8 ++--- contrib/camera/camera.vcxproj | 8 ++--- contrib/gtkgensurf/gtkgensurf.vcxproj | 8 ++--- contrib/hydratoolz/hydratoolz.vcxproj | 8 ++--- contrib/prtview/prtview.vcxproj | 8 ++--- libs/cmdlib/cmdlib.vcxproj | 8 ++--- libs/ddslib/ddslib.vcxproj | 8 ++--- libs/l_net/l_net.vcxproj | 8 ++--- libs/mathlib/mathlib.vcxproj | 8 ++--- libs/md5lib/md5lib.vcxproj | 8 ++--- libs/picomodel/picomodel.vcxproj | 8 ++--- libs/splines/splines.vcxproj | 8 ++--- libs/synapse/synapse.vcxproj | 8 ++--- plugins/eclassfgd/fgd.vcxproj | 8 ++--- plugins/entity/entity.vcxproj | 8 ++--- plugins/image/image.vcxproj | 8 ++--- plugins/imagehl/imagehl.vcxproj | 8 ++--- plugins/imagem8/imagem8.vcxproj | 8 ++--- plugins/imagepng/imagepng.vcxproj | 8 ++--- plugins/imagewal/imagewal.vcxproj | 8 ++--- plugins/map/map.vcxproj | 8 ++--- plugins/mapxml/mapxml.vcxproj | 8 ++--- plugins/model/model.vcxproj | 8 ++--- plugins/shaders/shaders.vcxproj | 8 ++--- plugins/spritemodel/spritemodel.vcxproj | 8 ++--- plugins/surface/surface.vcxproj | 8 ++--- .../surface_idtech2/surface_idtech2.vcxproj | 8 ++--- plugins/textool/textool.vcxproj | 8 ++--- plugins/vfspak/vfspak.vcxproj | 8 ++--- plugins/vfspk3/vfspk3.vcxproj | 8 ++--- plugins/vfsqlpk3/vfsqlpk3.vcxproj | 8 ++--- plugins/vfswad/vfswad.vcxproj | 8 ++--- prepare_archive.py | 30 +++++++++++++++++++ radiant/radiant.vcxproj | 8 ++--- tools/quake3/common/quake3-common.vcxproj | 8 ++--- tools/quake3/q3data/q3data.vcxproj | 8 ++--- tools/quake3/q3map2/q3map2.vcxproj | 8 ++--- .../tools/quake3/q3map2/q3map2_urt.vcxproj | 8 ++--- 39 files changed, 182 insertions(+), 152 deletions(-) create mode 100644 prepare_archive.py diff --git a/contrib/bkgrnd2d/bkgrnd2d.vcxproj b/contrib/bkgrnd2d/bkgrnd2d.vcxproj index 25aa1a19..25453672 100644 --- a/contrib/bkgrnd2d/bkgrnd2d.vcxproj +++ b/contrib/bkgrnd2d/bkgrnd2d.vcxproj @@ -25,19 +25,19 @@ DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp diff --git a/contrib/bobtoolz/bobtoolz.vcxproj b/contrib/bobtoolz/bobtoolz.vcxproj index 37ae0916..bb0f5567 100644 --- a/contrib/bobtoolz/bobtoolz.vcxproj +++ b/contrib/bobtoolz/bobtoolz.vcxproj @@ -25,19 +25,19 @@ DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp diff --git a/contrib/camera/camera.vcxproj b/contrib/camera/camera.vcxproj index d17191b5..a4c0f4cb 100644 --- a/contrib/camera/camera.vcxproj +++ b/contrib/camera/camera.vcxproj @@ -25,19 +25,19 @@ DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp diff --git a/contrib/gtkgensurf/gtkgensurf.vcxproj b/contrib/gtkgensurf/gtkgensurf.vcxproj index fc009dd5..ec234394 100644 --- a/contrib/gtkgensurf/gtkgensurf.vcxproj +++ b/contrib/gtkgensurf/gtkgensurf.vcxproj @@ -25,19 +25,19 @@ DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp diff --git a/contrib/hydratoolz/hydratoolz.vcxproj b/contrib/hydratoolz/hydratoolz.vcxproj index 2f14eb5a..37226ec4 100644 --- a/contrib/hydratoolz/hydratoolz.vcxproj +++ b/contrib/hydratoolz/hydratoolz.vcxproj @@ -25,19 +25,19 @@ DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp diff --git a/contrib/prtview/prtview.vcxproj b/contrib/prtview/prtview.vcxproj index fae98afe..f4ff3eb8 100644 --- a/contrib/prtview/prtview.vcxproj +++ b/contrib/prtview/prtview.vcxproj @@ -25,19 +25,19 @@ DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp diff --git a/libs/cmdlib/cmdlib.vcxproj b/libs/cmdlib/cmdlib.vcxproj index ca698989..8aa8c4de 100644 --- a/libs/cmdlib/cmdlib.vcxproj +++ b/libs/cmdlib/cmdlib.vcxproj @@ -25,19 +25,19 @@ StaticLibrary - v110 + v110_xp StaticLibrary - v110 + v110_xp StaticLibrary - v110 + v110_xp StaticLibrary - v110 + v110_xp diff --git a/libs/ddslib/ddslib.vcxproj b/libs/ddslib/ddslib.vcxproj index d40be6ff..a2cf4b20 100644 --- a/libs/ddslib/ddslib.vcxproj +++ b/libs/ddslib/ddslib.vcxproj @@ -25,19 +25,19 @@ StaticLibrary - v110 + v110_xp StaticLibrary - v110 + v110_xp StaticLibrary - v110 + v110_xp StaticLibrary - v110 + v110_xp diff --git a/libs/l_net/l_net.vcxproj b/libs/l_net/l_net.vcxproj index ac3f61f0..bef68bfa 100644 --- a/libs/l_net/l_net.vcxproj +++ b/libs/l_net/l_net.vcxproj @@ -25,19 +25,19 @@ StaticLibrary - v110 + v110_xp StaticLibrary - v110 + v110_xp StaticLibrary - v110 + v110_xp StaticLibrary - v110 + v110_xp diff --git a/libs/mathlib/mathlib.vcxproj b/libs/mathlib/mathlib.vcxproj index 792b1dcf..02d92b13 100644 --- a/libs/mathlib/mathlib.vcxproj +++ b/libs/mathlib/mathlib.vcxproj @@ -25,19 +25,19 @@ StaticLibrary - v110 + v110_xp StaticLibrary - v110 + v110_xp StaticLibrary - v110 + v110_xp StaticLibrary - v110 + v110_xp diff --git a/libs/md5lib/md5lib.vcxproj b/libs/md5lib/md5lib.vcxproj index 8a8785db..f729d23b 100644 --- a/libs/md5lib/md5lib.vcxproj +++ b/libs/md5lib/md5lib.vcxproj @@ -25,19 +25,19 @@ StaticLibrary - v110 + v110_xp StaticLibrary - v110 + v110_xp StaticLibrary - v110 + v110_xp StaticLibrary - v110 + v110_xp diff --git a/libs/picomodel/picomodel.vcxproj b/libs/picomodel/picomodel.vcxproj index f1d11d1a..b9bed4fe 100644 --- a/libs/picomodel/picomodel.vcxproj +++ b/libs/picomodel/picomodel.vcxproj @@ -25,19 +25,19 @@ StaticLibrary - v110 + v110_xp StaticLibrary - v110 + v110_xp StaticLibrary - v110 + v110_xp StaticLibrary - v110 + v110_xp diff --git a/libs/splines/splines.vcxproj b/libs/splines/splines.vcxproj index dddbad28..612d6e1f 100644 --- a/libs/splines/splines.vcxproj +++ b/libs/splines/splines.vcxproj @@ -25,19 +25,19 @@ StaticLibrary - v110 + v110_xp StaticLibrary - v110 + v110_xp StaticLibrary - v110 + v110_xp StaticLibrary - v110 + v110_xp diff --git a/libs/synapse/synapse.vcxproj b/libs/synapse/synapse.vcxproj index 5fd4c26e..82d35292 100644 --- a/libs/synapse/synapse.vcxproj +++ b/libs/synapse/synapse.vcxproj @@ -25,19 +25,19 @@ StaticLibrary - v110 + v110_xp StaticLibrary - v110 + v110_xp StaticLibrary - v110 + v110_xp StaticLibrary - v110 + v110_xp diff --git a/plugins/eclassfgd/fgd.vcxproj b/plugins/eclassfgd/fgd.vcxproj index b684c30f..c5aad7b6 100644 --- a/plugins/eclassfgd/fgd.vcxproj +++ b/plugins/eclassfgd/fgd.vcxproj @@ -25,19 +25,19 @@ DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp diff --git a/plugins/entity/entity.vcxproj b/plugins/entity/entity.vcxproj index f945a511..0cba3fd6 100644 --- a/plugins/entity/entity.vcxproj +++ b/plugins/entity/entity.vcxproj @@ -25,19 +25,19 @@ DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp diff --git a/plugins/image/image.vcxproj b/plugins/image/image.vcxproj index 7cc5fd71..f7e5cd9f 100644 --- a/plugins/image/image.vcxproj +++ b/plugins/image/image.vcxproj @@ -25,19 +25,19 @@ DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp diff --git a/plugins/imagehl/imagehl.vcxproj b/plugins/imagehl/imagehl.vcxproj index ce832596..f61dbe74 100644 --- a/plugins/imagehl/imagehl.vcxproj +++ b/plugins/imagehl/imagehl.vcxproj @@ -25,19 +25,19 @@ DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp diff --git a/plugins/imagem8/imagem8.vcxproj b/plugins/imagem8/imagem8.vcxproj index 40cb67ef..6aeda675 100644 --- a/plugins/imagem8/imagem8.vcxproj +++ b/plugins/imagem8/imagem8.vcxproj @@ -25,19 +25,19 @@ DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp diff --git a/plugins/imagepng/imagepng.vcxproj b/plugins/imagepng/imagepng.vcxproj index e065b975..a9bc6352 100644 --- a/plugins/imagepng/imagepng.vcxproj +++ b/plugins/imagepng/imagepng.vcxproj @@ -25,19 +25,19 @@ DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp diff --git a/plugins/imagewal/imagewal.vcxproj b/plugins/imagewal/imagewal.vcxproj index 956201f3..7de7e507 100644 --- a/plugins/imagewal/imagewal.vcxproj +++ b/plugins/imagewal/imagewal.vcxproj @@ -25,19 +25,19 @@ DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp diff --git a/plugins/map/map.vcxproj b/plugins/map/map.vcxproj index 986c4228..0a9d7bd1 100644 --- a/plugins/map/map.vcxproj +++ b/plugins/map/map.vcxproj @@ -25,19 +25,19 @@ DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp diff --git a/plugins/mapxml/mapxml.vcxproj b/plugins/mapxml/mapxml.vcxproj index 9bc28101..33a50d61 100644 --- a/plugins/mapxml/mapxml.vcxproj +++ b/plugins/mapxml/mapxml.vcxproj @@ -25,19 +25,19 @@ DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp diff --git a/plugins/model/model.vcxproj b/plugins/model/model.vcxproj index fad294d6..23d0d7cd 100644 --- a/plugins/model/model.vcxproj +++ b/plugins/model/model.vcxproj @@ -25,19 +25,19 @@ DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp diff --git a/plugins/shaders/shaders.vcxproj b/plugins/shaders/shaders.vcxproj index 224b4bf7..6803a707 100644 --- a/plugins/shaders/shaders.vcxproj +++ b/plugins/shaders/shaders.vcxproj @@ -25,19 +25,19 @@ DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp diff --git a/plugins/spritemodel/spritemodel.vcxproj b/plugins/spritemodel/spritemodel.vcxproj index 252646aa..cfba7856 100644 --- a/plugins/spritemodel/spritemodel.vcxproj +++ b/plugins/spritemodel/spritemodel.vcxproj @@ -25,19 +25,19 @@ DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp diff --git a/plugins/surface/surface.vcxproj b/plugins/surface/surface.vcxproj index d985e772..1130263e 100644 --- a/plugins/surface/surface.vcxproj +++ b/plugins/surface/surface.vcxproj @@ -25,19 +25,19 @@ DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp diff --git a/plugins/surface_idtech2/surface_idtech2.vcxproj b/plugins/surface_idtech2/surface_idtech2.vcxproj index 938720f2..81caebec 100644 --- a/plugins/surface_idtech2/surface_idtech2.vcxproj +++ b/plugins/surface_idtech2/surface_idtech2.vcxproj @@ -25,19 +25,19 @@ DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp diff --git a/plugins/textool/textool.vcxproj b/plugins/textool/textool.vcxproj index 9f27244b..a38fb815 100644 --- a/plugins/textool/textool.vcxproj +++ b/plugins/textool/textool.vcxproj @@ -25,19 +25,19 @@ DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp diff --git a/plugins/vfspak/vfspak.vcxproj b/plugins/vfspak/vfspak.vcxproj index c3164924..8bdedfd4 100644 --- a/plugins/vfspak/vfspak.vcxproj +++ b/plugins/vfspak/vfspak.vcxproj @@ -25,19 +25,19 @@ DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp diff --git a/plugins/vfspk3/vfspk3.vcxproj b/plugins/vfspk3/vfspk3.vcxproj index e45bac06..f4b91505 100644 --- a/plugins/vfspk3/vfspk3.vcxproj +++ b/plugins/vfspk3/vfspk3.vcxproj @@ -25,19 +25,19 @@ DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp diff --git a/plugins/vfsqlpk3/vfsqlpk3.vcxproj b/plugins/vfsqlpk3/vfsqlpk3.vcxproj index 31312f94..7a985c81 100644 --- a/plugins/vfsqlpk3/vfsqlpk3.vcxproj +++ b/plugins/vfsqlpk3/vfsqlpk3.vcxproj @@ -26,19 +26,19 @@ DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp diff --git a/plugins/vfswad/vfswad.vcxproj b/plugins/vfswad/vfswad.vcxproj index 6af926c6..3c994824 100644 --- a/plugins/vfswad/vfswad.vcxproj +++ b/plugins/vfswad/vfswad.vcxproj @@ -25,19 +25,19 @@ DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp DynamicLibrary - v110 + v110_xp diff --git a/prepare_archive.py b/prepare_archive.py new file mode 100644 index 00000000..d554c0af --- /dev/null +++ b/prepare_archive.py @@ -0,0 +1,30 @@ +import os, time, zipfile, functools, pprint, subprocess + +if ( __name__ == '__main__' ): + date_tag = time.strftime('%Y%m%d') + folder_name = 'GtkRadiant-1.6.4-%s' % date_tag + base_name = '%s.zip' % folder_name + full_path = os.path.join( r'D:\\', base_name ) + + def write_file( z, prefix_path, folder_name, root, fn ): + fullpath = os.path.join( root, fn ) + arcname = fullpath.replace( prefix_path, folder_name ) + print( '%s -> %s' % ( fullpath, arcname ) ) + z.write( fullpath, arcname ) + + z = zipfile.ZipFile( full_path, 'w', zipfile.ZIP_DEFLATED ) + prefix_path = r'D:\GtkRadiant\install' + for root, dirs, files in os.walk( prefix_path, topdown = True ): + if ( root.find( '.svn' ) >= 0 ): + continue + files = filter( + lambda n : not ( + n.endswith( '.lib' ) + or n.endswith( '.pdb' ) + or n.endswith( '.exp' ) ), + files ) + map( functools.partial( write_file, z, prefix_path, folder_name, root ), files ) + z.close() + + # could be nicer to import s3cmd + subprocess.check_call( [ r'C:\Python27\python.exe', r'C:\Python27\Scripts\s3cmd', 'put', full_path, 's3://gtkradiant' ] ) diff --git a/radiant/radiant.vcxproj b/radiant/radiant.vcxproj index c2de1a56..c9a72baf 100644 --- a/radiant/radiant.vcxproj +++ b/radiant/radiant.vcxproj @@ -25,19 +25,19 @@ Application - v110 + v110_xp Application - v110 + v110_xp Application - v110 + v110_xp Application - v110 + v110_xp diff --git a/tools/quake3/common/quake3-common.vcxproj b/tools/quake3/common/quake3-common.vcxproj index 7be06d08..7d2faa75 100644 --- a/tools/quake3/common/quake3-common.vcxproj +++ b/tools/quake3/common/quake3-common.vcxproj @@ -25,19 +25,19 @@ StaticLibrary - v110 + v110_xp StaticLibrary - v110 + v110_xp StaticLibrary - v110 + v110_xp StaticLibrary - v110 + v110_xp diff --git a/tools/quake3/q3data/q3data.vcxproj b/tools/quake3/q3data/q3data.vcxproj index 0cd1ba72..534b6b8a 100644 --- a/tools/quake3/q3data/q3data.vcxproj +++ b/tools/quake3/q3data/q3data.vcxproj @@ -25,24 +25,24 @@ Application - v110 + v110_xp MultiByte true Application - v110 + v110_xp MultiByte true Application - v110 + v110_xp MultiByte Application - v110 + v110_xp MultiByte diff --git a/tools/quake3/q3map2/q3map2.vcxproj b/tools/quake3/q3map2/q3map2.vcxproj index 73432a9a..0add46ac 100644 --- a/tools/quake3/q3map2/q3map2.vcxproj +++ b/tools/quake3/q3map2/q3map2.vcxproj @@ -25,19 +25,19 @@ Application - v110 + v110_xp Application - v110 + v110_xp Application - v110 + v110_xp Application - v110 + v110_xp diff --git a/tools/urt/tools/quake3/q3map2/q3map2_urt.vcxproj b/tools/urt/tools/quake3/q3map2/q3map2_urt.vcxproj index 23899b7c..8c02e9b4 100644 --- a/tools/urt/tools/quake3/q3map2/q3map2_urt.vcxproj +++ b/tools/urt/tools/quake3/q3map2/q3map2_urt.vcxproj @@ -25,25 +25,25 @@ Application - v110 + v110_xp false MultiByte Application - v110 + v110_xp false MultiByte Application - v110 + v110_xp false MultiByte Application - v110 + v110_xp false MultiByte From 8752425ca7c2ec58c9ec4751cda58e70fac05386 Mon Sep 17 00:00:00 2001 From: Timothee Besset Date: Sat, 24 Aug 2013 17:58:08 -0500 Subject: [PATCH 13/16] revert old commit. keep svn working directories in install/ --- apple/Makefile | 1 + config.py | 43 ++++++++++--------------------------------- 2 files changed, 11 insertions(+), 33 deletions(-) diff --git a/apple/Makefile b/apple/Makefile index 14a367f1..4b4303a0 100644 --- a/apple/Makefile +++ b/apple/Makefile @@ -50,6 +50,7 @@ all: install bundle install: -pre-install -gtk-runtime cp -r $(INSTALL) $(RESOURCES) + rm -rf `find $(INSTDIR)/installs -type d -name .svn` bundle: diff --git a/config.py b/config.py index f32ed3ea..63ad8a75 100644 --- a/config.py +++ b/config.py @@ -22,7 +22,6 @@ class Config: self.platform = platform.system() self.cc = 'gcc' self.cxx = 'g++' - self.packs_directory = 'packs' self.install_directory = 'install' # platforms for which to assemble a setup @@ -44,9 +43,6 @@ class Config: def _processCXX( self, ops ): self.cxx = ops - - def _processPacksDir(self, ops ): - self.packs_directory = os.path.normpath( os.path.expanduser( ops[0] ) ) def _processInstallDir( self, ops ): self.install_directory = os.path.normpath( os.path.expanduser( ops[0] ) ) @@ -62,7 +58,6 @@ class Config: operators['config'] = self._processConfig operators['cc'] = self._processCC operators['cxx'] = self._processCXX - operators['packs_directory'] = self._processPacksDir operators['install_directory'] = self._processInstallDir operators['setup_platforms'] = self._processSetupPlatforms operators['setup_packs'] = self._processSetupPacks @@ -253,36 +248,18 @@ class Config: if ( self.platform == 'Darwin' ) : env.Append( LINKFLAGS = [ '-headerpad_max_install_names' ] ) - def SvnCheckoutOrUpdate( self, svn_url, working_copy ): - if ( os.path.exists( working_copy ) ): - cmd = [ 'svn', 'update', working_copy ] + def CheckoutOrUpdate( self, svnurl, path ): + if ( os.path.exists( path ) ): + cmd = [ 'svn', 'update', path ] else: - cmd = [ 'svn', 'checkout', svn_url, working_copy ] + cmd = [ 'svn', 'checkout', svnurl, path ] print( repr( cmd ) ) subprocess.check_call( cmd ) - - def SvnExport( self, working_copy, dest ): - cmd = [ 'svn', 'export', '--force', working_copy, dest ] - print( repr( cmd ) ) - - subprocess.check_call( cmd ) - def FetchGamePacks( self, packs_dir, install_dir ): - if ( not os.path.exists( packs_dir ) ): - os.mkdir( packs_dir ) - - if ( not os.path.exists( install_dir ) ): - os.mkdir( install_dir ) - - for pack in self.setup_packs: - svn_url = 'svn://svn.icculus.org/gtkradiant-gamepacks/%s/trunk' % pack - working_copy = os.path.join( packs_dir, pack) - - self.SvnCheckoutOrUpdate( svn_url, working_copy ) - - dest_dir = os.path.join( install_dir, pack) - - self.SvnExport( working_copy, dest_dir ) + def FetchGamePaks( self, path ): + for pak in self.setup_packs: + svnurl = 'svn://svn.icculus.org/gtkradiant-gamepacks/%s/trunk' % pak + self.CheckoutOrUpdate( svnurl, os.path.join( path, 'installs', pak ) ) def CopyTree( self, src, dst): for root, dirs, files in os.walk( src ): @@ -300,8 +277,8 @@ class Config: except: pass else: - # Fetch remote game packs and install them - self.FetchGamePacks( self.packs_directory, os.path.join( self.install_directory, 'installs' ) ) + # special case, fetch external paks under the local install directory + self.FetchGamePaks( self.install_directory ) # NOTE: unrelated to self.setup_platforms - grab support files and binaries and install them if ( self.platform == 'Windows' ): backup_cwd = os.getcwd() From 5aa744b026bde7ed504cbe775c05734a87ec140a Mon Sep 17 00:00:00 2001 From: "Timothee \"TTimo\" Besset" Date: Sat, 7 Sep 2013 17:39:31 -0500 Subject: [PATCH 14/16] misc fixes, reviewed the urt q3map2 code --- radiant/qe3.h | 8 - tools/urt/tools/quake3/q3map2/bsp.c | 4 - tools/urt/tools/quake3/q3map2/patch.patch | 1891 ----------------- tools/urt/tools/quake3/q3map2/q3map2.dsp | 379 ---- tools/urt/tools/quake3/q3map2/q3map2.dsw | 137 -- tools/urt/tools/quake3/q3map2/q3map2.h | 1 - tools/urt/tools/quake3/q3map2/q3map2.h.rej | 19 - tools/urt/tools/quake3/q3map2/q3map2.opt | Bin 98304 -> 0 bytes tools/urt/tools/quake3/q3map2/q3map2.plg | 86 - tools/urt/tools/quake3/q3map2/q3map2.sln | 190 -- tools/urt/tools/quake3/q3map2/q3map2.suo | Bin 100864 -> 0 bytes .../urt/tools/quake3/q3map2/q3map2.vcproj.rej | 17 - tools/urt/tools/quake3/q3map2/version.h | 4 - 13 files changed, 2736 deletions(-) delete mode 100644 tools/urt/tools/quake3/q3map2/patch.patch delete mode 100644 tools/urt/tools/quake3/q3map2/q3map2.dsp delete mode 100644 tools/urt/tools/quake3/q3map2/q3map2.dsw delete mode 100644 tools/urt/tools/quake3/q3map2/q3map2.h.rej delete mode 100644 tools/urt/tools/quake3/q3map2/q3map2.opt delete mode 100644 tools/urt/tools/quake3/q3map2/q3map2.plg delete mode 100644 tools/urt/tools/quake3/q3map2/q3map2.sln delete mode 100644 tools/urt/tools/quake3/q3map2/q3map2.suo delete mode 100644 tools/urt/tools/quake3/q3map2/q3map2.vcproj.rej delete mode 100644 tools/urt/tools/quake3/q3map2/version.h diff --git a/radiant/qe3.h b/radiant/qe3.h index 62f1a0e5..ed755385 100644 --- a/radiant/qe3.h +++ b/radiant/qe3.h @@ -848,21 +848,13 @@ extern void RunScriptByName( char*, bool ); extern void DoNewColor( int* i1, int* i2, int* i3 ); extern void UpdateSurfaceDialog(); extern void CSG_SplitBrushByFace( brush_t *in, face_t *f, brush_t **front, brush_t **back ); -//extern void HandlePopup(CWnd* pWindow, unsigned int uId); extern z_t z; extern void Select_Scale( float x, float y, float z ); extern void TextureAxisFromPlane( plane_t *pln, vec3_t xv, vec3_t yv ); -//extern void VectorRotate (vec3_t va, vec3_t vb, vec3_t out); -//extern void VectorRotate (vec3_t vIn, vec3_t vRotation, vec3_t vOrigin, vec3_t out); extern qboolean QE_SaveProject( const char* pProjectFile ); -//extern void NewBSP(char* pCommandLine, HWND); -//extern void NewVIS(char* pCommandLine, HWND); -//extern void NewRAD(char* pCommandLine, HWND); extern void RunTools( char* pCommandLine, GtkWidget* hwnd, const char* pPAKFile ); extern void Clamp( float& f, int nClamp ); extern void MemFile_fprintf( MemStream* pMemFile, const char* pText, ... ); -//extern void SaveWindowPlacement(HWND hwnd, const char* pName); -//extern bool LoadWindowPlacement(HWND hwnd, const char* pName); extern qboolean ConfirmModified( void ); extern void DoPatchInspector(); extern void TogglePatchInspector(); diff --git a/tools/urt/tools/quake3/q3map2/bsp.c b/tools/urt/tools/quake3/q3map2/bsp.c index bd064757..24c49420 100644 --- a/tools/urt/tools/quake3/q3map2/bsp.c +++ b/tools/urt/tools/quake3/q3map2/bsp.c @@ -751,10 +751,6 @@ int BSPMain( int argc, char **argv ){ Sys_Printf( "Creating meta surfaces from brush faces\n" ); meta = qtrue; } - else if ( !strcmp( argv[ i ], "-newbsp" ) ) { - Sys_Printf( "Using New BSP Generation Method\n" ); - newbsp = qtrue; - } else if ( !strcmp( argv[ i ], "-patchmeta" ) ) { Sys_Printf( "Creating meta surfaces from patches\n" ); patchMeta = qtrue; diff --git a/tools/urt/tools/quake3/q3map2/patch.patch b/tools/urt/tools/quake3/q3map2/patch.patch deleted file mode 100644 index 277608e6..00000000 --- a/tools/urt/tools/quake3/q3map2/patch.patch +++ /dev/null @@ -1,1891 +0,0 @@ -Index: tools/quake3/q3map2/writebsp.c -=================================================================== ---- tools/quake3/q3map2/writebsp.c (revision 158) -+++ tools/quake3/q3map2/writebsp.c (working copy) -@@ -136,7 +136,6 @@ - bspLeaf_t *leaf_p; - brush_t *b; - drawSurfRef_t *dsr; -- int i = 0; - - - /* check limits */ -Index: tools/quake3/q3map2/facebsp.c -=================================================================== ---- tools/quake3/q3map2/facebsp.c (revision 158) -+++ tools/quake3/q3map2/facebsp.c (working copy) -@@ -180,7 +180,7 @@ - - - c = 0; -- for( list; list != NULL; list = list->next ) -+ for( ; list != NULL; list = list->next ) - c++; - return c; - } -Index: tools/quake3/q3map2/light_ydnar.c -=================================================================== ---- tools/quake3/q3map2/light_ydnar.c (revision 158) -+++ tools/quake3/q3map2/light_ydnar.c (working copy) -@@ -49,6 +49,7 @@ - int i; - float max, gamma; - vec3_t sample; -+ float inv, dif; - - - /* ydnar: scaling necessary for simulating r_overbrightBits on external lightmaps */ -@@ -72,16 +73,51 @@ - /* gamma */ - sample[ i ] = pow( sample[ i ] / 255.0f, gamma ) * 255.0f; - } -+ -+ if (lightmapExposure == 1) -+ { -+ /* clamp with color normalization */ -+ max = sample[ 0 ]; -+ if( sample[ 1 ] > max ) -+ max = sample[ 1 ]; -+ if( sample[ 2 ] > max ) -+ max = sample[ 2 ]; -+ if( max > 255.0f ) -+ VectorScale( sample, (255.0f / max), sample ); -+ } -+ else -+ { -+ if (lightmapExposure==0) -+ { -+ lightmapExposure=1.0f; -+ } -+ inv=1.f/lightmapExposure; -+ //Exposure -+ -+ max = sample[ 0 ]; -+ if( sample[ 1 ] > max ) -+ max = sample[ 1 ]; -+ if( sample[ 2 ] > max ) -+ max = sample[ 2 ]; -+ -+ dif = (1- exp(-max * inv) ) * 255; -+ -+ if (max >0) -+ { -+ dif = dif / max; -+ } -+ else -+ { -+ dif = 0; -+ } -+ -+ for (i=0;i<3;i++) -+ { -+ sample[i]*=dif; -+ } -+ } -+ - -- /* clamp with color normalization */ -- max = sample[ 0 ]; -- if( sample[ 1 ] > max ) -- max = sample[ 1 ]; -- if( sample[ 2 ] > max ) -- max = sample[ 2 ]; -- if( max > 255.0f ) -- VectorScale( sample, (255.0f / max), sample ); -- - /* compensate for ingame overbrighting/bitshifting */ - VectorScale( sample, (1.0f / lightmapCompensate), sample ); - -@@ -384,7 +420,7 @@ - #define NUDGE 0.5f - #define BOGUS_NUDGE -99999.0f - --static int MapSingleLuxel( rawLightmap_t *lm, surfaceInfo_t *info, bspDrawVert_t *dv, vec4_t plane, float pass, vec3_t stv[ 3 ], vec3_t ttv[ 3 ] ) -+static int MapSingleLuxel( rawLightmap_t *lm, surfaceInfo_t *info, bspDrawVert_t *dv, vec4_t plane, float pass, vec3_t stv[ 3 ], vec3_t ttv[ 3 ], vec3_t worldverts[ 3 ] ) - { - int i, x, y, numClusters, *clusters, pointCluster, *cluster; - float *luxel, *origin, *normal, d, lightmapSampleOffset; -@@ -392,6 +428,12 @@ - vec3_t pNormal; - vec3_t vecs[ 3 ]; - vec3_t nudged; -+ vec3_t cverts[ 3 ]; -+ vec3_t temp; -+ vec4_t sideplane, hostplane; -+ vec3_t origintwo; -+ int j, next; -+ float e; - float *nudge; - static float nudges[][ 2 ] = - { -@@ -485,6 +527,51 @@ - /* non axial lightmap projection (explicit xyz) */ - else - VectorCopy( dv->xyz, origin ); -+ -+ ////////////////////// -+ //27's test to make sure samples stay within the triangle boundaries -+ //1) Test the sample origin to see if it lays on the wrong side of any edge (x/y) -+ //2) if it does, nudge it onto the correct side. -+ -+ if (worldverts!=NULL) -+ { -+ for (j=0;j<3;j++) -+ { -+ VectorCopy(worldverts[j],cverts[j]); -+ } -+ PlaneFromPoints(hostplane,cverts[0],cverts[1],cverts[2]); -+ -+ for (j=0;j<3;j++) -+ { -+ for (i=0;i<3;i++) -+ { -+ //build plane using 2 edges and a normal -+ next=(i+1)%3; -+ -+ VectorCopy(cverts[next],temp); -+ VectorAdd(temp,hostplane,temp); -+ PlaneFromPoints(sideplane,cverts[i],cverts[ next ], temp); -+ -+ //planetest sample point -+ e=DotProduct(origin,sideplane); -+ e=e-sideplane[3]; -+ if (e>0) -+ { -+ //we're bad. -+ //VectorClear(origin); -+ //Move the sample point back inside triangle bounds -+ origin[0]-=sideplane[0]*(e+1); -+ origin[1]-=sideplane[1]*(e+1); -+ origin[2]-=sideplane[2]*(e+1); -+#ifdef DEBUG_27_1 -+ VectorClear(origin); -+#endif -+ } -+ } -+ } -+ } -+ -+ //////////////////////// - - /* planar surfaces have precalculated lightmap vectors for nudging */ - if( lm->plane != NULL ) -@@ -516,8 +603,13 @@ - else - origin[ lm->axisNum ] += lightmapSampleOffset; - -+ VectorCopy(origin,origintwo); -+ origintwo[0]+=vecs[2][0]; -+ origintwo[1]+=vecs[2][1]; -+ origintwo[2]+=vecs[2][2]; -+ - /* get cluster */ -- pointCluster = ClusterForPointExtFilter( origin, LUXEL_EPSILON, numClusters, clusters ); -+ pointCluster = ClusterForPointExtFilter( origintwo, LUXEL_EPSILON, numClusters, clusters ); - - /* another retarded hack, storing nudge count in luxel[ 1 ] */ - luxel[ 1 ] = 0.0f; -@@ -533,14 +625,14 @@ - for( i = 0; i < 3; i++ ) - { - /* set nudged point*/ -- nudged[ i ] = origin[ i ] + (nudge[ 0 ] * vecs[ 0 ][ i ]) + (nudge[ 1 ] * vecs[ 1 ][ i ]); -+ nudged[ i ] = origintwo[ i ] + (nudge[ 0 ] * vecs[ 0 ][ i ]) + (nudge[ 1 ] * vecs[ 1 ][ i ]); - } - nudge += 2; - - /* get pvs cluster */ - pointCluster = ClusterForPointExtFilter( nudged, LUXEL_EPSILON, numClusters, clusters ); //% + 0.625 ); -- if( pointCluster >= 0 ) -- VectorCopy( nudged, origin ); -+ //if( pointCluster >= 0 ) -+ // VectorCopy( nudged, origin ); - luxel[ 1 ] += 1.0f; - } - } -@@ -550,8 +642,8 @@ - { - VectorMA( dv->xyz, lightmapSampleOffset, dv->normal, nudged ); - pointCluster = ClusterForPointExtFilter( nudged, LUXEL_EPSILON, numClusters, clusters ); -- if( pointCluster >= 0 ) -- VectorCopy( nudged, origin ); -+ //if( pointCluster >= 0 ) -+ // VectorCopy( nudged, origin ); - luxel[ 1 ] += 1.0f; - } - -@@ -597,7 +689,7 @@ - than the distance between two luxels (thanks jc :) - */ - --static void MapTriangle_r( rawLightmap_t *lm, surfaceInfo_t *info, bspDrawVert_t *dv[ 3 ], vec4_t plane, vec3_t stv[ 3 ], vec3_t ttv[ 3 ] ) -+static void MapTriangle_r( rawLightmap_t *lm, surfaceInfo_t *info, bspDrawVert_t *dv[ 3 ], vec4_t plane, vec3_t stv[ 3 ], vec3_t ttv[ 3 ], vec3_t worldverts[ 3 ] ) - { - bspDrawVert_t mid, *dv2[ 3 ]; - int max; -@@ -645,7 +737,7 @@ - - /* split the longest edge and map it */ - LerpDrawVert( dv[ max ], dv[ (max + 1) % 3 ], &mid ); -- MapSingleLuxel( lm, info, &mid, plane, 1, stv, ttv ); -+ MapSingleLuxel( lm, info, &mid, plane, 1, stv, ttv, worldverts ); - - /* push the point up a little bit to account for fp creep (fixme: revisit this) */ - //% VectorMA( mid.xyz, 2.0f, mid.normal, mid.xyz ); -@@ -653,12 +745,12 @@ - /* recurse to first triangle */ - VectorCopy( dv, dv2 ); - dv2[ max ] = ∣ -- MapTriangle_r( lm, info, dv2, plane, stv, ttv ); -+ MapTriangle_r( lm, info, dv2, plane, stv, ttv, worldverts ); - - /* recurse to second triangle */ - VectorCopy( dv, dv2 ); - dv2[ (max + 1) % 3 ] = ∣ -- MapTriangle_r( lm, info, dv2, plane, stv, ttv ); -+ MapTriangle_r( lm, info, dv2, plane, stv, ttv, worldverts ); - } - - -@@ -674,6 +766,7 @@ - int i; - vec4_t plane; - vec3_t *stv, *ttv, stvStatic[ 3 ], ttvStatic[ 3 ]; -+ vec3_t worldverts[ 3 ]; - - - /* get plane if possible */ -@@ -699,16 +792,20 @@ - ttv = NULL; - } - -+ VectorCopy( dv[ 0 ]->xyz, worldverts[ 0 ] ); -+ VectorCopy( dv[ 1 ]->xyz, worldverts[ 1 ] ); -+ VectorCopy( dv[ 2 ]->xyz, worldverts[ 2 ] ); -+ - /* map the vertexes */ -- MapSingleLuxel( lm, info, dv[ 0 ], plane, 1, stv, ttv ); -- MapSingleLuxel( lm, info, dv[ 1 ], plane, 1, stv, ttv ); -- MapSingleLuxel( lm, info, dv[ 2 ], plane, 1, stv, ttv ); -+ MapSingleLuxel( lm, info, dv[ 0 ], plane, 1, stv, ttv, worldverts ); -+ MapSingleLuxel( lm, info, dv[ 1 ], plane, 1, stv, ttv, worldverts ); -+ MapSingleLuxel( lm, info, dv[ 2 ], plane, 1, stv, ttv, worldverts ); - - /* 2002-11-20: prefer axial triangle edges */ - if( mapNonAxial ) - { - /* subdivide the triangle */ -- MapTriangle_r( lm, info, dv, plane, stv, ttv ); -+ MapTriangle_r( lm, info, dv, plane, stv, ttv, worldverts ); - return qtrue; - } - -@@ -730,7 +827,7 @@ - dv2[ 2 ] = dv[ (i + 1) % 3 ]; - - /* map the degenerate triangle */ -- MapTriangle_r( lm, info, dv2, plane, stv, ttv ); -+ MapTriangle_r( lm, info, dv2, plane, stv, ttv, worldverts ); - } - } - -@@ -792,8 +889,8 @@ - LerpDrawVert( dv[ max + 2 ], dv[ (max + 3) % 4 ], &mid[ 1 ] ); - - /* map the vertexes */ -- MapSingleLuxel( lm, info, &mid[ 0 ], plane, 1, stv, ttv ); -- MapSingleLuxel( lm, info, &mid[ 1 ], plane, 1, stv, ttv ); -+ MapSingleLuxel( lm, info, &mid[ 0 ], plane, 1, stv, ttv, NULL ); -+ MapSingleLuxel( lm, info, &mid[ 1 ], plane, 1, stv, ttv, NULL ); - - /* 0 and 2 */ - if( max == 0 ) -@@ -878,10 +975,10 @@ - } - - /* map the vertexes */ -- MapSingleLuxel( lm, info, dv[ 0 ], plane, 1, stv, ttv ); -- MapSingleLuxel( lm, info, dv[ 1 ], plane, 1, stv, ttv ); -- MapSingleLuxel( lm, info, dv[ 2 ], plane, 1, stv, ttv ); -- MapSingleLuxel( lm, info, dv[ 3 ], plane, 1, stv, ttv ); -+ MapSingleLuxel( lm, info, dv[ 0 ], plane, 1, stv, ttv, NULL ); -+ MapSingleLuxel( lm, info, dv[ 1 ], plane, 1, stv, ttv, NULL ); -+ MapSingleLuxel( lm, info, dv[ 2 ], plane, 1, stv, ttv, NULL ); -+ MapSingleLuxel( lm, info, dv[ 3 ], plane, 1, stv, ttv, NULL ); - - /* subdivide the quad */ - MapQuad_r( lm, info, dv, plane, stv, ttv ); -@@ -1173,7 +1270,7 @@ - continue; - - /* map the fake vert */ -- MapSingleLuxel( lm, NULL, &fake, lm->plane, pass, NULL, NULL ); -+ MapSingleLuxel( lm, NULL, &fake, lm->plane, pass, NULL, NULL, NULL ); - } - } - } -@@ -1767,6 +1864,8 @@ - float tests[ 4 ][ 2 ] = { { 0.0f, 0 }, { 1, 0 }, { 0, 1 }, { 1, 1 } }; - trace_t trace; - float stackLightLuxels[ STACK_LL_SIZE ]; -+ vec3_t flood; -+ float *floodlight; - - - /* bail if this number exceeds the number of raw lightmaps */ -@@ -1963,22 +2062,32 @@ - deluxel = SUPER_DELUXEL( x, y ); - origin = SUPER_ORIGIN( x, y ); - normal = SUPER_NORMAL( x, y ); -- -- /* set contribution count */ -- lightLuxel[ 3 ] = 1.0f; -- -- /* setup trace */ -- trace.cluster = *cluster; -- VectorCopy( origin, trace.origin ); -- VectorCopy( normal, trace.normal ); -- -- /* get light for this sample */ -- LightContributionToSample( &trace ); -- VectorCopy( trace.color, lightLuxel ); -- -- /* add to count */ -- if( trace.color[ 0 ] || trace.color[ 1 ] || trace.color[ 2 ] ) -+ -+ ////////// 27's temp hack for testing edge clipping //// -+ if( origin[0]==0 && origin[1]==0 && origin[2]==0 ) -+ { -+ lightLuxel[ 1 ] = 255; -+ lightLuxel[ 3 ] = 1.0f; - totalLighted++; -+ } -+ else -+ { -+ /* set contribution count */ -+ lightLuxel[ 3 ] = 1.0f; -+ -+ /* setup trace */ -+ trace.cluster = *cluster; -+ VectorCopy( origin, trace.origin ); -+ VectorCopy( normal, trace.normal ); -+ -+ /* get light for this sample */ -+ LightContributionToSample( &trace ); -+ VectorCopy( trace.color, lightLuxel ); -+ -+ /* add to count */ -+ if( trace.color[ 0 ] || trace.color[ 1 ] || trace.color[ 2 ] ) -+ totalLighted++; -+ } - - /* add to light direction map (fixme: use luxel normal as starting point for deluxel?) */ - if( deluxemap ) -@@ -2223,6 +2332,78 @@ - FreeTraceLights( &trace ); - - /* ----------------------------------------------------------------- -+ floodlight pass -+ ----------------------------------------------------------------- */ -+ -+ if( floodlighty ) -+ { -+ /* walk lightmaps */ -+ for( lightmapNum = 0; lightmapNum < MAX_LIGHTMAPS; lightmapNum++ ) -+ { -+ /* early out */ -+ if( lm->superLuxels[ lightmapNum ] == NULL ) -+ continue; -+ -+ /* apply floodlight to each luxel */ -+ for( y = 0; y < lm->sh; y++ ) -+ { -+ for( x = 0; x < lm->sw; x++ ) -+ { -+ /* get cluster */ -+ cluster = SUPER_CLUSTER( x, y ); -+ //% if( *cluster < 0 ) -+ //% continue; -+ -+ /* get particulars */ -+ luxel = SUPER_LUXEL( lightmapNum, x, y ); -+ floodlight = SUPER_FLOODLIGHT( x, y ); -+ -+ flood[0]=floodlightRGB[0]*floodlightIntensity; -+ flood[1]=floodlightRGB[1]*floodlightIntensity; -+ flood[2]=floodlightRGB[2]*floodlightIntensity; -+ -+ /* scale light value */ -+ VectorScale( flood, *floodlight, flood ); -+ luxel[0]+=flood[0]; -+ luxel[1]+=flood[1]; -+ luxel[2]+=flood[2]; -+ -+ if (luxel[3]==0) luxel[3]=1; -+ } -+ } -+ } -+ } -+ -+ if (debugnormals) -+ { -+ for( lightmapNum = 0; lightmapNum < MAX_LIGHTMAPS; lightmapNum++ ) -+ { -+ /* early out */ -+ if( lm->superLuxels[ lightmapNum ] == NULL ) -+ continue; -+ -+ for( y = 0; y < lm->sh; y++ ) -+ { -+ for( x = 0; x < lm->sw; x++ ) -+ { -+ /* get cluster */ -+ cluster = SUPER_CLUSTER( x, y ); -+ //% if( *cluster < 0 ) -+ //% continue; -+ -+ /* get particulars */ -+ luxel = SUPER_LUXEL( lightmapNum, x, y ); -+ normal = SUPER_NORMAL ( x, y ); -+ -+ luxel[0]=(normal[0]*127)+127; -+ luxel[1]=(normal[1]*127)+127; -+ luxel[2]=(normal[2]*127)+127; -+ } -+ } -+ } -+ } -+ -+ /* ----------------------------------------------------------------- - dirt pass - ----------------------------------------------------------------- */ - -@@ -3112,7 +3293,7 @@ - int i, x, y, z, x1, y1, z1; - light_t *light, *light2, **owner; - bspLeaf_t *leaf; -- vec3_t origin, dir, mins, maxs, nullVector = { 0, 0, 0 }; -+ vec3_t origin, dir, mins, maxs; - float radius, intensity; - light_t *buckets[ 256 ]; - -@@ -3587,7 +3768,320 @@ - CreateTraceLightsForBounds( mins, maxs, normal, info->numSurfaceClusters, &surfaceClusters[ info->firstSurfaceCluster ], LIGHT_SURFACES, trace ); - } - -+///////////////////////////////////////////////////////////// - -+#define FLOODLIGHT_CONE_ANGLE 88 /* degrees */ -+#define FLOODLIGHT_NUM_ANGLE_STEPS 16 -+#define FLOODLIGHT_NUM_ELEVATION_STEPS 4 -+#define FLOODLIGHT_NUM_VECTORS (FLOODLIGHT_NUM_ANGLE_STEPS * FLOODLIGHT_NUM_ELEVATION_STEPS) - -+static vec3_t floodVectors[ FLOODLIGHT_NUM_VECTORS ]; -+static int numFloodVectors = 0; - -+void SetupFloodLight( void ) -+{ -+ int i, j; -+ float angle, elevation, angleStep, elevationStep; -+ const char *value; -+ double v1,v2,v3,v4,v5; -+ -+ /* note it */ -+ Sys_FPrintf( SYS_VRB, "--- SetupFloodLight ---\n" ); -+ -+ /* calculate angular steps */ -+ angleStep = DEG2RAD( 360.0f / FLOODLIGHT_NUM_ANGLE_STEPS ); -+ elevationStep = DEG2RAD( FLOODLIGHT_CONE_ANGLE / FLOODLIGHT_NUM_ELEVATION_STEPS ); -+ -+ /* iterate angle */ -+ angle = 0.0f; -+ for( i = 0, angle = 0.0f; i < FLOODLIGHT_NUM_ANGLE_STEPS; i++, angle += angleStep ) -+ { -+ /* iterate elevation */ -+ for( j = 0, elevation = elevationStep * 0.5f; j < FLOODLIGHT_NUM_ELEVATION_STEPS; j++, elevation += elevationStep ) -+ { -+ floodVectors[ numFloodVectors ][ 0 ] = sin( elevation ) * cos( angle ); -+ floodVectors[ numFloodVectors ][ 1 ] = sin( elevation ) * sin( angle ); -+ floodVectors[ numFloodVectors ][ 2 ] = cos( elevation ); -+ numFloodVectors++; -+ } -+ } -+ -+ /* emit some statistics */ -+ Sys_FPrintf( SYS_VRB, "%9d numFloodVectors\n", numFloodVectors ); - -+ /* floodlight */ -+ value = ValueForKey( &entities[ 0 ], "_floodlight" ); -+ -+ if( value[ 0 ] != '\0' ) -+ { -+ v1=v2=v3=0; -+ v4=floodlightDistance; -+ v5=floodlightIntensity; -+ -+ sscanf( value, "%lf %lf %lf %lf %lf", &v1, &v2, &v3, &v4, &v5); -+ -+ floodlightRGB[0]=v1; -+ floodlightRGB[1]=v2; -+ floodlightRGB[2]=v3; -+ -+ if (VectorLength(floodlightRGB)==0) -+ { -+ VectorSet(floodlightRGB,240,240,255); -+ } -+ -+ if (v4<1) v4=1024; -+ if (v5<1) v5=128; -+ -+ floodlightDistance=v4; -+ floodlightIntensity=v5; -+ -+ floodlighty = qtrue; -+ Sys_Printf( "FloodLighting enabled via worldspawn _floodlight key.\n" ); -+ } -+ else -+ { -+ VectorSet(floodlightRGB,240,240,255); -+ //floodlighty = qtrue; -+ //Sys_Printf( "FloodLighting enabled via worldspawn _floodlight key.\n" ); -+ } -+ VectorNormalize(floodlightRGB,floodlightRGB); -+} -+ -+//27 - lighttracer style ambient occlusion light hack. -+//Kudos to the dirtmapping author for most of this source. -+void FloodLightRawLightmap( int rawLightmapNum ) -+{ -+ int i, x, y, sx, sy, *cluster; -+ float *origin, *normal, *floodlight, *floodlight2, average, samples; -+ rawLightmap_t *lm; -+ surfaceInfo_t *info; -+ trace_t trace; -+ -+ /* bail if this number exceeds the number of raw lightmaps */ -+ if( rawLightmapNum >= numRawLightmaps ) -+ return; -+ -+ /* get lightmap */ -+ lm = &rawLightmaps[ rawLightmapNum ]; -+ -+ memset(&trace,0,sizeof(trace_t)); -+ /* setup trace */ -+ trace.testOcclusion = qtrue; -+ trace.forceSunlight = qfalse; -+ trace.twoSided = qtrue; -+ trace.recvShadows = lm->recvShadows; -+ trace.numSurfaces = lm->numLightSurfaces; -+ trace.surfaces = &lightSurfaces[ lm->firstLightSurface ]; -+ trace.inhibitRadius = DEFAULT_INHIBIT_RADIUS; -+ trace.testAll = qfalse; -+ trace.distance = 1024; -+ -+ /* twosided lighting (may or may not be a good idea for lightmapped stuff) */ -+ //trace.twoSided = qfalse; -+ for( i = 0; i < trace.numSurfaces; i++ ) -+ { -+ /* get surface */ -+ info = &surfaceInfos[ trace.surfaces[ i ] ]; -+ -+ /* check twosidedness */ -+ if( info->si->twoSided ) -+ { -+ trace.twoSided = qtrue; -+ break; -+ } -+ } -+ -+ /* gather dirt */ -+ for( y = 0; y < lm->sh; y++ ) -+ { -+ for( x = 0; x < lm->sw; x++ ) -+ { -+ /* get luxel */ -+ cluster = SUPER_CLUSTER( x, y ); -+ origin = SUPER_ORIGIN( x, y ); -+ normal = SUPER_NORMAL( x, y ); -+ floodlight = SUPER_FLOODLIGHT( x, y ); -+ -+ /* set default dirt */ -+ *floodlight = 0.0f; -+ -+ /* only look at mapped luxels */ -+ if( *cluster < 0 ) -+ continue; -+ -+ /* copy to trace */ -+ trace.cluster = *cluster; -+ VectorCopy( origin, trace.origin ); -+ VectorCopy( normal, trace.normal ); -+ -+ -+ -+ /* get dirt */ -+ *floodlight = FloodLightForSample( &trace ); -+ } -+ } -+ -+ /* testing no filtering */ -+ return; -+ -+ /* filter "dirt" */ -+ for( y = 0; y < lm->sh; y++ ) -+ { -+ for( x = 0; x < lm->sw; x++ ) -+ { -+ /* get luxel */ -+ cluster = SUPER_CLUSTER( x, y ); -+ floodlight = SUPER_FLOODLIGHT( x, y ); -+ -+ /* filter dirt by adjacency to unmapped luxels */ -+ average = *floodlight; -+ samples = 1.0f; -+ for( sy = (y - 1); sy <= (y + 1); sy++ ) -+ { -+ if( sy < 0 || sy >= lm->sh ) -+ continue; -+ -+ for( sx = (x - 1); sx <= (x + 1); sx++ ) -+ { -+ if( sx < 0 || sx >= lm->sw || (sx == x && sy == y) ) -+ continue; -+ -+ /* get neighboring luxel */ -+ cluster = SUPER_CLUSTER( sx, sy ); -+ floodlight2 = SUPER_FLOODLIGHT( sx, sy ); -+ if( *cluster < 0 || *floodlight2 <= 0.0f ) -+ continue; -+ -+ /* add it */ -+ average += *floodlight2; -+ samples += 1.0f; -+ } -+ -+ /* bail */ -+ if( samples <= 0.0f ) -+ break; -+ } -+ -+ /* bail */ -+ if( samples <= 0.0f ) -+ continue; -+ -+ /* scale dirt */ -+ *floodlight = average / samples; -+ } -+ } -+} -+ -+/* -+FloodLightForSample() -+calculates floodlight value for a given sample -+once again, kudos to the dirtmapping coder -+*/ -+float FloodLightForSample( trace_t *trace ) -+{ -+ int i; -+ float d; -+ float contribution; -+ int sub = 0; -+ float gatherLight, outLight; -+ vec3_t normal, worldUp, myUp, myRt, direction, displacement; -+ float dd; -+ int vecs = 0; -+ -+ gatherLight=0; -+ /* dummy check */ -+ //if( !dirty ) -+ // return 1.0f; -+ if( trace == NULL || trace->cluster < 0 ) -+ return 0.0f; -+ -+ -+ /* setup */ -+ dd = floodlightDistance; -+ VectorCopy( trace->normal, normal ); -+ -+ /* check if the normal is aligned to the world-up */ -+ if( normal[ 0 ] == 0.0f && normal[ 1 ] == 0.0f ) -+ { -+ if( normal[ 2 ] == 1.0f ) -+ { -+ VectorSet( myRt, 1.0f, 0.0f, 0.0f ); -+ VectorSet( myUp, 0.0f, 1.0f, 0.0f ); -+ } -+ else if( normal[ 2 ] == -1.0f ) -+ { -+ VectorSet( myRt, -1.0f, 0.0f, 0.0f ); -+ VectorSet( myUp, 0.0f, 1.0f, 0.0f ); -+ } -+ } -+ else -+ { -+ VectorSet( worldUp, 0.0f, 0.0f, 1.0f ); -+ CrossProduct( normal, worldUp, myRt ); -+ VectorNormalize( myRt, myRt ); -+ CrossProduct( myRt, normal, myUp ); -+ VectorNormalize( myUp, myUp ); -+ } -+ -+ /* iterate through ordered vectors */ -+ for( i = 0; i < numFloodVectors; i++ ) -+ { -+ if (floodlight_lowquality==qtrue) -+ { -+ if (rand()%10 != 0 ) continue; -+ } -+ -+ vecs++; -+ -+ /* transform vector into tangent space */ -+ direction[ 0 ] = myRt[ 0 ] * floodVectors[ i ][ 0 ] + myUp[ 0 ] * floodVectors[ i ][ 1 ] + normal[ 0 ] * floodVectors[ i ][ 2 ]; -+ direction[ 1 ] = myRt[ 1 ] * floodVectors[ i ][ 0 ] + myUp[ 1 ] * floodVectors[ i ][ 1 ] + normal[ 1 ] * floodVectors[ i ][ 2 ]; -+ direction[ 2 ] = myRt[ 2 ] * floodVectors[ i ][ 0 ] + myUp[ 2 ] * floodVectors[ i ][ 1 ] + normal[ 2 ] * floodVectors[ i ][ 2 ]; -+ -+ /* set endpoint */ -+ VectorMA( trace->origin, dd, direction, trace->end ); -+ -+ //VectorMA( trace->origin, 1, direction, trace->origin ); -+ -+ SetupTrace( trace ); -+ /* trace */ -+ TraceLine( trace ); -+ contribution=1; -+ -+ if (trace->compileFlags & C_SKY ) -+ { -+ contribution=1.0f; -+ } -+ else if ( trace->opaque ) -+ { -+ VectorSubtract( trace->hit, trace->origin, displacement ); -+ d=VectorLength( displacement ); -+ -+ // d=trace->distance; -+ //if (d>256) gatherDirt+=1; -+ contribution=d/dd; -+ if (contribution>1) contribution=1.0f; -+ -+ //gatherDirt += 1.0f - ooDepth * VectorLength( displacement ); -+ } -+ -+ gatherLight+=contribution; -+ } -+ -+ /* early out */ -+ if( gatherLight <= 0.0f ) -+ return 0.0f; -+ -+ sub=vecs; -+ -+ if (sub<1) sub=1; -+ gatherLight/=(sub); -+ -+ outLight=gatherLight; -+ if( outLight > 1.0f ) -+ outLight = 1.0f; -+ -+ /* return to sender */ -+ return outLight; -+} -+ -Index: tools/quake3/q3map2/light.c -=================================================================== ---- tools/quake3/q3map2/light.c (revision 158) -+++ tools/quake3/q3map2/light.c (working copy) -@@ -1378,6 +1378,56 @@ - break; - } - -+ /////// Floodlighting for point ////////////////// -+ //do our floodlight ambient occlusion loop, and add a single contribution based on the brightest dir -+ if (floodlighty) -+ { -+ int q; -+ float addSize,f; -+ vec3_t col,dir; -+ col[0]=col[1]=col[2]=floodlightIntensity; -+ dir[0]=dir[1]=0; -+ dir[2]=1; -+ -+ trace.testOcclusion = qtrue; -+ trace.forceSunlight = qfalse; -+ trace.inhibitRadius = DEFAULT_INHIBIT_RADIUS; -+ trace.testAll = qtrue; -+ -+ for (q=0;q<2;q++) -+ { -+ if (q==0) //upper hemisphere -+ { -+ trace.normal[0]=0; -+ trace.normal[1]=0; -+ trace.normal[2]=1; -+ } -+ else //lower hemisphere -+ { -+ trace.normal[0]=0; -+ trace.normal[1]=0; -+ trace.normal[2]=-1; -+ } -+ -+ f = FloodLightForSample(&trace); -+ -+ contributions[ numCon ].color[0]=col[0]*f; -+ contributions[ numCon ].color[1]=col[1]*f; -+ contributions[ numCon ].color[2]=col[2]*f; -+ -+ contributions[ numCon ].dir[0]=dir[0]; -+ contributions[ numCon ].dir[1]=dir[1]; -+ contributions[ numCon ].dir[2]=dir[2]; -+ -+ contributions[ numCon ].style = 0; -+ numCon++; -+ /* push average direction around */ -+ addSize = VectorLength( col ); -+ VectorMA( gp->dir, addSize, dir, gp->dir ); -+ } -+ } -+ ///////////////////// -+ - /* normalize to get primary light direction */ - VectorNormalize( gp->dir, gp->dir ); - -@@ -1420,6 +1470,9 @@ - - /* ambient light will be at 1/4 the value of directed light */ - /* (ydnar: nuke this in favor of more dramatic lighting?) */ -+ /* (PM: how about actually making it work? d=1 when it got here for single lights/sun :P */ -+// d = 0.25f; -+ /* (Hobbes: always setting it to .25 is hardly any better) */ - d = 0.25f * (1.0f - d); - VectorMA( gp->ambient[ j ], d, contributions[ i ].color, gp->ambient[ j ] ); - } -@@ -1661,6 +1714,12 @@ - RunThreadsOnIndividual( numRawLightmaps, qtrue, DirtyRawLightmap ); - } - -+ /* floodlight them up */ -+ if( floodlighty ) -+ { -+ Sys_Printf( "--- FloodlightRawLightmap ---\n" ); -+ RunThreadsOnIndividual( numRawLightmaps, qtrue, FloodLightRawLightmap ); -+ } - - /* ydnar: set up light envelopes */ - SetupEnvelopes( qfalse, fast ); -@@ -1836,6 +1895,14 @@ - i++; - } - -+ else if( !strcmp( argv[ i ], "-exposure" ) ) -+ { -+ f = atof( argv[ i + 1 ] ); -+ lightmapExposure = f; -+ Sys_Printf( "Lighting exposure set to %f\n", lightmapExposure ); -+ i++; -+ } -+ - else if( !strcmp( argv[ i ], "-compensate" ) ) - { - f = atof( argv[ i + 1 ] ); -@@ -2191,6 +2258,21 @@ - cpmaHack = qtrue; - Sys_Printf( "Enabling Challenge Pro Mode Asstacular Vertex Lighting Mode (tm)\n" ); - } -+ else if( !strcmp( argv[ i ], "-floodlight" ) ) -+ { -+ floodlighty = qtrue; -+ Sys_Printf( "FloodLighting enabled\n" ); -+ } -+ else if( !strcmp( argv[ i ], "-debugnormals" ) ) -+ { -+ debugnormals = qtrue; -+ Sys_Printf( "DebugNormals enabled\n" ); -+ } -+ else if( !strcmp( argv[ i ], "-lowquality" ) ) -+ { -+ floodlight_lowquality = qtrue; -+ Sys_Printf( "Low Quality FloodLighting enabled\n" ); -+ } - - /* r7: dirtmapping */ - else if( !strcmp( argv[ i ], "-dirty" ) ) -@@ -2279,6 +2361,7 @@ - /* ydnar: set up optimization */ - SetupBrushes(); - SetupDirt(); -+ SetupFloodLight(); - SetupSurfaceLightmaps(); - - /* initialize the surface facet tracing */ -Index: tools/quake3/q3map2/game_etut.h -=================================================================== ---- tools/quake3/q3map2/game_etut.h (revision 158) -+++ tools/quake3/q3map2/game_etut.h (working copy) -@@ -148,6 +148,7 @@ - qfalse, /* wolf lighting model? */ - 128, /* lightmap width/height */ - 2.2f, /* lightmap gamma */ -+ 1.0f, /* lightmap exposure */ - 1.0f, /* lightmap compensate */ - "IBSP", /* bsp file prefix */ - 47, /* bsp file version */ -Index: tools/quake3/q3map2/brush.c -=================================================================== ---- tools/quake3/q3map2/brush.c (revision 158) -+++ tools/quake3/q3map2/brush.c (working copy) -@@ -78,7 +78,7 @@ - - - /* count brushes */ -- for( brushes; brushes != NULL; brushes = brushes->next ) -+ for( ; brushes != NULL; brushes = brushes->next ) - c++; - return c; - } -@@ -122,7 +122,7 @@ - - - /* error check */ -- if( *((int*) b) == 0xFEFEFEFE ) -+ if( *((unsigned int*) b) == 0xFEFEFEFE ) - { - Sys_FPrintf( SYS_VRB, "WARNING: Attempt to free an already freed brush!\n" ); - return; -@@ -135,7 +135,7 @@ - - /* ydnar: overwrite it */ - memset( b, 0xFE, (int) &(((brush_t*) 0)->sides[ b->numsides ]) ); -- *((int*) b) = 0xFEFEFEFE; -+ *((unsigned int*) b) = 0xFEFEFEFE; - - /* free it */ - free( b ); -@@ -156,7 +156,7 @@ - - - /* walk brush list */ -- for( brushes; brushes != NULL; brushes = next ) -+ for( ; brushes != NULL; brushes = next ) - { - next = brushes->next; - FreeBrush( brushes ); -Index: tools/quake3/q3map2/game_jk2.h -=================================================================== ---- tools/quake3/q3map2/game_jk2.h (revision 158) -+++ tools/quake3/q3map2/game_jk2.h (working copy) -@@ -64,6 +64,7 @@ - qfalse, /* wolf lighting model? */ - 128, /* lightmap width/height */ - 1.0f, /* lightmap gamma */ -+ 1.0f, /* lightmap exposure */ - 1.0f, /* lightmap compensate */ - "RBSP", /* bsp file prefix */ - 1, /* bsp file version */ -Index: tools/quake3/q3map2/lightmaps_ydnar.c -=================================================================== ---- tools/quake3/q3map2/lightmaps_ydnar.c (revision 158) -+++ tools/quake3/q3map2/lightmaps_ydnar.c (working copy) -@@ -414,6 +414,12 @@ - lm->superNormals = safe_malloc( size ); - memset( lm->superNormals, 0, size ); - -+ /* allocate floodlight map storage */ -+ size = lm->sw * lm->sh * SUPER_FLOODLIGHT_SIZE * sizeof( float ); -+ if( lm->superFloodLight == NULL ) -+ lm->superFloodLight = safe_malloc( size ); -+ memset( lm->superFloodLight, 0, size ); -+ - /* allocate cluster map storage */ - size = lm->sw * lm->sh * sizeof( int ); - if( lm->superClusters == NULL ) -Index: tools/quake3/q3map2/game_ja.h -=================================================================== ---- tools/quake3/q3map2/game_ja.h (revision 158) -+++ tools/quake3/q3map2/game_ja.h (working copy) -@@ -67,6 +67,7 @@ - qfalse, /* wolf lighting model? */ - 128, /* lightmap width/height */ - 1.0f, /* lightmap gamma */ -+ 1.0f, /* lightmap exposure */ - 1.0f, /* lightmap compensate */ - "RBSP", /* bsp file prefix */ - 1, /* bsp file version */ -Index: tools/quake3/q3map2/game_tremulous.h -=================================================================== ---- tools/quake3/q3map2/game_tremulous.h (revision 158) -+++ tools/quake3/q3map2/game_tremulous.h (working copy) -@@ -70,6 +70,7 @@ - qfalse, /* wolf lighting model? */ - 128, /* lightmap width/height */ - 1.0f, /* lightmap gamma */ -+ 1.0f, /* lightmap exposure */ - 1.0f, /* lightmap compensate */ - "IBSP", /* bsp file prefix */ - 46, /* bsp file version */ -Index: tools/quake3/q3map2/game_wolfet.h -=================================================================== ---- tools/quake3/q3map2/game_wolfet.h (revision 158) -+++ tools/quake3/q3map2/game_wolfet.h (working copy) -@@ -66,6 +66,7 @@ - qtrue, /* wolf lighting model? */ - 128, /* lightmap width/height */ - 1.0f, /* lightmap gamma */ -+ 1.0f, /* lightmap exposure */ - 1.0f, /* lightmap compensate */ - "IBSP", /* bsp file prefix */ - 47, /* bsp file version */ -Index: tools/quake3/q3map2/model.c -=================================================================== ---- tools/quake3/q3map2/model.c (revision 158) -+++ tools/quake3/q3map2/model.c (working copy) -@@ -266,7 +266,7 @@ - continue; - - /* fix the surface's normals */ -- PicoFixSurfaceNormals( surface ); -+ //PicoFixSurfaceNormals( surface ); - - /* allocate a surface (ydnar: gs mods) */ - ds = AllocDrawSurface( SURFACE_TRIANGLES ); -@@ -521,7 +521,15 @@ - else - free( buildBrush ); - } -+ else -+ { -+ Sys_Printf( "WARNING: Model %s unable to generate brush - Case 1.\n", name ); -+ } - } -+ else -+ { -+ Sys_Printf( "WARNING: Model %s unable to generate brush - Case 2.\n", name ); -+ } - } - } - } -Index: tools/quake3/q3map2/light_bounce.c -=================================================================== ---- tools/quake3/q3map2/light_bounce.c (revision 158) -+++ tools/quake3/q3map2/light_bounce.c (working copy) -@@ -510,7 +510,7 @@ - break; - - case MST_TRIANGLE_SOUP: -- numTriangleDiffuseLights; -+ numTriangleDiffuseLights++; - break; - - case MST_PATCH: -Index: tools/quake3/q3map2/game_wolf.h -=================================================================== ---- tools/quake3/q3map2/game_wolf.h (revision 158) -+++ tools/quake3/q3map2/game_wolf.h (working copy) -@@ -129,6 +129,7 @@ - qtrue, /* wolf lighting model? */ - 128, /* lightmap width/height */ - 1.0f, /* lightmap gamma */ -+ 1.0f, /* lightmap exposure */ - 1.0f, /* lightmap compensate */ - "IBSP", /* bsp file prefix */ - 47, /* bsp file version */ -Index: tools/quake3/q3map2/game_sof2.h -=================================================================== ---- tools/quake3/q3map2/game_sof2.h (revision 158) -+++ tools/quake3/q3map2/game_sof2.h (working copy) -@@ -139,6 +139,7 @@ - qfalse, /* wolf lighting model? */ - 128, /* lightmap width/height */ - 1.0f, /* lightmap gamma */ -+ 1.0f, /* lightmap exposure */ - 1.0f, /* lightmap compensate */ - "RBSP", /* bsp file prefix */ - 1, /* bsp file version */ -Index: tools/quake3/q3map2/q3map2.h -=================================================================== ---- tools/quake3/q3map2/q3map2.h (revision 158) -+++ tools/quake3/q3map2/q3map2.h (working copy) -@@ -35,8 +35,8 @@ - - - /* version */ --#define Q3MAP_VERSION "2.5.17" --#define Q3MAP_MOTD "Last one turns the lights off" -+#define Q3MAP_VERSION "2.5.17 base - FS_20g" -+#define Q3MAP_MOTD "Sorry, it doesn't match my furniture." - - - -@@ -267,6 +267,7 @@ - #define SUPER_NORMAL_SIZE 4 - #define SUPER_DELUXEL_SIZE 3 - #define BSP_DELUXEL_SIZE 3 -+#define SUPER_FLOODLIGHT_SIZE 1 - - #define VERTEX_LUXEL( s, v ) (vertexLuxels[ s ] + ((v) * VERTEX_LUXEL_SIZE)) - #define RAD_VERTEX_LUXEL( s, v )(radVertexLuxels[ s ] + ((v) * VERTEX_LUXEL_SIZE)) -@@ -279,6 +280,7 @@ - #define SUPER_ORIGIN( x, y ) (lm->superOrigins + ((((y) * lm->sw) + (x)) * SUPER_ORIGIN_SIZE)) - #define SUPER_NORMAL( x, y ) (lm->superNormals + ((((y) * lm->sw) + (x)) * SUPER_NORMAL_SIZE)) - #define SUPER_DIRT( x, y ) (lm->superNormals + ((((y) * lm->sw) + (x)) * SUPER_NORMAL_SIZE) + 3) /* stash dirtyness in normal[ 3 ] */ -+#define SUPER_FLOODLIGHT( x, y ) (lm->superFloodLight + ((((y) * lm->sw) + (x)) * SUPER_FLOODLIGHT_SIZE) ) - - - -@@ -543,6 +545,7 @@ - qboolean wolfLight; /* when true, lights work like wolf q3map */ - int lightmapSize; /* bsp lightmap width/height */ - float lightmapGamma; /* default lightmap gamma */ -+ float lightmapExposure; /* default lightmap exposure */ - float lightmapCompensate; /* default lightmap compensate value */ - char *bspIdent; /* 4-letter bsp file prefix */ - int bspVersion; /* bsp version to use */ -@@ -1392,6 +1395,7 @@ - - float *superDeluxels; /* average light direction */ - float *bspDeluxels; -+ float *superFloodLight; - } - rawLightmap_t; - -@@ -1704,6 +1708,10 @@ - float DirtForSample( trace_t *trace ); - void DirtyRawLightmap( int num ); - -+void SetupFloodLight(); -+float FloodLightForSample( trace_t *trace ); -+void FloodLightRawLightmap( int num ); -+ - void IlluminateRawLightmap( int num ); - void IlluminateVertexes( int num ); - -@@ -2098,6 +2106,13 @@ - Q_EXTERN float dirtScale Q_ASSIGN( 1.0f ); - Q_EXTERN float dirtGain Q_ASSIGN( 1.0f ); - -+Q_EXTERN qboolean debugnormals Q_ASSIGN( qfalse ); -+Q_EXTERN qboolean floodlighty Q_ASSIGN( qfalse ); -+Q_EXTERN qboolean floodlight_lowquality Q_ASSIGN( qfalse ); -+Q_EXTERN vec3_t floodlightRGB; -+Q_EXTERN float floodlightIntensity Q_ASSIGN( 512 ); -+Q_EXTERN float floodlightDistance Q_ASSIGN( 1024 ); -+ - Q_EXTERN qboolean dump Q_ASSIGN( qfalse ); - Q_EXTERN qboolean debug Q_ASSIGN( qfalse ); - Q_EXTERN qboolean debugUnused Q_ASSIGN( qfalse ); -@@ -2117,6 +2132,7 @@ - - /* ydnar: lightmap gamma/compensation */ - Q_EXTERN float lightmapGamma Q_ASSIGN( 1.0f ); -+Q_EXTERN float lightmapExposure Q_ASSIGN( 1.0f ); - Q_EXTERN float lightmapCompensate Q_ASSIGN( 1.0f ); - - /* ydnar: for runtime tweaking of falloff tolerance */ -Index: tools/quake3/q3map2/path_init.c -=================================================================== ---- tools/quake3/q3map2/path_init.c (revision 158) -+++ tools/quake3/q3map2/path_init.c (working copy) -@@ -383,7 +383,7 @@ - /* remove processed arguments */ - for( i = 0, j = 0, k = 0; i < *argc && j < *argc; i++, j++ ) - { -- for( j; j < *argc && argv[ j ] == NULL; j++ ); -+ for( ; j < *argc && argv[ j ] == NULL; j++ ); - argv[ i ] = argv[ j ]; - if( argv[ i ] != NULL ) - k++; -Index: tools/quake3/q3map2/game_qfusion.h -=================================================================== ---- tools/quake3/q3map2/game_qfusion.h (revision 158) -+++ tools/quake3/q3map2/game_qfusion.h (working copy) -@@ -115,6 +115,7 @@ - qfalse, /* wolf lighting model? */ - 512, /* lightmap width/height */ - 1.0f, /* lightmap gamma */ -+ 1.0f, /* lightmap exposure */ - 1.0f, /* lightmap compensate */ - "FBSP", /* bsp file prefix */ - 1, /* bsp file version */ -Index: tools/quake3/q3map2/game_tenebrae.h -=================================================================== ---- tools/quake3/q3map2/game_tenebrae.h (revision 158) -+++ tools/quake3/q3map2/game_tenebrae.h (working copy) -@@ -112,6 +112,7 @@ - qfalse, /* wolf lighting model? */ - 512, /* lightmap width/height */ - 2.0f, /* lightmap gamma */ -+ 1.0f, /* lightmap exposure */ - 1.0f, /* lightmap compensate */ - "IBSP", /* bsp file prefix */ - 46, /* bsp file version */ -Index: tools/quake3/q3map2/q3map2.vcproj -=================================================================== ---- tools/quake3/q3map2/q3map2.vcproj (revision 158) -+++ tools/quake3/q3map2/q3map2.vcproj (working copy) -@@ -180,7 +180,7 @@ - Name="VCLinkerTool" - AdditionalOptions="/MACHINE:I386" - AdditionalDependencies="glib-2.0.lib wsock32.lib libxml2.lib libpng.lib libmhash.lib" -- OutputFile=".\Release/q3map2.exe" -+ OutputFile=".\Release/q3map2_fs_20g.exe" - LinkIncremental="1" - SuppressStartupBanner="true" - AdditionalLibraryDirectories=""..\..\..\..\mhash-0.9\win32\libmhash\Release";"..\..\..\..\libxml2-2.6\lib";"..\..\..\..\gtk2-2.10\lib"" -Index: tools/quake3/q3map2/game_quake3.h -=================================================================== ---- tools/quake3/q3map2/game_quake3.h (revision 158) -+++ tools/quake3/q3map2/game_quake3.h (working copy) -@@ -112,6 +112,7 @@ - qfalse, /* wolf lighting model? */ - 128, /* lightmap width/height */ - 1.0f, /* lightmap gamma */ -+ 1.0f, /* lightmap exposure */ - 1.0f, /* lightmap compensate */ - "IBSP", /* bsp file prefix */ - 46, /* bsp file version */ -Index: tools/quake3/q3map2/game_ef.h -=================================================================== ---- tools/quake3/q3map2/game_ef.h (revision 158) -+++ tools/quake3/q3map2/game_ef.h (working copy) -@@ -113,6 +113,7 @@ - qfalse, /* wolf lighting model? */ - 128, /* lightmap width/height */ - 1.0f, /* lightmap gamma */ -+ 1.0f, /* lightmap exposure */ - 1.0f, /* lightmap compensate */ - "IBSP", /* bsp file prefix */ - 46, /* bsp file version */ -Index: tools/quake3/q3map2/surface.c -=================================================================== ---- tools/quake3/q3map2/surface.c (revision 158) -+++ tools/quake3/q3map2/surface.c (working copy) -@@ -304,7 +304,7 @@ - out = &mapDrawSurfs[ i ]; - - /* walk the surface list again until a proper surface is found */ -- for( j; j < numMapDrawSurfs; j++ ) -+ for( ; j < numMapDrawSurfs; j++ ) - { - /* get in surface */ - in = &mapDrawSurfs[ j ]; -@@ -484,7 +484,7 @@ - - - /* walk the list of surfaces */ -- for( numSurfs; numSurfs > 0; numSurfs--, ds++ ) -+ for( ; numSurfs > 0; numSurfs--, ds++ ) - { - /* ignore bogus (or flare) surfaces */ - if( ds->type == SURFACE_BAD || ds->numVerts <= 0 ) -Index: tools/quake3/q3map2/shaders.c -=================================================================== ---- tools/quake3/q3map2/shaders.c (revision 158) -+++ tools/quake3/q3map2/shaders.c (working copy) -@@ -793,8 +793,14 @@ - } - - if( VectorLength( si->color ) <= 0.0f ) -+ { - ColorNormalize( color, si->color ); -- VectorScale( color, (1.0f / count), si->averageColor ); -+ VectorScale( color, (1.0f / count), si->averageColor ); -+ } -+ else -+ { -+ VectorCopy( si->color, si->averageColor ); -+ } - } - - -@@ -1896,12 +1902,14 @@ - si->styleMarker = 2; - - /* ydnar: default to searching for q3map_ */ -- else -+#if 0 -+ else - { -- //% Sys_FPrintf( SYS_VRB, "Attempting to match %s with a known surfaceparm\n", token ); -+ Sys_FPrintf( SYS_VRB, "Attempting to match %s with a known surfaceparm\n", token ); - if( ApplySurfaceParm( &token[ 6 ], &si->contentFlags, &si->surfaceFlags, &si->compileFlags ) == qfalse ) -- ;//% Sys_Printf( "WARNING: Unknown q3map_* directive \"%s\"\n", token ); -+ Sys_Printf( "WARNING: Unknown q3map_* directive \"%s\"\n", token ); - } -+#endif - } - - -Index: tools/quake3/q3map2/mesh.c -=================================================================== ---- tools/quake3/q3map2/mesh.c (revision 158) -+++ tools/quake3/q3map2/mesh.c (working copy) -@@ -563,7 +563,7 @@ - } - - /* keep chopping */ -- for( iterations; iterations > 0; iterations-- ) -+ for( ; iterations > 0; iterations-- ) - { - /* horizontal subdivisions */ - for( j = 0; j + 2 < out.width; j += 4 ) -Index: libs/picomodel/pm_ase.c -=================================================================== ---- libs/picomodel/pm_ase.c (revision 158) -+++ libs/picomodel/pm_ase.c (working copy) -@@ -32,6 +32,7 @@ - - ----------------------------------------------------------------------------- */ - -+void Sys_Printf (const char *format, ...); - - /* marker */ - #define PM_ASE_C -@@ -253,7 +254,6 @@ - struct aseVertex_s - { - picoVec3_t xyz; -- picoVec3_t normal; - picoIndex_t id; - }; - -@@ -276,6 +276,8 @@ - picoIndex_t smoothingGroup; - picoIndex_t materialId; - picoIndex_t subMaterialId; -+ picoVec3_t facenormal; -+ picoVec3_t vertexnormal[3]; - }; - typedef aseFace_t* aseFacesIter_t; - -@@ -455,33 +457,157 @@ - - #endif - -+static int VectorCompareExtn( picoVec3_t n1, picoVec3_t n2, float epsilon ) -+{ -+ int i; -+ -+ -+ /* test */ -+ for( i= 0; i < 3; i++ ) -+ if( fabs( n1[ i ] - n2[ i ]) > epsilon ) -+ return -1; -+ return 1; -+} -+ -+#define CrossProductTemp(a,b,c) ((c)[0]=(a)[1]*(b)[2]-(a)[2]*(b)[1],(c)[1]=(a)[2]*(b)[0]-(a)[0]*(b)[2],(c)[2]=(a)[0]*(b)[1]-(a)[1]*(b)[0]) -+ - static void _ase_submit_triangles( picoModel_t* model , aseMaterial_t* materials , aseVertex_t* vertices, aseTexCoord_t* texcoords, aseColor_t* colors, aseFace_t* faces, int numFaces ) - { -- aseFacesIter_t i = faces, end = faces + numFaces; -- for(; i != end; ++i) -+ -+ picoVec3_t accum; -+ int index; -+ int counter; -+ aseFacesIter_t i = faces, end = faces + numFaces; -+ counter=0; -+ -+ //rebuild normals -+ for(i=faces; i != end; ++i) -+ { -+ -+ //&(*i).facenormal -+ //vec3_t v1, v2; -+ //VectorSubtract(va, vb, v1); -+ //VectorSubtract(vc, vb, v2); -+ //CrossProduct(v1, v2, out); -+ -+ picoVec3_t a,b,c; -+ picoVec3_t v1,v2,v3; -+ int j; -+ counter++; -+ for (j=0;j<3;j++) -+ { -+ a[j] = vertices[(*i).indices[0]].xyz[j]; -+ b[j] = vertices[(*i).indices[1]].xyz[j]; -+ c[j] = vertices[(*i).indices[2]].xyz[j]; -+ } -+ for (j=0;j<3;j++) -+ { -+ v1[j]=a[j]-b[j]; -+ v2[j]=c[j]-b[j]; -+ } -+ -+ CrossProductTemp(v1,v2,v3); -+ _pico_normalize_vec(v3); -+ (*i).facenormal[0]=v3[0]; -+ (*i).facenormal[1]=v3[1]; -+ (*i).facenormal[2]=v3[2]; -+ -+ -+ } -+ -+ -+ //if (counter>0) Sys_Printf( "Rebuilding %d Normals\n", counter * 3 ); -+ for(i=faces; i != end; ++i) - { -- /* look up the shader for the material/submaterial pair */ -+ /* look up the shader for the material/submaterial pair */ - aseSubMaterial_t* subMtl = _ase_get_submaterial_or_default( materials, (*i).materialId, (*i).subMaterialId ); -- if( subMtl == NULL ) -+ -+ if( subMtl == NULL ) - { - return; - } - - { - picoVec3_t* xyz[3]; -+ picoVec3_t *a[3]; - picoVec3_t* normal[3]; - picoVec2_t* st[3]; - picoColor_t* color[3]; - picoIndex_t smooth[3]; -- int j; -- /* we pull the data from the vertex, color and texcoord arrays using the face index data */ -- for ( j = 0 ; j < 3 ; j ++ ) -+ -+ int j,z; -+ -+ -+ -+ /* we pull the data from the vertex, color and texcoord arrays using the face index data */ -+ for ( j = 0 ; j < 3 ; j ++ ) - { -- xyz[j] = &vertices[(*i).indices[j]].xyz; -- normal[j] = &vertices[(*i).indices[j]].normal; -+ aseFacesIter_t q = faces; -+ aseFacesIter_t qend = faces + numFaces; -+ -+ xyz[j] = &vertices[(*i).indices[j]].xyz; -+ -+ // Use Face normal -+ normal[j] = &(*i).facenormal; -+ -+ -+ //Oooor we can use the smoothing group -+ -+ //Slow method, but testing -+ //Find All faces that use this vertex, average their facenormals. -+ // skip where smoothgroups both equal 0, or don't have any shared bits (x & y) -+ index=(*i).indices[j]; -+ -+// accum[0]=0; -+ // accum[1]=0; -+ // accum[2]=0; -+ accum[0]=(*i).facenormal[0]; -+ accum[1]=(*i).facenormal[1]; -+ accum[2]=(*i).facenormal[2]; -+ counter=1; -+ -+ -+ z=0; -+ for(; q != qend; ++q) -+ { -+ z++; -+ if (q==i) -+ continue; -+ // if ( (*q).indices[0]==index || (*q).indices[1]==index || (*q).indices[2]==index) -+ a[0]= &vertices[(*q).indices[0] ].xyz; -+ a[1]= &vertices[(*q).indices[1] ].xyz; -+ a[2]= &vertices[(*q).indices[2] ].xyz; -+ -+ if ( VectorCompareExtn(*a[0],*xyz[j],0.01f)>0 || -+ VectorCompareExtn(*a[1],*xyz[j],0.01f)>0 || -+ VectorCompareExtn(*a[2],*xyz[j],0.01f)>0 -+ ) -+ { -+ if ( (*i).smoothingGroup==0 && (*q).smoothingGroup ==0 ) -+ continue; -+ -+ if ( (*i).smoothingGroup & (*q).smoothingGroup ) -+ { -+ accum[0]+=(*q).facenormal[0]; -+ accum[1]+=(*q).facenormal[1]; -+ accum[2]+=(*q).facenormal[2]; -+ -+ counter++; -+ -+ } -+ } -+ } -+ _pico_normalize_vec(accum); -+ -+ (*i).vertexnormal[j][0]=accum[0]; -+ (*i).vertexnormal[j][1]=accum[1]; -+ (*i).vertexnormal[j][2]=accum[2]; -+ normal[j]=&(*i).vertexnormal[j]; -+ -+ - st[j] = &texcoords[(*i).indices[j + 3]].texcoord; -- -- if( colors != NULL && (*i).indices[j + 6] >= 0 ) -+ -+ if( colors != NULL && (*i).indices[j + 6] >= 0 ) - { - color[j] = &colors[(*i).indices[j + 6]].color; - } -@@ -490,30 +616,18 @@ - color[j] = &white; - } - -- smooth[j] = (vertices[(*i).indices[j]].id * (1 << 16)) + (*i).smoothingGroup; /* don't merge vertices */ -+ smooth[j] = 0;// (vertices[(*i).indices[j]].id * (1 << 16)) + (*i).smoothingGroup; /* don't merge vertices */ - - } - - /* submit the triangle to the model */ - PicoAddTriangleToModel ( model , xyz , normal , 1 , st , 1 , color , subMtl->shader, smooth ); - } -+ - } - } - --static void shadername_convert(char* shaderName) --{ -- /* unix-style path separators */ -- char* s = shaderName; -- for(; *s != '\0'; ++s) -- { -- if(*s == '\\') -- { -- *s = '/'; -- } -- } --} - -- - /* _ase_load: - * loads a 3dsmax ase model file. - */ -@@ -534,6 +648,9 @@ - int numColorVertices = 0; - int numColorVertexFaces = 0; - int vertexId = 0; -+ int currentVertexFace=0; -+ int currentVertexIndex=0; -+ int counter=0; - - aseMaterial_t* materials = NULL; - -@@ -610,10 +727,11 @@ - } - else if (!_pico_stricmp(p->token,"*mesh_numvertex")) - { -- if (!_pico_parse_int( p, &numVertices) ) -+ if (!_pico_parse_int( p, &numVertices) ) - _ase_error_return("Missing MESH_NUMVERTEX value"); - - vertices = _pico_calloc(numVertices, sizeof(aseVertex_t)); -+ currentVertexIndex=0; - } - else if (!_pico_stricmp(p->token,"*mesh_numfaces")) - { -@@ -621,6 +739,7 @@ - _ase_error_return("Missing MESH_NUMFACES value"); - - faces = _pico_calloc(numFaces, sizeof(aseFace_t)); -+ - } - else if (!_pico_stricmp(p->token,"*mesh_numtvertex")) - { -@@ -685,7 +804,20 @@ - - vertices[index].id = vertexId++; - } -- /* model mesh vertex normal */ -+ else if (!_pico_stricmp(p->token,"*mesh_facenormal")) -+ { -+ //Grab the faceindex for the next vertex normals. -+ if( numVertices == 0 ) -+ _ase_error_return("Vertex parse error (facenormals)"); -+ -+ if (!_pico_parse_int( p,¤tVertexFace )) -+ _ase_error_return("Vertex parse error"); -+ -+ if (!_pico_parse_vec( p,faces[currentVertexFace].facenormal )) -+ _ase_error_return("Vertex parse error"); -+ -+ } -+ /* model mesh vertex normal */ - else if (!_pico_stricmp(p->token,"*mesh_vertexnormal")) - { - int index; -@@ -696,10 +828,25 @@ - /* get vertex data (orig: index +y -x +z) */ - if (!_pico_parse_int( p,&index )) - _ase_error_return("Vertex parse error"); -- if (!_pico_parse_vec( p,vertices[index].normal )) -+ -+ //^^ Index is 'wrong' in .ase models. they reference the same vert index with multiple normals.. -+ // I've tried, this is a lost cause. Use the SG's -+ // -+ /* -+ -+ if (!_pico_parse_vec( p,vertices[counter].normal )) - _ase_error_return("Vertex parse error"); -+ vertices[counter].faceid=index; -+ counter++; -+ */ - } - /* model mesh face */ -+ else if (!_pico_stricmp(p->token,"*mesh_normals")) -+ { -+ // counter=0; //part of the above vertex normals fix -+ } -+ -+ /* model mesh face */ - else if (!_pico_stricmp(p->token,"*mesh_face")) - { - picoIndex_t indexes[3]; -@@ -736,8 +883,35 @@ - } - if (!_pico_stricmp (p->token,"*MESH_SMOOTHING" )) - { -- _pico_parse_int ( p , &faces[index].smoothingGroup ); -- } -+ int total=0; -+ char* point; -+ char* start; -+ _pico_parse(p,0); -+ -+ point=p->token; -+ start=point; -+ faces[index].smoothingGroup=0; -+ -+ //Super dodgy comma delimited string parse -+ while (*point<'A') -+ { -+ if (*point<=32 || *point==',') -+ { -+ total=atoi(start); -+ if (total!=0) -+ { -+ faces[index].smoothingGroup+=1<token,"*MESH_MTLID" )) - { - _pico_parse_int ( p , &faces[index].subMaterialId ); -@@ -755,19 +929,19 @@ - int index; - - if( numVertices == 0 ) -- _ase_error_return("Texture Vertex parse error"); -+ _ase_error_return("Vertex parse error"); - - /* get uv vertex index */ -- if (!_pico_parse_int( p,&index ) || index >= numTextureVertices) -- _ase_error_return("Texture vertex parse error"); -+ if (!_pico_parse_int( p,&index )) -+ _ase_error_return("UV vertex parse error"); - - /* get uv vertex s */ - if (!_pico_parse_float( p,&texcoords[index].texcoord[0] )) -- _ase_error_return("Texture vertex parse error"); -+ _ase_error_return("UV vertex parse error"); - - /* get uv vertex t */ - if (!_pico_parse_float( p,&texcoords[index].texcoord[1] )) -- _ase_error_return("Texture vertex parse error"); -+ _ase_error_return("UV vertex parse error"); - - /* ydnar: invert t */ - texcoords[index].texcoord[ 1 ] = 1.0f - texcoords[index].texcoord[ 1 ]; -@@ -831,6 +1005,13 @@ - - /* leave alpha alone since we don't get any data from the ASE format */ - colors[index].color[3] = 255; -+ -+ /* 27 hack, red as alpha */ -+ colors[index].color[3]=colors[index].color[0]; -+ colors[index].color[0]=255; -+ colors[index].color[1]=255; -+ colors[index].color[2]=255; -+ - } - /* model color face */ - else if (!_pico_stricmp(p->token,"*mesh_cface")) -@@ -900,7 +1081,6 @@ - { - /* set material name */ - _pico_first_token( materialName ); -- shadername_convert(materialName); - PicoSetShaderName( shader, materialName); - - /* set shader's transparency */ -@@ -1085,7 +1265,6 @@ - } - - /* set material name */ -- shadername_convert(materialName); - PicoSetShaderName( shader,materialName ); - - /* set shader's transparency */ -@@ -1115,8 +1294,18 @@ - char* p = mapname; - - /* convert to shader-name format */ -- shadername_convert(mapname); - { -+ /* unix-style path separators */ -+ char* s = mapname; -+ for(; *s != '\0'; ++s) -+ { -+ if(*s == '\\') -+ { -+ *s = '/'; -+ } -+ } -+ } -+ { - /* remove extension */ - char* last_period = strrchr(p, '.'); - if(last_period != NULL) -@@ -1125,14 +1314,32 @@ - } - } - -- /* find shader path */ -+ /* find game root */ - for(; *p != '\0'; ++p) - { -- if(_pico_strnicmp(p, "models/", 7) == 0 || _pico_strnicmp(p, "textures/", 9) == 0) -+ if(_pico_strnicmp(p, "quake", 5) == 0 || _pico_strnicmp(p, "doom", 4) == 0) - { - break; - } - } -+ /* root-relative */ -+ for(; *p != '\0'; ++p) -+ { -+ if(*p == '/') -+ { -+ ++p; -+ break; -+ } -+ } -+ /* game-relative */ -+ for(; *p != '\0'; ++p) -+ { -+ if(*p == '/') -+ { -+ ++p; -+ break; -+ } -+ } - - if(*p != '\0') - { -Index: libs/picomodel/picomodel.c -=================================================================== ---- libs/picomodel/picomodel.c (revision 158) -+++ libs/picomodel/picomodel.c (working copy) -@@ -295,10 +295,7 @@ - model = PicoModuleLoadModel(module, fileName, buffer, bufSize, frameNum); - } - -- if(model != 0) -- { -- _pico_free(buffer); -- } -+ _pico_free(buffer); - - /* return */ - return model; -@@ -1573,6 +1570,7 @@ - { - int i, j; - -+// Sys_Printf(" %f %f %f\n", normal[0] , normal[1] , normal[2] ); - - /* dummy check */ - if( surface == NULL || surface->numVertexes <= 0 ) -@@ -1861,13 +1859,10 @@ - typedef picoVec3_t* picoNormalIter_t; - typedef picoIndex_t* picoIndexIter_t; - --#define THE_CROSSPRODUCTS_OF_ANY_PAIR_OF_EDGES_OF_A_GIVEN_TRIANGLE_ARE_EQUAL 1 -- - void _pico_triangles_generate_weighted_normals(picoIndexIter_t first, picoIndexIter_t end, picoVec3_t* xyz, picoVec3_t* normals) - { - for(; first != end; first += 3) - { --#if (THE_CROSSPRODUCTS_OF_ANY_PAIR_OF_EDGES_OF_A_GIVEN_TRIANGLE_ARE_EQUAL) - picoVec3_t weightedNormal; - { - float* a = xyz[*(first + 0)]; -@@ -1878,24 +1873,11 @@ - _pico_subtract_vec( c, a, ca ); - _pico_cross_vec( ca, ba, weightedNormal ); - } --#endif - { - int j = 0; - for(; j < 3; ++j) - { - float* normal = normals[*(first + j)]; --#if (!THE_CROSSPRODUCTS_OF_ANY_PAIR_OF_EDGES_OF_A_GIVEN_TRIANGLE_ARE_EQUAL) -- picoVec3_t weightedNormal; -- { -- float* a = xyz[*(first + ((j + 0) % 3))]; -- float* b = xyz[*(first + ((j + 1) % 3))]; -- float* c = xyz[*(first + ((j + 2) % 3))]; -- picoVec3_t ba, ca; -- _pico_subtract_vec( b, a, ba ); -- _pico_subtract_vec( c, a, ca ); -- _pico_cross_vec( ca, ba, weightedNormal ); -- } --#endif - _pico_add_vec(weightedNormal, normal, normal); - } - } -@@ -1941,7 +1923,8 @@ - { - for(; first != last; ++first, ++generated) - { -- if(!_pico_normal_is_unit_length(*first) || !_pico_normal_within_tolerance(*first, *generated)) -+ //27 - fix for badly generated normals thing. -+ // if(!_pico_normal_is_unit_length(*first) || !_pico_normal_within_tolerance(*first, *generated)) - { - _pico_copy_vec(*generated, *first); - } -@@ -1954,10 +1937,11 @@ - - _pico_normals_zero(normals, normals + surface->numVertexes); - -+ //Just build standard no sg normals for now - _pico_triangles_generate_weighted_normals(surface->index, surface->index + surface->numIndexes, surface->xyz, normals); - _pico_vertices_combine_shared_normals(surface->xyz, surface->smoothingGroup, normals, surface->numVertexes); - -- _pico_normals_normalize(normals, normals + surface->numVertexes); -+ _pico_normals_normalize(normals, normals + surface->numVertexes); - - _pico_normals_assign_generated_normals(surface->normal, surface->normal + surface->numVertexes, normals); - -@@ -2261,7 +2245,7 @@ - int newVertIndex = PicoGetSurfaceNumIndexes ( workSurface ); - - /* get the index of the vertex that we're going to store at newVertIndex */ -- vertDataIndex = PicoFindSurfaceVertexNum ( workSurface , *xyz[i] , *normals[i] , numSTs , st[i] , numColors , colors[i], smoothingGroup[i]); -+ vertDataIndex = -1;// PicoFindSurfaceVertexNum ( workSurface , *xyz[i] , *normals[i] , numSTs , st[i] , numColors , colors[i], smoothingGroup[i]); - - /* the vertex wasn't found, so create a new vertex in the pool from the data we have */ - if ( vertDataIndex == -1 ) -@@ -2290,3 +2274,5 @@ - PicoSetSurfaceIndex ( workSurface , newVertIndex , vertDataIndex ); - } - } -+ -+ diff --git a/tools/urt/tools/quake3/q3map2/q3map2.dsp b/tools/urt/tools/quake3/q3map2/q3map2.dsp deleted file mode 100644 index 21b83ef0..00000000 --- a/tools/urt/tools/quake3/q3map2/q3map2.dsp +++ /dev/null @@ -1,379 +0,0 @@ -# Microsoft Developer Studio Project File - Name="q3map2" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=Q3MAP2 - WIN32 RELEASE -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "q3map2.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "q3map2.mak" CFG="Q3MAP2 - WIN32 RELEASE" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "q3map2 - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "q3map2 - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "q3map2" -# PROP Scc_LocalPath ".." -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "q3map2 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -F90=df.exe -# ADD BASE F90 /include:"Release/" -# ADD F90 /include:"Release/" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /Zi /O2 /I "..\..\..\include" /I "..\common" /I "..\..\..\libs" /I "..\..\..\..\libxml2\include" /I "..\q3map2" /I "..\..\..\..\libpng" /I "..\..\..\..\zlib" /I "..\..\..\..\gtk2-win32\include\glib-2.0" /I "..\..\..\..\gtk2-win32\lib\glib-2.0\include" /I "c:\program files\subversion\mhash\lib" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /FR /FD /c -# SUBTRACT CPP /WX /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 glib-2.0.lib wsock32.lib jpeg6.lib l_net.lib mathlib.lib md5lib.lib picomodel.lib ddslib.lib zdll.lib libpng13.lib ddslib.lib libxml2.lib libmhash.lib /nologo /stack:0x400000 /subsystem:console /map /machine:I386 /libpath:"..\..\..\libs\ddslib\release" /libpath:"..\..\..\libs\md5lib\release" /libpath:"..\..\..\libs\mathlib\release" /libpath:"..\..\..\libs\pak\release" /libpath:"..\..\..\libs\jpeg6\release" /libpath:"..\..\..\libs\l_net\release" /libpath:"..\..\..\..\libxml2\win32\libxml2\release_so" /libpath:"..\..\..\..\libpng\projects\msvc\libpng___Win32_Release" /libpath:"..\..\..\..\libpng\projects\msvc\zlib___Win32_Release" /libpath:"../../../libs/picomodel/release" /libpath:"..\..\..\..\gtk2-win32\lib\\" /libpath:"..\common\glib\\" /libpath:"C:\projects\library\zlib\\" /libpath:"C:\Program Files\Subversion\zlib\lib\\" /libpath:"C:\Program Files\Subversion\libpng\lib" /libpath:"C:\Program Files\Subversion\libxml2\win32\lib\\" /libpath:"C:\Program Files\Subversion\mhash\win32\libmhash\Release\\" -# SUBTRACT LINK32 /pdb:none /debug -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Python post build -PostBuild_Cmds=cd ..\..\.. && run_python.bat win32_install.py release Q3Map2 -# End Special Build Tool - -!ELSEIF "$(CFG)" == "q3map2 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -F90=df.exe -# ADD BASE F90 /include:"Debug/" -# ADD F90 /browser /include:"Debug/" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /I "..\..\..\include" /I "..\common" /I "..\..\..\libs" /I "..\..\..\..\libxml2\include" /I "..\..\..\..\libpng" /I "..\..\..\..\zlib" /I "..\..\..\..\gtk2-win32\include\glib-2.0" /I "..\..\..\..\gtk2-win32\lib\glib-2.0\include" /I "c:\program files\subversion\mhash\lib" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /FR /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 glib-2.0.lib wsock32.lib jpeg6.lib l_net.lib mathlib.lib md5lib.lib zdll.lib libpng13.lib ddslib.lib libxml2.lib libmhash.lib picomodel.lib /nologo /stack:0x2000000 /subsystem:console /profile /map /debug /machine:I386 /nodefaultlib:"libcd" /nodefaultlib:"libcmtd" /out:"Debug/FS_q3map2_1.exe" /libpath:"..\..\..\libs\ddslib\Debug" /libpath:"..\..\..\libs\md5lib\Debug" /libpath:"..\..\..\libs\mathlib\Debug" /libpath:"..\..\..\libs\pak\Debug" /libpath:"..\..\..\libs\jpeg6\Debug" /libpath:"..\..\..\libs\l_net\Debug" /libpath:"..\..\..\..\libxml2\win32\libxml2\debug_so" /libpath:"..\..\..\..\lpng\projects\msvc\win32\libpng___Win32_Debug" /libpath:"..\..\..\libs\jpeg6\release" /libpath:"..\..\..\libs\l_net\release" /libpath:"..\..\..\..\libxml2\win32\libxml2\release_so" /libpath:"..\..\..\..\libpng\projects\msvc\libpng___Win32_Debug" /libpath:"..\..\..\..\libpng\projects\msvc\zlib___Win32_Debug" /libpath:"..\..\..\..\gtk2-win32\lib\\" /libpath:"c:\program files\subversion\mhash\lib" /libpath:"..\common\glib\\" /libpath:"c:\program files\subversion\zlib\lib" /libpath:"c:\program files\subversion\libpng\lib" /libpath:"C:\Program Files\Subversion\libxml2\win32\lib" /libpath:"C:\Program Files\Subversion\mhash\win32\libmhash\Debug" /libpath:"C:\Program Files\Subversion\GtkRadiant\libs\picomodel\Debug" -# SUBTRACT LINK32 /nodefaultlib -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Python post build -PostBuild_Cmds=cd ..\..\.. && run_python.bat win32_install.py Q3Map2 -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "q3map2 - Win32 Release" -# Name "q3map2 - Win32 Debug" -# Begin Group "src" - -# PROP Default_Filter "c;cpp;cxx;cc;C" -# Begin Group "common" - -# PROP Default_Filter ".c" -# Begin Source File - -SOURCE=..\common\cmdlib.c -# End Source File -# Begin Source File - -SOURCE=..\common\imagelib.c -# End Source File -# Begin Source File - -SOURCE=..\common\inout.c -# End Source File -# Begin Source File - -SOURCE=..\common\mutex.c -# End Source File -# Begin Source File - -SOURCE=..\common\polylib.c -# End Source File -# Begin Source File - -SOURCE=..\common\scriplib.c -# End Source File -# Begin Source File - -SOURCE=..\common\threads.c -# End Source File -# Begin Source File - -SOURCE=..\common\unzip.c -# End Source File -# Begin Source File - -SOURCE=..\common\vfs.c - -!IF "$(CFG)" == "q3map2 - Win32 Release" - -!ELSEIF "$(CFG)" == "q3map2 - Win32 Debug" - -# ADD CPP /I "..\..\..\..\src\glib" - -!ENDIF - -# End Source File -# End Group -# Begin Group "bsp" - -# PROP Default_Filter ".c" -# Begin Source File - -SOURCE=.\brush.c -# End Source File -# Begin Source File - -SOURCE=.\brush_primit.c -# End Source File -# Begin Source File - -SOURCE=.\bsp.c -# End Source File -# Begin Source File - -SOURCE=.\decals.c -# End Source File -# Begin Source File - -SOURCE=.\facebsp.c -# End Source File -# Begin Source File - -SOURCE=.\fog.c -# End Source File -# Begin Source File - -SOURCE=.\leakfile.c -# End Source File -# Begin Source File - -SOURCE=.\map.c -# End Source File -# Begin Source File - -SOURCE=.\patch.c -# End Source File -# Begin Source File - -SOURCE=.\portals.c -# End Source File -# Begin Source File - -SOURCE=.\prtfile.c -# End Source File -# Begin Source File - -SOURCE=.\surface.c -# End Source File -# Begin Source File - -SOURCE=.\surface_foliage.c -# End Source File -# Begin Source File - -SOURCE=.\surface_fur.c -# End Source File -# Begin Source File - -SOURCE=.\surface_meta.c -# End Source File -# Begin Source File - -SOURCE=.\tjunction.c -# End Source File -# Begin Source File - -SOURCE=.\tree.c -# End Source File -# Begin Source File - -SOURCE=.\writebsp.c -# End Source File -# End Group -# Begin Group "light" - -# PROP Default_Filter ".c" -# Begin Source File - -SOURCE=.\light.c -# End Source File -# Begin Source File - -SOURCE=.\light_bounce.c -# End Source File -# Begin Source File - -SOURCE=.\light_trace.c -# End Source File -# Begin Source File - -SOURCE=.\light_ydnar.c -# End Source File -# Begin Source File - -SOURCE=.\lightmaps_ydnar.c -# End Source File -# End Group -# Begin Group "vis" - -# PROP Default_Filter ".c" -# Begin Source File - -SOURCE=.\vis.c -# End Source File -# Begin Source File - -SOURCE=.\visflow.c -# End Source File -# End Group -# Begin Group "convert" - -# PROP Default_Filter ".c" -# Begin Source File - -SOURCE=.\convert_ase.c -# End Source File -# Begin Source File - -SOURCE=.\convert_map.c -# End Source File -# End Group -# Begin Source File - -SOURCE=.\bspfile_abstract.c -# End Source File -# Begin Source File - -SOURCE=.\bspfile_ibsp.c -# End Source File -# Begin Source File - -SOURCE=.\bspfile_rbsp.c -# End Source File -# Begin Source File - -SOURCE=.\image.c -# End Source File -# Begin Source File - -SOURCE=.\main.c -# End Source File -# Begin Source File - -SOURCE=.\mesh.c -# End Source File -# Begin Source File - -SOURCE=.\model.c -# End Source File -# Begin Source File - -SOURCE=.\path_init.c -# End Source File -# Begin Source File - -SOURCE=.\shaders.c -# End Source File -# Begin Source File - -SOURCE=.\surface_extra.c -# End Source File -# End Group -# Begin Group "include" - -# PROP Default_Filter "h" -# Begin Source File - -SOURCE=.\game_ef.h -# End Source File -# Begin Source File - -SOURCE=.\game_ja.h -# End Source File -# Begin Source File - -SOURCE=.\game_jk2.h -# End Source File -# Begin Source File - -SOURCE=.\game_quake3.h -# End Source File -# Begin Source File - -SOURCE=.\game_sof2.h -# End Source File -# Begin Source File - -SOURCE=.\game_wolf.h -# End Source File -# Begin Source File - -SOURCE=.\game_wolfet.h -# End Source File -# Begin Source File - -SOURCE=.\q3map2.h -# End Source File -# End Group -# Begin Group "doc" - -# PROP Default_Filter "*.txt" -# Begin Source File - -SOURCE=.\changelog.q3map2.txt -# End Source File -# End Group -# Begin Group "rc" - -# PROP Default_Filter ".rc;.ico" -# Begin Source File - -SOURCE=.\q3map2.ico -# End Source File -# Begin Source File - -SOURCE=.\q3map2.rc -# End Source File -# End Group -# End Target -# End Project diff --git a/tools/urt/tools/quake3/q3map2/q3map2.dsw b/tools/urt/tools/quake3/q3map2/q3map2.dsw deleted file mode 100644 index caa9575b..00000000 --- a/tools/urt/tools/quake3/q3map2/q3map2.dsw +++ /dev/null @@ -1,137 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "ddslib"="..\..\..\libs\ddslib\ddslib.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "jpeg6"="..\..\..\libs\jpeg6\jpeg6.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "l_net"="..\..\..\libs\l_net\l_net.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "libpng"="..\..\..\..\libpng\projects\msvc\libpng.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "mathlib"="..\..\..\libs\mathlib\mathlib.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "md5lib"="..\..\..\libs\md5lib\md5lib.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "picomodel"="..\..\..\libs\picomodel\picomodel.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "q3map2"=".\q3map2.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name libxml2 - End Project Dependency - Begin Project Dependency - Project_Dep_Name libpng - End Project Dependency - Begin Project Dependency - Project_Dep_Name picomodel - End Project Dependency - Begin Project Dependency - Project_Dep_Name jpeg6 - End Project Dependency - Begin Project Dependency - Project_Dep_Name l_net - End Project Dependency - Begin Project Dependency - Project_Dep_Name mathlib - End Project Dependency - Begin Project Dependency - Project_Dep_Name md5lib - End Project Dependency - Begin Project Dependency - Project_Dep_Name ddslib - End Project Dependency -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/tools/urt/tools/quake3/q3map2/q3map2.h b/tools/urt/tools/quake3/q3map2/q3map2.h index a41cb0df..fe21bd92 100644 --- a/tools/urt/tools/quake3/q3map2/q3map2.h +++ b/tools/urt/tools/quake3/q3map2/q3map2.h @@ -1922,7 +1922,6 @@ Q_EXTERN int bevelSnap Q_ASSIGN( 0 ); /* ydnar: be Q_EXTERN int texRange Q_ASSIGN( 0 ); Q_EXTERN qboolean flat Q_ASSIGN( qfalse ); Q_EXTERN qboolean meta Q_ASSIGN( qfalse ); -Q_EXTERN qboolean newbsp Q_ASSIGN( qfalse ); Q_EXTERN qboolean patchMeta Q_ASSIGN( qfalse ); Q_EXTERN qboolean emitFlares Q_ASSIGN( qfalse ); Q_EXTERN qboolean debugSurfaces Q_ASSIGN( qfalse ); diff --git a/tools/urt/tools/quake3/q3map2/q3map2.h.rej b/tools/urt/tools/quake3/q3map2/q3map2.h.rej deleted file mode 100644 index d32fc37d..00000000 --- a/tools/urt/tools/quake3/q3map2/q3map2.h.rej +++ /dev/null @@ -1,19 +0,0 @@ -*************** -*** 35,42 **** - - - /* version */ -- #define Q3MAP_VERSION "2.5.17" -- #define Q3MAP_MOTD "Last one turns the lights off" - - - ---- 35,42 ---- - - - /* version */ -+ #define Q3MAP_VERSION "2.5.17 base - FS_20g" -+ #define Q3MAP_MOTD "Sorry, it doesn't match my furniture." - - - diff --git a/tools/urt/tools/quake3/q3map2/q3map2.opt b/tools/urt/tools/quake3/q3map2/q3map2.opt deleted file mode 100644 index 395cbdf1857c8b326b7383ff7101e7a88e7ba219..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98304 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 DP?W)E diff --git a/tools/urt/tools/quake3/q3map2/q3map2.plg b/tools/urt/tools/quake3/q3map2/q3map2.plg deleted file mode 100644 index ce91829b..00000000 --- a/tools/urt/tools/quake3/q3map2/q3map2.plg +++ /dev/null @@ -1,86 +0,0 @@ - - -
-

Build Log

-

---------------------Configuration: q3map2 - Win32 Debug-------------------- -

-

Command Lines

-Creating temporary file "C:\DOCUME~1\TWENTY~1\LOCALS~1\Temp\RSP13E.tmp" with contents -[ -glib-2.0.lib wsock32.lib jpeg6.lib l_net.lib mathlib.lib md5lib.lib zdll.lib libpng13.lib ddslib.lib libxml2.lib libmhash.lib picomodel.lib /nologo /stack:0x2000000 /subsystem:console /profile /map:"Debug/FS_q3map2_1.map" /debug /machine:I386 /nodefaultlib:"libcd" /nodefaultlib:"libcmtd" /out:"Debug/FS_q3map2_1.exe" /libpath:"..\..\..\libs\ddslib\Debug" /libpath:"..\..\..\libs\md5lib\Debug" /libpath:"..\..\..\libs\mathlib\Debug" /libpath:"..\..\..\libs\pak\Debug" /libpath:"..\..\..\libs\jpeg6\Debug" /libpath:"..\..\..\libs\l_net\Debug" /libpath:"..\..\..\..\libxml2\win32\libxml2\debug_so" /libpath:"..\..\..\..\lpng\projects\msvc\win32\libpng___Win32_Debug" /libpath:"..\..\..\libs\jpeg6\release" /libpath:"..\..\..\libs\l_net\release" /libpath:"..\..\..\..\libxml2\win32\libxml2\release_so" /libpath:"..\..\..\..\libpng\projects\msvc\libpng___Win32_Debug" /libpath:"..\..\..\..\libpng\projects\msvc\zlib___Win32_Debug" /libpath:"..\..\..\..\gtk2-win32\lib\\" /libpath:"c:\program files\subversion\mhash\lib" /libpath:"..\common\glib\\" /libpath:"c:\program files\subversion\zlib\lib" /libpath:"c:\program files\subversion\libpng\lib" /libpath:"C:\Program Files\Subversion\libxml2\win32\lib" /libpath:"C:\Program Files\Subversion\mhash\win32\libmhash\Debug" /libpath:"C:\Program Files\Subversion\GtkRadiant\libs\picomodel\Debug" -".\Debug\cmdlib.obj" -".\Debug\imagelib.obj" -".\Debug\inout.obj" -".\Debug\mutex.obj" -".\Debug\polylib.obj" -".\Debug\scriplib.obj" -".\Debug\threads.obj" -".\Debug\unzip.obj" -".\Debug\vfs.obj" -".\Debug\brush.obj" -".\Debug\brush_primit.obj" -".\Debug\bsp.obj" -".\Debug\decals.obj" -".\Debug\facebsp.obj" -".\Debug\fog.obj" -".\Debug\leakfile.obj" -".\Debug\map.obj" -".\Debug\patch.obj" -".\Debug\portals.obj" -".\Debug\prtfile.obj" -".\Debug\surface.obj" -".\Debug\surface_foliage.obj" -".\Debug\surface_fur.obj" -".\Debug\surface_meta.obj" -".\Debug\tjunction.obj" -".\Debug\tree.obj" -".\Debug\writebsp.obj" -".\Debug\light.obj" -".\Debug\light_bounce.obj" -".\Debug\light_trace.obj" -".\Debug\light_ydnar.obj" -".\Debug\lightmaps_ydnar.obj" -".\Debug\vis.obj" -".\Debug\visflow.obj" -".\Debug\convert_ase.obj" -".\Debug\convert_map.obj" -".\Debug\bspfile_abstract.obj" -".\Debug\bspfile_ibsp.obj" -".\Debug\bspfile_rbsp.obj" -".\Debug\image.obj" -".\Debug\main.obj" -".\Debug\mesh.obj" -".\Debug\model.obj" -".\Debug\path_init.obj" -".\Debug\shaders.obj" -".\Debug\surface_extra.obj" -".\Debug\q3map2.res" -"\Program Files\Subversion\GtkRadiant\libs\picomodel\Debug\picomodel.lib" -"\Program Files\Subversion\GtkRadiant\libs\jpeg6\Debug\jpeg6.lib" -"\Program Files\Subversion\GtkRadiant\libs\l_net\Debug\l_net.lib" -"\Program Files\Subversion\GtkRadiant\libs\mathlib\Debug\mathlib.lib" -"\Program Files\Subversion\GtkRadiant\libs\md5lib\Debug\md5lib.lib" -"\Program Files\Subversion\GtkRadiant\libs\ddslib\Debug\ddslib.lib" -] -Creating command line "link.exe @C:\DOCUME~1\TWENTY~1\LOCALS~1\Temp\RSP13E.tmp" -

Output Window

-Linking... -Creating temporary file "C:\DOCUME~1\TWENTY~1\LOCALS~1\Temp\RSP140.bat" with contents -[ -@echo off -cd ..\..\.. && run_python.bat win32_install.py Q3Map2 -] -Creating command line "C:\DOCUME~1\TWENTY~1\LOCALS~1\Temp\RSP140.bat" -Python post build -'python.exe' is not recognized as an internal or external command, -operable program or batch file. -please install python and add python.exe to the path (http://www.python.org) - - - -

Results

-FS_q3map2_1.exe - 0 error(s), 0 warning(s) -
- - diff --git a/tools/urt/tools/quake3/q3map2/q3map2.sln b/tools/urt/tools/quake3/q3map2/q3map2.sln deleted file mode 100644 index 4def4fe7..00000000 --- a/tools/urt/tools/quake3/q3map2/q3map2.sln +++ /dev/null @@ -1,190 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ddslib", "..\..\..\libs\ddslib\ddslib.vcproj", "{7FD1FB6D-9969-43E1-857D-1B70B85DB89D}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jpeg6", "..\..\..\libs\jpeg6\jpeg6.vcproj", "{F6FEEEDB-8B57-411E-924D-2C49AA55A03B}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "l_net", "..\..\..\libs\l_net\l_net.vcproj", "{C64EA14E-82DD-4E6A-825F-BD9745137CCB}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mathlib", "..\..\..\libs\mathlib\mathlib.vcproj", "{608341F6-3E13-498C-B16B-8CFB737F311E}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "md5lib", "..\..\..\libs\md5lib\md5lib.vcproj", "{0B6C0AED-1BF5-4794-8CD0-2686A3EF852A}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "picomodel", "..\..\..\libs\picomodel\picomodel.vcproj", "{D50B2D31-7046-4E77-AB0F-4211BE70834C}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "q3map2", "q3map2.vcproj", "{7AF7537E-94C3-4680-8F5E-C1CE30DC2041}" - ProjectSection(ProjectDependencies) = postProject - {DF2E2A3A-51C9-414F-BEE9-261C2E88CF70} = {DF2E2A3A-51C9-414F-BEE9-261C2E88CF70} - {D50B2D31-7046-4E77-AB0F-4211BE70834C} = {D50B2D31-7046-4E77-AB0F-4211BE70834C} - {7FD1FB6D-9969-43E1-857D-1B70B85DB89D} = {7FD1FB6D-9969-43E1-857D-1B70B85DB89D} - {F6FEEEDB-8B57-411E-924D-2C49AA55A03B} = {F6FEEEDB-8B57-411E-924D-2C49AA55A03B} - {0B6C0AED-1BF5-4794-8CD0-2686A3EF852A} = {0B6C0AED-1BF5-4794-8CD0-2686A3EF852A} - {608341F6-3E13-498C-B16B-8CFB737F311E} = {608341F6-3E13-498C-B16B-8CFB737F311E} - {C64EA14E-82DD-4E6A-825F-BD9745137CCB} = {C64EA14E-82DD-4E6A-825F-BD9745137CCB} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpng", "..\..\..\..\..\..\q3map2\Q3map2FS\libpng-1.2\projects\msvc\libpng.vcproj", "{DF2E2A3A-51C9-414F-BEE9-261C2E88CF70}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - DLL ASM|Win32 = DLL ASM|Win32 - DLL Debug ASM|Win32 = DLL Debug ASM|Win32 - DLL Debug|Win32 = DLL Debug|Win32 - DLL VB|Win32 = DLL VB|Win32 - DLL|Win32 = DLL|Win32 - LIB Debug|Win32 = LIB Debug|Win32 - LIB|Win32 = LIB|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {7FD1FB6D-9969-43E1-857D-1B70B85DB89D}.Debug|Win32.ActiveCfg = Debug|Win32 - {7FD1FB6D-9969-43E1-857D-1B70B85DB89D}.Debug|Win32.Build.0 = Debug|Win32 - {7FD1FB6D-9969-43E1-857D-1B70B85DB89D}.DLL ASM|Win32.ActiveCfg = Debug|Win32 - {7FD1FB6D-9969-43E1-857D-1B70B85DB89D}.DLL ASM|Win32.Build.0 = Debug|Win32 - {7FD1FB6D-9969-43E1-857D-1B70B85DB89D}.DLL Debug ASM|Win32.ActiveCfg = Debug|Win32 - {7FD1FB6D-9969-43E1-857D-1B70B85DB89D}.DLL Debug ASM|Win32.Build.0 = Debug|Win32 - {7FD1FB6D-9969-43E1-857D-1B70B85DB89D}.DLL Debug|Win32.ActiveCfg = Debug|Win32 - {7FD1FB6D-9969-43E1-857D-1B70B85DB89D}.DLL Debug|Win32.Build.0 = Debug|Win32 - {7FD1FB6D-9969-43E1-857D-1B70B85DB89D}.DLL VB|Win32.ActiveCfg = Debug|Win32 - {7FD1FB6D-9969-43E1-857D-1B70B85DB89D}.DLL VB|Win32.Build.0 = Debug|Win32 - {7FD1FB6D-9969-43E1-857D-1B70B85DB89D}.DLL|Win32.ActiveCfg = Debug|Win32 - {7FD1FB6D-9969-43E1-857D-1B70B85DB89D}.DLL|Win32.Build.0 = Debug|Win32 - {7FD1FB6D-9969-43E1-857D-1B70B85DB89D}.LIB Debug|Win32.ActiveCfg = Debug|Win32 - {7FD1FB6D-9969-43E1-857D-1B70B85DB89D}.LIB Debug|Win32.Build.0 = Debug|Win32 - {7FD1FB6D-9969-43E1-857D-1B70B85DB89D}.LIB|Win32.ActiveCfg = Debug|Win32 - {7FD1FB6D-9969-43E1-857D-1B70B85DB89D}.LIB|Win32.Build.0 = Debug|Win32 - {7FD1FB6D-9969-43E1-857D-1B70B85DB89D}.Release|Win32.ActiveCfg = Release|Win32 - {7FD1FB6D-9969-43E1-857D-1B70B85DB89D}.Release|Win32.Build.0 = Release|Win32 - {F6FEEEDB-8B57-411E-924D-2C49AA55A03B}.Debug|Win32.ActiveCfg = Debug|Win32 - {F6FEEEDB-8B57-411E-924D-2C49AA55A03B}.Debug|Win32.Build.0 = Debug|Win32 - {F6FEEEDB-8B57-411E-924D-2C49AA55A03B}.DLL ASM|Win32.ActiveCfg = Debug|Win32 - {F6FEEEDB-8B57-411E-924D-2C49AA55A03B}.DLL ASM|Win32.Build.0 = Debug|Win32 - {F6FEEEDB-8B57-411E-924D-2C49AA55A03B}.DLL Debug ASM|Win32.ActiveCfg = Debug|Win32 - {F6FEEEDB-8B57-411E-924D-2C49AA55A03B}.DLL Debug ASM|Win32.Build.0 = Debug|Win32 - {F6FEEEDB-8B57-411E-924D-2C49AA55A03B}.DLL Debug|Win32.ActiveCfg = Debug|Win32 - {F6FEEEDB-8B57-411E-924D-2C49AA55A03B}.DLL Debug|Win32.Build.0 = Debug|Win32 - {F6FEEEDB-8B57-411E-924D-2C49AA55A03B}.DLL VB|Win32.ActiveCfg = Debug|Win32 - {F6FEEEDB-8B57-411E-924D-2C49AA55A03B}.DLL VB|Win32.Build.0 = Debug|Win32 - {F6FEEEDB-8B57-411E-924D-2C49AA55A03B}.DLL|Win32.ActiveCfg = Debug|Win32 - {F6FEEEDB-8B57-411E-924D-2C49AA55A03B}.DLL|Win32.Build.0 = Debug|Win32 - {F6FEEEDB-8B57-411E-924D-2C49AA55A03B}.LIB Debug|Win32.ActiveCfg = Debug|Win32 - {F6FEEEDB-8B57-411E-924D-2C49AA55A03B}.LIB Debug|Win32.Build.0 = Debug|Win32 - {F6FEEEDB-8B57-411E-924D-2C49AA55A03B}.LIB|Win32.ActiveCfg = Debug|Win32 - {F6FEEEDB-8B57-411E-924D-2C49AA55A03B}.LIB|Win32.Build.0 = Debug|Win32 - {F6FEEEDB-8B57-411E-924D-2C49AA55A03B}.Release|Win32.ActiveCfg = Release|Win32 - {F6FEEEDB-8B57-411E-924D-2C49AA55A03B}.Release|Win32.Build.0 = Release|Win32 - {C64EA14E-82DD-4E6A-825F-BD9745137CCB}.Debug|Win32.ActiveCfg = Debug|Win32 - {C64EA14E-82DD-4E6A-825F-BD9745137CCB}.Debug|Win32.Build.0 = Debug|Win32 - {C64EA14E-82DD-4E6A-825F-BD9745137CCB}.DLL ASM|Win32.ActiveCfg = Debug|Win32 - {C64EA14E-82DD-4E6A-825F-BD9745137CCB}.DLL ASM|Win32.Build.0 = Debug|Win32 - {C64EA14E-82DD-4E6A-825F-BD9745137CCB}.DLL Debug ASM|Win32.ActiveCfg = Debug|Win32 - {C64EA14E-82DD-4E6A-825F-BD9745137CCB}.DLL Debug ASM|Win32.Build.0 = Debug|Win32 - {C64EA14E-82DD-4E6A-825F-BD9745137CCB}.DLL Debug|Win32.ActiveCfg = Debug|Win32 - {C64EA14E-82DD-4E6A-825F-BD9745137CCB}.DLL Debug|Win32.Build.0 = Debug|Win32 - {C64EA14E-82DD-4E6A-825F-BD9745137CCB}.DLL VB|Win32.ActiveCfg = Debug|Win32 - {C64EA14E-82DD-4E6A-825F-BD9745137CCB}.DLL VB|Win32.Build.0 = Debug|Win32 - {C64EA14E-82DD-4E6A-825F-BD9745137CCB}.DLL|Win32.ActiveCfg = Debug|Win32 - {C64EA14E-82DD-4E6A-825F-BD9745137CCB}.DLL|Win32.Build.0 = Debug|Win32 - {C64EA14E-82DD-4E6A-825F-BD9745137CCB}.LIB Debug|Win32.ActiveCfg = Debug|Win32 - {C64EA14E-82DD-4E6A-825F-BD9745137CCB}.LIB Debug|Win32.Build.0 = Debug|Win32 - {C64EA14E-82DD-4E6A-825F-BD9745137CCB}.LIB|Win32.ActiveCfg = Debug|Win32 - {C64EA14E-82DD-4E6A-825F-BD9745137CCB}.LIB|Win32.Build.0 = Debug|Win32 - {C64EA14E-82DD-4E6A-825F-BD9745137CCB}.Release|Win32.ActiveCfg = Release|Win32 - {C64EA14E-82DD-4E6A-825F-BD9745137CCB}.Release|Win32.Build.0 = Release|Win32 - {608341F6-3E13-498C-B16B-8CFB737F311E}.Debug|Win32.ActiveCfg = Debug|Win32 - {608341F6-3E13-498C-B16B-8CFB737F311E}.Debug|Win32.Build.0 = Debug|Win32 - {608341F6-3E13-498C-B16B-8CFB737F311E}.DLL ASM|Win32.ActiveCfg = Debug|Win32 - {608341F6-3E13-498C-B16B-8CFB737F311E}.DLL ASM|Win32.Build.0 = Debug|Win32 - {608341F6-3E13-498C-B16B-8CFB737F311E}.DLL Debug ASM|Win32.ActiveCfg = Debug|Win32 - {608341F6-3E13-498C-B16B-8CFB737F311E}.DLL Debug ASM|Win32.Build.0 = Debug|Win32 - {608341F6-3E13-498C-B16B-8CFB737F311E}.DLL Debug|Win32.ActiveCfg = Debug|Win32 - {608341F6-3E13-498C-B16B-8CFB737F311E}.DLL Debug|Win32.Build.0 = Debug|Win32 - {608341F6-3E13-498C-B16B-8CFB737F311E}.DLL VB|Win32.ActiveCfg = Debug|Win32 - {608341F6-3E13-498C-B16B-8CFB737F311E}.DLL VB|Win32.Build.0 = Debug|Win32 - {608341F6-3E13-498C-B16B-8CFB737F311E}.DLL|Win32.ActiveCfg = Debug|Win32 - {608341F6-3E13-498C-B16B-8CFB737F311E}.DLL|Win32.Build.0 = Debug|Win32 - {608341F6-3E13-498C-B16B-8CFB737F311E}.LIB Debug|Win32.ActiveCfg = Debug|Win32 - {608341F6-3E13-498C-B16B-8CFB737F311E}.LIB Debug|Win32.Build.0 = Debug|Win32 - {608341F6-3E13-498C-B16B-8CFB737F311E}.LIB|Win32.ActiveCfg = Release|Win32 - {608341F6-3E13-498C-B16B-8CFB737F311E}.LIB|Win32.Build.0 = Release|Win32 - {608341F6-3E13-498C-B16B-8CFB737F311E}.Release|Win32.ActiveCfg = Release|Win32 - {608341F6-3E13-498C-B16B-8CFB737F311E}.Release|Win32.Build.0 = Release|Win32 - {0B6C0AED-1BF5-4794-8CD0-2686A3EF852A}.Debug|Win32.ActiveCfg = Debug|Win32 - {0B6C0AED-1BF5-4794-8CD0-2686A3EF852A}.Debug|Win32.Build.0 = Debug|Win32 - {0B6C0AED-1BF5-4794-8CD0-2686A3EF852A}.DLL ASM|Win32.ActiveCfg = Debug|Win32 - {0B6C0AED-1BF5-4794-8CD0-2686A3EF852A}.DLL ASM|Win32.Build.0 = Debug|Win32 - {0B6C0AED-1BF5-4794-8CD0-2686A3EF852A}.DLL Debug ASM|Win32.ActiveCfg = Debug|Win32 - {0B6C0AED-1BF5-4794-8CD0-2686A3EF852A}.DLL Debug ASM|Win32.Build.0 = Debug|Win32 - {0B6C0AED-1BF5-4794-8CD0-2686A3EF852A}.DLL Debug|Win32.ActiveCfg = Debug|Win32 - {0B6C0AED-1BF5-4794-8CD0-2686A3EF852A}.DLL Debug|Win32.Build.0 = Debug|Win32 - {0B6C0AED-1BF5-4794-8CD0-2686A3EF852A}.DLL VB|Win32.ActiveCfg = Debug|Win32 - {0B6C0AED-1BF5-4794-8CD0-2686A3EF852A}.DLL VB|Win32.Build.0 = Debug|Win32 - {0B6C0AED-1BF5-4794-8CD0-2686A3EF852A}.DLL|Win32.ActiveCfg = Debug|Win32 - {0B6C0AED-1BF5-4794-8CD0-2686A3EF852A}.DLL|Win32.Build.0 = Debug|Win32 - {0B6C0AED-1BF5-4794-8CD0-2686A3EF852A}.LIB Debug|Win32.ActiveCfg = Debug|Win32 - {0B6C0AED-1BF5-4794-8CD0-2686A3EF852A}.LIB Debug|Win32.Build.0 = Debug|Win32 - {0B6C0AED-1BF5-4794-8CD0-2686A3EF852A}.LIB|Win32.ActiveCfg = Release|Win32 - {0B6C0AED-1BF5-4794-8CD0-2686A3EF852A}.LIB|Win32.Build.0 = Release|Win32 - {0B6C0AED-1BF5-4794-8CD0-2686A3EF852A}.Release|Win32.ActiveCfg = Release|Win32 - {0B6C0AED-1BF5-4794-8CD0-2686A3EF852A}.Release|Win32.Build.0 = Release|Win32 - {D50B2D31-7046-4E77-AB0F-4211BE70834C}.Debug|Win32.ActiveCfg = Debug|Win32 - {D50B2D31-7046-4E77-AB0F-4211BE70834C}.Debug|Win32.Build.0 = Debug|Win32 - {D50B2D31-7046-4E77-AB0F-4211BE70834C}.DLL ASM|Win32.ActiveCfg = Debug|Win32 - {D50B2D31-7046-4E77-AB0F-4211BE70834C}.DLL ASM|Win32.Build.0 = Debug|Win32 - {D50B2D31-7046-4E77-AB0F-4211BE70834C}.DLL Debug ASM|Win32.ActiveCfg = Debug|Win32 - {D50B2D31-7046-4E77-AB0F-4211BE70834C}.DLL Debug ASM|Win32.Build.0 = Debug|Win32 - {D50B2D31-7046-4E77-AB0F-4211BE70834C}.DLL Debug|Win32.ActiveCfg = Debug|Win32 - {D50B2D31-7046-4E77-AB0F-4211BE70834C}.DLL Debug|Win32.Build.0 = Debug|Win32 - {D50B2D31-7046-4E77-AB0F-4211BE70834C}.DLL VB|Win32.ActiveCfg = Debug|Win32 - {D50B2D31-7046-4E77-AB0F-4211BE70834C}.DLL VB|Win32.Build.0 = Debug|Win32 - {D50B2D31-7046-4E77-AB0F-4211BE70834C}.DLL|Win32.ActiveCfg = Debug|Win32 - {D50B2D31-7046-4E77-AB0F-4211BE70834C}.DLL|Win32.Build.0 = Debug|Win32 - {D50B2D31-7046-4E77-AB0F-4211BE70834C}.LIB Debug|Win32.ActiveCfg = Debug|Win32 - {D50B2D31-7046-4E77-AB0F-4211BE70834C}.LIB Debug|Win32.Build.0 = Debug|Win32 - {D50B2D31-7046-4E77-AB0F-4211BE70834C}.LIB|Win32.ActiveCfg = Debug|Win32 - {D50B2D31-7046-4E77-AB0F-4211BE70834C}.LIB|Win32.Build.0 = Debug|Win32 - {D50B2D31-7046-4E77-AB0F-4211BE70834C}.Release|Win32.ActiveCfg = Release|Win32 - {D50B2D31-7046-4E77-AB0F-4211BE70834C}.Release|Win32.Build.0 = Release|Win32 - {7AF7537E-94C3-4680-8F5E-C1CE30DC2041}.Debug|Win32.ActiveCfg = Debug|Win32 - {7AF7537E-94C3-4680-8F5E-C1CE30DC2041}.Debug|Win32.Build.0 = Debug|Win32 - {7AF7537E-94C3-4680-8F5E-C1CE30DC2041}.DLL ASM|Win32.ActiveCfg = Debug|Win32 - {7AF7537E-94C3-4680-8F5E-C1CE30DC2041}.DLL ASM|Win32.Build.0 = Debug|Win32 - {7AF7537E-94C3-4680-8F5E-C1CE30DC2041}.DLL Debug ASM|Win32.ActiveCfg = Debug|Win32 - {7AF7537E-94C3-4680-8F5E-C1CE30DC2041}.DLL Debug ASM|Win32.Build.0 = Debug|Win32 - {7AF7537E-94C3-4680-8F5E-C1CE30DC2041}.DLL Debug|Win32.ActiveCfg = Debug|Win32 - {7AF7537E-94C3-4680-8F5E-C1CE30DC2041}.DLL Debug|Win32.Build.0 = Debug|Win32 - {7AF7537E-94C3-4680-8F5E-C1CE30DC2041}.DLL VB|Win32.ActiveCfg = Debug|Win32 - {7AF7537E-94C3-4680-8F5E-C1CE30DC2041}.DLL VB|Win32.Build.0 = Debug|Win32 - {7AF7537E-94C3-4680-8F5E-C1CE30DC2041}.DLL|Win32.ActiveCfg = Debug|Win32 - {7AF7537E-94C3-4680-8F5E-C1CE30DC2041}.DLL|Win32.Build.0 = Debug|Win32 - {7AF7537E-94C3-4680-8F5E-C1CE30DC2041}.LIB Debug|Win32.ActiveCfg = Debug|Win32 - {7AF7537E-94C3-4680-8F5E-C1CE30DC2041}.LIB Debug|Win32.Build.0 = Debug|Win32 - {7AF7537E-94C3-4680-8F5E-C1CE30DC2041}.LIB|Win32.ActiveCfg = Debug|Win32 - {7AF7537E-94C3-4680-8F5E-C1CE30DC2041}.LIB|Win32.Build.0 = Debug|Win32 - {7AF7537E-94C3-4680-8F5E-C1CE30DC2041}.Release|Win32.ActiveCfg = Release|Win32 - {7AF7537E-94C3-4680-8F5E-C1CE30DC2041}.Release|Win32.Build.0 = Release|Win32 - {DF2E2A3A-51C9-414F-BEE9-261C2E88CF70}.Debug|Win32.ActiveCfg = DLL Debug|Win32 - {DF2E2A3A-51C9-414F-BEE9-261C2E88CF70}.Debug|Win32.Build.0 = DLL Debug|Win32 - {DF2E2A3A-51C9-414F-BEE9-261C2E88CF70}.DLL ASM|Win32.ActiveCfg = DLL ASM|Win32 - {DF2E2A3A-51C9-414F-BEE9-261C2E88CF70}.DLL ASM|Win32.Build.0 = DLL ASM|Win32 - {DF2E2A3A-51C9-414F-BEE9-261C2E88CF70}.DLL Debug ASM|Win32.ActiveCfg = DLL Debug ASM|Win32 - {DF2E2A3A-51C9-414F-BEE9-261C2E88CF70}.DLL Debug ASM|Win32.Build.0 = DLL Debug ASM|Win32 - {DF2E2A3A-51C9-414F-BEE9-261C2E88CF70}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32 - {DF2E2A3A-51C9-414F-BEE9-261C2E88CF70}.DLL Debug|Win32.Build.0 = DLL Debug|Win32 - {DF2E2A3A-51C9-414F-BEE9-261C2E88CF70}.DLL VB|Win32.ActiveCfg = DLL VB|Win32 - {DF2E2A3A-51C9-414F-BEE9-261C2E88CF70}.DLL VB|Win32.Build.0 = DLL VB|Win32 - {DF2E2A3A-51C9-414F-BEE9-261C2E88CF70}.DLL|Win32.ActiveCfg = DLL|Win32 - {DF2E2A3A-51C9-414F-BEE9-261C2E88CF70}.DLL|Win32.Build.0 = DLL|Win32 - {DF2E2A3A-51C9-414F-BEE9-261C2E88CF70}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32 - {DF2E2A3A-51C9-414F-BEE9-261C2E88CF70}.LIB Debug|Win32.Build.0 = LIB Debug|Win32 - {DF2E2A3A-51C9-414F-BEE9-261C2E88CF70}.LIB|Win32.ActiveCfg = LIB|Win32 - {DF2E2A3A-51C9-414F-BEE9-261C2E88CF70}.LIB|Win32.Build.0 = LIB|Win32 - {DF2E2A3A-51C9-414F-BEE9-261C2E88CF70}.Release|Win32.ActiveCfg = DLL Debug|Win32 - {DF2E2A3A-51C9-414F-BEE9-261C2E88CF70}.Release|Win32.Build.0 = DLL Debug|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/tools/urt/tools/quake3/q3map2/q3map2.suo b/tools/urt/tools/quake3/q3map2/q3map2.suo deleted file mode 100644 index 438c7b336e3cc181cb7984de15d765045ae63b1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 100864 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

-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 diff --git a/tools/urt/tools/quake3/q3map2/q3map2.vcproj.rej b/tools/urt/tools/quake3/q3map2/q3map2.vcproj.rej deleted file mode 100644 index 448f46cc..00000000 --- a/tools/urt/tools/quake3/q3map2/q3map2.vcproj.rej +++ /dev/null @@ -1,17 +0,0 @@ -*************** -*** 180,186 **** - Name="VCLinkerTool" - AdditionalOptions="/MACHINE:I386" - AdditionalDependencies="glib-2.0.lib wsock32.lib libxml2.lib libpng.lib libmhash.lib" -- OutputFile=".\Release/q3map2.exe" - LinkIncremental="1" - SuppressStartupBanner="true" - AdditionalLibraryDirectories=""..\..\..\..\mhash-0.9\win32\libmhash\Release";"..\..\..\..\libxml2-2.6\lib";"..\..\..\..\gtk2-2.10\lib"" ---- 180,186 ---- - Name="VCLinkerTool" - AdditionalOptions="/MACHINE:I386" - AdditionalDependencies="glib-2.0.lib wsock32.lib libxml2.lib libpng.lib libmhash.lib" -+ OutputFile=".\Release/q3map2_fs_20g.exe" - LinkIncremental="1" - SuppressStartupBanner="true" - AdditionalLibraryDirectories=""..\..\..\..\mhash-0.9\win32\libmhash\Release";"..\..\..\..\libxml2-2.6\lib";"..\..\..\..\gtk2-2.10\lib"" diff --git a/tools/urt/tools/quake3/q3map2/version.h b/tools/urt/tools/quake3/q3map2/version.h deleted file mode 100644 index 91f5e433..00000000 --- a/tools/urt/tools/quake3/q3map2/version.h +++ /dev/null @@ -1,4 +0,0 @@ -// generated header, see makeversion.py -#define RADIANT_VERSION "1.6.0" -#define RADIANT_MINOR_VERSION "0" -#define RADIANT_MAJOR_VERSION "6" From 64332fb43d3fb17e36eca30cb21c8d9214da5ce4 Mon Sep 17 00:00:00 2001 From: Timothee Besset Date: Sun, 8 Sep 2013 13:28:08 +0100 Subject: [PATCH 15/16] misc - having a look at brush primitives stuff --- radiant/bp_dlg.cpp | 1 - radiant/brush.cpp | 7 ++++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/radiant/bp_dlg.cpp b/radiant/bp_dlg.cpp index 9a2bb786..13ef1620 100644 --- a/radiant/bp_dlg.cpp +++ b/radiant/bp_dlg.cpp @@ -53,7 +53,6 @@ gint BP_dialog_delete_callback( GtkWidget *widget, GdkEvent* event, gpointer dat // ret: 0 = abort, 1 = load and convert, 2 = changed project settings, load and don't convert // the user might decide to switch the BP mode in project settings // status: 0 = loading regular, got conflict 1 = loading BP, got conflict -// int WINAPI gtk_MessageBox (GtkWidget *parent, const char* lpText, const char* lpCaption, guint32 uType) int BP_MessageBox( int status ){ GtkWidget *window, *w, *vbox, *hbox; GtkAccelGroup *accel; diff --git a/radiant/brush.cpp b/radiant/brush.cpp index b6fc0344..05ec12fb 100644 --- a/radiant/brush.cpp +++ b/radiant/brush.cpp @@ -97,9 +97,9 @@ vec3_t baseaxis[18] = {0,-1,0}, {1,0,0}, {0,0,-1} // north wall }; -void TextureAxisFromPlane( plane_t *pln, vec3_t xv, vec3_t yv ){ +void TextureAxisFromPlane( plane_t *pln, vec3_t xv, vec3_t yv ) { int bestaxis; - float dot,best; + float dot, best; int i; best = 0; @@ -108,7 +108,8 @@ void TextureAxisFromPlane( plane_t *pln, vec3_t xv, vec3_t yv ){ for ( i = 0 ; i < 6 ; i++ ) { dot = DotProduct( pln->normal, baseaxis[i * 3] ); - if ( g_PrefsDlg.m_bQ3Map2Texturing && dot > best + 0.0001f || dot > best ) { + // see q3map2 source - added () for clarity + if ( ( g_PrefsDlg.m_bQ3Map2Texturing && dot > best + 0.0001f ) || dot > best ) { best = dot; bestaxis = i; } From 0912498271f943dbff62978560a8c828b83703ac Mon Sep 17 00:00:00 2001 From: "Timothee \"TTimo\" Besset" Date: Sun, 8 Sep 2013 08:51:14 -0500 Subject: [PATCH 16/16] remove the offsets column --- plugins/surface/surfacedialog.cpp | 306 +----------------------------- 1 file changed, 10 insertions(+), 296 deletions(-) diff --git a/plugins/surface/surfacedialog.cpp b/plugins/surface/surfacedialog.cpp index 0c9255b4..0b94665c 100644 --- a/plugins/surface/surfacedialog.cpp +++ b/plugins/surface/surfacedialog.cpp @@ -120,7 +120,6 @@ GtkWidget *texture_combo; GtkWidget *texture_combo_entry; GtkWidget *match_grid_button; -GtkWidget *lock_valuechange_togglebutton; GtkObject *hshift_value_spinbutton_adj; GtkWidget *hshift_value_spinbutton; @@ -133,17 +132,6 @@ GtkWidget *vscale_value_spinbutton; GtkObject *rotate_value_spinbutton_adj; GtkWidget *rotate_value_spinbutton; -GtkObject *hshift_offset_spinbutton_adj; -GtkWidget *hshift_offset_spinbutton; -GtkObject *vshift_offset_spinbutton_adj; -GtkWidget *vshift_offset_spinbutton; -GtkObject *hscale_offset_spinbutton_adj; -GtkWidget *hscale_offset_spinbutton; -GtkObject *vscale_offset_spinbutton_adj; -GtkWidget *vscale_offset_spinbutton; -GtkObject *rotate_offset_spinbutton_adj; -GtkWidget *rotate_offset_spinbutton; - GtkObject *hshift_step_spinbutton_adj; GtkWidget *hshift_step_spinbutton; GtkObject *vshift_step_spinbutton_adj; @@ -170,7 +158,6 @@ gboolean on_texture_combo_entry_key_press_event( GtkWidget *widget, GdkEventKey void on_texture_combo_entry_activate( GtkEntry *entry, gpointer user_data ); static void on_match_grid_button_clicked( GtkButton *button, gpointer user_data ); -static void on_lock_valuechange_togglebutton_toggled( GtkToggleButton *togglebutton, gpointer user_data ); static void on_hshift_value_spinbutton_value_changed( GtkSpinButton *spinbutton, gpointer user_data ); static void on_vshift_value_spinbutton_value_changed( GtkSpinButton *spinbutton, gpointer user_data ); @@ -178,12 +165,6 @@ static void on_hscale_value_spinbutton_value_changed( GtkSpinButton *spinbutton, static void on_vscale_value_spinbutton_value_changed( GtkSpinButton *spinbutton, gpointer user_data ); static void on_rotate_value_spinbutton_value_changed( GtkSpinButton *spinbutton, gpointer user_data ); -static void on_hshift_offset_spinbutton_value_changed( GtkSpinButton *spinbutton, gpointer user_data ); -static void on_vshift_offset_spinbutton_value_changed( GtkSpinButton *spinbutton, gpointer user_data ); -static void on_hscale_offset_spinbutton_value_changed( GtkSpinButton *spinbutton, gpointer user_data ); -static void on_vscale_offset_spinbutton_value_changed( GtkSpinButton *spinbutton, gpointer user_data ); -static void on_rotate_offset_spinbutton_value_changed( GtkSpinButton *spinbutton, gpointer user_data ); - static void on_hshift_step_spinbutton_value_changed( GtkSpinButton *spinbutton, gpointer user_data ); static void on_vshift_step_spinbutton_value_changed( GtkSpinButton *spinbutton, gpointer user_data ); static void on_hscale_step_spinbutton_value_changed( GtkSpinButton *spinbutton, gpointer user_data ); @@ -211,7 +192,6 @@ static void on_apply_button_clicked( GtkButton *button, gpointer user_data ); void IsFaceConflicting(){ texdef_t* tmp_texdef; texdef_to_face_t* temp_texdef_face_list; -// char buf[12]; char texture_name[128]; if ( texdef_face_list_empty() ) { @@ -320,7 +300,6 @@ static void PopulateTextureComboList(){ texdef_to_face_t* temp_texdef_face_list; char blank[1]; GList *items = NULL; -// GList *tmp_item; int num_of_list_items = 0; blank[0] = 0; @@ -599,62 +578,26 @@ void SetTexMods(){ texdef_offset.SetName( SHADER_NOT_FOUND ); } - - spin = GTK_SPIN_BUTTON( hshift_offset_spinbutton ); - gtk_spin_button_set_value( spin, texdef_offset.shift[0] ); - adjust = gtk_spin_button_get_adjustment( GTK_SPIN_BUTTON( spin ) ); - adjust->step_increment = l_pIncrement->shift[0]; - gtk_spin_button_set_value( GTK_SPIN_BUTTON( hshift_step_spinbutton ), l_pIncrement->shift[0] ); - spin = GTK_SPIN_BUTTON( hshift_value_spinbutton ); adjust = gtk_spin_button_get_adjustment( GTK_SPIN_BUTTON( spin ) ); adjust->step_increment = l_pIncrement->shift[0]; - - spin = GTK_SPIN_BUTTON( vshift_offset_spinbutton ); - gtk_spin_button_set_value( spin, texdef_offset.shift[1] ); - adjust = gtk_spin_button_get_adjustment( GTK_SPIN_BUTTON( spin ) ); - adjust->step_increment = l_pIncrement->shift[1]; - gtk_spin_button_set_value( GTK_SPIN_BUTTON( vshift_step_spinbutton ), l_pIncrement->shift[1] ); - spin = GTK_SPIN_BUTTON( vshift_value_spinbutton ); adjust = gtk_spin_button_get_adjustment( GTK_SPIN_BUTTON( spin ) ); adjust->step_increment = l_pIncrement->shift[1]; - - spin = GTK_SPIN_BUTTON( hscale_offset_spinbutton ); - gtk_spin_button_set_value( spin, texdef_offset.scale[0] ); - adjust = gtk_spin_button_get_adjustment( GTK_SPIN_BUTTON( spin ) ); - adjust->step_increment = l_pIncrement->scale[0]; - gtk_spin_button_set_value( GTK_SPIN_BUTTON( hscale_step_spinbutton ), l_pIncrement->scale[0] ); - spin = GTK_SPIN_BUTTON( hscale_value_spinbutton ); adjust = gtk_spin_button_get_adjustment( GTK_SPIN_BUTTON( spin ) ); adjust->step_increment = l_pIncrement->scale[0]; - - spin = GTK_SPIN_BUTTON( vscale_offset_spinbutton ); - gtk_spin_button_set_value( spin, texdef_offset.scale[1] ); - adjust = gtk_spin_button_get_adjustment( GTK_SPIN_BUTTON( spin ) ); - adjust->step_increment = l_pIncrement->scale[1]; - gtk_spin_button_set_value( GTK_SPIN_BUTTON( vscale_step_spinbutton ), l_pIncrement->scale[1] ); - spin = GTK_SPIN_BUTTON( vscale_value_spinbutton ); adjust = gtk_spin_button_get_adjustment( GTK_SPIN_BUTTON( spin ) ); adjust->step_increment = l_pIncrement->scale[1]; - - spin = GTK_SPIN_BUTTON( rotate_offset_spinbutton ); - gtk_spin_button_set_value( spin, texdef_offset.rotate ); - adjust = gtk_spin_button_get_adjustment( GTK_SPIN_BUTTON( spin ) ); - adjust->step_increment = l_pIncrement->rotate; - gtk_spin_button_set_value( GTK_SPIN_BUTTON( rotate_step_spinbutton ), l_pIncrement->rotate ); - spin = GTK_SPIN_BUTTON( rotate_value_spinbutton ); adjust = gtk_spin_button_get_adjustment( GTK_SPIN_BUTTON( spin ) ); adjust->step_increment = l_pIncrement->rotate; - g_bListenChanged = true; // store the current texdef as our escape route if user hits OnCancel @@ -880,12 +823,6 @@ GtkWidget* create_SurfaceInspector( void ){ (GtkAttachOptions) ( GTK_FILL ), (GtkAttachOptions) ( GTK_FILL ), 0, 0 ); - label = gtk_label_new( "Offset" ); - gtk_widget_show( label ); - gtk_table_attach( GTK_TABLE( table1 ), label, 2, 3, 0, 1, - (GtkAttachOptions) ( GTK_FILL ), - (GtkAttachOptions) ( 0 ), 0, 0 ); - label = gtk_label_new( "Step" ); gtk_widget_show( label ); gtk_table_attach( GTK_TABLE( table1 ), label, 3, 4, 0, 1, @@ -1011,10 +948,6 @@ GtkWidget* create_SurfaceInspector( void ){ (GtkAttachOptions) ( GTK_FILL ), (GtkAttachOptions) ( GTK_FILL ), 0, 0 ); - lock_valuechange_togglebutton = gtk_toggle_button_new_with_mnemonic( "UNLOCK" ); - gtk_widget_show( lock_valuechange_togglebutton ); - gtk_container_add( GTK_CONTAINER( eventbox ), lock_valuechange_togglebutton ); - // Value Spins hshift_value_spinbutton_adj = gtk_adjustment_new( 0.0, -8192.0, 8192.0, 2.0, 8.0, 0.0 ); hshift_value_spinbutton = gtk_spin_button_new( GTK_ADJUSTMENT( hshift_value_spinbutton_adj ), 1, 2 ); @@ -1024,7 +957,7 @@ GtkWidget* create_SurfaceInspector( void ){ (GtkAttachOptions) ( 0 ), 0, 0 ); gtk_spin_button_set_update_policy( GTK_SPIN_BUTTON( hshift_value_spinbutton ), GTK_UPDATE_IF_VALID ); gtk_spin_button_set_wrap( GTK_SPIN_BUTTON( hshift_value_spinbutton ), TRUE ); - gtk_widget_set_sensitive( GTK_WIDGET( hshift_value_spinbutton ), FALSE ); + gtk_widget_set_sensitive( GTK_WIDGET( hshift_value_spinbutton ), TRUE ); vshift_value_spinbutton_adj = gtk_adjustment_new( 0.0, -8192.0, 8192.0, 2.0, 8.0, 0.0 ); vshift_value_spinbutton = gtk_spin_button_new( GTK_ADJUSTMENT( vshift_value_spinbutton_adj ), 1, 2 ); @@ -1034,7 +967,7 @@ GtkWidget* create_SurfaceInspector( void ){ (GtkAttachOptions) ( 0 ), 0, 0 ); gtk_spin_button_set_update_policy( GTK_SPIN_BUTTON( vshift_value_spinbutton ), GTK_UPDATE_IF_VALID ); gtk_spin_button_set_wrap( GTK_SPIN_BUTTON( vshift_value_spinbutton ), TRUE ); - gtk_widget_set_sensitive( GTK_WIDGET( vshift_value_spinbutton ), FALSE ); + gtk_widget_set_sensitive( GTK_WIDGET( vshift_value_spinbutton ), TRUE ); hscale_value_spinbutton_adj = gtk_adjustment_new( 0.0, -1024.0, 1024.0, 1.0, 4.0, 0.0 ); hscale_value_spinbutton = gtk_spin_button_new( GTK_ADJUSTMENT( hscale_value_spinbutton_adj ), 1, 4 ); @@ -1044,7 +977,7 @@ GtkWidget* create_SurfaceInspector( void ){ (GtkAttachOptions) ( 0 ), 0, 0 ); gtk_spin_button_set_update_policy( GTK_SPIN_BUTTON( hscale_value_spinbutton ), GTK_UPDATE_IF_VALID ); gtk_spin_button_set_wrap( GTK_SPIN_BUTTON( hscale_value_spinbutton ), TRUE ); - gtk_widget_set_sensitive( GTK_WIDGET( hscale_value_spinbutton ), FALSE ); + gtk_widget_set_sensitive( GTK_WIDGET( hscale_value_spinbutton ), TRUE ); vscale_value_spinbutton_adj = gtk_adjustment_new( 0.0, -1024.0, 1024.0, 1.0, 4.0, 0.0 ); vscale_value_spinbutton = gtk_spin_button_new( GTK_ADJUSTMENT( vscale_value_spinbutton_adj ), 1, 4 ); @@ -1054,7 +987,7 @@ GtkWidget* create_SurfaceInspector( void ){ (GtkAttachOptions) ( 0 ), 0, 0 ); gtk_spin_button_set_update_policy( GTK_SPIN_BUTTON( vscale_value_spinbutton ), GTK_UPDATE_IF_VALID ); gtk_spin_button_set_wrap( GTK_SPIN_BUTTON( vscale_value_spinbutton ), TRUE ); - gtk_widget_set_sensitive( GTK_WIDGET( vscale_value_spinbutton ), FALSE ); + gtk_widget_set_sensitive( GTK_WIDGET( vscale_value_spinbutton ), TRUE ); rotate_value_spinbutton_adj = gtk_adjustment_new( 0.0, -360.0, 360.0, 1.0, 10.0, 0.0 ); rotate_value_spinbutton = gtk_spin_button_new( GTK_ADJUSTMENT( rotate_value_spinbutton_adj ), 1, 4 ); @@ -1064,58 +997,7 @@ GtkWidget* create_SurfaceInspector( void ){ (GtkAttachOptions) ( 0 ), 0, 0 ); gtk_spin_button_set_update_policy( GTK_SPIN_BUTTON( rotate_value_spinbutton ), GTK_UPDATE_IF_VALID ); gtk_spin_button_set_wrap( GTK_SPIN_BUTTON( rotate_value_spinbutton ), TRUE ); - gtk_widget_set_sensitive( GTK_WIDGET( rotate_value_spinbutton ), FALSE ); - - // Offset Spins - hshift_offset_spinbutton_adj = gtk_adjustment_new( 0.0, -8192.0, 8192.0, 2.0, 8.0, 0.0 ); - hshift_offset_spinbutton = gtk_spin_button_new( GTK_ADJUSTMENT( hshift_offset_spinbutton_adj ), 0, 2 ); - gtk_widget_show( hshift_offset_spinbutton ); - gtk_table_attach( GTK_TABLE( table1 ), hshift_offset_spinbutton, 2, 3, 2, 3, - (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), - (GtkAttachOptions) ( 0 ), 4, 0 ); - gtk_spin_button_set_numeric( GTK_SPIN_BUTTON( hshift_offset_spinbutton ), TRUE ); - gtk_spin_button_set_update_policy( GTK_SPIN_BUTTON( hshift_offset_spinbutton ), GTK_UPDATE_IF_VALID ); - gtk_spin_button_set_wrap( GTK_SPIN_BUTTON( hshift_offset_spinbutton ), TRUE ); - - vshift_offset_spinbutton_adj = gtk_adjustment_new( 0.0, -8192.0, 8192.0, 2.0, 8.0, 0.0 ); - vshift_offset_spinbutton = gtk_spin_button_new( GTK_ADJUSTMENT( vshift_offset_spinbutton_adj ), 0, 2 ); - gtk_widget_show( vshift_offset_spinbutton ); - gtk_table_attach( GTK_TABLE( table1 ), vshift_offset_spinbutton, 2, 3, 4, 5, - (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), - (GtkAttachOptions) ( 0 ), 4, 0 ); - gtk_spin_button_set_numeric( GTK_SPIN_BUTTON( vshift_offset_spinbutton ), TRUE ); - gtk_spin_button_set_update_policy( GTK_SPIN_BUTTON( vshift_offset_spinbutton ), GTK_UPDATE_IF_VALID ); - gtk_spin_button_set_wrap( GTK_SPIN_BUTTON( vshift_offset_spinbutton ), TRUE ); - - hscale_offset_spinbutton_adj = gtk_adjustment_new( 0.0, -1024.0, 1024.0, 1.0, 4.0, 0.0 ); - hscale_offset_spinbutton = gtk_spin_button_new( GTK_ADJUSTMENT( hscale_offset_spinbutton_adj ), 0, 4 ); - gtk_widget_show( hscale_offset_spinbutton ); - gtk_table_attach( GTK_TABLE( table1 ), hscale_offset_spinbutton, 2, 3, 6, 7, - (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), - (GtkAttachOptions) ( 0 ), 4, 0 ); - gtk_spin_button_set_numeric( GTK_SPIN_BUTTON( hscale_offset_spinbutton ), TRUE ); - gtk_spin_button_set_update_policy( GTK_SPIN_BUTTON( hscale_offset_spinbutton ), GTK_UPDATE_IF_VALID ); - gtk_spin_button_set_wrap( GTK_SPIN_BUTTON( hscale_offset_spinbutton ), TRUE ); - - vscale_offset_spinbutton_adj = gtk_adjustment_new( 0.0, -1024.0, 1024.0, 1.0, 4.0, 0.0 ); - vscale_offset_spinbutton = gtk_spin_button_new( GTK_ADJUSTMENT( vscale_offset_spinbutton_adj ), 0, 4 ); - gtk_widget_show( vscale_offset_spinbutton ); - gtk_table_attach( GTK_TABLE( table1 ), vscale_offset_spinbutton, 2, 3, 8, 9, - (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), - (GtkAttachOptions) ( 0 ), 4, 0 ); - gtk_spin_button_set_numeric( GTK_SPIN_BUTTON( vscale_offset_spinbutton ), TRUE ); - gtk_spin_button_set_update_policy( GTK_SPIN_BUTTON( vscale_offset_spinbutton ), GTK_UPDATE_IF_VALID ); - gtk_spin_button_set_wrap( GTK_SPIN_BUTTON( vscale_offset_spinbutton ), TRUE ); - - rotate_offset_spinbutton_adj = gtk_adjustment_new( 0.0, -360.0, 360.0, 1.0, 10.0, 0.0 ); - rotate_offset_spinbutton = gtk_spin_button_new( GTK_ADJUSTMENT( rotate_offset_spinbutton_adj ), 0, 4 ); - gtk_widget_show( rotate_offset_spinbutton ); - gtk_table_attach( GTK_TABLE( table1 ), rotate_offset_spinbutton, 2, 3, 10, 11, - (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), - (GtkAttachOptions) ( 0 ), 4, 0 ); - gtk_spin_button_set_numeric( GTK_SPIN_BUTTON( rotate_offset_spinbutton ), TRUE ); - gtk_spin_button_set_update_policy( GTK_SPIN_BUTTON( rotate_offset_spinbutton ), GTK_UPDATE_IF_VALID ); - gtk_spin_button_set_wrap( GTK_SPIN_BUTTON( rotate_offset_spinbutton ), TRUE ); + gtk_widget_set_sensitive( GTK_WIDGET( rotate_value_spinbutton ), TRUE ); // Step Spins hshift_step_spinbutton_adj = gtk_adjustment_new( 0.0, -8192.0, 8192.0, 2.0, 8.0, 0.0 ); @@ -1306,23 +1188,6 @@ GtkWidget* create_SurfaceInspector( void ){ G_CALLBACK( on_texture_combo_entry_activate ), NULL ); - - g_signal_connect( (gpointer) hshift_offset_spinbutton, "value_changed", - G_CALLBACK( on_hshift_offset_spinbutton_value_changed ), - NULL ); - g_signal_connect( (gpointer) vshift_offset_spinbutton, "value_changed", - G_CALLBACK( on_vshift_offset_spinbutton_value_changed ), - NULL ); - g_signal_connect( (gpointer) hscale_offset_spinbutton, "value_changed", - G_CALLBACK( on_hscale_offset_spinbutton_value_changed ), - NULL ); - g_signal_connect( (gpointer) vscale_offset_spinbutton, "value_changed", - G_CALLBACK( on_vscale_offset_spinbutton_value_changed ), - NULL ); - g_signal_connect( (gpointer) rotate_offset_spinbutton, "value_changed", - G_CALLBACK( on_rotate_offset_spinbutton_value_changed ), - NULL ); - g_signal_connect( (gpointer) hshift_value_spinbutton, "value_changed", G_CALLBACK( on_hshift_value_spinbutton_value_changed ), NULL ); @@ -1358,9 +1223,6 @@ GtkWidget* create_SurfaceInspector( void ){ g_signal_connect( (gpointer) match_grid_button, "clicked", G_CALLBACK( on_match_grid_button_clicked ), NULL ); - g_signal_connect( (gpointer) lock_valuechange_togglebutton, "toggled", - G_CALLBACK( on_lock_valuechange_togglebutton_toggled ), - NULL ); g_signal_connect( (gpointer) fit_width_spinbutton, "value_changed", G_CALLBACK( on_fit_width_spinbutton_value_changed ), @@ -1427,128 +1289,6 @@ void on_texture_combo_entry_activate( GtkEntry *entry, gpointer user_data ){ } } -// Offset Spins -static void on_hshift_offset_spinbutton_value_changed( GtkSpinButton *spinbutton, gpointer user_data ){ - texdef_t* tmp_texdef; - texdef_t* tmp_orig_texdef; - texdef_to_face_t* temp_texdef_face_list; - - texdef_offset.shift[0] = gtk_spin_button_get_value( GTK_SPIN_BUTTON( hshift_offset_spinbutton ) ); - - if ( !texdef_face_list_empty() && g_bListenChanged ) { - for ( temp_texdef_face_list = get_texdef_face_list(); temp_texdef_face_list; temp_texdef_face_list = temp_texdef_face_list->next ) - { - tmp_texdef = (texdef_t *) &temp_texdef_face_list->texdef; - tmp_orig_texdef = (texdef_t *) &temp_texdef_face_list->orig_texdef; - if ( is_HShift_conflicting ) { - tmp_texdef->shift[0] = tmp_orig_texdef->shift[0] + texdef_offset.shift[0]; - } - else{ - tmp_texdef->shift[0] = texdef_SI_values.shift[0] + texdef_offset.shift[0]; - } - } - GetTexMods(); - } -} - -static void on_vshift_offset_spinbutton_value_changed( GtkSpinButton *spinbutton, gpointer user_data ){ - texdef_t* tmp_texdef; - texdef_t* tmp_orig_texdef; - texdef_to_face_t* temp_texdef_face_list; - - texdef_offset.shift[1] = gtk_spin_button_get_value( GTK_SPIN_BUTTON( vshift_offset_spinbutton ) ); - - if ( !texdef_face_list_empty() && g_bListenChanged ) { - for ( temp_texdef_face_list = get_texdef_face_list(); temp_texdef_face_list; temp_texdef_face_list = temp_texdef_face_list->next ) - { - tmp_texdef = (texdef_t *) &temp_texdef_face_list->texdef; - tmp_orig_texdef = (texdef_t *) &temp_texdef_face_list->orig_texdef; - if ( is_VShift_conflicting ) { - tmp_texdef->shift[1] = tmp_orig_texdef->shift[1] + texdef_offset.shift[1]; - } - else{ - tmp_texdef->shift[1] = texdef_SI_values.shift[1] + texdef_offset.shift[1]; - } - } - GetTexMods(); - } - -} - -static void on_hscale_offset_spinbutton_value_changed( GtkSpinButton *spinbutton, gpointer user_data ){ - texdef_t* tmp_texdef; - texdef_t* tmp_orig_texdef; - texdef_to_face_t* temp_texdef_face_list; - - texdef_offset.scale[0] = gtk_spin_button_get_value( GTK_SPIN_BUTTON( hscale_offset_spinbutton ) ); - - if ( !texdef_face_list_empty() && g_bListenChanged ) { - for ( temp_texdef_face_list = get_texdef_face_list(); temp_texdef_face_list; temp_texdef_face_list = temp_texdef_face_list->next ) - { - tmp_texdef = (texdef_t *) &temp_texdef_face_list->texdef; - tmp_orig_texdef = (texdef_t *) &temp_texdef_face_list->orig_texdef; - if ( is_HScale_conflicting ) { - tmp_texdef->scale[0] = tmp_orig_texdef->scale[0] + texdef_offset.scale[0]; - } - else{ - tmp_texdef->scale[0] = texdef_SI_values.scale[0] + texdef_offset.scale[0]; - } - } - GetTexMods(); - } - - -} - -static void on_vscale_offset_spinbutton_value_changed( GtkSpinButton *spinbutton, gpointer user_data ){ - texdef_t* tmp_texdef; - texdef_t* tmp_orig_texdef; - texdef_to_face_t* temp_texdef_face_list; - - texdef_offset.scale[1] = gtk_spin_button_get_value( GTK_SPIN_BUTTON( vscale_offset_spinbutton ) ); - - if ( !texdef_face_list_empty() && g_bListenChanged ) { - for ( temp_texdef_face_list = get_texdef_face_list(); temp_texdef_face_list; temp_texdef_face_list = temp_texdef_face_list->next ) - { - tmp_texdef = (texdef_t *) &temp_texdef_face_list->texdef; - tmp_orig_texdef = (texdef_t *) &temp_texdef_face_list->orig_texdef; - if ( is_VScale_conflicting ) { - tmp_texdef->scale[1] = tmp_orig_texdef->scale[1] + texdef_offset.scale[1]; - } - else{ - tmp_texdef->scale[1] = texdef_SI_values.scale[1] + texdef_offset.scale[1]; - } - } - GetTexMods(); - } - -} - -static void on_rotate_offset_spinbutton_value_changed( GtkSpinButton *spinbutton, gpointer user_data ){ - texdef_t* tmp_texdef; - texdef_t* tmp_orig_texdef; - texdef_to_face_t* temp_texdef_face_list; - - texdef_offset.rotate = gtk_spin_button_get_value( GTK_SPIN_BUTTON( rotate_offset_spinbutton ) ); - - if ( !texdef_face_list_empty() && g_bListenChanged ) { - for ( temp_texdef_face_list = get_texdef_face_list(); temp_texdef_face_list; temp_texdef_face_list = temp_texdef_face_list->next ) - { - tmp_texdef = (texdef_t *) &temp_texdef_face_list->texdef; - tmp_orig_texdef = (texdef_t *) &temp_texdef_face_list->orig_texdef; - if ( is_Rotate_conflicting ) { - tmp_texdef->rotate = tmp_orig_texdef->rotate + texdef_offset.rotate; - } - else{ - tmp_texdef->rotate = texdef_SI_values.rotate + texdef_offset.rotate; - } - } - GetTexMods(); - } - -} - - // Match Grid static void on_match_grid_button_clicked( GtkButton *button, gpointer user_data ){ float hscale, vscale; @@ -1569,21 +1309,6 @@ static void on_match_grid_button_clicked( GtkButton *button, gpointer user_data DoSnapTToGrid( hscale, vscale ); } - -// Lock out changes to Value -static void on_lock_valuechange_togglebutton_toggled( GtkToggleButton *togglebutton, gpointer user_data ){ - bool is_Locked; - - is_Locked = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( lock_valuechange_togglebutton ) ) != false; - - gtk_widget_set_sensitive( GTK_WIDGET( hscale_value_spinbutton ), is_Locked ); - gtk_widget_set_sensitive( GTK_WIDGET( vscale_value_spinbutton ), is_Locked ); - gtk_widget_set_sensitive( GTK_WIDGET( hshift_value_spinbutton ), is_Locked ); - gtk_widget_set_sensitive( GTK_WIDGET( vshift_value_spinbutton ), is_Locked ); - gtk_widget_set_sensitive( GTK_WIDGET( rotate_value_spinbutton ), is_Locked ); -} - - // Value Spins static void on_hshift_value_spinbutton_value_changed( GtkSpinButton *spinbutton, gpointer user_data ){ texdef_t* tmp_texdef; @@ -1696,9 +1421,7 @@ static void on_hshift_step_spinbutton_value_changed( GtkSpinButton *spinbutton, Sys_Printf( "OnIncrementChanged HShift\n" ); #endif - val = gtk_spin_button_get_value( GTK_SPIN_BUTTON( hshift_step_spinbutton ) ) ; - adjust = gtk_spin_button_get_adjustment( GTK_SPIN_BUTTON( hshift_offset_spinbutton ) ); - adjust->step_increment = val; + val = gtk_spin_button_get_value( GTK_SPIN_BUTTON( hshift_step_spinbutton ) ); adjust = gtk_spin_button_get_adjustment( GTK_SPIN_BUTTON( hshift_value_spinbutton ) ); adjust->step_increment = val; l_pIncrement->shift[0] = val; @@ -1718,9 +1441,7 @@ static void on_vshift_step_spinbutton_value_changed( GtkSpinButton *spinbutton, Sys_Printf( "OnIncrementChanged VShift\n" ); #endif - val = gtk_spin_button_get_value( GTK_SPIN_BUTTON( vshift_step_spinbutton ) ) ; - adjust = gtk_spin_button_get_adjustment( GTK_SPIN_BUTTON( vshift_offset_spinbutton ) ); - adjust->step_increment = val; + val = gtk_spin_button_get_value( GTK_SPIN_BUTTON( vshift_step_spinbutton ) ); adjust = gtk_spin_button_get_adjustment( GTK_SPIN_BUTTON( vshift_value_spinbutton ) ); adjust->step_increment = val; l_pIncrement->shift[1] = val; @@ -1740,9 +1461,7 @@ static void on_hscale_step_spinbutton_value_changed( GtkSpinButton *spinbutton, Sys_Printf( "OnIncrementChanged HShift\n" ); #endif - val = gtk_spin_button_get_value( GTK_SPIN_BUTTON( hscale_step_spinbutton ) ) ; - adjust = gtk_spin_button_get_adjustment( GTK_SPIN_BUTTON( hscale_offset_spinbutton ) ); - adjust->step_increment = val; + val = gtk_spin_button_get_value( GTK_SPIN_BUTTON( hscale_step_spinbutton ) ); adjust = gtk_spin_button_get_adjustment( GTK_SPIN_BUTTON( hscale_value_spinbutton ) ); adjust->step_increment = val; l_pIncrement->scale[0] = val; @@ -1762,9 +1481,7 @@ static void on_vscale_step_spinbutton_value_changed( GtkSpinButton *spinbutton, Sys_Printf( "OnIncrementChanged HShift\n" ); #endif - val = gtk_spin_button_get_value( GTK_SPIN_BUTTON( vscale_step_spinbutton ) ) ; - adjust = gtk_spin_button_get_adjustment( GTK_SPIN_BUTTON( vscale_offset_spinbutton ) ); - adjust->step_increment = val; + val = gtk_spin_button_get_value( GTK_SPIN_BUTTON( vscale_step_spinbutton ) ); adjust = gtk_spin_button_get_adjustment( GTK_SPIN_BUTTON( vscale_value_spinbutton ) ); adjust->step_increment = val; l_pIncrement->scale[1] = val; @@ -1784,9 +1501,7 @@ static void on_rotate_step_spinbutton_value_changed( GtkSpinButton *spinbutton, Sys_Printf( "OnIncrementChanged HShift\n" ); #endif - val = gtk_spin_button_get_value( GTK_SPIN_BUTTON( rotate_step_spinbutton ) ) ; - adjust = gtk_spin_button_get_adjustment( GTK_SPIN_BUTTON( rotate_offset_spinbutton ) ); - adjust->step_increment = val; + val = gtk_spin_button_get_value( GTK_SPIN_BUTTON( rotate_step_spinbutton ) ); adjust = gtk_spin_button_get_adjustment( GTK_SPIN_BUTTON( rotate_value_spinbutton ) ); adjust->step_increment = val; l_pIncrement->rotate = val; @@ -1811,7 +1526,6 @@ static void on_fit_button_clicked( GtkButton *button, gpointer user_data ){ // Axial Button static void on_axial_button_clicked( GtkButton *button, gpointer user_data ){ texdef_t* tmp_texdef; -// texdef_t* tmp_orig_texdef; texdef_to_face_t* temp_texdef_face_list; if ( !texdef_face_list_empty() && g_bListenChanged ) {