diff --git a/apple/Makefile b/apple/Makefile index 1734bc17..f120507b 100644 --- a/apple/Makefile +++ b/apple/Makefile @@ -8,11 +8,16 @@ BINDIR = $(RESOURCES)/install CONFDIR = $(RESOURCES)/etc DATADIR = $(RESOURCES)/share LIBDIR = $(RESOURCES)/lib -PREFIX_SED_EXPR = 's:/opt/local:@executable_path/..:g' VERSION = 1.6.4 DMG = $(TARGET)/GtkRadiant-$(VERSION).dmg VOLUME_NAME = "GtkRadiant $(VERSION)" +# We must rewrite some Gtk configuration files, which vary from environment to +# environment depending on where you've installed MacPorts. Fun! + +MACPORTS_PREFIX := $(shell which port | sed 's:/bin/port::') +PREFIX_SED_EXPR = "s:$(MACPORTS_PREFIX):@executable_path/..:g" + all: install bundle -pre-install: @@ -21,33 +26,34 @@ 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 $(MACPORTS_PREFIX)/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 $(MACPORTS_PREFIX)/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 $(MACPORTS_PREFIX)/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 $(MACPORTS_PREFIX)/share/themes/Default $(RESOURCES)/share gtk-query-immodules-2.0 | sed $(PREFIX_SED_EXPR) > \ $(CONFDIR)/gtk-2.0/gtk.immodules 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 88fb8000..63ad8a75 100644 --- a/config.py +++ b/config.py @@ -22,13 +22,12 @@ 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 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 ) @@ -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() 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/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/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/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/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/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 00000000..e91acc51 Binary files /dev/null and b/install/bitmaps/toggle_detail.png differ diff --git a/install/bitmaps/toggle_struct.png b/install/bitmaps/toggle_struct.png new file mode 100644 index 00000000..c773aa5c Binary files /dev/null and b/install/bitmaps/toggle_struct.png differ 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/surfacedialog.cpp b/plugins/surface/surfacedialog.cpp index 986890e2..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,12 +948,8 @@ 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, 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, @@ -1024,9 +957,9 @@ 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, 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, @@ -1034,9 +967,9 @@ 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, 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, @@ -1044,9 +977,9 @@ 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, 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, @@ -1054,9 +987,9 @@ 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, 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, @@ -1064,61 +997,10 @@ 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, 8.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, 8.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, 4.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, 4.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, 10.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, 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 +1008,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 +1016,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 +1024,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 +1032,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 +1098,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 +1107,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, @@ -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 ) { 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/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; } diff --git a/radiant/groupdialog.cpp b/radiant/groupdialog.cpp index c2b82d07..a7c088b0 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; @@ -1136,12 +1138,21 @@ 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 ) { // 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 +1176,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; @@ -1201,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/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/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; } 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/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..b8bf1c04 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" @@ -2385,7 +2386,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 +2457,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 ); @@ -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 ); @@ -3422,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++; } @@ -3570,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 ] ); } @@ -3720,10 +3737,23 @@ 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; + } + 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; @@ -3786,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 5368e87a..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 }; @@ -641,6 +644,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/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/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 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/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 ), diff --git a/radiant/xywindow.cpp b/radiant/xywindow.cpp index 3a0812b7..560eb8fe 100644 --- a/radiant/xywindow.cpp +++ b/radiant/xywindow.cpp @@ -1595,12 +1595,38 @@ void XYWnd::NewBrushDrag( int x, int y ){ maxs[i] = temp; } } - - 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; } + // 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] ); 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/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..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 @@ -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 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/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/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 f5715b02..fe21bd92 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 ); @@ -1917,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 395cbdf1..00000000 Binary files a/tools/urt/tools/quake3/q3map2/q3map2.opt and /dev/null differ 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 438c7b33..00000000 Binary files a/tools/urt/tools/quake3/q3map2/q3map2.suo and /dev/null differ 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/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 @@ />
+ + + + + + + + Application - v110 + v110_xp false MultiByte Application - v110 + v110_xp false MultiByte Application - v110 + v110_xp false MultiByte Application - v110 + v110_xp false MultiByte @@ -317,6 +317,7 @@ + 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 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"