diff --git a/Doxygen_files/doxygen_gtkradiant.css b/Doxygen_files/doxygen_gtkradiant.css
index b875556..ad85caf 100644
--- a/Doxygen_files/doxygen_gtkradiant.css
+++ b/Doxygen_files/doxygen_gtkradiant.css
@@ -1,34 +1,34 @@
-body { background-color: black; }
-IMG { border-color: #222222; border: 0; }
-em { font-size: 11px; font-style: italic; font-weight: normal; color: #888888; }
-H1 { text-align: center; font-size: 15px; color: #2222AA; font-family: Geneva, Verdana, Helvetica, Arial, sans-serif; }
-H3 { text-align: center; font-size: 18px; color: #2222AA; font-family: Geneva, Verdana, Helvetica, Arial, sans-serif; }
-A { text-decoration: none; color: #6666DD; }
-A:HOVER { text-decoration: underline; color: #4444FF; }
-A:VISITED { text-decoration: none; color: #8888AA; }
-A.qindex { text-decoration: none; color: #6666DD; font-size: 11px; }
-A.qindex:HOVER { text-decoration: underline; color: #4444FF; font-size: 11px; }
-A.qindex:VISITED { text-decoration: none; color: #8888AA; font-size: 11px; }
-A.qindexRef { font-size: 11px; }
-A.el { text-decoration: none; font-weight: bold; }
-A.elRef { font-weight: bold; }
-A.code { text-decoration: none; font-weight: normal; color: #6666DD; }
-A.code:HOVER { text-decoration: underline; font-weight: normal; color: #4444FF; }
-A.code:VISITED { text-decoration: none; font-weight: normal; color: #8888AA; }
-A.codeRef { text-decoration: none; font-weight: normal; color: #6666DD; }
-A.codeRef:HOVER { text-decoration: underline; font-weight: normal; color: #4444FF; }
-A.codeRef:VISITED { text-decoration: none; font-weight: normal; color: #8888AA; }
-DL.el { margin-left: 2cm; width: 99%; }
-DIV.fragment { background-color: #FFFFFF; width: 99%; }
-DIV.ah { background-color: #AAAAAA; width: 99%; margin-bottom: 3; margin-top: 3; }
-TD.md { cellpadding: 0; background-color: #DDDDDD; border: 0; width: 99%; color: #222222; }
-DIV.groupHeader { margin-left: 16; margin-top: 12; margin-bottom: 6; font-weight: bold; color: #222222; }
-DIV.groupText { margin-left: 16; font-style: italic; font-size: smaller; }
-FONT.keyword { color: #0080A0; }
-FONT.keywordtype { color: #604020; }
-FONT.keywordflow { color: #E08000; }
-FONT.comment { color: #800000; }
-FONT.comment { color: #009900; text-decoration: italic; }
-FONT.preprocessor { color: #806020; }
-FONT.stringliteral{ color: #002080; }
-FONT.charliteral { color: #008080; }
+body { background-color: black; }
+IMG { border-color: #222222; border: 0; }
+em { font-size: 11px; font-style: italic; font-weight: normal; color: #888888; }
+H1 { text-align: center; font-size: 15px; color: #2222AA; font-family: Geneva, Verdana, Helvetica, Arial, sans-serif; }
+H3 { text-align: center; font-size: 18px; color: #2222AA; font-family: Geneva, Verdana, Helvetica, Arial, sans-serif; }
+A { text-decoration: none; color: #6666DD; }
+A:HOVER { text-decoration: underline; color: #4444FF; }
+A:VISITED { text-decoration: none; color: #8888AA; }
+A.qindex { text-decoration: none; color: #6666DD; font-size: 11px; }
+A.qindex:HOVER { text-decoration: underline; color: #4444FF; font-size: 11px; }
+A.qindex:VISITED { text-decoration: none; color: #8888AA; font-size: 11px; }
+A.qindexRef { font-size: 11px; }
+A.el { text-decoration: none; font-weight: bold; }
+A.elRef { font-weight: bold; }
+A.code { text-decoration: none; font-weight: normal; color: #6666DD; }
+A.code:HOVER { text-decoration: underline; font-weight: normal; color: #4444FF; }
+A.code:VISITED { text-decoration: none; font-weight: normal; color: #8888AA; }
+A.codeRef { text-decoration: none; font-weight: normal; color: #6666DD; }
+A.codeRef:HOVER { text-decoration: underline; font-weight: normal; color: #4444FF; }
+A.codeRef:VISITED { text-decoration: none; font-weight: normal; color: #8888AA; }
+DL.el { margin-left: 2cm; width: 99%; }
+DIV.fragment { background-color: #FFFFFF; width: 99%; }
+DIV.ah { background-color: #AAAAAA; width: 99%; margin-bottom: 3; margin-top: 3; }
+TD.md { cellpadding: 0; background-color: #DDDDDD; border: 0; width: 99%; color: #222222; }
+DIV.groupHeader { margin-left: 16; margin-top: 12; margin-bottom: 6; font-weight: bold; color: #222222; }
+DIV.groupText { margin-left: 16; font-style: italic; font-size: smaller; }
+FONT.keyword { color: #0080A0; }
+FONT.keywordtype { color: #604020; }
+FONT.keywordflow { color: #E08000; }
+FONT.comment { color: #800000; }
+FONT.comment { color: #009900; text-decoration: italic; }
+FONT.preprocessor { color: #806020; }
+FONT.stringliteral{ color: #002080; }
+FONT.charliteral { color: #008080; }
diff --git a/Doxygen_files/example/doxygen_gtkradiant.css b/Doxygen_files/example/doxygen_gtkradiant.css
index c0ddae2..30bf207 100644
--- a/Doxygen_files/example/doxygen_gtkradiant.css
+++ b/Doxygen_files/example/doxygen_gtkradiant.css
@@ -1,35 +1,35 @@
-body { background-color: black; }
-IMG { border-color: #222222; border: 1; }
-em { font-size: 11px; font-style: italic; font-weight: normal; color: #888888; }
-H1 { text-align: center; font-size: 15px; color: #2222AA; font-family: Geneva, Verdana, Helvetica, Arial, sans-serif; }
-H3 { text-align: center; font-size: 18px; color: #2222AA; font-family: Geneva, Verdana, Helvetica, Arial, sans-serif; }
-A { text-decoration: none; color: #6666DD; }
-A:HOVER { text-decoration: underline; color: #4444FF; }
-A:VISITED { text-decoration: none; color: #8888AA; }
-A.qindex { text-decoration: none; color: #6666DD; font-size: 11px; }
-A.qindex:HOVER { text-decoration: underline; color: #4444FF; font-size: 11px; }
-A.qindex:VISITED { text-decoration: none; color: #8888AA; font-size: 11px; }
-A.qindexRef { font-size: 11px; }
-A.el { text-decoration: none; font-weight: bold; }
-A.elRef { font-weight: bold; }
-A.code { text-decoration: none; font-weight: normal; color: #6666DD; }
-A.code:HOVER { text-decoration: underline; font-weight: normal; color: #4444FF; }
-A.code:VISITED { text-decoration: none; font-weight: normal; color: #8888AA; }
-A.codeRef { text-decoration: none; font-weight: normal; color: #6666DD; }
-A.codeRef:HOVER { text-decoration: underline; font-weight: normal; color: #4444FF; }
-A.codeRef:VISITED { text-decoration: none; font-weight: normal; color: #8888AA; }
-DL.el { margin-left: 2cm; width: 99%; }
-DIV.fragment { background-color: #FFFFFF; width: 99%; }
-DIV.ah { background-color: #AAAAAA; width: 99%; margin-bottom: 3; margin-top: 3; }
-TD.md { cellpadding: 2; background-color: #DDDDDD; border: 1; width: 99%; color: #222222; }
-DIV.groupHeader { margin-left: 16; margin-top: 12; margin-bottom: 6; font-weight: bold; color: #222222; }
-DIV.groupText { margin-left: 16; font-style: italic; font-size: smaller; }
-FONT.keyword { color: #0080A0; }
-FONT.keywordtype { color: #604020; }
-FONT.keywordflow { color: #E08000; }
-FONT.comment { color: #800000; }
-FONT.comment { color: #009900; text-decoration: italic; }
-FONT.preprocessor { color: #806020; }
-FONT.stringliteral{ color: #002080; }
-FONT.charliteral { color: #008080; }
-
+body { background-color: black; }
+IMG { border-color: #222222; border: 1; }
+em { font-size: 11px; font-style: italic; font-weight: normal; color: #888888; }
+H1 { text-align: center; font-size: 15px; color: #2222AA; font-family: Geneva, Verdana, Helvetica, Arial, sans-serif; }
+H3 { text-align: center; font-size: 18px; color: #2222AA; font-family: Geneva, Verdana, Helvetica, Arial, sans-serif; }
+A { text-decoration: none; color: #6666DD; }
+A:HOVER { text-decoration: underline; color: #4444FF; }
+A:VISITED { text-decoration: none; color: #8888AA; }
+A.qindex { text-decoration: none; color: #6666DD; font-size: 11px; }
+A.qindex:HOVER { text-decoration: underline; color: #4444FF; font-size: 11px; }
+A.qindex:VISITED { text-decoration: none; color: #8888AA; font-size: 11px; }
+A.qindexRef { font-size: 11px; }
+A.el { text-decoration: none; font-weight: bold; }
+A.elRef { font-weight: bold; }
+A.code { text-decoration: none; font-weight: normal; color: #6666DD; }
+A.code:HOVER { text-decoration: underline; font-weight: normal; color: #4444FF; }
+A.code:VISITED { text-decoration: none; font-weight: normal; color: #8888AA; }
+A.codeRef { text-decoration: none; font-weight: normal; color: #6666DD; }
+A.codeRef:HOVER { text-decoration: underline; font-weight: normal; color: #4444FF; }
+A.codeRef:VISITED { text-decoration: none; font-weight: normal; color: #8888AA; }
+DL.el { margin-left: 2cm; width: 99%; }
+DIV.fragment { background-color: #FFFFFF; width: 99%; }
+DIV.ah { background-color: #AAAAAA; width: 99%; margin-bottom: 3; margin-top: 3; }
+TD.md { cellpadding: 2; background-color: #DDDDDD; border: 1; width: 99%; color: #222222; }
+DIV.groupHeader { margin-left: 16; margin-top: 12; margin-bottom: 6; font-weight: bold; color: #222222; }
+DIV.groupText { margin-left: 16; font-style: italic; font-size: smaller; }
+FONT.keyword { color: #0080A0; }
+FONT.keywordtype { color: #604020; }
+FONT.keywordflow { color: #E08000; }
+FONT.comment { color: #800000; }
+FONT.comment { color: #009900; text-decoration: italic; }
+FONT.preprocessor { color: #806020; }
+FONT.stringliteral{ color: #002080; }
+FONT.charliteral { color: #008080; }
+
diff --git a/config.py b/config.py
index 48b54c9..d3ff368 100644
--- a/config.py
+++ b/config.py
@@ -257,7 +257,7 @@ class Config:
cmd = 'svn checkout %s "%s"' % ( svnurl, path )
ret = os.system( cmd )
if ( ret != 0 ):
- raise 'checkout or update failed'
+ raise Exception( 'checkout or update failed' )
def FetchGamePaks( self, path ):
@@ -267,10 +267,66 @@ class Config:
self.CheckoutOrUpdate( svnurl, os.path.join( path, 'installs', pak ) )
def Setup( self ):
- for platform in self.setup_platforms:
if ( platform == 'local' ):
# 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' ):
+ depsfile = 'GtkR-deps-1.6-3.zip'
+ # TMP
+ #if ( not os.path.exists( depsfile ) ):
+ if ( True ):
+ cmd = 'wget http://zerowing.idsoftware.com/files/radiant/developer/1.6.1/%s' % depsfile
+ print cmd
+ ret = os.system( cmd )
+ if ( ret != 0 ):
+ raise Exception( 'Failed to download dependencies file' )
+
+ # extract one directoy above
+ f = os.path.abspath( depsfile )
+ backup_cwd = os.getcwd()
+ os.chdir( os.path.dirname( backup_cwd ) )
+ cmd = 'unzip %s' % f
+ print cmd
+ ret = os.system( cmd )
+ if ( ret != 0 ):
+ raise Exception( 'unzip dependencies file failed' )
+ os.chdir( backup_cwd )
+
+ # copy all the dependent runtime data to the install directory
+ srcdir = os.path.dirname( backup_cwd )
+ for f in [
+ 'libxml2/bin/libxml2.dll',
+ 'gtk2/bin/libglib-2.0-0.dll',
+ 'gtk2/bin/libgobject-2.0-0.dll',
+ 'gtk2/bin/libgdk-win32-2.0-0.dll',
+ 'gtk2/bin/libgtk-win32-2.0-0.dll',
+ 'gtk2/bin/intl.dll',
+ 'gtk2/bin/libatk-1.0-0.dll',
+ 'gtk2/bin/libcairo-2.dll',
+ 'gtk2/bin/libgdk_pixbuf-2.0-0.dll',
+ 'gtk2/bin/libgmodule-2.0-0.dll',
+ 'gtk2/bin/libpng13.dll',
+ 'gtk2/bin/libpango-1.0-0.dll',
+ 'gtk2/bin/libpangocairo-1.0-0.dll',
+ 'gtk2/bin/libpangowin32-1.0-0.dll',
+ 'gtk2/lib/libgtkglext-win32-1.0-0.dll',
+ 'gtk2/lib/libgdkglext-win32-1.0-0.dll',
+ 'gtk2/lib/iconv.dll', ]:
+ cmd = 'cp -v "%s" installs' % os.path.join( srcdir, f )
+ print cmd
+ ret = os.system( cmd )
+ if ( ret != 0 ):
+ raise Exception( 'runtime file copy failed' )
+ for d in [
+ 'gtk2/etc',
+ 'gtk2/share',
+ ]:
+ cmd = 'cp -r -v "%s" install' % os.path.join( srcdir, d )
+ print cmd
+ ret = os.system( cmd )
+ if ( ret != 0 ):
+ raise Exception( 'runtime directory copy failed' )
# parse the config statement line to produce/update an existing config list
# the configs expose a list of keywords and accepted values, which the engine parses out
diff --git a/contrib/bobtoolz/bt/bt-el1.txt b/contrib/bobtoolz/bt/bt-el1.txt
index f6485f9..d49e356 100644
--- a/contrib/bobtoolz/bt/bt-el1.txt
+++ b/contrib/bobtoolz/bt/bt-el1.txt
@@ -14,4 +14,4 @@ common/origin
common/trigger
common/weapclip
liquid
-fog
\ No newline at end of file
+fog
diff --git a/contrib/bobtoolz/bt/ctf-blue.txt b/contrib/bobtoolz/bt/ctf-blue.txt
index 5a5f6ca..a3af594 100644
--- a/contrib/bobtoolz/bt/ctf-blue.txt
+++ b/contrib/bobtoolz/bt/ctf-blue.txt
@@ -58,4 +58,4 @@ team_icon/the fallen_blue
team_icon/intruders_blue
team_icon/crusaders_blue
team_icon/pagans_blue
-team_icon/stroggs_blue
\ No newline at end of file
+team_icon/stroggs_blue
diff --git a/contrib/bobtoolz/bt/ctf-red.txt b/contrib/bobtoolz/bt/ctf-red.txt
index 8dec85e..4b37582 100644
--- a/contrib/bobtoolz/bt/ctf-red.txt
+++ b/contrib/bobtoolz/bt/ctf-red.txt
@@ -58,4 +58,4 @@ team_icon/the fallen_red
team_icon/intruders_red
team_icon/crusaders_red
team_icon/pagans_red
-team_icon/stroggs_red
\ No newline at end of file
+team_icon/stroggs_red
diff --git a/contrib/bobtoolz/bt/door-tex-trim.txt b/contrib/bobtoolz/bt/door-tex-trim.txt
index d52ef76..f0ab077 100644
--- a/contrib/bobtoolz/bt/door-tex-trim.txt
+++ b/contrib/bobtoolz/bt/door-tex-trim.txt
@@ -2,4 +2,4 @@ base_support/support1rust
base_support/support1shiny
base_support/support2rust
base_support/wplat1_1
-base_support/plate2_5
\ No newline at end of file
+base_support/plate2_5
diff --git a/contrib/bobtoolz/bt/door-tex.txt b/contrib/bobtoolz/bt/door-tex.txt
index 6962998..efcb96a 100644
--- a/contrib/bobtoolz/bt/door-tex.txt
+++ b/contrib/bobtoolz/bt/door-tex.txt
@@ -7,4 +7,4 @@ gothic_door/door02_i_ornate5_fin
gothic_door/door02_j
gothic_door/door02_j3
gothic_door/door02_j4
-gothic_door/door02_k2b
\ No newline at end of file
+gothic_door/door02_k2b
diff --git a/contrib/bobtoolz/bt/tp_ent.txt b/contrib/bobtoolz/bt/tp_ent.txt
index f0645b3..0909657 100644
--- a/contrib/bobtoolz/bt/tp_ent.txt
+++ b/contrib/bobtoolz/bt/tp_ent.txt
@@ -11,4 +11,4 @@
"pitch" "-5" "5"
"yaw" "0" "360"
"scale" "1" "1.3"
-}
\ No newline at end of file
+}
diff --git a/contrib/bobtoolz/txt/readme.txt b/contrib/bobtoolz/txt/readme.txt
index 5c0fedd..271a018 100644
--- a/contrib/bobtoolz/txt/readme.txt
+++ b/contrib/bobtoolz/txt/readme.txt
@@ -74,4 +74,4 @@ Thanx:
Thx to RKone, for improving my q3w sig.
Azr for giving me ops in #qeradiant, k3wl :]
Everyone at the Quake3World Forums, I think of you all as my little worshippers :P
- id Software, of course.
\ No newline at end of file
+ id Software, of course.
diff --git a/contrib/camera/camera.vcproj b/contrib/camera/camera.vcproj
index b32d338..8900cec 100644
--- a/contrib/camera/camera.vcproj
+++ b/contrib/camera/camera.vcproj
@@ -1,248 +1,248 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/contrib/camera/camera_VC9.vcproj b/contrib/camera/camera_VC9.vcproj
new file mode 100755
index 0000000..e10dbd7
--- /dev/null
+++ b/contrib/camera/camera_VC9.vcproj
@@ -0,0 +1,247 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/contrib/prtview/PrtView.txt b/contrib/prtview/PrtView.txt
index 50228e0..b88e610 100644
--- a/contrib/prtview/PrtView.txt
+++ b/contrib/prtview/PrtView.txt
@@ -9,4 +9,4 @@ and the hint shader may have to be modified to set it. As of
this writing, I do not know all the details.
Geoffrey DeWan
-gdewan@prairienet.org
\ No newline at end of file
+gdewan@prairienet.org
diff --git a/docs/manual/Q3Rad_Manual/styles/q3rad.css b/docs/manual/Q3Rad_Manual/styles/q3rad.css
index b4daab9..c53fbcc 100644
--- a/docs/manual/Q3Rad_Manual/styles/q3rad.css
+++ b/docs/manual/Q3Rad_Manual/styles/q3rad.css
@@ -1,23 +1,23 @@
-body { font: 12pt "Times New Roman";
- margin-left: 5mm;
- margin-right: 5mm;
- text-align: justify;
- background: #ffffff;
- color: #000000 }
-h1 { font: bold 24pt Arial, Helvetica }
-h2 { font: bold italic 18pt Arial, Helvetica }
-.subheading { font: bold 16pt Arial, Helvetica }
-:link {color: blue;
- text-decoration: none; }
-:visited {color: purple;
- text-decoration: none; }
-h6 { font: 10pt "Times New Roman" }
-.MsoToc2 { font: bold small-caps 12pt "Times New Roman" }
-.MsoTitle { text-align:center;
- font: bold 24pt "BankGothic Md BT";
- letter-spacing:2.5pt }
-.heading { font: italic 10pt "Times New Roman" }
-.subcontents { font: 10pt "Times New Roman" }
-.tip { font: 10pt "Comic Sans MS" }
-.type { font: 10pt "Courier New" }
-.menu { font: 10pt Arial, Helvetica }
\ No newline at end of file
+body { font: 12pt "Times New Roman";
+ margin-left: 5mm;
+ margin-right: 5mm;
+ text-align: justify;
+ background: #ffffff;
+ color: #000000 }
+h1 { font: bold 24pt Arial, Helvetica }
+h2 { font: bold italic 18pt Arial, Helvetica }
+.subheading { font: bold 16pt Arial, Helvetica }
+:link {color: blue;
+ text-decoration: none; }
+:visited {color: purple;
+ text-decoration: none; }
+h6 { font: 10pt "Times New Roman" }
+.MsoToc2 { font: bold small-caps 12pt "Times New Roman" }
+.MsoTitle { text-align:center;
+ font: bold 24pt "BankGothic Md BT";
+ letter-spacing:2.5pt }
+.heading { font: italic 10pt "Times New Roman" }
+.subcontents { font: 10pt "Times New Roman" }
+.tip { font: 10pt "Comic Sans MS" }
+.type { font: 10pt "Courier New" }
+.menu { font: 10pt Arial, Helvetica }
diff --git a/docs/manual/quake3/Model_Manual/styles/q3rad.css b/docs/manual/quake3/Model_Manual/styles/q3rad.css
index b4daab9..c53fbcc 100644
--- a/docs/manual/quake3/Model_Manual/styles/q3rad.css
+++ b/docs/manual/quake3/Model_Manual/styles/q3rad.css
@@ -1,23 +1,23 @@
-body { font: 12pt "Times New Roman";
- margin-left: 5mm;
- margin-right: 5mm;
- text-align: justify;
- background: #ffffff;
- color: #000000 }
-h1 { font: bold 24pt Arial, Helvetica }
-h2 { font: bold italic 18pt Arial, Helvetica }
-.subheading { font: bold 16pt Arial, Helvetica }
-:link {color: blue;
- text-decoration: none; }
-:visited {color: purple;
- text-decoration: none; }
-h6 { font: 10pt "Times New Roman" }
-.MsoToc2 { font: bold small-caps 12pt "Times New Roman" }
-.MsoTitle { text-align:center;
- font: bold 24pt "BankGothic Md BT";
- letter-spacing:2.5pt }
-.heading { font: italic 10pt "Times New Roman" }
-.subcontents { font: 10pt "Times New Roman" }
-.tip { font: 10pt "Comic Sans MS" }
-.type { font: 10pt "Courier New" }
-.menu { font: 10pt Arial, Helvetica }
\ No newline at end of file
+body { font: 12pt "Times New Roman";
+ margin-left: 5mm;
+ margin-right: 5mm;
+ text-align: justify;
+ background: #ffffff;
+ color: #000000 }
+h1 { font: bold 24pt Arial, Helvetica }
+h2 { font: bold italic 18pt Arial, Helvetica }
+.subheading { font: bold 16pt Arial, Helvetica }
+:link {color: blue;
+ text-decoration: none; }
+:visited {color: purple;
+ text-decoration: none; }
+h6 { font: 10pt "Times New Roman" }
+.MsoToc2 { font: bold small-caps 12pt "Times New Roman" }
+.MsoTitle { text-align:center;
+ font: bold 24pt "BankGothic Md BT";
+ letter-spacing:2.5pt }
+.heading { font: italic 10pt "Times New Roman" }
+.subcontents { font: 10pt "Times New Roman" }
+.tip { font: 10pt "Comic Sans MS" }
+.type { font: 10pt "Courier New" }
+.menu { font: 10pt Arial, Helvetica }
diff --git a/docs/manual/quake3/Q3AShader_Manual/styles/q3rad.css b/docs/manual/quake3/Q3AShader_Manual/styles/q3rad.css
index b4daab9..c53fbcc 100644
--- a/docs/manual/quake3/Q3AShader_Manual/styles/q3rad.css
+++ b/docs/manual/quake3/Q3AShader_Manual/styles/q3rad.css
@@ -1,23 +1,23 @@
-body { font: 12pt "Times New Roman";
- margin-left: 5mm;
- margin-right: 5mm;
- text-align: justify;
- background: #ffffff;
- color: #000000 }
-h1 { font: bold 24pt Arial, Helvetica }
-h2 { font: bold italic 18pt Arial, Helvetica }
-.subheading { font: bold 16pt Arial, Helvetica }
-:link {color: blue;
- text-decoration: none; }
-:visited {color: purple;
- text-decoration: none; }
-h6 { font: 10pt "Times New Roman" }
-.MsoToc2 { font: bold small-caps 12pt "Times New Roman" }
-.MsoTitle { text-align:center;
- font: bold 24pt "BankGothic Md BT";
- letter-spacing:2.5pt }
-.heading { font: italic 10pt "Times New Roman" }
-.subcontents { font: 10pt "Times New Roman" }
-.tip { font: 10pt "Comic Sans MS" }
-.type { font: 10pt "Courier New" }
-.menu { font: 10pt Arial, Helvetica }
\ No newline at end of file
+body { font: 12pt "Times New Roman";
+ margin-left: 5mm;
+ margin-right: 5mm;
+ text-align: justify;
+ background: #ffffff;
+ color: #000000 }
+h1 { font: bold 24pt Arial, Helvetica }
+h2 { font: bold italic 18pt Arial, Helvetica }
+.subheading { font: bold 16pt Arial, Helvetica }
+:link {color: blue;
+ text-decoration: none; }
+:visited {color: purple;
+ text-decoration: none; }
+h6 { font: 10pt "Times New Roman" }
+.MsoToc2 { font: bold small-caps 12pt "Times New Roman" }
+.MsoTitle { text-align:center;
+ font: bold 24pt "BankGothic Md BT";
+ letter-spacing:2.5pt }
+.heading { font: italic 10pt "Times New Roman" }
+.subcontents { font: 10pt "Times New Roman" }
+.tip { font: 10pt "Comic Sans MS" }
+.type { font: 10pt "Courier New" }
+.menu { font: 10pt Arial, Helvetica }
diff --git a/gen.vcproj b/gen.vcproj
index b7d426a..d443b6e 100644
--- a/gen.vcproj
+++ b/gen.vcproj
@@ -1,71 +1,71 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/libs/cmdlib/cmdlib.vcproj b/libs/cmdlib/cmdlib.vcproj
index 2b390a0..5c88c53 100644
--- a/libs/cmdlib/cmdlib.vcproj
+++ b/libs/cmdlib/cmdlib.vcproj
@@ -1,53 +1,53 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/libs/cmdlib/cmdlib_VC9.vcproj b/libs/cmdlib/cmdlib_VC9.vcproj
new file mode 100755
index 0000000..1ca00c6
--- /dev/null
+++ b/libs/cmdlib/cmdlib_VC9.vcproj
@@ -0,0 +1,157 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/libs/ddslib/ddslib.vcproj b/libs/ddslib/ddslib.vcproj
index e79f997..4b194e5 100644
--- a/libs/ddslib/ddslib.vcproj
+++ b/libs/ddslib/ddslib.vcproj
@@ -1,57 +1,57 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/libs/ddslib/ddslib_VC9.vcproj b/libs/ddslib/ddslib_VC9.vcproj
new file mode 100755
index 0000000..b434854
--- /dev/null
+++ b/libs/ddslib/ddslib_VC9.vcproj
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/libs/l_net/l_net.vcproj b/libs/l_net/l_net.vcproj
index b9ff705..1b9a417 100644
--- a/libs/l_net/l_net.vcproj
+++ b/libs/l_net/l_net.vcproj
@@ -1,61 +1,61 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/libs/l_net/l_net_VC9.vcproj b/libs/l_net/l_net_VC9.vcproj
new file mode 100755
index 0000000..7a4da81
--- /dev/null
+++ b/libs/l_net/l_net_VC9.vcproj
@@ -0,0 +1,175 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/libs/mathlib/mathlib.vcproj b/libs/mathlib/mathlib.vcproj
index 4dfa2c0..fd40d76 100644
--- a/libs/mathlib/mathlib.vcproj
+++ b/libs/mathlib/mathlib.vcproj
@@ -1,65 +1,65 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/libs/mathlib/mathlib_VC9.vcproj b/libs/mathlib/mathlib_VC9.vcproj
new file mode 100755
index 0000000..48d0081
--- /dev/null
+++ b/libs/mathlib/mathlib_VC9.vcproj
@@ -0,0 +1,183 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/libs/md5lib/md5lib.vcproj b/libs/md5lib/md5lib.vcproj
index e1e603f..af6ca9d 100644
--- a/libs/md5lib/md5lib.vcproj
+++ b/libs/md5lib/md5lib.vcproj
@@ -1,57 +1,57 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/libs/md5lib/md5lib_VC9.vcproj b/libs/md5lib/md5lib_VC9.vcproj
new file mode 100755
index 0000000..6b661f3
--- /dev/null
+++ b/libs/md5lib/md5lib_VC9.vcproj
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/libs/multimon.h b/libs/multimon.h
index 638e353..85e7654 100644
--- a/libs/multimon.h
+++ b/libs/multimon.h
@@ -378,4 +378,4 @@ typedef struct {
#endif // WIN32
-#endif // __MULTIMON_H
\ No newline at end of file
+#endif // __MULTIMON_H
diff --git a/libs/picomodel/picomodel.vcproj b/libs/picomodel/picomodel.vcproj
index bd3edb0..8dafe75 100644
--- a/libs/picomodel/picomodel.vcproj
+++ b/libs/picomodel/picomodel.vcproj
@@ -1,107 +1,107 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/libs/picomodel/picomodel_VC9.vcproj b/libs/picomodel/picomodel_VC9.vcproj
new file mode 100755
index 0000000..62f453f
--- /dev/null
+++ b/libs/picomodel/picomodel_VC9.vcproj
@@ -0,0 +1,268 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/libs/splines/Splines.vcproj b/libs/splines/Splines.vcproj
index d358916..d85c297 100644
--- a/libs/splines/Splines.vcproj
+++ b/libs/splines/Splines.vcproj
@@ -1,85 +1,85 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/libs/splines/Splines_VC9.vcproj b/libs/splines/Splines_VC9.vcproj
new file mode 100755
index 0000000..8e8a5d8
--- /dev/null
+++ b/libs/splines/Splines_VC9.vcproj
@@ -0,0 +1,223 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/libs/synapse/doc/design.txt b/libs/synapse/doc/design.txt
index e3da4dc..ba96ebc 100644
--- a/libs/synapse/doc/design.txt
+++ b/libs/synapse/doc/design.txt
@@ -187,4 +187,4 @@ Configuration
-------------
the config info needs to go down to the clients too
-for instance, mapxml loaded for q3map or radiant, doesn't rely on the same major?
\ No newline at end of file
+for instance, mapxml loaded for q3map or radiant, doesn't rely on the same major?
diff --git a/libs/synapse/doc/runtime.txt b/libs/synapse/doc/runtime.txt
index fd376d5..d9657e9 100644
--- a/libs/synapse/doc/runtime.txt
+++ b/libs/synapse/doc/runtime.txt
@@ -56,4 +56,4 @@ without this config file though, as it is looked up by the main program and hand
over to synapse before init? Possibly .. we'll just pass a NULL config node ptr
Add the config file path to CSynpaseServer::Initialize, pass the loaded XML file to
-the clients. Do we need to wrap in an object with some convenience functions?
\ No newline at end of file
+the clients. Do we need to wrap in an object with some convenience functions?
diff --git a/libs/synapse/synapse.vcproj b/libs/synapse/synapse.vcproj
index a4b5a52..7f1f136 100644
--- a/libs/synapse/synapse.vcproj
+++ b/libs/synapse/synapse.vcproj
@@ -1,57 +1,57 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/libs/synapse/synapse_VC9.vcproj b/libs/synapse/synapse_VC9.vcproj
new file mode 100755
index 0000000..fc1cc3b
--- /dev/null
+++ b/libs/synapse/synapse_VC9.vcproj
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/entity/entity_VC9.vcproj b/plugins/entity/entity_VC9.vcproj
new file mode 100755
index 0000000..ae78d29
--- /dev/null
+++ b/plugins/entity/entity_VC9.vcproj
@@ -0,0 +1,271 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/image/image_VC9.vcproj b/plugins/image/image_VC9.vcproj
new file mode 100755
index 0000000..965512a
--- /dev/null
+++ b/plugins/image/image_VC9.vcproj
@@ -0,0 +1,244 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/imagepng/imagepng_VC9.vcproj b/plugins/imagepng/imagepng_VC9.vcproj
new file mode 100755
index 0000000..49ed153
--- /dev/null
+++ b/plugins/imagepng/imagepng_VC9.vcproj
@@ -0,0 +1,203 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/map/map_VC9.vcproj b/plugins/map/map_VC9.vcproj
new file mode 100755
index 0000000..f7d7c89
--- /dev/null
+++ b/plugins/map/map_VC9.vcproj
@@ -0,0 +1,240 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/mapxml/mapxml_VC9.vcproj b/plugins/mapxml/mapxml_VC9.vcproj
new file mode 100755
index 0000000..ab492ec
--- /dev/null
+++ b/plugins/mapxml/mapxml_VC9.vcproj
@@ -0,0 +1,240 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/model/model.def b/plugins/model/model.def
index 18e255e..01cee0f 100644
--- a/plugins/model/model.def
+++ b/plugins/model/model.def
@@ -5,4 +5,4 @@ DESCRIPTION 'MODEL Windows Dynamic Link Library'
EXPORTS
; Explicit exports can go here
- Synapse_EnumerateInterfaces @1
\ No newline at end of file
+ Synapse_EnumerateInterfaces @1
diff --git a/plugins/model/model_VC9.vcproj b/plugins/model/model_VC9.vcproj
new file mode 100755
index 0000000..3274786
--- /dev/null
+++ b/plugins/model/model_VC9.vcproj
@@ -0,0 +1,267 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/model/surface.h b/plugins/model/surface.h
index 43d9b27..38a28ac 100644
--- a/plugins/model/surface.h
+++ b/plugins/model/surface.h
@@ -35,4 +35,4 @@ protected:
int refCount;
aabb_t m_BBox;
IShader *m_pShader;
-};
\ No newline at end of file
+};
diff --git a/plugins/shaders/shaders_VC9.vcproj b/plugins/shaders/shaders_VC9.vcproj
new file mode 100755
index 0000000..6741531
--- /dev/null
+++ b/plugins/shaders/shaders_VC9.vcproj
@@ -0,0 +1,211 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/surface/surface_VC9.vcproj b/plugins/surface/surface_VC9.vcproj
new file mode 100755
index 0000000..95bc261
--- /dev/null
+++ b/plugins/surface/surface_VC9.vcproj
@@ -0,0 +1,215 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/textool/changelog.txt b/plugins/textool/changelog.txt
index 9d660cb..bd67a17 100644
--- a/plugins/textool/changelog.txt
+++ b/plugins/textool/changelog.txt
@@ -5,4 +5,4 @@ here is the TODO-list for next release, ( most certainly a wish list )
- TODO: add hooks with the selected face and selected patch data. tell the plugin when selected face
or selected patch has changed.
the hooks should use a generic interface inside Radiant for "observers"
-- TODO: add other usefull texturing tools, if designers come up with good ideas
\ No newline at end of file
+- TODO: add other usefull texturing tools, if designers come up with good ideas
diff --git a/plugins/vfspk3/vfspk3_VC9.vcproj b/plugins/vfspk3/vfspk3_VC9.vcproj
new file mode 100755
index 0000000..6255ece
--- /dev/null
+++ b/plugins/vfspk3/vfspk3_VC9.vcproj
@@ -0,0 +1,219 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/radiant.sln b/radiant.sln
index f4ace9f..4d0ae70 100644
--- a/radiant.sln
+++ b/radiant.sln
@@ -1,167 +1,169 @@
-
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "radiant", "radiant\radiant.vcproj", "{65D02375-63EE-4A8A-9F8E-504B1D5A1D02}"
- ProjectSection(ProjectDependencies) = postProject
- {320CF5DE-0DFD-4C3F-B558-5F4098E111C8} = {320CF5DE-0DFD-4C3F-B558-5F4098E111C8}
- {E13CCFB0-A366-4EF3-A66F-C374B563E4DF} = {E13CCFB0-A366-4EF3-A66F-C374B563E4DF}
- {5DCC8086-830E-42E6-B080-5A287F8FF5DC} = {5DCC8086-830E-42E6-B080-5A287F8FF5DC}
- {DC2F2B6B-2596-4B90-88CE-2FDE4C2FFB01} = {DC2F2B6B-2596-4B90-88CE-2FDE4C2FFB01}
- {0B522841-BDCC-493A-BA5C-604AE2CD5756} = {0B522841-BDCC-493A-BA5C-604AE2CD5756}
- {3886C418-A41E-4AFF-BBD1-8E1E508920C9} = {3886C418-A41E-4AFF-BBD1-8E1E508920C9}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "synapse", "libs\synapse\synapse.vcproj", "{E13CCFB0-A366-4EF3-A66F-C374B563E4DF}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cmdlib", "libs\cmdlib\cmdlib.vcproj", "{0B522841-BDCC-493A-BA5C-604AE2CD5756}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ddslib", "libs\ddslib\ddslib.vcproj", "{5DCC8086-830E-42E6-B080-5A287F8FF5DC}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "l_net", "libs\l_net\l_net.vcproj", "{3886C418-A41E-4AFF-BBD1-8E1E508920C9}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mathlib", "libs\mathlib\mathlib.vcproj", "{320CF5DE-0DFD-4C3F-B558-5F4098E111C8}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "md5lib", "libs\md5lib\md5lib.vcproj", "{DC2F2B6B-2596-4B90-88CE-2FDE4C2FFB01}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "picomodel", "libs\picomodel\picomodel.vcproj", "{444E6FDA-83BD-49F1-89A4-7CF716F742A8}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "camera", "contrib\camera\camera.vcproj", "{A43B5811-4BCC-483A-BDAC-F5721DCF9B4A}"
- ProjectSection(ProjectDependencies) = postProject
- {6C1116CE-D99E-4629-9E69-A9329335D706} = {6C1116CE-D99E-4629-9E69-A9329335D706}
- {E13CCFB0-A366-4EF3-A66F-C374B563E4DF} = {E13CCFB0-A366-4EF3-A66F-C374B563E4DF}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "entity", "plugins\entity\entity.vcproj", "{17DD38AA-4842-45BC-9304-2ADC1A12B4F4}"
- ProjectSection(ProjectDependencies) = postProject
- {E13CCFB0-A366-4EF3-A66F-C374B563E4DF} = {E13CCFB0-A366-4EF3-A66F-C374B563E4DF}
- {320CF5DE-0DFD-4C3F-B558-5F4098E111C8} = {320CF5DE-0DFD-4C3F-B558-5F4098E111C8}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "image", "plugins\image\image.vcproj", "{1F9977F6-216F-4AE1-9928-59B72CF31C46}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "imagepng", "plugins\imagepng\imagepng.vcproj", "{43C01E60-21CC-49F5-8A11-F460BC866A31}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "map", "plugins\map\map.vcproj", "{1B0E70B0-ED20-4021-9BBE-5168CB8DAE90}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mapxml", "plugins\mapxml\mapxml.vcproj", "{DDBF170A-42DF-4836-9006-816422E08493}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "model", "plugins\model\model.vcproj", "{83C877DA-17B2-4863-B085-06AE9A8D68F3}"
- ProjectSection(ProjectDependencies) = postProject
- {320CF5DE-0DFD-4C3F-B558-5F4098E111C8} = {320CF5DE-0DFD-4C3F-B558-5F4098E111C8}
- {444E6FDA-83BD-49F1-89A4-7CF716F742A8} = {444E6FDA-83BD-49F1-89A4-7CF716F742A8}
- {E13CCFB0-A366-4EF3-A66F-C374B563E4DF} = {E13CCFB0-A366-4EF3-A66F-C374B563E4DF}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders", "plugins\shaders\shaders.vcproj", "{AEBCB950-AB67-48BB-9AF5-FCFB042824E8}"
- ProjectSection(ProjectDependencies) = postProject
- {E13CCFB0-A366-4EF3-A66F-C374B563E4DF} = {E13CCFB0-A366-4EF3-A66F-C374B563E4DF}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "surface", "plugins\surface\surface.vcproj", "{6FDF6CFE-52FF-4E8C-A6F6-C0392DAE4DB7}"
- ProjectSection(ProjectDependencies) = postProject
- {E13CCFB0-A366-4EF3-A66F-C374B563E4DF} = {E13CCFB0-A366-4EF3-A66F-C374B563E4DF}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vfspk3", "plugins\vfspk3\vfspk3.vcproj", "{DEFCF433-3A47-40EB-BBF7-861211C3A941}"
- ProjectSection(ProjectDependencies) = postProject
- {E13CCFB0-A366-4EF3-A66F-C374B563E4DF} = {E13CCFB0-A366-4EF3-A66F-C374B563E4DF}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Splines", "libs\splines\Splines.vcproj", "{6C1116CE-D99E-4629-9E69-A9329335D706}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "q3map2", "tools\quake3\q3map2\q3map2.vcproj", "{F5D0509C-80E0-49B7-B033-885D8253063A}"
- ProjectSection(ProjectDependencies) = postProject
- {DC2F2B6B-2596-4B90-88CE-2FDE4C2FFB01} = {DC2F2B6B-2596-4B90-88CE-2FDE4C2FFB01}
- EndProjectSection
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {65D02375-63EE-4A8A-9F8E-504B1D5A1D02}.Debug|Win32.ActiveCfg = Debug|Win32
- {65D02375-63EE-4A8A-9F8E-504B1D5A1D02}.Debug|Win32.Build.0 = Debug|Win32
- {65D02375-63EE-4A8A-9F8E-504B1D5A1D02}.Release|Win32.ActiveCfg = Release|Win32
- {65D02375-63EE-4A8A-9F8E-504B1D5A1D02}.Release|Win32.Build.0 = Release|Win32
- {E13CCFB0-A366-4EF3-A66F-C374B563E4DF}.Debug|Win32.ActiveCfg = Debug|Win32
- {E13CCFB0-A366-4EF3-A66F-C374B563E4DF}.Debug|Win32.Build.0 = Debug|Win32
- {E13CCFB0-A366-4EF3-A66F-C374B563E4DF}.Release|Win32.ActiveCfg = Release|Win32
- {E13CCFB0-A366-4EF3-A66F-C374B563E4DF}.Release|Win32.Build.0 = Release|Win32
- {0B522841-BDCC-493A-BA5C-604AE2CD5756}.Debug|Win32.ActiveCfg = Debug|Win32
- {0B522841-BDCC-493A-BA5C-604AE2CD5756}.Debug|Win32.Build.0 = Debug|Win32
- {0B522841-BDCC-493A-BA5C-604AE2CD5756}.Release|Win32.ActiveCfg = Release|Win32
- {0B522841-BDCC-493A-BA5C-604AE2CD5756}.Release|Win32.Build.0 = Release|Win32
- {5DCC8086-830E-42E6-B080-5A287F8FF5DC}.Debug|Win32.ActiveCfg = Debug|Win32
- {5DCC8086-830E-42E6-B080-5A287F8FF5DC}.Debug|Win32.Build.0 = Debug|Win32
- {5DCC8086-830E-42E6-B080-5A287F8FF5DC}.Release|Win32.ActiveCfg = Release|Win32
- {5DCC8086-830E-42E6-B080-5A287F8FF5DC}.Release|Win32.Build.0 = Release|Win32
- {3886C418-A41E-4AFF-BBD1-8E1E508920C9}.Debug|Win32.ActiveCfg = Debug|Win32
- {3886C418-A41E-4AFF-BBD1-8E1E508920C9}.Debug|Win32.Build.0 = Debug|Win32
- {3886C418-A41E-4AFF-BBD1-8E1E508920C9}.Release|Win32.ActiveCfg = Release|Win32
- {3886C418-A41E-4AFF-BBD1-8E1E508920C9}.Release|Win32.Build.0 = Release|Win32
- {320CF5DE-0DFD-4C3F-B558-5F4098E111C8}.Debug|Win32.ActiveCfg = Debug|Win32
- {320CF5DE-0DFD-4C3F-B558-5F4098E111C8}.Debug|Win32.Build.0 = Debug|Win32
- {320CF5DE-0DFD-4C3F-B558-5F4098E111C8}.Release|Win32.ActiveCfg = Release|Win32
- {320CF5DE-0DFD-4C3F-B558-5F4098E111C8}.Release|Win32.Build.0 = Release|Win32
- {DC2F2B6B-2596-4B90-88CE-2FDE4C2FFB01}.Debug|Win32.ActiveCfg = Debug|Win32
- {DC2F2B6B-2596-4B90-88CE-2FDE4C2FFB01}.Debug|Win32.Build.0 = Debug|Win32
- {DC2F2B6B-2596-4B90-88CE-2FDE4C2FFB01}.Release|Win32.ActiveCfg = Release|Win32
- {DC2F2B6B-2596-4B90-88CE-2FDE4C2FFB01}.Release|Win32.Build.0 = Release|Win32
- {444E6FDA-83BD-49F1-89A4-7CF716F742A8}.Debug|Win32.ActiveCfg = Debug|Win32
- {444E6FDA-83BD-49F1-89A4-7CF716F742A8}.Debug|Win32.Build.0 = Debug|Win32
- {444E6FDA-83BD-49F1-89A4-7CF716F742A8}.Release|Win32.ActiveCfg = Release|Win32
- {444E6FDA-83BD-49F1-89A4-7CF716F742A8}.Release|Win32.Build.0 = Release|Win32
- {A43B5811-4BCC-483A-BDAC-F5721DCF9B4A}.Debug|Win32.ActiveCfg = Debug|Win32
- {A43B5811-4BCC-483A-BDAC-F5721DCF9B4A}.Debug|Win32.Build.0 = Debug|Win32
- {A43B5811-4BCC-483A-BDAC-F5721DCF9B4A}.Release|Win32.ActiveCfg = Release|Win32
- {A43B5811-4BCC-483A-BDAC-F5721DCF9B4A}.Release|Win32.Build.0 = Release|Win32
- {17DD38AA-4842-45BC-9304-2ADC1A12B4F4}.Debug|Win32.ActiveCfg = Debug|Win32
- {17DD38AA-4842-45BC-9304-2ADC1A12B4F4}.Debug|Win32.Build.0 = Debug|Win32
- {17DD38AA-4842-45BC-9304-2ADC1A12B4F4}.Release|Win32.ActiveCfg = Release|Win32
- {17DD38AA-4842-45BC-9304-2ADC1A12B4F4}.Release|Win32.Build.0 = Release|Win32
- {1F9977F6-216F-4AE1-9928-59B72CF31C46}.Debug|Win32.ActiveCfg = Debug|Win32
- {1F9977F6-216F-4AE1-9928-59B72CF31C46}.Debug|Win32.Build.0 = Debug|Win32
- {1F9977F6-216F-4AE1-9928-59B72CF31C46}.Release|Win32.ActiveCfg = Release|Win32
- {1F9977F6-216F-4AE1-9928-59B72CF31C46}.Release|Win32.Build.0 = Release|Win32
- {43C01E60-21CC-49F5-8A11-F460BC866A31}.Debug|Win32.ActiveCfg = Debug|Win32
- {43C01E60-21CC-49F5-8A11-F460BC866A31}.Debug|Win32.Build.0 = Debug|Win32
- {43C01E60-21CC-49F5-8A11-F460BC866A31}.Release|Win32.ActiveCfg = Release|Win32
- {43C01E60-21CC-49F5-8A11-F460BC866A31}.Release|Win32.Build.0 = Release|Win32
- {1B0E70B0-ED20-4021-9BBE-5168CB8DAE90}.Debug|Win32.ActiveCfg = Debug|Win32
- {1B0E70B0-ED20-4021-9BBE-5168CB8DAE90}.Debug|Win32.Build.0 = Debug|Win32
- {1B0E70B0-ED20-4021-9BBE-5168CB8DAE90}.Release|Win32.ActiveCfg = Release|Win32
- {1B0E70B0-ED20-4021-9BBE-5168CB8DAE90}.Release|Win32.Build.0 = Release|Win32
- {DDBF170A-42DF-4836-9006-816422E08493}.Debug|Win32.ActiveCfg = Debug|Win32
- {DDBF170A-42DF-4836-9006-816422E08493}.Debug|Win32.Build.0 = Debug|Win32
- {DDBF170A-42DF-4836-9006-816422E08493}.Release|Win32.ActiveCfg = Release|Win32
- {DDBF170A-42DF-4836-9006-816422E08493}.Release|Win32.Build.0 = Release|Win32
- {83C877DA-17B2-4863-B085-06AE9A8D68F3}.Debug|Win32.ActiveCfg = Debug|Win32
- {83C877DA-17B2-4863-B085-06AE9A8D68F3}.Debug|Win32.Build.0 = Debug|Win32
- {83C877DA-17B2-4863-B085-06AE9A8D68F3}.Release|Win32.ActiveCfg = Release|Win32
- {83C877DA-17B2-4863-B085-06AE9A8D68F3}.Release|Win32.Build.0 = Release|Win32
- {AEBCB950-AB67-48BB-9AF5-FCFB042824E8}.Debug|Win32.ActiveCfg = Debug|Win32
- {AEBCB950-AB67-48BB-9AF5-FCFB042824E8}.Debug|Win32.Build.0 = Debug|Win32
- {AEBCB950-AB67-48BB-9AF5-FCFB042824E8}.Release|Win32.ActiveCfg = Release|Win32
- {AEBCB950-AB67-48BB-9AF5-FCFB042824E8}.Release|Win32.Build.0 = Release|Win32
- {6FDF6CFE-52FF-4E8C-A6F6-C0392DAE4DB7}.Debug|Win32.ActiveCfg = Debug|Win32
- {6FDF6CFE-52FF-4E8C-A6F6-C0392DAE4DB7}.Debug|Win32.Build.0 = Debug|Win32
- {6FDF6CFE-52FF-4E8C-A6F6-C0392DAE4DB7}.Release|Win32.ActiveCfg = Release|Win32
- {6FDF6CFE-52FF-4E8C-A6F6-C0392DAE4DB7}.Release|Win32.Build.0 = Release|Win32
- {DEFCF433-3A47-40EB-BBF7-861211C3A941}.Debug|Win32.ActiveCfg = Debug|Win32
- {DEFCF433-3A47-40EB-BBF7-861211C3A941}.Debug|Win32.Build.0 = Debug|Win32
- {DEFCF433-3A47-40EB-BBF7-861211C3A941}.Release|Win32.ActiveCfg = Release|Win32
- {DEFCF433-3A47-40EB-BBF7-861211C3A941}.Release|Win32.Build.0 = Release|Win32
- {6C1116CE-D99E-4629-9E69-A9329335D706}.Debug|Win32.ActiveCfg = Debug|Win32
- {6C1116CE-D99E-4629-9E69-A9329335D706}.Debug|Win32.Build.0 = Debug|Win32
- {6C1116CE-D99E-4629-9E69-A9329335D706}.Release|Win32.ActiveCfg = Release|Win32
- {6C1116CE-D99E-4629-9E69-A9329335D706}.Release|Win32.Build.0 = Release|Win32
- {F5D0509C-80E0-49B7-B033-885D8253063A}.Debug|Win32.ActiveCfg = Debug|Win32
- {F5D0509C-80E0-49B7-B033-885D8253063A}.Debug|Win32.Build.0 = Debug|Win32
- {F5D0509C-80E0-49B7-B033-885D8253063A}.Release|Win32.ActiveCfg = Release|Win32
- {F5D0509C-80E0-49B7-B033-885D8253063A}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
+
+Microsoft Visual Studio Solution File, Format Version 9.00
+# Visual Studio 2005
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "radiant", "radiant\radiant.vcproj", "{65D02375-63EE-4A8A-9F8E-504B1D5A1D02}"
+ ProjectSection(ProjectDependencies) = postProject
+ {320CF5DE-0DFD-4C3F-B558-5F4098E111C8} = {320CF5DE-0DFD-4C3F-B558-5F4098E111C8}
+ {E13CCFB0-A366-4EF3-A66F-C374B563E4DF} = {E13CCFB0-A366-4EF3-A66F-C374B563E4DF}
+ {5DCC8086-830E-42E6-B080-5A287F8FF5DC} = {5DCC8086-830E-42E6-B080-5A287F8FF5DC}
+ {DC2F2B6B-2596-4B90-88CE-2FDE4C2FFB01} = {DC2F2B6B-2596-4B90-88CE-2FDE4C2FFB01}
+ {0B522841-BDCC-493A-BA5C-604AE2CD5756} = {0B522841-BDCC-493A-BA5C-604AE2CD5756}
+ {3886C418-A41E-4AFF-BBD1-8E1E508920C9} = {3886C418-A41E-4AFF-BBD1-8E1E508920C9}
+ {444E6FDA-83BD-49F1-89A4-7CF716F742A8} = {444E6FDA-83BD-49F1-89A4-7CF716F742A8}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "synapse", "libs\synapse\synapse.vcproj", "{E13CCFB0-A366-4EF3-A66F-C374B563E4DF}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cmdlib", "libs\cmdlib\cmdlib.vcproj", "{0B522841-BDCC-493A-BA5C-604AE2CD5756}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ddslib", "libs\ddslib\ddslib.vcproj", "{5DCC8086-830E-42E6-B080-5A287F8FF5DC}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "l_net", "libs\l_net\l_net.vcproj", "{3886C418-A41E-4AFF-BBD1-8E1E508920C9}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mathlib", "libs\mathlib\mathlib.vcproj", "{320CF5DE-0DFD-4C3F-B558-5F4098E111C8}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "md5lib", "libs\md5lib\md5lib.vcproj", "{DC2F2B6B-2596-4B90-88CE-2FDE4C2FFB01}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "picomodel", "libs\picomodel\picomodel.vcproj", "{444E6FDA-83BD-49F1-89A4-7CF716F742A8}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "camera", "contrib\camera\camera.vcproj", "{A43B5811-4BCC-483A-BDAC-F5721DCF9B4A}"
+ ProjectSection(ProjectDependencies) = postProject
+ {6C1116CE-D99E-4629-9E69-A9329335D706} = {6C1116CE-D99E-4629-9E69-A9329335D706}
+ {E13CCFB0-A366-4EF3-A66F-C374B563E4DF} = {E13CCFB0-A366-4EF3-A66F-C374B563E4DF}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "entity", "plugins\entity\entity.vcproj", "{17DD38AA-4842-45BC-9304-2ADC1A12B4F4}"
+ ProjectSection(ProjectDependencies) = postProject
+ {E13CCFB0-A366-4EF3-A66F-C374B563E4DF} = {E13CCFB0-A366-4EF3-A66F-C374B563E4DF}
+ {320CF5DE-0DFD-4C3F-B558-5F4098E111C8} = {320CF5DE-0DFD-4C3F-B558-5F4098E111C8}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "image", "plugins\image\image.vcproj", "{1F9977F6-216F-4AE1-9928-59B72CF31C46}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "imagepng", "plugins\imagepng\imagepng.vcproj", "{43C01E60-21CC-49F5-8A11-F460BC866A31}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "map", "plugins\map\map.vcproj", "{1B0E70B0-ED20-4021-9BBE-5168CB8DAE90}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mapxml", "plugins\mapxml\mapxml.vcproj", "{DDBF170A-42DF-4836-9006-816422E08493}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "model", "plugins\model\model.vcproj", "{83C877DA-17B2-4863-B085-06AE9A8D68F3}"
+ ProjectSection(ProjectDependencies) = postProject
+ {320CF5DE-0DFD-4C3F-B558-5F4098E111C8} = {320CF5DE-0DFD-4C3F-B558-5F4098E111C8}
+ {444E6FDA-83BD-49F1-89A4-7CF716F742A8} = {444E6FDA-83BD-49F1-89A4-7CF716F742A8}
+ {E13CCFB0-A366-4EF3-A66F-C374B563E4DF} = {E13CCFB0-A366-4EF3-A66F-C374B563E4DF}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders", "plugins\shaders\shaders.vcproj", "{AEBCB950-AB67-48BB-9AF5-FCFB042824E8}"
+ ProjectSection(ProjectDependencies) = postProject
+ {E13CCFB0-A366-4EF3-A66F-C374B563E4DF} = {E13CCFB0-A366-4EF3-A66F-C374B563E4DF}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "surface", "plugins\surface\surface.vcproj", "{6FDF6CFE-52FF-4E8C-A6F6-C0392DAE4DB7}"
+ ProjectSection(ProjectDependencies) = postProject
+ {E13CCFB0-A366-4EF3-A66F-C374B563E4DF} = {E13CCFB0-A366-4EF3-A66F-C374B563E4DF}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vfspk3", "plugins\vfspk3\vfspk3.vcproj", "{DEFCF433-3A47-40EB-BBF7-861211C3A941}"
+ ProjectSection(ProjectDependencies) = postProject
+ {E13CCFB0-A366-4EF3-A66F-C374B563E4DF} = {E13CCFB0-A366-4EF3-A66F-C374B563E4DF}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Splines", "libs\splines\Splines.vcproj", "{6C1116CE-D99E-4629-9E69-A9329335D706}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "q3map2", "tools\quake3\q3map2\q3map2.vcproj", "{F5D0509C-80E0-49B7-B033-885D8253063A}"
+ ProjectSection(ProjectDependencies) = postProject
+ {DC2F2B6B-2596-4B90-88CE-2FDE4C2FFB01} = {DC2F2B6B-2596-4B90-88CE-2FDE4C2FFB01}
+ {444E6FDA-83BD-49F1-89A4-7CF716F742A8} = {444E6FDA-83BD-49F1-89A4-7CF716F742A8}
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Release|Win32 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {65D02375-63EE-4A8A-9F8E-504B1D5A1D02}.Debug|Win32.ActiveCfg = Debug|Win32
+ {65D02375-63EE-4A8A-9F8E-504B1D5A1D02}.Debug|Win32.Build.0 = Debug|Win32
+ {65D02375-63EE-4A8A-9F8E-504B1D5A1D02}.Release|Win32.ActiveCfg = Release|Win32
+ {65D02375-63EE-4A8A-9F8E-504B1D5A1D02}.Release|Win32.Build.0 = Release|Win32
+ {E13CCFB0-A366-4EF3-A66F-C374B563E4DF}.Debug|Win32.ActiveCfg = Debug|Win32
+ {E13CCFB0-A366-4EF3-A66F-C374B563E4DF}.Debug|Win32.Build.0 = Debug|Win32
+ {E13CCFB0-A366-4EF3-A66F-C374B563E4DF}.Release|Win32.ActiveCfg = Release|Win32
+ {E13CCFB0-A366-4EF3-A66F-C374B563E4DF}.Release|Win32.Build.0 = Release|Win32
+ {0B522841-BDCC-493A-BA5C-604AE2CD5756}.Debug|Win32.ActiveCfg = Debug|Win32
+ {0B522841-BDCC-493A-BA5C-604AE2CD5756}.Debug|Win32.Build.0 = Debug|Win32
+ {0B522841-BDCC-493A-BA5C-604AE2CD5756}.Release|Win32.ActiveCfg = Release|Win32
+ {0B522841-BDCC-493A-BA5C-604AE2CD5756}.Release|Win32.Build.0 = Release|Win32
+ {5DCC8086-830E-42E6-B080-5A287F8FF5DC}.Debug|Win32.ActiveCfg = Debug|Win32
+ {5DCC8086-830E-42E6-B080-5A287F8FF5DC}.Debug|Win32.Build.0 = Debug|Win32
+ {5DCC8086-830E-42E6-B080-5A287F8FF5DC}.Release|Win32.ActiveCfg = Release|Win32
+ {5DCC8086-830E-42E6-B080-5A287F8FF5DC}.Release|Win32.Build.0 = Release|Win32
+ {3886C418-A41E-4AFF-BBD1-8E1E508920C9}.Debug|Win32.ActiveCfg = Debug|Win32
+ {3886C418-A41E-4AFF-BBD1-8E1E508920C9}.Debug|Win32.Build.0 = Debug|Win32
+ {3886C418-A41E-4AFF-BBD1-8E1E508920C9}.Release|Win32.ActiveCfg = Release|Win32
+ {3886C418-A41E-4AFF-BBD1-8E1E508920C9}.Release|Win32.Build.0 = Release|Win32
+ {320CF5DE-0DFD-4C3F-B558-5F4098E111C8}.Debug|Win32.ActiveCfg = Debug|Win32
+ {320CF5DE-0DFD-4C3F-B558-5F4098E111C8}.Debug|Win32.Build.0 = Debug|Win32
+ {320CF5DE-0DFD-4C3F-B558-5F4098E111C8}.Release|Win32.ActiveCfg = Release|Win32
+ {320CF5DE-0DFD-4C3F-B558-5F4098E111C8}.Release|Win32.Build.0 = Release|Win32
+ {DC2F2B6B-2596-4B90-88CE-2FDE4C2FFB01}.Debug|Win32.ActiveCfg = Debug|Win32
+ {DC2F2B6B-2596-4B90-88CE-2FDE4C2FFB01}.Debug|Win32.Build.0 = Debug|Win32
+ {DC2F2B6B-2596-4B90-88CE-2FDE4C2FFB01}.Release|Win32.ActiveCfg = Release|Win32
+ {DC2F2B6B-2596-4B90-88CE-2FDE4C2FFB01}.Release|Win32.Build.0 = Release|Win32
+ {444E6FDA-83BD-49F1-89A4-7CF716F742A8}.Debug|Win32.ActiveCfg = Debug|Win32
+ {444E6FDA-83BD-49F1-89A4-7CF716F742A8}.Debug|Win32.Build.0 = Debug|Win32
+ {444E6FDA-83BD-49F1-89A4-7CF716F742A8}.Release|Win32.ActiveCfg = Release|Win32
+ {444E6FDA-83BD-49F1-89A4-7CF716F742A8}.Release|Win32.Build.0 = Release|Win32
+ {A43B5811-4BCC-483A-BDAC-F5721DCF9B4A}.Debug|Win32.ActiveCfg = Debug|Win32
+ {A43B5811-4BCC-483A-BDAC-F5721DCF9B4A}.Debug|Win32.Build.0 = Debug|Win32
+ {A43B5811-4BCC-483A-BDAC-F5721DCF9B4A}.Release|Win32.ActiveCfg = Release|Win32
+ {A43B5811-4BCC-483A-BDAC-F5721DCF9B4A}.Release|Win32.Build.0 = Release|Win32
+ {17DD38AA-4842-45BC-9304-2ADC1A12B4F4}.Debug|Win32.ActiveCfg = Debug|Win32
+ {17DD38AA-4842-45BC-9304-2ADC1A12B4F4}.Debug|Win32.Build.0 = Debug|Win32
+ {17DD38AA-4842-45BC-9304-2ADC1A12B4F4}.Release|Win32.ActiveCfg = Release|Win32
+ {17DD38AA-4842-45BC-9304-2ADC1A12B4F4}.Release|Win32.Build.0 = Release|Win32
+ {1F9977F6-216F-4AE1-9928-59B72CF31C46}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1F9977F6-216F-4AE1-9928-59B72CF31C46}.Debug|Win32.Build.0 = Debug|Win32
+ {1F9977F6-216F-4AE1-9928-59B72CF31C46}.Release|Win32.ActiveCfg = Release|Win32
+ {1F9977F6-216F-4AE1-9928-59B72CF31C46}.Release|Win32.Build.0 = Release|Win32
+ {43C01E60-21CC-49F5-8A11-F460BC866A31}.Debug|Win32.ActiveCfg = Debug|Win32
+ {43C01E60-21CC-49F5-8A11-F460BC866A31}.Debug|Win32.Build.0 = Debug|Win32
+ {43C01E60-21CC-49F5-8A11-F460BC866A31}.Release|Win32.ActiveCfg = Release|Win32
+ {43C01E60-21CC-49F5-8A11-F460BC866A31}.Release|Win32.Build.0 = Release|Win32
+ {1B0E70B0-ED20-4021-9BBE-5168CB8DAE90}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1B0E70B0-ED20-4021-9BBE-5168CB8DAE90}.Debug|Win32.Build.0 = Debug|Win32
+ {1B0E70B0-ED20-4021-9BBE-5168CB8DAE90}.Release|Win32.ActiveCfg = Release|Win32
+ {1B0E70B0-ED20-4021-9BBE-5168CB8DAE90}.Release|Win32.Build.0 = Release|Win32
+ {DDBF170A-42DF-4836-9006-816422E08493}.Debug|Win32.ActiveCfg = Debug|Win32
+ {DDBF170A-42DF-4836-9006-816422E08493}.Debug|Win32.Build.0 = Debug|Win32
+ {DDBF170A-42DF-4836-9006-816422E08493}.Release|Win32.ActiveCfg = Release|Win32
+ {DDBF170A-42DF-4836-9006-816422E08493}.Release|Win32.Build.0 = Release|Win32
+ {83C877DA-17B2-4863-B085-06AE9A8D68F3}.Debug|Win32.ActiveCfg = Debug|Win32
+ {83C877DA-17B2-4863-B085-06AE9A8D68F3}.Debug|Win32.Build.0 = Debug|Win32
+ {83C877DA-17B2-4863-B085-06AE9A8D68F3}.Release|Win32.ActiveCfg = Release|Win32
+ {83C877DA-17B2-4863-B085-06AE9A8D68F3}.Release|Win32.Build.0 = Release|Win32
+ {AEBCB950-AB67-48BB-9AF5-FCFB042824E8}.Debug|Win32.ActiveCfg = Debug|Win32
+ {AEBCB950-AB67-48BB-9AF5-FCFB042824E8}.Debug|Win32.Build.0 = Debug|Win32
+ {AEBCB950-AB67-48BB-9AF5-FCFB042824E8}.Release|Win32.ActiveCfg = Release|Win32
+ {AEBCB950-AB67-48BB-9AF5-FCFB042824E8}.Release|Win32.Build.0 = Release|Win32
+ {6FDF6CFE-52FF-4E8C-A6F6-C0392DAE4DB7}.Debug|Win32.ActiveCfg = Debug|Win32
+ {6FDF6CFE-52FF-4E8C-A6F6-C0392DAE4DB7}.Debug|Win32.Build.0 = Debug|Win32
+ {6FDF6CFE-52FF-4E8C-A6F6-C0392DAE4DB7}.Release|Win32.ActiveCfg = Release|Win32
+ {6FDF6CFE-52FF-4E8C-A6F6-C0392DAE4DB7}.Release|Win32.Build.0 = Release|Win32
+ {DEFCF433-3A47-40EB-BBF7-861211C3A941}.Debug|Win32.ActiveCfg = Debug|Win32
+ {DEFCF433-3A47-40EB-BBF7-861211C3A941}.Debug|Win32.Build.0 = Debug|Win32
+ {DEFCF433-3A47-40EB-BBF7-861211C3A941}.Release|Win32.ActiveCfg = Release|Win32
+ {DEFCF433-3A47-40EB-BBF7-861211C3A941}.Release|Win32.Build.0 = Release|Win32
+ {6C1116CE-D99E-4629-9E69-A9329335D706}.Debug|Win32.ActiveCfg = Debug|Win32
+ {6C1116CE-D99E-4629-9E69-A9329335D706}.Debug|Win32.Build.0 = Debug|Win32
+ {6C1116CE-D99E-4629-9E69-A9329335D706}.Release|Win32.ActiveCfg = Release|Win32
+ {6C1116CE-D99E-4629-9E69-A9329335D706}.Release|Win32.Build.0 = Release|Win32
+ {F5D0509C-80E0-49B7-B033-885D8253063A}.Debug|Win32.ActiveCfg = Debug|Win32
+ {F5D0509C-80E0-49B7-B033-885D8253063A}.Debug|Win32.Build.0 = Debug|Win32
+ {F5D0509C-80E0-49B7-B033-885D8253063A}.Release|Win32.ActiveCfg = Release|Win32
+ {F5D0509C-80E0-49B7-B033-885D8253063A}.Release|Win32.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/radiant/gtkmisc.cpp b/radiant/gtkmisc.cpp
index fe97ef9..6b54918 100644
--- a/radiant/gtkmisc.cpp
+++ b/radiant/gtkmisc.cpp
@@ -1474,8 +1474,9 @@ char* WINAPI dir_dialog (void *parent, const char* title, const char* path)
GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
gtk_file_selection_hide_fileop_buttons (GTK_FILE_SELECTION (file_sel));
- if (parent != NULL)
- gtk_window_set_transient_for (GTK_WINDOW (file_sel), GTK_WINDOW (parent));
+ if ( parent != NULL ) {
+ gtk_window_set_transient_for( GTK_WINDOW( file_sel ), GTK_WINDOW( parent ) );
+ }
gtk_widget_hide (GTK_FILE_SELECTION (file_sel)->file_list->parent);
@@ -1491,10 +1492,10 @@ char* WINAPI dir_dialog (void *parent, const char* title, const char* path)
while (loop)
gtk_main_iteration ();
- filename = g_strdup(gtk_file_selection_get_filename (GTK_FILE_SELECTION (file_sel)));
+ filename = g_strdup( gtk_file_selection_get_filename( GTK_FILE_SELECTION( file_sel ) ) );
- gtk_grab_remove (file_sel);
- gtk_widget_destroy (file_sel);
+ gtk_grab_remove( file_sel );
+ gtk_widget_destroy( file_sel );
return filename;
}
diff --git a/radiant/mainframe.cpp b/radiant/mainframe.cpp
index 7edd170..402d89d 100644
--- a/radiant/mainframe.cpp
+++ b/radiant/mainframe.cpp
@@ -122,6 +122,7 @@ SCommandInfo g_Commands[] =
{"CSGMerge", 'U', 0x04, ID_SELECTION_CSGMERGE, "menu_selection_csgmerge"},
{"CSGSubtract", 'U', 0x01, ID_SELECTION_CSGSUBTRACT, "menu_selection_csgsubstract"},
// {"ViewGroups", 'G', 0x00, ID_VIEW_GROUPS, "menu_view_groups"}, (temporary disabled)
+ {"SelectFuncGroup", 'G', 0x00, ID_SELECT_FUNC_GROUP, "menu_select_func_group"},
{"HideSelected", 'H', 0x00, ID_VIEW_HIDESHOW_HIDESELECTED, "menu_view_hideshow_hideselected"},
{"ShowHidden", 'H', 0x01, ID_VIEW_HIDESHOW_SHOWHIDDEN, "menu_view_hideshow_showhidden"},
{"BendMode", 'B', 0x00, ID_PATCH_BEND, "menu_patch_bend"},
@@ -424,6 +425,7 @@ gint HandleCommand (GtkWidget *widget, gpointer data)
case ID_TOGGLECONSOLE: g_pParentWnd->OnToggleconsole (); break;
case ID_VIEW_ENTITY: g_pParentWnd->OnViewEntity (); break;
case ID_VIEW_GROUPS: g_pParentWnd->OnViewGroups (); break;
+ case ID_SELECT_FUNC_GROUP: g_pParentWnd->OnSelectFuncGroup(); break;
case ID_TOGGLEVIEW: g_pParentWnd->OnToggleview (); break;
case ID_TOGGLEVIEW_YZ: g_pParentWnd->OnToggleviewYz (); break;
case ID_TOGGLEVIEW_XZ: g_pParentWnd->OnToggleviewXz (); break;
@@ -1200,6 +1202,7 @@ void MainFrame::create_main_menu (GtkWidget *window, GtkWidget *vbox)
GTK_SIGNAL_FUNC (HandleCommand), ID_SELECTION_SELECTPARTIALTALL);
create_menu_item_with_mnemonic (menu_in_menu, _("Select _Inside"),
GTK_SIGNAL_FUNC (HandleCommand), ID_SELECTION_SELECTINSIDE);
+ create_menu_item_with_mnemonic (menu_in_menu, "Select Func _Group", GTK_SIGNAL_FUNC (HandleCommand), ID_SELECT_FUNC_GROUP);
#ifndef QUAKE3
create_menu_item_with_mnemonic (menu_in_menu, _("Nudge Left"),
GTK_SIGNAL_FUNC (HandleCommand), ID_SELECTION_SELECT_NUDGELEFT);
@@ -7074,7 +7077,24 @@ void MainFrame::OnPatchTab()
}
}
-void MainFrame::OnCameraForward(bool keydown)
+void MainFrame::OnSelectFuncGroup()
+{
+ // check to see if the selected brush is part of a func group
+ // if it is, deselect everything and reselect the next brush
+ // in the group
+ brush_t *b2, *b = selected_brushes.next;
+ entity_t * e;
+ if (b != &selected_brushes)
+ {
+ if (strcmpi(b->owner->eclass->name, "worldspawn") != 0)
+ {
+ e = b->owner;
+ Select_SelectGroup(e);
+ }
+ }
+}
+
+void MainFrame::OnCameraForward(bool keydown)
{
if (g_PrefsDlg.m_bCamDiscrete && (m_pCamWnd && !m_pCamWnd->m_bFreeMove) )
{
diff --git a/radiant/mainframe.h b/radiant/mainframe.h
index 3d7d146..457ffe8 100644
--- a/radiant/mainframe.h
+++ b/radiant/mainframe.h
@@ -407,6 +407,8 @@ struct SKeyInfo
#define ID_COLORS_MINOR_ALT 40230
#define ID_COLORS_MAJOR_ALT 40231
+#define ID_SELECT_FUNC_GROUP 40233
+
// those must have their own ID chunk ID_GRID_025 <= ID_GRID <= ID_GRID_256
#define ID_GRID_025 40300
#define ID_GRID_05 40301
@@ -891,6 +893,7 @@ public:
void OnFilterPaths();
void OnFilterClusterportals();
void OnFilterLightgrid();
+ void OnSelectFuncGroup();
private:
EViewStyle m_nCurrentStyle;
diff --git a/radiant/missing.cpp b/radiant/missing.cpp
index deafb63..e610fbb 100644
--- a/radiant/missing.cpp
+++ b/radiant/missing.cpp
@@ -208,11 +208,11 @@ EPathCheck CheckFile( const char *path ) {
}
bool radCreateDirectory( const char *directory ) {
- return CreateDirectory( directory, NULL ) != false;
+ return ( CreateDirectory( directory, NULL ) != false );
}
bool radCopyFile( const char *lpExistingFileName, const char *lpNewFileName ) {
- return CopyFile( lpExistingFileName, lpNewFileName, FALSE ) != false;
+ return ( CopyFile( lpExistingFileName, lpNewFileName, FALSE ) != false );
}
#endif
@@ -239,7 +239,10 @@ bool CopyTree( const char *source, const char *dest ) {
switch ( CheckFile( srcEntry.GetBuffer() ) ) {
case PATH_DIRECTORY: {
if ( CheckFile( dstEntry.GetBuffer() ) == PATH_FAIL ) {
- radCreateDirectory( dstEntry.GetBuffer() );
+ if ( !radCreateDirectory( dstEntry.GetBuffer() ) ) {
+ Sys_Printf( "create directory %s failed\n", dstEntry.GetBuffer() );
+ return false;
+ }
}
bool ret;
ret = CopyTree( srcEntry.GetBuffer(), dstEntry.GetBuffer() );
diff --git a/radiant/preferences.cpp b/radiant/preferences.cpp
index c9fb13b..9608fbb 100644
--- a/radiant/preferences.cpp
+++ b/radiant/preferences.cpp
@@ -3229,14 +3229,14 @@ void CGameInstall::OnBtnBrowseEngine( GtkWidget *widget, gpointer data ) {
Sys_Printf( "OnBtnBrowseEngine\n" );
CGameInstall* i = static_cast( data );
- char *dir = dir_dialog( widget, _("Select game directory"), NULL );
+ char *dir = dir_dialog( i->m_pWidget, _("Select game directory"), NULL );
i->UpdateData( TRUE );
if ( dir != NULL ) {
i->m_strEngine = dir;
i->UpdateData( FALSE );
- free( dir );
+ g_free( dir );
}
}
@@ -3370,7 +3370,7 @@ void CGameInstall::Run() {
Sys_Printf( "game file: %s\n", gameFilePath.GetBuffer() );
FILE *fg = fopen( gameFilePath.GetBuffer(), "w" );
- if ( fg == NULL ) {
+ if ( fg == NULL || ferror( fg ) ) {
Error( "Failed to open %s for writing\n", gameFilePath.GetBuffer() );
}
fprintf( fg, "\n
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/radiant/radiant_VC9.vcproj b/radiant/radiant_VC9.vcproj
new file mode 100755
index 0000000..4a1919f
--- /dev/null
+++ b/radiant/radiant_VC9.vcproj
@@ -0,0 +1,2459 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/radiant/select.cpp b/radiant/select.cpp
index ec1cf86..3364fd3 100644
--- a/radiant/select.cpp
+++ b/radiant/select.cpp
@@ -1372,6 +1372,30 @@ void Select_Inside (void)
Sys_UpdateWindows (W_ALL);
}
+void Select_SelectGroup(entity_t* group)
+{
+ brush_t* b;
+ //brush_t* next;
+
+ Undo_Start ("select func group");
+ Undo_AddBrushList (&selected_brushes);
+ Undo_End();
+
+ Select_Deselect();
+
+ b = &group->brushes;
+
+ do
+ {
+ b = b->onext;
+ Brush_RemoveFromList(b);
+ Brush_AddToList(b, &selected_brushes);
+ } while( b->onext != &group->brushes );
+
+ Sys_UpdateWindows (W_ALL);
+}
+
+
void Select_Ungroup(void)
{
int numselectedgroups;
diff --git a/radiant/select.h b/radiant/select.h
index 4271816..5cf2181 100644
--- a/radiant/select.h
+++ b/radiant/select.h
@@ -65,6 +65,8 @@ void Select_AllOfType();
void Select_Reselect();
void Select_FitTexture(int nHeight = 1, int nWidth = 1);
+void Select_SelectGroup(entity_t* group);
+
// absolute texture coordinates
// TTimo NOTE: this is stuff for old brushes format and rotation texture lock .. sort of in-between with bush primitives
void ComputeAbsolute(face_t* f, vec3_t& p1, vec3_t& p2, vec3_t& p3);
diff --git a/radiant_VC9.sln b/radiant_VC9.sln
new file mode 100644
index 0000000..a5e36c5
--- /dev/null
+++ b/radiant_VC9.sln
@@ -0,0 +1,169 @@
+
+Microsoft Visual Studio Solution File, Format Version 10.00
+# Visual C++ Express 2008
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "radiant", "radiant\radiant_VC9.vcproj", "{65D02375-63EE-4A8A-9F8E-504B1D5A1D02}"
+ ProjectSection(ProjectDependencies) = postProject
+ {320CF5DE-0DFD-4C3F-B558-5F4098E111C8} = {320CF5DE-0DFD-4C3F-B558-5F4098E111C8}
+ {E13CCFB0-A366-4EF3-A66F-C374B563E4DF} = {E13CCFB0-A366-4EF3-A66F-C374B563E4DF}
+ {5DCC8086-830E-42E6-B080-5A287F8FF5DC} = {5DCC8086-830E-42E6-B080-5A287F8FF5DC}
+ {DC2F2B6B-2596-4B90-88CE-2FDE4C2FFB01} = {DC2F2B6B-2596-4B90-88CE-2FDE4C2FFB01}
+ {0B522841-BDCC-493A-BA5C-604AE2CD5756} = {0B522841-BDCC-493A-BA5C-604AE2CD5756}
+ {3886C418-A41E-4AFF-BBD1-8E1E508920C9} = {3886C418-A41E-4AFF-BBD1-8E1E508920C9}
+ {444E6FDA-83BD-49F1-89A4-7CF716F742A8} = {444E6FDA-83BD-49F1-89A4-7CF716F742A8}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "synapse", "libs\synapse\synapse_VC9.vcproj", "{E13CCFB0-A366-4EF3-A66F-C374B563E4DF}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cmdlib", "libs\cmdlib\cmdlib_VC9.vcproj", "{0B522841-BDCC-493A-BA5C-604AE2CD5756}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ddslib", "libs\ddslib\ddslib_VC9.vcproj", "{5DCC8086-830E-42E6-B080-5A287F8FF5DC}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "l_net", "libs\l_net\l_net_VC9.vcproj", "{3886C418-A41E-4AFF-BBD1-8E1E508920C9}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mathlib", "libs\mathlib\mathlib_VC9.vcproj", "{320CF5DE-0DFD-4C3F-B558-5F4098E111C8}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "md5lib", "libs\md5lib\md5lib_VC9.vcproj", "{DC2F2B6B-2596-4B90-88CE-2FDE4C2FFB01}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "picomodel", "libs\picomodel\picomodel_VC9.vcproj", "{444E6FDA-83BD-49F1-89A4-7CF716F742A8}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "camera", "contrib\camera\camera_VC9.vcproj", "{A43B5811-4BCC-483A-BDAC-F5721DCF9B4A}"
+ ProjectSection(ProjectDependencies) = postProject
+ {6C1116CE-D99E-4629-9E69-A9329335D706} = {6C1116CE-D99E-4629-9E69-A9329335D706}
+ {E13CCFB0-A366-4EF3-A66F-C374B563E4DF} = {E13CCFB0-A366-4EF3-A66F-C374B563E4DF}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "entity", "plugins\entity\entity_VC9.vcproj", "{17DD38AA-4842-45BC-9304-2ADC1A12B4F4}"
+ ProjectSection(ProjectDependencies) = postProject
+ {E13CCFB0-A366-4EF3-A66F-C374B563E4DF} = {E13CCFB0-A366-4EF3-A66F-C374B563E4DF}
+ {320CF5DE-0DFD-4C3F-B558-5F4098E111C8} = {320CF5DE-0DFD-4C3F-B558-5F4098E111C8}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "image", "plugins\image\image_VC9.vcproj", "{1F9977F6-216F-4AE1-9928-59B72CF31C46}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "imagepng", "plugins\imagepng\imagepng_VC9.vcproj", "{43C01E60-21CC-49F5-8A11-F460BC866A31}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "map", "plugins\map\map_VC9.vcproj", "{1B0E70B0-ED20-4021-9BBE-5168CB8DAE90}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mapxml", "plugins\mapxml\mapxml_VC9.vcproj", "{DDBF170A-42DF-4836-9006-816422E08493}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "model", "plugins\model\model_VC9.vcproj", "{83C877DA-17B2-4863-B085-06AE9A8D68F3}"
+ ProjectSection(ProjectDependencies) = postProject
+ {320CF5DE-0DFD-4C3F-B558-5F4098E111C8} = {320CF5DE-0DFD-4C3F-B558-5F4098E111C8}
+ {444E6FDA-83BD-49F1-89A4-7CF716F742A8} = {444E6FDA-83BD-49F1-89A4-7CF716F742A8}
+ {E13CCFB0-A366-4EF3-A66F-C374B563E4DF} = {E13CCFB0-A366-4EF3-A66F-C374B563E4DF}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders", "plugins\shaders\shaders_VC9.vcproj", "{AEBCB950-AB67-48BB-9AF5-FCFB042824E8}"
+ ProjectSection(ProjectDependencies) = postProject
+ {E13CCFB0-A366-4EF3-A66F-C374B563E4DF} = {E13CCFB0-A366-4EF3-A66F-C374B563E4DF}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "surface", "plugins\surface\surface_VC9.vcproj", "{6FDF6CFE-52FF-4E8C-A6F6-C0392DAE4DB7}"
+ ProjectSection(ProjectDependencies) = postProject
+ {E13CCFB0-A366-4EF3-A66F-C374B563E4DF} = {E13CCFB0-A366-4EF3-A66F-C374B563E4DF}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vfspk3", "plugins\vfspk3\vfspk3_VC9.vcproj", "{DEFCF433-3A47-40EB-BBF7-861211C3A941}"
+ ProjectSection(ProjectDependencies) = postProject
+ {E13CCFB0-A366-4EF3-A66F-C374B563E4DF} = {E13CCFB0-A366-4EF3-A66F-C374B563E4DF}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Splines", "libs\splines\Splines_VC9.vcproj", "{6C1116CE-D99E-4629-9E69-A9329335D706}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "q3map2", "tools\quake3\q3map2\q3map2_VC9.vcproj", "{F5D0509C-80E0-49B7-B033-885D8253063A}"
+ ProjectSection(ProjectDependencies) = postProject
+ {DC2F2B6B-2596-4B90-88CE-2FDE4C2FFB01} = {DC2F2B6B-2596-4B90-88CE-2FDE4C2FFB01}
+ {444E6FDA-83BD-49F1-89A4-7CF716F742A8} = {444E6FDA-83BD-49F1-89A4-7CF716F742A8}
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Release|Win32 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {65D02375-63EE-4A8A-9F8E-504B1D5A1D02}.Debug|Win32.ActiveCfg = Debug|Win32
+ {65D02375-63EE-4A8A-9F8E-504B1D5A1D02}.Debug|Win32.Build.0 = Debug|Win32
+ {65D02375-63EE-4A8A-9F8E-504B1D5A1D02}.Release|Win32.ActiveCfg = Release|Win32
+ {65D02375-63EE-4A8A-9F8E-504B1D5A1D02}.Release|Win32.Build.0 = Release|Win32
+ {E13CCFB0-A366-4EF3-A66F-C374B563E4DF}.Debug|Win32.ActiveCfg = Debug|Win32
+ {E13CCFB0-A366-4EF3-A66F-C374B563E4DF}.Debug|Win32.Build.0 = Debug|Win32
+ {E13CCFB0-A366-4EF3-A66F-C374B563E4DF}.Release|Win32.ActiveCfg = Release|Win32
+ {E13CCFB0-A366-4EF3-A66F-C374B563E4DF}.Release|Win32.Build.0 = Release|Win32
+ {0B522841-BDCC-493A-BA5C-604AE2CD5756}.Debug|Win32.ActiveCfg = Debug|Win32
+ {0B522841-BDCC-493A-BA5C-604AE2CD5756}.Debug|Win32.Build.0 = Debug|Win32
+ {0B522841-BDCC-493A-BA5C-604AE2CD5756}.Release|Win32.ActiveCfg = Release|Win32
+ {0B522841-BDCC-493A-BA5C-604AE2CD5756}.Release|Win32.Build.0 = Release|Win32
+ {5DCC8086-830E-42E6-B080-5A287F8FF5DC}.Debug|Win32.ActiveCfg = Debug|Win32
+ {5DCC8086-830E-42E6-B080-5A287F8FF5DC}.Debug|Win32.Build.0 = Debug|Win32
+ {5DCC8086-830E-42E6-B080-5A287F8FF5DC}.Release|Win32.ActiveCfg = Release|Win32
+ {5DCC8086-830E-42E6-B080-5A287F8FF5DC}.Release|Win32.Build.0 = Release|Win32
+ {3886C418-A41E-4AFF-BBD1-8E1E508920C9}.Debug|Win32.ActiveCfg = Debug|Win32
+ {3886C418-A41E-4AFF-BBD1-8E1E508920C9}.Debug|Win32.Build.0 = Debug|Win32
+ {3886C418-A41E-4AFF-BBD1-8E1E508920C9}.Release|Win32.ActiveCfg = Release|Win32
+ {3886C418-A41E-4AFF-BBD1-8E1E508920C9}.Release|Win32.Build.0 = Release|Win32
+ {320CF5DE-0DFD-4C3F-B558-5F4098E111C8}.Debug|Win32.ActiveCfg = Debug|Win32
+ {320CF5DE-0DFD-4C3F-B558-5F4098E111C8}.Debug|Win32.Build.0 = Debug|Win32
+ {320CF5DE-0DFD-4C3F-B558-5F4098E111C8}.Release|Win32.ActiveCfg = Release|Win32
+ {320CF5DE-0DFD-4C3F-B558-5F4098E111C8}.Release|Win32.Build.0 = Release|Win32
+ {DC2F2B6B-2596-4B90-88CE-2FDE4C2FFB01}.Debug|Win32.ActiveCfg = Debug|Win32
+ {DC2F2B6B-2596-4B90-88CE-2FDE4C2FFB01}.Debug|Win32.Build.0 = Debug|Win32
+ {DC2F2B6B-2596-4B90-88CE-2FDE4C2FFB01}.Release|Win32.ActiveCfg = Release|Win32
+ {DC2F2B6B-2596-4B90-88CE-2FDE4C2FFB01}.Release|Win32.Build.0 = Release|Win32
+ {444E6FDA-83BD-49F1-89A4-7CF716F742A8}.Debug|Win32.ActiveCfg = Debug|Win32
+ {444E6FDA-83BD-49F1-89A4-7CF716F742A8}.Debug|Win32.Build.0 = Debug|Win32
+ {444E6FDA-83BD-49F1-89A4-7CF716F742A8}.Release|Win32.ActiveCfg = Release|Win32
+ {444E6FDA-83BD-49F1-89A4-7CF716F742A8}.Release|Win32.Build.0 = Release|Win32
+ {A43B5811-4BCC-483A-BDAC-F5721DCF9B4A}.Debug|Win32.ActiveCfg = Debug|Win32
+ {A43B5811-4BCC-483A-BDAC-F5721DCF9B4A}.Debug|Win32.Build.0 = Debug|Win32
+ {A43B5811-4BCC-483A-BDAC-F5721DCF9B4A}.Release|Win32.ActiveCfg = Release|Win32
+ {A43B5811-4BCC-483A-BDAC-F5721DCF9B4A}.Release|Win32.Build.0 = Release|Win32
+ {17DD38AA-4842-45BC-9304-2ADC1A12B4F4}.Debug|Win32.ActiveCfg = Debug|Win32
+ {17DD38AA-4842-45BC-9304-2ADC1A12B4F4}.Debug|Win32.Build.0 = Debug|Win32
+ {17DD38AA-4842-45BC-9304-2ADC1A12B4F4}.Release|Win32.ActiveCfg = Release|Win32
+ {17DD38AA-4842-45BC-9304-2ADC1A12B4F4}.Release|Win32.Build.0 = Release|Win32
+ {1F9977F6-216F-4AE1-9928-59B72CF31C46}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1F9977F6-216F-4AE1-9928-59B72CF31C46}.Debug|Win32.Build.0 = Debug|Win32
+ {1F9977F6-216F-4AE1-9928-59B72CF31C46}.Release|Win32.ActiveCfg = Release|Win32
+ {1F9977F6-216F-4AE1-9928-59B72CF31C46}.Release|Win32.Build.0 = Release|Win32
+ {43C01E60-21CC-49F5-8A11-F460BC866A31}.Debug|Win32.ActiveCfg = Debug|Win32
+ {43C01E60-21CC-49F5-8A11-F460BC866A31}.Debug|Win32.Build.0 = Debug|Win32
+ {43C01E60-21CC-49F5-8A11-F460BC866A31}.Release|Win32.ActiveCfg = Release|Win32
+ {43C01E60-21CC-49F5-8A11-F460BC866A31}.Release|Win32.Build.0 = Release|Win32
+ {1B0E70B0-ED20-4021-9BBE-5168CB8DAE90}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1B0E70B0-ED20-4021-9BBE-5168CB8DAE90}.Debug|Win32.Build.0 = Debug|Win32
+ {1B0E70B0-ED20-4021-9BBE-5168CB8DAE90}.Release|Win32.ActiveCfg = Release|Win32
+ {1B0E70B0-ED20-4021-9BBE-5168CB8DAE90}.Release|Win32.Build.0 = Release|Win32
+ {DDBF170A-42DF-4836-9006-816422E08493}.Debug|Win32.ActiveCfg = Debug|Win32
+ {DDBF170A-42DF-4836-9006-816422E08493}.Debug|Win32.Build.0 = Debug|Win32
+ {DDBF170A-42DF-4836-9006-816422E08493}.Release|Win32.ActiveCfg = Release|Win32
+ {DDBF170A-42DF-4836-9006-816422E08493}.Release|Win32.Build.0 = Release|Win32
+ {83C877DA-17B2-4863-B085-06AE9A8D68F3}.Debug|Win32.ActiveCfg = Debug|Win32
+ {83C877DA-17B2-4863-B085-06AE9A8D68F3}.Debug|Win32.Build.0 = Debug|Win32
+ {83C877DA-17B2-4863-B085-06AE9A8D68F3}.Release|Win32.ActiveCfg = Release|Win32
+ {83C877DA-17B2-4863-B085-06AE9A8D68F3}.Release|Win32.Build.0 = Release|Win32
+ {AEBCB950-AB67-48BB-9AF5-FCFB042824E8}.Debug|Win32.ActiveCfg = Debug|Win32
+ {AEBCB950-AB67-48BB-9AF5-FCFB042824E8}.Debug|Win32.Build.0 = Debug|Win32
+ {AEBCB950-AB67-48BB-9AF5-FCFB042824E8}.Release|Win32.ActiveCfg = Release|Win32
+ {AEBCB950-AB67-48BB-9AF5-FCFB042824E8}.Release|Win32.Build.0 = Release|Win32
+ {6FDF6CFE-52FF-4E8C-A6F6-C0392DAE4DB7}.Debug|Win32.ActiveCfg = Debug|Win32
+ {6FDF6CFE-52FF-4E8C-A6F6-C0392DAE4DB7}.Debug|Win32.Build.0 = Debug|Win32
+ {6FDF6CFE-52FF-4E8C-A6F6-C0392DAE4DB7}.Release|Win32.ActiveCfg = Release|Win32
+ {6FDF6CFE-52FF-4E8C-A6F6-C0392DAE4DB7}.Release|Win32.Build.0 = Release|Win32
+ {DEFCF433-3A47-40EB-BBF7-861211C3A941}.Debug|Win32.ActiveCfg = Debug|Win32
+ {DEFCF433-3A47-40EB-BBF7-861211C3A941}.Debug|Win32.Build.0 = Debug|Win32
+ {DEFCF433-3A47-40EB-BBF7-861211C3A941}.Release|Win32.ActiveCfg = Release|Win32
+ {DEFCF433-3A47-40EB-BBF7-861211C3A941}.Release|Win32.Build.0 = Release|Win32
+ {6C1116CE-D99E-4629-9E69-A9329335D706}.Debug|Win32.ActiveCfg = Debug|Win32
+ {6C1116CE-D99E-4629-9E69-A9329335D706}.Debug|Win32.Build.0 = Debug|Win32
+ {6C1116CE-D99E-4629-9E69-A9329335D706}.Release|Win32.ActiveCfg = Release|Win32
+ {6C1116CE-D99E-4629-9E69-A9329335D706}.Release|Win32.Build.0 = Release|Win32
+ {F5D0509C-80E0-49B7-B033-885D8253063A}.Debug|Win32.ActiveCfg = Debug|Win32
+ {F5D0509C-80E0-49B7-B033-885D8253063A}.Debug|Win32.Build.0 = Debug|Win32
+ {F5D0509C-80E0-49B7-B033-885D8253063A}.Release|Win32.ActiveCfg = Release|Win32
+ {F5D0509C-80E0-49B7-B033-885D8253063A}.Release|Win32.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/tools/quake2/q2map/q2map.vcproj b/tools/quake2/q2map/q2map.vcproj
index 90818f9..85949c4 100644
--- a/tools/quake2/q2map/q2map.vcproj
+++ b/tools/quake2/q2map/q2map.vcproj
@@ -1,153 +1,153 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tools/quake2/qdata/qdata3.vcproj b/tools/quake2/qdata/qdata3.vcproj
index f3be5b0..cea55b3 100644
--- a/tools/quake2/qdata/qdata3.vcproj
+++ b/tools/quake2/qdata/qdata3.vcproj
@@ -1,117 +1,117 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tools/quake2/qdata_heretic2/qdata3_heretic2.vcproj b/tools/quake2/qdata_heretic2/qdata3_heretic2.vcproj
index 4e0ae31..6b48258 100644
--- a/tools/quake2/qdata_heretic2/qdata3_heretic2.vcproj
+++ b/tools/quake2/qdata_heretic2/qdata3_heretic2.vcproj
@@ -1,179 +1,179 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tools/quake3/q3data/q3data.vcproj b/tools/quake3/q3data/q3data.vcproj
index 70e5a46..80aaa9b 100644
--- a/tools/quake3/q3data/q3data.vcproj
+++ b/tools/quake3/q3data/q3data.vcproj
@@ -1,107 +1,107 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tools/quake3/q3map2/bsp.c b/tools/quake3/q3map2/bsp.c
index b05901f..aeaf736 100644
--- a/tools/quake3/q3map2/bsp.c
+++ b/tools/quake3/q3map2/bsp.c
@@ -45,6 +45,76 @@ functions
------------------------------------------------------------------------------- */
+/*
+ProcessAdvertisements()
+copies advertisement info into the BSP structures
+*/
+
+static void ProcessAdvertisements( void ) {
+ int i;
+ const char* className;
+ const char* modelKey;
+ int modelNum;
+ bspModel_t* adModel;
+ bspDrawSurface_t* adSurface;
+
+ Sys_FPrintf( SYS_VRB, "--- ProcessAdvertisements ---\n" );
+
+ for( i = 0; i < numEntities; i++ ) {
+
+ /* is an advertisement? */
+ className = ValueForKey( &entities[ i ], "classname" );
+
+ if( !Q_stricmp( "advertisement", className ) ) {
+
+ modelKey = ValueForKey( &entities[ i ], "model" );
+
+ if( strlen( modelKey ) > MAX_QPATH - 1 ) {
+ Error( "Model Key for entity exceeds ad struct string length." );
+ } else {
+ if( numBSPAds < MAX_MAP_ADVERTISEMENTS ) {
+ bspAds[numBSPAds].cellId = IntForKey( &entities[ i ], "cellId" );
+ strncpy( bspAds[numBSPAds].model, modelKey, sizeof( bspAds[numBSPAds].model ) );
+
+ modelKey++;
+ modelNum = atoi( modelKey );
+ adModel = &bspModels[modelNum];
+
+ if( adModel->numBSPSurfaces != 1 ) {
+ Error( "Ad cell id %d has more than one surface.", bspAds[numBSPAds].cellId );
+ }
+
+ adSurface = &bspDrawSurfaces[adModel->firstBSPSurface];
+
+ // store the normal for use at run time.. all ad verts are assumed to
+ // have identical normals (because they should be a simple rectangle)
+ // so just use the first vert's normal
+ VectorCopy( bspDrawVerts[adSurface->firstVert].normal, bspAds[numBSPAds].normal );
+
+ // store the ad quad for quick use at run time
+ if( adSurface->surfaceType == MST_PATCH ) {
+ int v0 = adSurface->firstVert + adSurface->patchHeight - 1;
+ int v1 = adSurface->firstVert + adSurface->numVerts - 1;
+ int v2 = adSurface->firstVert + adSurface->numVerts - adSurface->patchWidth;
+ int v3 = adSurface->firstVert;
+ VectorCopy( bspDrawVerts[v0].xyz, bspAds[numBSPAds].rect[0] );
+ VectorCopy( bspDrawVerts[v1].xyz, bspAds[numBSPAds].rect[1] );
+ VectorCopy( bspDrawVerts[v2].xyz, bspAds[numBSPAds].rect[2] );
+ VectorCopy( bspDrawVerts[v3].xyz, bspAds[numBSPAds].rect[3] );
+ } else {
+ Error( "Ad cell %d has an unsupported Ad Surface type.", bspAds[numBSPAds].cellId );
+ }
+
+ numBSPAds++;
+ } else {
+ Error( "Maximum number of map advertisements exceeded." );
+ }
+ }
+ }
+ }
+
+ Sys_FPrintf( SYS_VRB, "%9d in-game advertisements\n", numBSPAds );
+}
/*
SetCloneModelNumbers() - ydnar
@@ -845,6 +915,9 @@ int BSPMain( int argc, char **argv )
/* set light styles from targetted light entities */
SetLightStyles();
+ /* process in game advertisements */
+ ProcessAdvertisements();
+
/* finish and write bsp */
EndBSPFile();
diff --git a/tools/quake3/q3map2/bspfile_abstract.c b/tools/quake3/q3map2/bspfile_abstract.c
index a79d65b..31b6f17 100644
--- a/tools/quake3/q3map2/bspfile_abstract.c
+++ b/tools/quake3/q3map2/bspfile_abstract.c
@@ -240,6 +240,24 @@ void SwapBSPFile( void )
bspFogs[ i ].brushNum = LittleLong( bspFogs[ i ].brushNum );
bspFogs[ i ].visibleSide = LittleLong( bspFogs[ i ].visibleSide );
}
+
+ /* advertisements */
+ for( i = 0; i < numBSPAds; i++ )
+ {
+ bspAds[ i ].cellId = LittleLong( bspAds[ i ].cellId );
+ bspAds[ i ].normal[ 0 ] = LittleFloat( bspAds[ i ].normal[ 0 ] );
+ bspAds[ i ].normal[ 1 ] = LittleFloat( bspAds[ i ].normal[ 1 ] );
+ bspAds[ i ].normal[ 2 ] = LittleFloat( bspAds[ i ].normal[ 2 ] );
+
+ for( j = 0; j < 4; j++ )
+ {
+ bspAds[ i ].rect[j][ 0 ] = LittleFloat( bspAds[ i ].rect[j][ 0 ] );
+ bspAds[ i ].rect[j][ 1 ] = LittleFloat( bspAds[ i ].rect[j][ 1 ] );
+ bspAds[ i ].rect[j][ 2 ] = LittleFloat( bspAds[ i ].rect[j][ 2 ] );
+ }
+
+ //bspAds[ i ].model[ MAX_QPATH ];
+ }
}
diff --git a/tools/quake3/q3map2/bspfile_ibsp.c b/tools/quake3/q3map2/bspfile_ibsp.c
index abcfab9..9c94107 100644
--- a/tools/quake3/q3map2/bspfile_ibsp.c
+++ b/tools/quake3/q3map2/bspfile_ibsp.c
@@ -64,7 +64,8 @@ into the abstracted bsp file used by q3map2.
#define LUMP_LIGHTMAPS 14
#define LUMP_LIGHTGRID 15
#define LUMP_VISIBILITY 16
-#define HEADER_LUMPS 17
+#define LUMP_ADVERTISEMENTS 17
+#define HEADER_LUMPS 18
/* types */
@@ -453,8 +454,6 @@ static void AddLightGridLumps( FILE *file, ibspHeader_t *header )
free( buffer );
}
-
-
/*
LoadIBSPFile()
loads a quake 3 bsp file into memory
@@ -513,7 +512,10 @@ void LoadIBSPFile( const char *filename )
bspEntDataSize = CopyLump( (bspHeader_t*) header, LUMP_ENTITIES, bspEntData, 1);
CopyLightGridLumps( header );
-
+
+ /* advertisements */
+ numBSPAds = CopyLump( (bspHeader_t*) header, LUMP_ADVERTISEMENTS, bspAds, sizeof( bspAdvertisement_t ) );
+
/* free the file buffer */
free( header );
}
@@ -571,7 +573,10 @@ void WriteIBSPFile( const char *filename )
AddLump( file, (bspHeader_t*) header, LUMP_ENTITIES, bspEntData, bspEntDataSize );
AddLump( file, (bspHeader_t*) header, LUMP_FOGS, bspFogs, numBSPFogs * sizeof( bspFog_t ) );
AddLump( file, (bspHeader_t*) header, LUMP_DRAWINDEXES, bspDrawIndexes, numBSPDrawIndexes * sizeof( bspDrawIndexes[ 0 ] ) );
-
+
+ /* advertisements */
+ AddLump( file, (bspHeader_t*) header, LUMP_ADVERTISEMENTS, bspAds, numBSPAds * sizeof( bspAdvertisement_t ) );
+
/* emit bsp size */
size = ftell( file );
Sys_Printf( "Wrote %.1f MB (%d bytes)\n", (float) size / (1024 * 1024), size );
diff --git a/tools/quake3/q3map2/game_quake3.h b/tools/quake3/q3map2/game_quake3.h
index 1aad043..dbb4a4b 100644
--- a/tools/quake3/q3map2/game_quake3.h
+++ b/tools/quake3/q3map2/game_quake3.h
@@ -114,7 +114,7 @@ game_t struct
1.0f, /* lightmap gamma */
1.0f, /* lightmap compensate */
"IBSP", /* bsp file prefix */
- 46, /* bsp file version */
+ 47, /* bsp file version */
qfalse, /* cod-style lump len/ofs order */
LoadIBSPFile, /* bsp load function */
WriteIBSPFile, /* bsp write function */
@@ -179,7 +179,6 @@ game_t struct
{ "nodlight", 0, 0, Q_SURF_NODLIGHT, 0, 0, 0 },
{ "dust", 0, 0, Q_SURF_DUST, 0, 0, 0 },
-
/* null */
{ NULL, 0, 0, 0, 0, 0, 0 }
}
diff --git a/tools/quake3/q3map2/light.c b/tools/quake3/q3map2/light.c
index 25d40a9..8520edd 100644
--- a/tools/quake3/q3map2/light.c
+++ b/tools/quake3/q3map2/light.c
@@ -339,10 +339,10 @@ void CreateEntityLights( void )
if( light->style < LS_NORMAL || light->style >= LS_NONE )
Error( "Invalid lightstyle (%d) on entity %d", light->style, i );
- /* override */
- if( noStyles )
- light->style = LS_NORMAL;
-
+ if( light->style != LS_NORMAL ) {
+ Sys_FPrintf (SYS_WRN, "WARNING: Styled light found targeting %s\n **", target );
+ }
+
/* set light intensity */
intensity = FloatForKey( e, "_light" );
if( intensity == 0.0f )
diff --git a/tools/quake3/q3map2/light_shadows.c b/tools/quake3/q3map2/light_shadows.c
index df7cdd8..d482bbc 100644
--- a/tools/quake3/q3map2/light_shadows.c
+++ b/tools/quake3/q3map2/light_shadows.c
@@ -121,4 +121,4 @@ void SetupShadows( void )
}
}
}
-}
\ No newline at end of file
+}
diff --git a/tools/quake3/q3map2/q3map2.h b/tools/quake3/q3map2/q3map2.h
index e79736f..7c90baa 100644
--- a/tools/quake3/q3map2/q3map2.h
+++ b/tools/quake3/q3map2/q3map2.h
@@ -169,7 +169,6 @@ constants
#define C_ANTIPORTAL 0x00004000 /* like hint, but doesn't generate portals */
#define C_SKIP 0x00008000 /* like hint, but skips this face (doesn't split bsp) */
#define C_NOMARKS 0x00010000 /* no decals */
-
#define C_DETAIL 0x08000000 /* THIS MUST BE THE SAME AS IN RADIANT! */
@@ -323,6 +322,7 @@ abstracted bsp file
#define MAX_MAP_DRAW_VERTS 0x80000
#define MAX_MAP_DRAW_INDEXES 0x80000
+#define MAX_MAP_ADVERTISEMENTS 30
/* key / value pair sizes in the entities lump */
#define MAX_KEY 32
@@ -502,6 +502,14 @@ typedef struct
bspDrawSurface_t;
+/* advertisements */
+typedef struct {
+ int cellId;
+ vec3_t normal;
+ vec3_t rect[4];
+ char model[ MAX_QPATH ];
+} bspAdvertisement_t;
+
/* -------------------------------------------------------------------------------
@@ -2316,6 +2324,8 @@ Q_EXTERN bspDrawSurface_t *bspDrawSurfaces Q_ASSIGN( NULL );
Q_EXTERN int numBSPFogs Q_ASSIGN( 0 );
Q_EXTERN bspFog_t bspFogs[ MAX_MAP_FOGS ];
+Q_EXTERN int numBSPAds Q_ASSIGN( 0 );
+Q_EXTERN bspAdvertisement_t bspAds[ MAX_MAP_ADVERTISEMENTS ];
/* end marker */
diff --git a/tools/quake3/q3map2/q3map2.vcproj b/tools/quake3/q3map2/q3map2.vcproj
index 31e947e..182f50c 100644
--- a/tools/quake3/q3map2/q3map2.vcproj
+++ b/tools/quake3/q3map2/q3map2.vcproj
@@ -40,7 +40,7 @@
@@ -236,22 +240,6 @@
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tools/quake3/q3map2/shaders.c b/tools/quake3/q3map2/shaders.c
index 476894f..8d974b5 100644
--- a/tools/quake3/q3map2/shaders.c
+++ b/tools/quake3/q3map2/shaders.c
@@ -380,12 +380,13 @@ void WriteMapShaderFile( void )
/* print it to the file */
fprintf( file, "%s%s\n", si->shader, si->shaderText );
- //% Sys_Printf( "%s%s\n", si->shader, si->shaderText ); /* FIXME: remove debugging code */
+ //Sys_Printf( "%s%s\n", si->shader, si->shaderText ); /* FIXME: remove debugging code */
Sys_FPrintf( SYS_VRB, "." );
}
/* close the shader */
+ fflush( file );
fclose( file );
Sys_FPrintf( SYS_VRB, "\n" );
diff --git a/tools/quake3/q3map2/writebsp.c b/tools/quake3/q3map2/writebsp.c
index 591ccdc..4cdd3a9 100644
--- a/tools/quake3/q3map2/writebsp.c
+++ b/tools/quake3/q3map2/writebsp.c
@@ -400,6 +400,8 @@ void EndBSPFile( void )
char path[ 1024 ];
+ Sys_FPrintf( SYS_VRB, "--- EndBSPFile ---\n" );
+
EmitPlanes();
numBSPEntities = numEntities;
diff --git a/win32_install.py b/win32_install.py
deleted file mode 100644
index 03db6c1..0000000
--- a/win32_install.py
+++ /dev/null
@@ -1,166 +0,0 @@
-# install the fucking files
-# check the md5 to decide for a copy
-# we have a site.conf to go through
-# and a data list of stuff
-# it's called at the end of each build to copy what needs to be
-# it could be called only at GtkRadiant link time
-
-# command line: a bunch of config switches default would be debug?, and release flag
-
-
-import sys, traceback, os, re, filecmp, shutil, pickle, string
-from makeversion import get_version
-
-(line, major, minor) = get_version()
-
-paths = {
- 'CORERADIANTDIR' : 'C:\\Program Files\\GtkRadiant-1.' + major,
- 'RTCWRADIANTDIR' : 'C:\\Program Files\\Return to Castle Wolfenstein - Game of The Year Edition\\Radiant-1.' + major,
- 'HLRADIANTDIR' : 'C:\\Sierra\\Half-Life\\Radiant-1.' + major,
- 'SOF2RADIANTDIR' : 'C:\\Program Files\\Soldier of Fortune II - Double Helix\\Radiant-1.' + major,
- 'QUAKE2RADIANTDIR' : 'C:\\Quake2\\Radiant-1.' + major,
- 'HERETIC2RADIANTDIR' : 'C:\\Heretic2\\Radiant-1.' + major
- }
-
-conf_filename='site.conf.win32'
-
-# site settings ----------------------
-
-if (os.path.exists(conf_filename)):
- site_file = open(conf_filename, 'r')
- p = pickle.Unpickler(site_file)
- paths = p.load()
- print 'Loaded configuration from ' + conf_filename
-
-# end site settings ------------------
-
-# command line overrides -------------
-
-print '\nCommand line:'
-regex = re.compile("(.*)=(.*)")
-for i in sys.argv[1:]:
- #print i
- if ( regex.match(i) ):
- (key, val) = string.split(i, '=')
- #print 'key: %s val: %s' % (key, val)
- paths[key] = val
- else:
- print 'Can''t parse command line - ignore: ' + i
-
-# end command line overrides ---------
-
-# save config ------------------------
-
-site_file = open(conf_filename, 'w')
-p = pickle.Pickler(site_file)
-p.dump(paths)
-site_file.close()
-
-print '\nConfiguration:'
-
-for i in paths.keys():
- print '%s -> %s' % (i, paths[i])
-
-# end save config --------------------
-
-q3map2_list = [
-# ( ( '..\\libpng\\projects\\msvc\\win32\\zlib\\dll_dbg\\zlibd.dll', '..\\libpng\\projects\\msvc\\win32\\zlib\\dll\\zlib.dll' ), '$CORERADIANTDIR' ),
-# ( ( '..\\libpng\\projects\\msvc\\win32\\libpng\\dll_dbg\\libpng13d.dll', '..\\libpng\\projects\\msvc\\win32\\libpng\\dll\\libpng13.dll' ), '$CORERADIANTDIR' ),
-# ( ( '..\\libxml2\\win32\\binaries-debug\\libxml2.dll', '..\\libxml2\\win32\\binaries-release\\libxml2.dll' ), '$CORERADIANTDIR' ),
- ( ( 'tools\\quake3\\q3map2\\Debug\\Q3Map2.exe', 'tools\\quake3\\q3map2\\Release\\Q3Map2.exe' ), '$CORERADIANTDIR' ),
- ]
-
-all = [
- ( ( 'radiant\\Debug\\GtkRadiant.exe', 'radiant\\Release\\GtkRadiant.exe' ) , '$CORERADIANTDIR' ),
- ( ( 'contrib\\bobtoolz\\Debug\\bobToolz.dll', 'contrib\\bobtoolz\\Release\\bobToolz.dll' ), '$CORERADIANTDIR\\plugins' ),
- ( ( 'contrib\\camera\\Debug\\camera.dll', 'contrib\\camera\\Release\\camera.dll' ), '$CORERADIANTDIR\\plugins' ),
- ( ( 'plugins\\entity\\Debug\\entity.dll', 'plugins\\entity\\Release\\entity.dll' ), '$CORERADIANTDIR\\modules' ),
- ( ( 'plugins\\eclassfgd\\Debug\\fgd.dll', 'plugins\\eclassfgd\\Release\\fgd.dll' ), '$CORERADIANTDIR\\modules' ),
- ( ( 'contrib\\gtkgensurf\\Debug\\gensurf.dll', 'contrib\\gtkgensurf\\Release\\gensurf.dll' ), '$CORERADIANTDIR\\plugins' ),
- ( ( 'contrib\\hydratoolz\\Debug\\hydratoolz.dll', 'contrib\\hydratoolz\\Release\\hydratoolz.dll' ), '$HLRADIANTDIR\\plugins' ),
- ( ( 'plugins\\image\\Debug\\image.dll', 'plugins\\image\\Release\\image.dll' ), '$CORERADIANTDIR\\modules' ),
- ( ( 'plugins\\imagewal\\Debug\\imagewal.dll', 'plugins\\imagewal\\Release\\imagewal.dll' ), '$QUAKE2RADIANTDIR\\modules' ),
- ( ( 'plugins\\imagehl\\Debug\\imagehl.dll', 'plugins\\imagehl\\Release\\imagehl.dll' ), '$CORERADIANTDIR\\modules' ),
- ( ( 'plugins\\imagepng\\Debug\\imagepng.dll', 'plugins\\imagepng\\Release\\imagepng.dll' ), '$CORERADIANTDIR\\modules' ),
- ( ( 'plugins\\map\\Debug\\map.dll', 'plugins\\map\\Release\\map.dll' ), '$CORERADIANTDIR\\modules' ),
- ( ( 'plugins\\mapxml\\Debug\\mapxml.dll', 'plugins\\mapxml\\Release\\mapxml.dll' ), '$CORERADIANTDIR\\modules' ),
- ( ( 'plugins\\model\\Debug\\model.dll', 'plugins\\model\\Release\\model.dll' ), '$CORERADIANTDIR\\modules' ),
- ( ( 'contrib\\prtview\\Debug\\PrtView.dll', 'contrib\\prtview\\Release\\PrtView.dll' ), '$CORERADIANTDIR\\plugins' ),
- ( ( 'tools\\quake3\\q3data\\Debug\\q3data.exe', 'tools\\quake3\\q3data\\Release\\q3data.exe' ), '$CORERADIANTDIR' ),
- ( ( 'plugins\\shaders\\Debug\\shaders.dll', 'plugins\\shaders\\Release\\shaders.dll' ), '$CORERADIANTDIR\\modules' ),
- ( ( 'plugins\\spritemodel\\Debug\\spritemodel.dll', 'plugins\\spritemodel\\Release\\spritemodel.dll' ), '$CORERADIANTDIR\\modules' ),
-# ( ( 'Debug\\TexTool.dll', 'Release\\TexTool.dll' ), '$CORERADIANTDIR\\plugins' ),
- ( ( 'plugins\\vfspk3\\Debug\\vfspk3.dll', 'plugins\\vfspk3\\Release\\vfspk3.dll' ), '$CORERADIANTDIR\\modules' ),
- ( ( 'plugins\\vfspak\\Debug\\vfspak.dll', 'plugins\\vfspak\\Release\\vfspak.dll' ), '$QUAKE2RADIANTDIR\\modules' ),
- ( ( 'plugins\\vfswad\\Debug\\vfswad.dll', 'plugins\\vfswad\\Release\\vfswad.dll' ), '$CORERADIANTDIR\\modules' ),
- ( ( 'plugins\\surface\\Debug\\surface.dll', 'plugins\\surface\\Release\\surface.dll' ), '$CORERADIANTDIR\\modules' ),
- ( ( 'plugins\\surface_quake2\\Debug\\surface_quake2.dll', 'plugins\\surface_quake2\\Release\\surface_quake2.dll' ), '$QUAKE2RADIANTDIR\\modules' ),
- ( ( 'tools\\quake2\\q2map\\Debug\\q2map.exe', 'tools\\quake2\\q2map\\Release\\q2map.exe' ) , '$QUAKE2RADIANTDIR' ),
- ( ( 'tools\\quake2\\qdata\\Debug\\qdata3.exe', 'tools\\quake2\\qdata\\Release\\qdata3.exe' ) , '$QUAKE2RADIANTDIR' ),
- ( ( 'plugins\\vfspak\\Debug\\vfspak.dll', 'plugins\\vfspak\\Release\\vfspak.dll' ), '$HERETIC2RADIANTDIR\\modules' ),
- ( ( 'plugins\\imagem8\\Debug\\imagem8.dll', 'plugins\\imagem8\\Release\\imagem8.dll' ), '$HERETIC2RADIANTDIR\\modules' ),
- ( ( 'plugins\\surface_heretic2\\Debug\\surface_heretic2.dll', 'plugins\\surface_heretic2\\Release\\surface_heretic2.dll' ), '$HERETIC2RADIANTDIR\\modules' ),
- ( ( 'tools\\quake2\\qdata_heretic2\\Debug\\qdata3.exe', 'tools\\quake2\\qdata_heretic2\\Release\\qdata3.exe' ) , '$HERETIC2RADIANTDIR' ),
- ( ( 'contrib\\bkgrnd2d\\Debug\\bkgrnd2d.dll', 'contrib\\bkgrnd2d\\Release\\bkgrnd2d.dll' ), '$CORERADIANTDIR\\plugins' ),
- ]
-
-config = 0
-q3map2 = 0
-
-# config check
-for i in sys.argv:
- if ( i == 'release' ):
- config = 1
- elif ( i == 'q3map2' ):
- q3map2 = 1
-
-if ( config == 1 ):
- print 'installing release binaries'
-else:
- print 'installing debug binaries'
-
-def expand(path_in):
- for matches in paths.keys():
- exp = re.compile('\\$%s' % matches)
- if ( not re.match(exp, path_in) is None ):
- #print "Got a match for %s on %s" % ( matches, path_in )
- path_in = re.sub(exp, paths[matches], path_in)
- #print "Processed to: %s" % path_in
- return path_in
-
-# don't bother about stderr
-sys.stderr = sys.stdout
-
-if ( q3map2 == 0 ):
- stuff = q3map2_list
- stuff += all
-else:
- stuff = q3map2_list
-
-for entries in stuff:
- try:
- src = expand(entries[0][config])
- #print "src basename: %s -> %s" % (src, os.path.basename(src))
- dst = entries[1]
- dst = os.path.join( entries[1], os.path.basename(src) )
- dst = expand(dst)
- #print "src: %s dst: %s" % (src, dst)
- if (os.path.isfile(src)):
- if (os.path.isfile(dst)):
- if (not filecmp.cmp(src, dst)):
- shutil.copy(src, dst)
- print "%s: OK - updated" % dst
- else:
- print "%s: OK - already up to date" % dst
- else:
- shutil.copy(src, dst)
- print "%s: OK - installed" % dst
- else:
- print "%s: FAILED - not found" % src
- if (os.path.isfile(dst)):
- print "delete %s" % dst
- os.remove(dst)
- except:
- print "%s: FAILED" % src
- traceback.print_exc()
-