From 8a1ebd7397355ef00b87531da6f1700bc5a47a41 Mon Sep 17 00:00:00 2001 From: rpolzer Date: Thu, 18 Sep 2008 07:02:14 +0000 Subject: [PATCH 01/16] gtk error message handling fixes git-svn-id: svn://svn.icculus.org/netradiant/trunk@86 61c419a2-8eb2-4b30-bcec-8cead039b335 --- radiant/main.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/radiant/main.cpp b/radiant/main.cpp index ad3d431..ff10eba 100644 --- a/radiant/main.cpp +++ b/radiant/main.cpp @@ -556,15 +556,15 @@ int main (int argc, char* argv[]) // redirect Gtk warnings to the console g_log_set_handler ("Gdk", (GLogLevelFlags)(G_LOG_LEVEL_ERROR|G_LOG_LEVEL_CRITICAL|G_LOG_LEVEL_WARNING| - G_LOG_LEVEL_MESSAGE|G_LOG_LEVEL_INFO|G_LOG_LEVEL_DEBUG), error_redirect, 0); + G_LOG_LEVEL_MESSAGE|G_LOG_LEVEL_INFO|G_LOG_LEVEL_DEBUG|G_LOG_FLAG_FATAL|G_LOG_FLAG_RECURSION), error_redirect, 0); g_log_set_handler ("Gtk", (GLogLevelFlags)(G_LOG_LEVEL_ERROR|G_LOG_LEVEL_CRITICAL|G_LOG_LEVEL_WARNING| - G_LOG_LEVEL_MESSAGE|G_LOG_LEVEL_INFO|G_LOG_LEVEL_DEBUG), error_redirect, 0); + G_LOG_LEVEL_MESSAGE|G_LOG_LEVEL_INFO|G_LOG_LEVEL_DEBUG|G_LOG_FLAG_FATAL|G_LOG_FLAG_RECURSION), error_redirect, 0); g_log_set_handler ("GtkGLExt", (GLogLevelFlags)(G_LOG_LEVEL_ERROR|G_LOG_LEVEL_CRITICAL|G_LOG_LEVEL_WARNING| - G_LOG_LEVEL_MESSAGE|G_LOG_LEVEL_INFO|G_LOG_LEVEL_DEBUG), error_redirect, 0); + G_LOG_LEVEL_MESSAGE|G_LOG_LEVEL_INFO|G_LOG_LEVEL_DEBUG|G_LOG_FLAG_FATAL|G_LOG_FLAG_RECURSION), error_redirect, 0); g_log_set_handler ("GLib", (GLogLevelFlags)(G_LOG_LEVEL_ERROR|G_LOG_LEVEL_CRITICAL|G_LOG_LEVEL_WARNING| - G_LOG_LEVEL_MESSAGE|G_LOG_LEVEL_INFO|G_LOG_LEVEL_DEBUG), error_redirect, 0); + G_LOG_LEVEL_MESSAGE|G_LOG_LEVEL_INFO|G_LOG_LEVEL_DEBUG|G_LOG_FLAG_FATAL|G_LOG_FLAG_RECURSION), error_redirect, 0); g_log_set_handler (0, (GLogLevelFlags)(G_LOG_LEVEL_ERROR|G_LOG_LEVEL_CRITICAL|G_LOG_LEVEL_WARNING| - G_LOG_LEVEL_MESSAGE|G_LOG_LEVEL_INFO|G_LOG_LEVEL_DEBUG), error_redirect, 0); + G_LOG_LEVEL_MESSAGE|G_LOG_LEVEL_INFO|G_LOG_LEVEL_DEBUG|G_LOG_FLAG_FATAL|G_LOG_FLAG_RECURSION), error_redirect, 0); GlobalDebugMessageHandler::instance().setHandler(GlobalPopupDebugMessageHandler::instance()); -- 2.39.2 From 01a2a09b615ea929ff3c12c8f36ad42269881278 Mon Sep 17 00:00:00 2001 From: rpolzer Date: Thu, 18 Sep 2008 09:39:06 +0000 Subject: [PATCH 02/16] git-svn-id: svn://svn.icculus.org/netradiant/trunk@87 61c419a2-8eb2-4b30-bcec-8cead039b335 --- ChangeLog | 6 ++++++ Makefile | 16 ++++++++++++++++ cross-Makefile.conf | 1 + icons/h2data.ico | Bin 0 -> 766 bytes icons/q2map.ico | Bin 0 -> 1078 bytes icons/q3data.ico | Bin 0 -> 766 bytes icons/q3map2.ico | Bin 0 -> 1078 bytes icons/qdata3.ico | Bin 0 -> 766 bytes icons/radiant-src.png | Bin 0 -> 4431 bytes icons/radiant.ico | Bin 0 -> 4286 bytes radiant/console.cpp | 2 ++ radiant/environment.cpp | 1 - radiant/main.cpp | 2 +- setup/data/tools/bitmaps/icon.bmp | Bin 3126 -> 3126 bytes 14 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 icons/h2data.ico create mode 100644 icons/q2map.ico create mode 100644 icons/q3data.ico create mode 100644 icons/q3map2.ico create mode 100644 icons/qdata3.ico create mode 100644 icons/radiant-src.png create mode 100644 icons/radiant.ico diff --git a/ChangeLog b/ChangeLog index 74bf1d2..7a29761 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-09-18 Rudolf Polzer divVerent(at)alientrap.org + * radiant: handle missing anisotropy extension; fixes display bug on + Windows XP software renderer + * radiant: make logging kick in earlier + * radiant: add svn release to the version number + 2008-09-15 Rudolf Polzer divVerent(at)alientrap.org * all: added a Makefile to build GtkRadiant; this replaces scons and python install.py diff --git a/Makefile b/Makefile index 4ae8520..a582e2a 100644 --- a/Makefile +++ b/Makefile @@ -19,6 +19,7 @@ CXX ?= g++ RANLIB ?= ranlib AR ?= ar LDD ?= ldd # nothing on Win32 +WINDRES ?= # only used on Win32 PKGCONFIG ?= pkg-config PKG_CONFIG_PATH ?= @@ -204,6 +205,7 @@ dependencies-check: checkbinary g++ "$(CXX)"; \ checkbinary binutils "$(RANLIB)"; \ checkbinary binutils "$(AR)"; \ + [ "$(OS)" = "Win32" ] && checkbinary mingw32 "$(WINDRES)"; \ [ "$(OS)" != "Win32" ] && checkbinary libc6 "$(LDD)"; \ $(ECHO) All required tools have been found! @$(ECHO) @@ -286,6 +288,14 @@ clean: $(CXX) $^ $(LDFLAGS) $(LDFLAGS_COMMON) $(LDFLAGS_EXTRA) $(LDFLAGS_DLL) $(LIBS_EXTRA) $(LIBS_COMMON) $(LIBS) -shared -o $@ [ -z "$(LDD)" ] || [ -z "`$(LDD) -r $@ $(STDERR_TO_STDOUT) $(STDOUT_TO_DEVNULL) $(TEE_STDERR)`" ] || { $(RM) $@; exit 1; } +%.rc: %.ico + $(ECHO) '1 ICON "$<"' > $@ + +ifeq ($(OS),Win32) +%.o: %.rc + $(WINDRES) $< $@ +endif + %.o: %.cpp $(if $(findstring $(DEPEND_ON_MAKEFILE),yes),$(wildcard Makefile*),) $(CXX) $< $(CFLAGS) $(CXXFLAGS) $(CFLAGS_COMMON) $(CXXFLAGS_COMMON) $(CPPFLAGS) $(CPPFLAGS_COMMON) $(CPPFLAGS_EXTRA) $(TARGET_ARCH) -c -o $@ @@ -347,6 +357,7 @@ install/q3map2.$(EXE): \ libl_net.$(A) \ libmathlib.$(A) \ libpicomodel.$(A) \ + $(if $(findstring $(OS),Win32),icons/q3map2.o,) \ libmathlib.$(A): CPPFLAGS_EXTRA := -Ilibs libmathlib.$(A): \ @@ -441,6 +452,7 @@ install/q3data.$(EXE): \ tools/quake3/q3data/video.o \ libl_net.$(A) \ libmathlib.$(A) \ + $(if $(findstring $(OS),Win32),icons/q3data.o,) \ install/radiant.$(EXE): LDFLAGS_EXTRA := $(MWINDOWS) install/radiant.$(EXE): LIBS_EXTRA := $(LIBS_GL) $(LIBS_DL) $(LIBS_XML) $(LIBS_GLIB) $(LIBS_GTK) $(LIBS_GTKGLEXT) @@ -533,6 +545,7 @@ install/radiant.$(EXE): \ libmathlib.$(A) \ libprofile.$(A) \ libxmllib.$(A) \ + $(if $(findstring $(OS),Win32),icons/radiant.o,) \ libcmdlib.$(A): CPPFLAGS_EXTRA := -Ilibs libcmdlib.$(A): \ @@ -773,6 +786,7 @@ install/qdata3.$(EXE): \ tools/quake2/qdata/tables.o \ tools/quake2/qdata/video.o \ libl_net.$(A) \ + $(if $(findstring $(OS),Win32),icons/qdata3.o,) \ install/q2map.$(EXE): LIBS_EXTRA := $(LIBS_XML) install/q2map.$(EXE): CPPFLAGS_EXTRA := $(CPPFLAGS_XML) -Itools/quake2/common -Ilibs -Iinclude @@ -810,6 +824,7 @@ install/q2map.$(EXE): \ tools/quake2/q2map/tree.o \ tools/quake2/q2map/writebsp.o \ libl_net.$(A) \ + $(if $(findstring $(OS),Win32),icons/q2map.o,) \ install/plugins/ufoaiplug.$(DLL): LIBS_EXTRA := $(LIBS_GLIB) $(LIBS_GTK) install/plugins/ufoaiplug.$(DLL): CPPFLAGS_EXTRA := $(CPPFLAGS_GLIB) $(CPPFLAGS_GTK) -Ilibs -Iinclude @@ -860,6 +875,7 @@ install/heretic2/h2data.$(EXE): \ tools/quake2/qdata_heretic2/tmix.o \ tools/quake2/qdata_heretic2/video.o \ libl_net.$(A) \ + $(if $(findstring $(OS),Win32),icons/h2data.o,) \ .PHONY: install-data install-data: binaries diff --git a/cross-Makefile.conf b/cross-Makefile.conf index 26fcdc6..1fd92f9 100644 --- a/cross-Makefile.conf +++ b/cross-Makefile.conf @@ -25,3 +25,4 @@ CXX = $(MINGW_EXEC_PREFIX)g++ LDD = RANLIB = $(MINGW_EXEC_PREFIX)ranlib AR = $(MINGW_EXEC_PREFIX)ar +WINDRES = $(MINGW_EXEC_PREFIX)windres diff --git a/icons/h2data.ico b/icons/h2data.ico new file mode 100644 index 0000000000000000000000000000000000000000..8f44194128ade27ac79a97e16a0100032e36fc90 GIT binary patch literal 766 zcmeHFI|{-;6nqgu(pd?@f+;P%fgWvd5Zi#5t3)isDpyd_cmxB1aoz^9j}XKIIGcHI zCi6BwB9d@r*-{j*naGNLOJ?MOOk~a~;+ajuGi2g@-&iT7sw#F35Do!Ukz9I8%OBsr zKw1#TI73}TCn-&8V%1}BH-yYwVC=)J$<^yU2GH2Y(bUGn+>e6)z$7~7E-l|Y@KoH} k^ZKc}bGs|b7CqzE#{#(RfxKj-tRrjcItQ8!@aBxg2Lb$&{Qv*} literal 0 HcmV?d00001 diff --git a/icons/q2map.ico b/icons/q2map.ico new file mode 100644 index 0000000000000000000000000000000000000000..5c508c916d6f6acbd73a33fbfa54412068cd1aea GIT binary patch literal 1078 zcmc&zQ4WGI41HR^4GR}oBr$wCdjXHmal8e-b}#`6Q4?cBSKj&_?brtFut$s);{o?Q za0XCS8Miy&C_u}(NWamIw{1PTu0!AV+q9MJXGZR*H5A5 z^Q`~GrFVN->3=)F*zS}4oPU~~^NJqnzdYysyxXw;*yP_78whWk#70!O$&4fBjB=hy i&lf(=LQS5ErjR2y+ObEHLo)0Z$9jG>dAGU9ulxZq!)apx literal 0 HcmV?d00001 diff --git a/icons/q3data.ico b/icons/q3data.ico new file mode 100644 index 0000000000000000000000000000000000000000..8f44194128ade27ac79a97e16a0100032e36fc90 GIT binary patch literal 766 zcmeHFI|{-;6nqgu(pd?@f+;P%fgWvd5Zi#5t3)isDpyd_cmxB1aoz^9j}XKIIGcHI zCi6BwB9d@r*-{j*naGNLOJ?MOOk~a~;+ajuGi2g@-&iT7sw#F35Do!Ukz9I8%OBsr zKw1#TI73}TCn-&8V%1}BH-yYwVC=)J$<^yU2GH2Y(bUGn+>e6)z$7~7E-l|Y@KoH} k^ZKc}bGs|b7CqzE#{#(RfxKj-tRrjcItQ8!@aBxg2Lb$&{Qv*} literal 0 HcmV?d00001 diff --git a/icons/q3map2.ico b/icons/q3map2.ico new file mode 100644 index 0000000000000000000000000000000000000000..4fe56fa66b6c64f555216795121402f9f324afbc GIT binary patch literal 1078 zcmc(eJCcJi42DIr^_nA4?c^AHB)XLLHC%BOj+2sZ$CdL*1_Fdhm^3S_$8Sj^%N8P) zoTO=LQM#Q(e$aJY@TC&@K8sw~Yv5nFk}sr4Aa}NJ`7WneG!JdqG{G?` OHfpDO`oGcO$9xA8=ia6O literal 0 HcmV?d00001 diff --git a/icons/qdata3.ico b/icons/qdata3.ico new file mode 100644 index 0000000000000000000000000000000000000000..8f44194128ade27ac79a97e16a0100032e36fc90 GIT binary patch literal 766 zcmeHFI|{-;6nqgu(pd?@f+;P%fgWvd5Zi#5t3)isDpyd_cmxB1aoz^9j}XKIIGcHI zCi6BwB9d@r*-{j*naGNLOJ?MOOk~a~;+ajuGi2g@-&iT7sw#F35Do!Ukz9I8%OBsr zKw1#TI73}TCn-&8V%1}BH-yYwVC=)J$<^yU2GH2Y(bUGn+>e6)z$7~7E-l|Y@KoH} k^ZKc}bGs|b7CqzE#{#(RfxKj-tRrjcItQ8!@aBxg2Lb$&{Qv*} literal 0 HcmV?d00001 diff --git a/icons/radiant-src.png b/icons/radiant-src.png new file mode 100644 index 0000000000000000000000000000000000000000..720e9857940c093f1f188b28bb49c639386e94e8 GIT binary patch literal 4431 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 BP!#|G literal 0 HcmV?d00001 diff --git a/icons/radiant.ico b/icons/radiant.ico new file mode 100644 index 0000000000000000000000000000000000000000..3ac19c15297b743e7038fedf39f26e96b27455a9 GIT binary patch literal 4286 zcmeHJO=}cE5Utq_?9m{)f(Ok>atnsddGlukqX;=Dg6K?7LJkUoh#-pK)qkPjLE<5I zZ;Oam_ZZmS8Q<&P>goB|n6F(uSW8X!R9Dw~T~jqXA`yNoE5fUMSQhDu$SM>j*@V)* zNXfG7X6__gBrdTCI~kAj1k=}RYnBE0^cKZ~fFiGQ1N=CWT%Je{eApHv4&ML|YX0NP z{lA?5bHKMnj0@`Mk402_{%61k-l}5%*x%Rbx1&g$Cq83sN!Rw0K|j5Ky7;phxb>j^ z&v5=)Ec6ovc}eV~av>|4Z0~9R%>kbn%tuver_38akp$S(I){g_%^Tk!x2pCXXMhL(eEyJ&SRxyr zdqRJm)2^{OZgs(7T3330sq~%ZlxK!&C_6G9rPp({ks>C)Nhl@9>5a3qcAk44)$kJx{Ldv!xG}LN3aJ_w3W7zDKOj^z0>UYfDS#)NfmnJ_$vxOWu-$VR3ioD*v zgxv0k?{i7Z_>3R&3Gtfdz`sF%N)_AR8`P;+;3L1Gy1h-&k8iUCEQbem9v+)K%Gk-r z#BM!4(riz{+hDjv>|x~JYJfk&`&u61eQ6?f9nFq-`V|e{gg>kIPmk8T6CA!Ok8o`E z{ceGI(@?d%Su{dpil{X#ty`Gvh~ Rq&)wG`WSZd{P22C`3(e7pUeON literal 0 HcmV?d00001 diff --git a/radiant/console.cpp b/radiant/console.cpp index ad282f1..94a496f 100644 --- a/radiant/console.cpp +++ b/radiant/console.cpp @@ -54,6 +54,8 @@ void Sys_LogFile(bool enable) if (enable && !g_hLogFile) { // settings say we should be logging and we don't have a log file .. so create it + if(!SettingsPath_get()[0]) + return; // cannot open a log file yet // open a file to log the console (if user prefs say so) // the file handle is g_hLogFile // the log file is erased diff --git a/radiant/environment.cpp b/radiant/environment.cpp index 8ca7eb0..4526691 100644 --- a/radiant/environment.cpp +++ b/radiant/environment.cpp @@ -162,7 +162,6 @@ void environment_init(int argc, char* argv[]) if(!appdata || string_empty(appdata)) { ERROR_MESSAGE("Application Data folder not available.\n" - "Please install shfolder redistributable package.\n" "Radiant will use C:\\ for user preferences.\n"); home << "C:"; } diff --git a/radiant/main.cpp b/radiant/main.cpp index ff10eba..99182f8 100644 --- a/radiant/main.cpp +++ b/radiant/main.cpp @@ -325,7 +325,7 @@ void paths_init() { StringOutputStream path(256); - path << home << RADIANT_VERSION << '/'; + path << home << "1." << RADIANT_MAJOR_VERSION "." << RADIANT_MINOR_VERSION << '/'; g_strSettingsPath = path.c_str(); } diff --git a/setup/data/tools/bitmaps/icon.bmp b/setup/data/tools/bitmaps/icon.bmp index e270952b393fa7a60d566fafaea28cba63cdc761..01aec6ea06423f369d9794fc86d0fae1679be3d6 100644 GIT binary patch literal 3126 zcmdUx&uSGh6vn@_OI=y5;>xAFLTS6Lxc4yxs|a0G3W774f(wO$h#-pZ;<}qYh4>P7 zZu%uBlbo4JExoxe44E|l=J%a*awfM=pY7d7D0^%l^LZ2>g9q%faDC&JJTd_|xZ3JM zsprfI&h-};E%0?~%WKRxRL&5IFBWJF@D7W`V#N}kPrUWb|IR=9$MIQ$e{JIF_}`Qt z;J?n!M5LS;OY@yOz-Gt{eBw9AQq1HEeoj2=`98NNMPyTc-Y7oWu)rr<+)1sdWi#sd zEn4fVm>b(;u!K1_b$kmeHKL8>wL|Jk_>ufM!aUbB9NfWc&G!*2ronu29DnjGK1Rzq zXtBHdU5Q0sxFUyAR*7rDhB1HtNrt6e?5wSIX+gq82_8yWWyp|4-*cORkAT?hhYhyB zZS%#^B^-v{pXl33>UoJtSOz|6_%Y>klJzRXJS|ic`?ZD z?D#`r$oO+pv_IHzDyHiA47PocCAM-e6;(Q#FQ4Sh{()nk)r57rT2}+bODKLJ Q`D;|7q3TZ!ZFTQn0&Y5wy+3Xn)XC`KI=FB>4ul=uo{cG=Yiv7On zR&@BdXY=#^{kg1JSPbSp)8r=(%bKtz9A2*Ia2T9KnBa3yVy%-UAXf&qOBN^biN=83 z(R#hGU`dKn0NZ`{_O**mzTDinDdIX+6*6nw)hq^6!QP%Xq5fT!6*&v$^JvWa*Q_?2 zM!-yu=StK0LkIQ;wv}()yh)@`F{}+e?IlGl4pa3<>sFQ&+u#dB0$>>VI`X9Z!Lhnp zq|osJhk!wzC8z3-6EC`{__zkaggw6B`6Dt4+oGj~iV_C;@2ChYT9~6dVcz%XVOK|c zeqNsP#|0NBF$e`8Qc!|gCHT5HcwkOZg9EQIRHO~KNidcqa&X`ef&TnT%@A~ciLKM5O>)y&S8n1mzl|(p@agKMhw3jz<@t$lY&c~ zWrNjJk6_Xxwx3=yjfOlW2sm1ylHg+ykLKA~S?nkbv0>=V$Y9}&v^1S33bPz2?ucBq zcMmNF>gV?ey7G&flOfHaVAK-`sIDq(Z zVi1Ohil9-pu@o8@IKK@I;s;zm_+u+sJG2;eoyHeml?tF`vVB(BTF2?ZIFNUFXj_`wG-8Zvp~@%OKBUginC zdDskaMg+5f0TcaYVE_OC -- 2.39.2 From 04397d579b012df7cadb31202303e55342737b5b Mon Sep 17 00:00:00 2001 From: rpolzer Date: Thu, 18 Sep 2008 09:48:26 +0000 Subject: [PATCH 04/16] delete .rc files in make clean git-svn-id: svn://svn.icculus.org/netradiant/trunk@89 61c419a2-8eb2-4b30-bcec-8cead039b335 --- Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile b/Makefile index a582e2a..3abddba 100644 --- a/Makefile +++ b/Makefile @@ -273,6 +273,7 @@ binaries: \ clean: $(RM_R) install/ $(FIND) . \( -name \*.o -o -name \*.d -o -name \*.$(DLL) -o -name \*.$(A) -o -name \*.$(EXE) \) -exec $(RM) {} \; + $(RM) icons/*.rc %.$(EXE): file=$@; $(MKDIR) $${file%/*} -- 2.39.2 From 8401d4c6c6c10d7b9b793f57e36ef1d4d612582d Mon Sep 17 00:00:00 2001 From: rpolzer Date: Thu, 18 Sep 2008 17:25:03 +0000 Subject: [PATCH 05/16] make Ctrl-Tab center the views in the XYZ view git-svn-id: svn://svn.icculus.org/netradiant/trunk@90 61c419a2-8eb2-4b30-bcec-8cead039b335 --- radiant/mainframe.cpp | 9 +-------- radiant/xywindow.cpp | 46 ++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 44 insertions(+), 11 deletions(-) diff --git a/radiant/mainframe.cpp b/radiant/mainframe.cpp index 78799f4..d979640 100644 --- a/radiant/mainframe.cpp +++ b/radiant/mainframe.cpp @@ -2127,14 +2127,7 @@ GtkMenuItem* create_view_menu(MainFrame::EViewStyle style) create_menu_item_with_mnemonic(menu_in_menu, "Set Se_lected Brushes", "RegionSetSelection"); } - if(style == MainFrame::eSplit || style == MainFrame::eFloating) - { - command_connect_accelerator("CenterXYViews"); - } - else - { - command_connect_accelerator("CenterXYView"); - } + command_connect_accelerator("CenterXYView"); return view_menu_item; } diff --git a/radiant/xywindow.cpp b/radiant/xywindow.cpp index dfc0c25..0a6e9ae 100644 --- a/radiant/xywindow.cpp +++ b/radiant/xywindow.cpp @@ -2577,12 +2577,28 @@ void XY_Split_Focus() void XY_Focus() { + if (g_pParentWnd->CurrentStyle() == MainFrame::eSplit || g_pParentWnd->CurrentStyle() == MainFrame::eFloating) + { + // cannot do this in a split window + // do something else that the user may want here + XY_Split_Focus(); + return; + } + XYWnd* xywnd = g_pParentWnd->GetXYWnd(); XYWnd_Focus(xywnd); } void XY_Top() { + if (g_pParentWnd->CurrentStyle() == MainFrame::eSplit || g_pParentWnd->CurrentStyle() == MainFrame::eFloating) + { + // cannot do this in a split window + // do something else that the user may want here + XY_Split_Focus(); + return; + } + XYWnd* xywnd = g_pParentWnd->GetXYWnd(); xywnd->SetViewType(XY); XYWnd_Focus(xywnd); @@ -2590,6 +2606,14 @@ void XY_Top() void XY_Side() { + if (g_pParentWnd->CurrentStyle() == MainFrame::eSplit || g_pParentWnd->CurrentStyle() == MainFrame::eFloating) + { + // cannot do this in a split window + // do something else that the user may want here + XY_Split_Focus(); + return; + } + XYWnd* xywnd = g_pParentWnd->GetXYWnd(); xywnd->SetViewType(XZ); XYWnd_Focus(xywnd); @@ -2597,12 +2621,29 @@ void XY_Side() void XY_Front() { - g_pParentWnd->GetXYWnd()->SetViewType(YZ); - XYWnd_Focus(g_pParentWnd->GetXYWnd()); + if (g_pParentWnd->CurrentStyle() == MainFrame::eSplit || g_pParentWnd->CurrentStyle() == MainFrame::eFloating) + { + // cannot do this in a split window + // do something else that the user may want here + XY_Split_Focus(); + return; + } + + XYWnd* xywnd = g_pParentWnd->GetXYWnd(); + xywnd->SetViewType(XY); + XYWnd_Focus(xywnd); } void XY_Next() { + if (g_pParentWnd->CurrentStyle() == MainFrame::eSplit || g_pParentWnd->CurrentStyle() == MainFrame::eFloating) + { + // cannot do this in a split window + // do something else that the user may want here + XY_Split_Focus(); + return; + } + XYWnd* xywnd = g_pParentWnd->GetXYWnd(); if (xywnd->GetViewType() == XY) xywnd->SetViewType(XZ); @@ -2906,7 +2947,6 @@ void XYWindow_Construct() GlobalCommands_insert("ViewSide", FreeCaller()); GlobalCommands_insert("ViewFront", FreeCaller()); GlobalCommands_insert("Zoom100", FreeCaller()); - GlobalCommands_insert("CenterXYViews", FreeCaller(), Accelerator(GDK_Tab, (GdkModifierType)(GDK_SHIFT_MASK|GDK_CONTROL_MASK))); GlobalCommands_insert("CenterXYView", FreeCaller(), Accelerator(GDK_Tab, (GdkModifierType)(GDK_SHIFT_MASK|GDK_CONTROL_MASK))); GlobalPreferenceSystem().registerPreference("ClipCaulk", BoolImportStringCaller(g_clip_useCaulk), BoolExportStringCaller(g_clip_useCaulk)); -- 2.39.2 From d9f68dedb035b9cbc7caad331b879931a5d5da7e Mon Sep 17 00:00:00 2001 From: rpolzer Date: Thu, 18 Sep 2008 18:01:27 +0000 Subject: [PATCH 06/16] strafe mode option git-svn-id: svn://svn.icculus.org/netradiant/trunk@91 61c419a2-8eb2-4b30-bcec-8cead039b335 --- ChangeLog | 5 +++++ radiant/camwindow.cpp | 36 ++++++++++++++++++++++++++++++------ 2 files changed, 35 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7a29761..446b22c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-09-19 Rudolf Polzer divVerent(at)alientrap.org + * radiant: add a "Strafe Mode" option + * radiant: ctrl-tab now focuses all XYZ views in the three-part view (as + that is what the user is likely to want there) + 2008-09-18 Rudolf Polzer divVerent(at)alientrap.org * radiant: handle missing anisotropy extension; fixes display bug on Windows XP software renderer diff --git a/radiant/camwindow.cpp b/radiant/camwindow.cpp index b89e544..c26bc5b 100644 --- a/radiant/camwindow.cpp +++ b/radiant/camwindow.cpp @@ -82,6 +82,7 @@ struct camwindow_globals_private_t bool m_bCamDiscrete; bool m_bCubicClipping; bool m_showStats; + int m_nStrafeMode; camwindow_globals_private_t() : m_nMoveSpeed(100), @@ -90,7 +91,8 @@ struct camwindow_globals_private_t m_bCamInverseMouse(false), m_bCamDiscrete(true), m_bCubicClipping(true), - m_showStats(true) + m_showStats(true), + m_nStrafeMode(0) { } @@ -671,12 +673,25 @@ void Camera_motionDelta(int x, int y, unsigned int state, void* data) camera_t* cam = reinterpret_cast(data); cam->m_mouseMove.motion_delta(x, y, state); - cam->m_strafe = (state & GDK_CONTROL_MASK) != 0; - if(cam->m_strafe) - cam->m_strafe_forward = (state & GDK_SHIFT_MASK) != 0; - else - cam->m_strafe_forward = false; + switch(g_camwindow_globals_private.m_nStrafeMode) + { + case 0: + cam->m_strafe = (state & GDK_CONTROL_MASK) != 0; + if(cam->m_strafe) + cam->m_strafe_forward = (state & GDK_SHIFT_MASK) != 0; + else + cam->m_strafe_forward = false; + break; + case 1: + cam->m_strafe = (state & GDK_CONTROL_MASK) != 0 && (state & GDK_SHIFT_MASK) == 0; + cam->m_strafe_forward = false; + break; + case 2: + cam->m_strafe = (state & GDK_CONTROL_MASK) != 0 && (state & GDK_SHIFT_MASK) == 0; + cam->m_strafe_forward = cam->m_strafe; + break; + } } class CamWnd @@ -1989,6 +2004,14 @@ void Camera_constructPreferences(PreferencesPage& page) IntExportCallback(RenderModeExportCaller()) ); } + + const char* strafe_mode[] = { "Both", "Forward", "Up" }; + + page.appendCombo( + "Strafe Mode", + g_camwindow_globals_private.m_nStrafeMode, + STRING_ARRAY_RANGE(strafe_mode) + ); } void Camera_constructPage(PreferenceGroup& group) { @@ -2080,6 +2103,7 @@ void CamWnd_Construct() GlobalPreferenceSystem().registerPreference("SI_Colors4", Vector3ImportStringCaller(g_camwindow_globals.color_cameraback), Vector3ExportStringCaller(g_camwindow_globals.color_cameraback)); GlobalPreferenceSystem().registerPreference("SI_Colors12", Vector3ImportStringCaller(g_camwindow_globals.color_selbrushes3d), Vector3ExportStringCaller(g_camwindow_globals.color_selbrushes3d)); GlobalPreferenceSystem().registerPreference("CameraRenderMode", makeIntStringImportCallback(RenderModeImportCaller()), makeIntStringExportCallback(RenderModeExportCaller())); + GlobalPreferenceSystem().registerPreference("StrafeMode", IntImportStringCaller(g_camwindow_globals_private.m_nStrafeMode), IntExportStringCaller(g_camwindow_globals_private.m_nStrafeMode)); CamWnd_constructStatic(); -- 2.39.2 From 90353614291d96f06cf0676a06286fe9ca627887 Mon Sep 17 00:00:00 2001 From: rpolzer Date: Fri, 19 Sep 2008 05:45:09 +0000 Subject: [PATCH 07/16] add support for a profiling build git-svn-id: svn://svn.icculus.org/netradiant/trunk@92 61c419a2-8eb2-4b30-bcec-8cead039b335 --- Makefile | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 3abddba..2953130 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,7 @@ # user customizable stuf # you may override this in Makefile.conf or the environment BUILD ?= debug -# or: release +# or: release, or: extradebug, or: profile OS ?= $(shell uname) # or: Linux, Win32, Darwin LDFLAGS ?= @@ -104,6 +104,15 @@ ifeq ($(findstring $(CFLAGS),-g),) endif CPPFLAGS_COMMON += -D_DEBUG LDFLAGS_COMMON += +else ifeq ($(BUILD),profile) +ifeq ($(findstring $(CFLAGS),-O),) + CFLAGS_COMMON += -O + # only add -O3 if no -O flag is in $(CFLAGS) + # to allow overriding the optimizations +endif + CFLAGS_COMMON += -pg + CPPFLAGS_COMMON += + LDFLAGS_COMMON += -pg else ifeq ($(BUILD),release) ifeq ($(findstring $(CFLAGS),-O),) CFLAGS_COMMON += -O3 -- 2.39.2 From cf3999e105bd0b05c18e951e1573dadeee3cec47 Mon Sep 17 00:00:00 2001 From: rpolzer Date: Fri, 19 Sep 2008 05:54:24 +0000 Subject: [PATCH 08/16] oops... improved radiant.ico (now 16x16 version too) git-svn-id: svn://svn.icculus.org/netradiant/trunk@93 61c419a2-8eb2-4b30-bcec-8cead039b335 --- icons/radiant.ico | Bin 4286 -> 5430 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/radiant.ico b/icons/radiant.ico index 3ac19c15297b743e7038fedf39f26e96b27455a9..d377f825a0d0704d6a85290b1d0b3dfc6b9a3025 100644 GIT binary patch delta 809 zcmZXS-%FEW6vsdB5-bZ_v1W?P4Qz?6Y*G{{ZgW|Lqap}2f-Y?SNQgv?z`1vuQ}bud z66&@q=_ZWoGK6lz3rYM3y6ZOYqIx@>*Ueh`!k6UlsjBy#lE#n4j_u+K0_cY9^tB*%cGz;OV z6+4d=Yu}eY%L38Ca05)Q9Hd{eIze%L6VYT3)eD^2_+6w8Ym|3^}S5? zR{Q>I0GSj_{q_(S+MDEF9dF>-QaJ-^OMTQldg>Z9HRL;+#A$ zM{ZKPSjGc+qDHbf{)uL2&IR3mbHpyw^RcSvwjymIiMAe=LwEVcUc1_m*PjVh}I07Ux)lmGw# -- 2.39.2 From 8cd295151ab676a747fb55b334a84e90721ce6bc Mon Sep 17 00:00:00 2001 From: rpolzer Date: Fri, 19 Sep 2008 06:09:56 +0000 Subject: [PATCH 09/16] add [-z-]'s todo git-svn-id: svn://svn.icculus.org/netradiant/trunk@94 61c419a2-8eb2-4b30-bcec-8cead039b335 --- TODO | 1 + 1 file changed, 1 insertion(+) diff --git a/TODO b/TODO index c0b6aa5..60573df 100644 --- a/TODO +++ b/TODO @@ -1,3 +1,4 @@ +[-z-]: make rotate dialog non-modal -- 2.39.2 From 3aab20c1d66806731b33d5285830405a095581da Mon Sep 17 00:00:00 2001 From: rpolzer Date: Fri, 19 Sep 2008 12:31:32 +0000 Subject: [PATCH 10/16] radiant: make rotate/scale dialogs non-modal git-svn-id: svn://svn.icculus.org/netradiant/trunk@95 61c419a2-8eb2-4b30-bcec-8cead039b335 --- ChangeLog | 1 + Makefile | 7 +- radiant/select.cpp | 450 +++++++++++++++++++++++++-------------------- 3 files changed, 256 insertions(+), 202 deletions(-) diff --git a/ChangeLog b/ChangeLog index 446b22c..108a92b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,7 @@ * radiant: add a "Strafe Mode" option * radiant: ctrl-tab now focuses all XYZ views in the three-part view (as that is what the user is likely to want there) + * radiant: make rotate/scale dialogs non-modal 2008-09-18 Rudolf Polzer divVerent(at)alientrap.org * radiant: handle missing anisotropy extension; fixes display bug on diff --git a/Makefile b/Makefile index 2953130..7bd232c 100644 --- a/Makefile +++ b/Makefile @@ -105,10 +105,13 @@ endif CPPFLAGS_COMMON += -D_DEBUG LDFLAGS_COMMON += else ifeq ($(BUILD),profile) +ifeq ($(findstring $(CFLAGS),-g),) + CFLAGS_COMMON += -g + # only add -g if no -g flag is in $(CFLAGS) +endif ifeq ($(findstring $(CFLAGS),-O),) CFLAGS_COMMON += -O - # only add -O3 if no -O flag is in $(CFLAGS) - # to allow overriding the optimizations + # only add -O if no -O flag is in $(CFLAGS) endif CFLAGS_COMMON += -pg CPPFLAGS_COMMON += diff --git a/radiant/select.cpp b/radiant/select.cpp index e84ef15..14e7fde 100644 --- a/radiant/select.cpp +++ b/radiant/select.cpp @@ -970,247 +970,297 @@ struct RotateDialog GtkSpinButton* x; GtkSpinButton* y; GtkSpinButton* z; + GtkWindow *window; }; -static void rotatedlg_apply (GtkWidget *widget, RotateDialog* rotateDialog) +static gboolean rotatedlg_apply (GtkWidget *widget, RotateDialog* rotateDialog) { Vector3 eulerXYZ; eulerXYZ[0] = static_cast(gtk_spin_button_get_value(rotateDialog->x)); - gtk_spin_button_set_value(rotateDialog->x, 0.0f); // reset to 0 on Apply - eulerXYZ[1] = static_cast(gtk_spin_button_get_value(rotateDialog->y)); - gtk_spin_button_set_value(rotateDialog->y, 0.0f); - eulerXYZ[2] = static_cast(gtk_spin_button_get_value(rotateDialog->z)); - gtk_spin_button_set_value(rotateDialog->z, 0.0f); StringOutputStream command; command << "rotateSelectedEulerXYZ -x " << eulerXYZ[0] << " -y " << eulerXYZ[1] << " -z " << eulerXYZ[2]; UndoableCommand undo(command.c_str()); GlobalSelectionSystem().rotateSelected(quaternion_for_euler_xyz_degrees(eulerXYZ)); + return TRUE; } -void DoRotateDlg() +static gboolean rotatedlg_cancel (GtkWidget *widget, RotateDialog* rotateDialog) { - ModalDialog dialog; - RotateDialog rotateDialog; + gtk_widget_hide(GTK_WIDGET(rotateDialog->window)); - GtkWindow* window = create_dialog_window(MainFrame_getWindow(), "Arbitrary rotation", G_CALLBACK(dialog_delete_callback), &dialog); + gtk_spin_button_set_value(rotateDialog->x, 0.0f); // reset to 0 on close + gtk_spin_button_set_value(rotateDialog->y, 0.0f); + gtk_spin_button_set_value(rotateDialog->z, 0.0f); - GtkAccelGroup* accel = gtk_accel_group_new(); - gtk_window_add_accel_group(window, accel); + return TRUE; +} - { - GtkHBox* hbox = create_dialog_hbox(4, 4); - gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(hbox)); - { - GtkTable* table = create_dialog_table(3, 2, 4, 4); - gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(table), TRUE, TRUE, 0); - { - GtkWidget* label = gtk_label_new (" X "); - gtk_widget_show (label); - gtk_table_attach(table, label, 0, 1, 0, 1, - (GtkAttachOptions) (0), - (GtkAttachOptions) (0), 0, 0); - } - { - GtkWidget* label = gtk_label_new (" Y "); - gtk_widget_show (label); - gtk_table_attach(table, label, 0, 1, 1, 2, - (GtkAttachOptions) (0), - (GtkAttachOptions) (0), 0, 0); - } - { - GtkWidget* label = gtk_label_new (" Z "); - gtk_widget_show (label); - gtk_table_attach(table, label, 0, 1, 2, 3, - (GtkAttachOptions) (0), - (GtkAttachOptions) (0), 0, 0); - } - { - GtkAdjustment* adj = GTK_ADJUSTMENT(gtk_adjustment_new(0, -359, 359, 1, 10, 10)); - GtkSpinButton* spin = GTK_SPIN_BUTTON(gtk_spin_button_new(adj, 1, 0)); - gtk_widget_show(GTK_WIDGET(spin)); - gtk_table_attach(table, GTK_WIDGET(spin), 1, 2, 0, 1, - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_widget_set_size_request(GTK_WIDGET(spin), 64, -1); - gtk_spin_button_set_wrap(spin, TRUE); - - gtk_widget_grab_focus(GTK_WIDGET(spin)); - - rotateDialog.x = spin; - } - { - GtkAdjustment* adj = GTK_ADJUSTMENT(gtk_adjustment_new(0, -359, 359, 1, 10, 10)); - GtkSpinButton* spin = GTK_SPIN_BUTTON(gtk_spin_button_new(adj, 1, 0)); - gtk_widget_show(GTK_WIDGET(spin)); - gtk_table_attach(table, GTK_WIDGET(spin), 1, 2, 1, 2, - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_widget_set_size_request(GTK_WIDGET(spin), 64, -1); - gtk_spin_button_set_wrap(spin, TRUE); - - rotateDialog.y = spin; - } - { - GtkAdjustment* adj = GTK_ADJUSTMENT(gtk_adjustment_new(0, -359, 359, 1, 10, 10)); - GtkSpinButton* spin = GTK_SPIN_BUTTON(gtk_spin_button_new(adj, 1, 0)); - gtk_widget_show(GTK_WIDGET(spin)); - gtk_table_attach(table, GTK_WIDGET(spin), 1, 2, 2, 3, - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_widget_set_size_request(GTK_WIDGET(spin), 64, -1); - gtk_spin_button_set_wrap(spin, TRUE); - - rotateDialog.z = spin; - } - } - { - GtkVBox* vbox = create_dialog_vbox(4); - gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(vbox), TRUE, TRUE, 0); - { - GtkButton* button = create_dialog_button("OK", G_CALLBACK(dialog_button_ok), &dialog); - gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(button), FALSE, FALSE, 0); - widget_make_default(GTK_WIDGET(button)); - gtk_widget_add_accelerator(GTK_WIDGET(button), "clicked", accel, GDK_Return, (GdkModifierType)0, (GtkAccelFlags)0); - } - { - GtkButton* button = create_dialog_button("Cancel", G_CALLBACK(dialog_button_cancel), &dialog); - gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(button), FALSE, FALSE, 0); - gtk_widget_add_accelerator(GTK_WIDGET(button), "clicked", accel, GDK_Escape, (GdkModifierType)0, (GtkAccelFlags)0); - } - { - GtkButton* button = create_dialog_button("Apply", G_CALLBACK(rotatedlg_apply), &rotateDialog); - gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(button), FALSE, FALSE, 0); - } - } - } +static gboolean rotatedlg_ok (GtkWidget *widget, RotateDialog* rotateDialog) +{ + rotatedlg_apply(widget, rotateDialog); + rotatedlg_cancel(widget, rotateDialog); + return TRUE; +} + +static gboolean rotatedlg_delete (GtkWidget *widget, GdkEventAny *event, RotateDialog* rotateDialog) +{ + rotatedlg_cancel(widget, rotateDialog); + return TRUE; +} - if(modal_dialog_show(window, dialog) == eIDOK) +RotateDialog g_rotate_dialog; +void DoRotateDlg() +{ + if(g_rotate_dialog.window == NULL) { - rotatedlg_apply(0, &rotateDialog); + g_rotate_dialog.window = create_dialog_window(MainFrame_getWindow(), "Arbitrary rotation", G_CALLBACK(rotatedlg_delete), &g_rotate_dialog); + + GtkAccelGroup* accel = gtk_accel_group_new(); + gtk_window_add_accel_group(g_rotate_dialog.window, accel); + + { + GtkHBox* hbox = create_dialog_hbox(4, 4); + gtk_container_add(GTK_CONTAINER(g_rotate_dialog.window), GTK_WIDGET(hbox)); + { + GtkTable* table = create_dialog_table(3, 2, 4, 4); + gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(table), TRUE, TRUE, 0); + { + GtkWidget* label = gtk_label_new (" X "); + gtk_widget_show (label); + gtk_table_attach(table, label, 0, 1, 0, 1, + (GtkAttachOptions) (0), + (GtkAttachOptions) (0), 0, 0); + } + { + GtkWidget* label = gtk_label_new (" Y "); + gtk_widget_show (label); + gtk_table_attach(table, label, 0, 1, 1, 2, + (GtkAttachOptions) (0), + (GtkAttachOptions) (0), 0, 0); + } + { + GtkWidget* label = gtk_label_new (" Z "); + gtk_widget_show (label); + gtk_table_attach(table, label, 0, 1, 2, 3, + (GtkAttachOptions) (0), + (GtkAttachOptions) (0), 0, 0); + } + { + GtkAdjustment* adj = GTK_ADJUSTMENT(gtk_adjustment_new(0, -359, 359, 1, 10, 10)); + GtkSpinButton* spin = GTK_SPIN_BUTTON(gtk_spin_button_new(adj, 1, 0)); + gtk_widget_show(GTK_WIDGET(spin)); + gtk_table_attach(table, GTK_WIDGET(spin), 1, 2, 0, 1, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_widget_set_size_request(GTK_WIDGET(spin), 64, -1); + gtk_spin_button_set_wrap(spin, TRUE); + + gtk_widget_grab_focus(GTK_WIDGET(spin)); + + g_rotate_dialog.x = spin; + } + { + GtkAdjustment* adj = GTK_ADJUSTMENT(gtk_adjustment_new(0, -359, 359, 1, 10, 10)); + GtkSpinButton* spin = GTK_SPIN_BUTTON(gtk_spin_button_new(adj, 1, 0)); + gtk_widget_show(GTK_WIDGET(spin)); + gtk_table_attach(table, GTK_WIDGET(spin), 1, 2, 1, 2, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_widget_set_size_request(GTK_WIDGET(spin), 64, -1); + gtk_spin_button_set_wrap(spin, TRUE); + + g_rotate_dialog.y = spin; + } + { + GtkAdjustment* adj = GTK_ADJUSTMENT(gtk_adjustment_new(0, -359, 359, 1, 10, 10)); + GtkSpinButton* spin = GTK_SPIN_BUTTON(gtk_spin_button_new(adj, 1, 0)); + gtk_widget_show(GTK_WIDGET(spin)); + gtk_table_attach(table, GTK_WIDGET(spin), 1, 2, 2, 3, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_widget_set_size_request(GTK_WIDGET(spin), 64, -1); + gtk_spin_button_set_wrap(spin, TRUE); + + g_rotate_dialog.z = spin; + } + } + { + GtkVBox* vbox = create_dialog_vbox(4); + gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(vbox), TRUE, TRUE, 0); + { + GtkButton* button = create_dialog_button("OK", G_CALLBACK(rotatedlg_ok), &g_rotate_dialog); + gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(button), FALSE, FALSE, 0); + widget_make_default(GTK_WIDGET(button)); + gtk_widget_add_accelerator(GTK_WIDGET(button), "clicked", accel, GDK_Return, (GdkModifierType)0, (GtkAccelFlags)0); + } + { + GtkButton* button = create_dialog_button("Cancel", G_CALLBACK(rotatedlg_cancel), &g_rotate_dialog); + gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(button), FALSE, FALSE, 0); + gtk_widget_add_accelerator(GTK_WIDGET(button), "clicked", accel, GDK_Escape, (GdkModifierType)0, (GtkAccelFlags)0); + } + { + GtkButton* button = create_dialog_button("Apply", G_CALLBACK(rotatedlg_apply), &g_rotate_dialog); + gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(button), FALSE, FALSE, 0); + } + } + } } - gtk_widget_destroy(GTK_WIDGET(window)); + gtk_widget_show(GTK_WIDGET(g_rotate_dialog.window)); } -void DoScaleDlg() + + + + + + + + +struct ScaleDialog { - ModalDialog dialog; GtkWidget* x; GtkWidget* y; GtkWidget* z; + GtkWindow *window; +}; - GtkWindow* window = create_dialog_window(MainFrame_getWindow(), "Scale", G_CALLBACK(dialog_delete_callback), &dialog); +static gboolean scaledlg_apply (GtkWidget *widget, ScaleDialog* scaleDialog) +{ + float sx, sy, sz; - GtkAccelGroup* accel = gtk_accel_group_new(); - gtk_window_add_accel_group(window, accel); + sx = static_cast(atof(gtk_entry_get_text (GTK_ENTRY (scaleDialog->x)))); + sy = static_cast(atof(gtk_entry_get_text (GTK_ENTRY (scaleDialog->y)))); + sz = static_cast(atof(gtk_entry_get_text (GTK_ENTRY (scaleDialog->z)))); - { - GtkHBox* hbox = create_dialog_hbox(4, 4); - gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(hbox)); - { - GtkTable* table = create_dialog_table(3, 2, 4, 4); - gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(table), TRUE, TRUE, 0); - { - GtkWidget* label = gtk_label_new ("X:"); - gtk_widget_show (label); - gtk_table_attach(table, label, 0, 1, 0, 1, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); - } - { - GtkWidget* label = gtk_label_new ("Y:"); - gtk_widget_show (label); - gtk_table_attach(table, label, 0, 1, 1, 2, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); - } - { - GtkWidget* label = gtk_label_new ("Z:"); - gtk_widget_show (label); - gtk_table_attach(table, label, 0, 1, 2, 3, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); - } - { - GtkWidget* entry = gtk_entry_new(); - gtk_widget_show (entry); - gtk_table_attach(table, entry, 1, 2, 0, 1, - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), - (GtkAttachOptions) (0), 0, 0); + StringOutputStream command; + command << "scaleSelected -x " << sx << " -y " << sy << " -z " << sz; + UndoableCommand undo(command.c_str()); - gtk_widget_grab_focus(entry); + Select_Scale(sx, sy, sz); - x = entry; - } - { - GtkWidget* entry = gtk_entry_new(); - gtk_widget_show (entry); - gtk_table_attach(table, entry, 1, 2, 1, 2, - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), - (GtkAttachOptions) (0), 0, 0); + return TRUE; +} - y = entry; - } - { - GtkWidget* entry = gtk_entry_new(); - gtk_widget_show (entry); - gtk_table_attach(table, entry, 1, 2, 2, 3, - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), - (GtkAttachOptions) (0), 0, 0); +static gboolean scaledlg_cancel (GtkWidget *widget, ScaleDialog* scaleDialog) +{ + gtk_widget_hide(GTK_WIDGET(scaleDialog->window)); - z = entry; - } - } - { - GtkVBox* vbox = create_dialog_vbox(4); - gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(vbox), TRUE, TRUE, 0); - { - GtkButton* button = create_dialog_button("OK", G_CALLBACK(dialog_button_ok), &dialog); - gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(button), FALSE, FALSE, 0); - widget_make_default(GTK_WIDGET(button)); - gtk_widget_add_accelerator(GTK_WIDGET(button), "clicked", accel, GDK_Return, (GdkModifierType)0, (GtkAccelFlags)0); - } - { - GtkButton* button = create_dialog_button("Cancel", G_CALLBACK(dialog_button_cancel), &dialog); - gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(button), FALSE, FALSE, 0); - gtk_widget_add_accelerator(GTK_WIDGET(button), "clicked", accel, GDK_Escape, (GdkModifierType)0, (GtkAccelFlags)0); - } - } - } + gtk_entry_set_text (GTK_ENTRY(scaleDialog->x), "1.0"); + gtk_entry_set_text (GTK_ENTRY(scaleDialog->y), "1.0"); + gtk_entry_set_text (GTK_ENTRY(scaleDialog->z), "1.0"); - // Initialize dialog - gtk_entry_set_text (GTK_ENTRY (x), "1.0"); - gtk_entry_set_text (GTK_ENTRY (y), "1.0"); - gtk_entry_set_text (GTK_ENTRY (z), "1.0"); + return TRUE; +} - if(modal_dialog_show(window, dialog) == eIDOK) - { - float sx, sy, sz; - sx = static_cast(atof(gtk_entry_get_text (GTK_ENTRY (x)))); - sy = static_cast(atof(gtk_entry_get_text (GTK_ENTRY (y)))); - sz = static_cast(atof(gtk_entry_get_text (GTK_ENTRY (z)))); +static gboolean scaledlg_ok (GtkWidget *widget, ScaleDialog* scaleDialog) +{ + scaledlg_apply(widget, scaleDialog); + scaledlg_cancel(widget, scaleDialog); + return TRUE; +} - if (sx > 0 && sy > 0 && sz > 0) - { - StringOutputStream command; - command << "scaleSelected -x " << sx << " -y " << sy << " -z " << sz; - UndoableCommand undo(command.c_str()); +static gboolean scaledlg_delete (GtkWidget *widget, GdkEventAny *event, ScaleDialog* scaleDialog) +{ + scaledlg_cancel(widget, scaleDialog); + return TRUE; +} - Select_Scale(sx, sy, sz); - } - else - { - globalOutputStream() << "Warning.. Tried to scale by a zero value."; - } +ScaleDialog g_scale_dialog; + +void DoScaleDlg() +{ + if(g_scale_dialog.window == NULL) + { + g_scale_dialog.window = create_dialog_window(MainFrame_getWindow(), "Arbitrary scale", G_CALLBACK(scaledlg_delete), &g_scale_dialog); + + GtkAccelGroup* accel = gtk_accel_group_new(); + gtk_window_add_accel_group(g_scale_dialog.window, accel); + + { + GtkHBox* hbox = create_dialog_hbox(4, 4); + gtk_container_add(GTK_CONTAINER(g_scale_dialog.window), GTK_WIDGET(hbox)); + { + GtkTable* table = create_dialog_table(3, 2, 4, 4); + gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(table), TRUE, TRUE, 0); + { + GtkWidget* label = gtk_label_new (" X "); + gtk_widget_show (label); + gtk_table_attach(table, label, 0, 1, 0, 1, + (GtkAttachOptions) (0), + (GtkAttachOptions) (0), 0, 0); + } + { + GtkWidget* label = gtk_label_new (" Y "); + gtk_widget_show (label); + gtk_table_attach(table, label, 0, 1, 1, 2, + (GtkAttachOptions) (0), + (GtkAttachOptions) (0), 0, 0); + } + { + GtkWidget* label = gtk_label_new (" Z "); + gtk_widget_show (label); + gtk_table_attach(table, label, 0, 1, 2, 3, + (GtkAttachOptions) (0), + (GtkAttachOptions) (0), 0, 0); + } + { + GtkWidget* entry = gtk_entry_new(); + gtk_entry_set_text (GTK_ENTRY(entry), "1.0"); + gtk_widget_show (entry); + gtk_table_attach(table, entry, 1, 2, 0, 1, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + + g_scale_dialog.x = entry; + } + { + GtkWidget* entry = gtk_entry_new(); + gtk_entry_set_text (GTK_ENTRY(entry), "1.0"); + gtk_widget_show (entry); + gtk_table_attach(table, entry, 1, 2, 1, 2, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + + g_scale_dialog.y = entry; + } + { + GtkWidget* entry = gtk_entry_new(); + gtk_entry_set_text (GTK_ENTRY(entry), "1.0"); + gtk_widget_show (entry); + gtk_table_attach(table, entry, 1, 2, 2, 3, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + + g_scale_dialog.z = entry; + } + } + { + GtkVBox* vbox = create_dialog_vbox(4); + gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(vbox), TRUE, TRUE, 0); + { + GtkButton* button = create_dialog_button("OK", G_CALLBACK(scaledlg_ok), &g_scale_dialog); + gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(button), FALSE, FALSE, 0); + widget_make_default(GTK_WIDGET(button)); + gtk_widget_add_accelerator(GTK_WIDGET(button), "clicked", accel, GDK_Return, (GdkModifierType)0, (GtkAccelFlags)0); + } + { + GtkButton* button = create_dialog_button("Cancel", G_CALLBACK(scaledlg_cancel), &g_scale_dialog); + gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(button), FALSE, FALSE, 0); + gtk_widget_add_accelerator(GTK_WIDGET(button), "clicked", accel, GDK_Escape, (GdkModifierType)0, (GtkAccelFlags)0); + } + { + GtkButton* button = create_dialog_button("Apply", G_CALLBACK(scaledlg_apply), &g_scale_dialog); + gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(button), FALSE, FALSE, 0); + } + } + } } - gtk_widget_destroy(GTK_WIDGET(window)); + gtk_widget_show(GTK_WIDGET(g_scale_dialog.window)); } -- 2.39.2 From 171c2c932eec4da5a5d72ed5cda6e09b99280ce4 Mon Sep 17 00:00:00 2001 From: rpolzer Date: Sat, 20 Sep 2008 09:47:16 +0000 Subject: [PATCH 11/16] how did THAT file get in git-svn-id: svn://svn.icculus.org/netradiant/trunk@96 61c419a2-8eb2-4b30-bcec-8cead039b335 --- svn-commit.tmp | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 svn-commit.tmp diff --git a/svn-commit.tmp b/svn-commit.tmp deleted file mode 100644 index 75302a5..0000000 --- a/svn-commit.tmp +++ /dev/null @@ -1,4 +0,0 @@ -initial commit of radiant15 ---This line, and those below, will be ignored-- - -A . -- 2.39.2 From e31dd65a78533c7bfea1512f58f87f0ac5e27d08 Mon Sep 17 00:00:00 2001 From: rpolzer Date: Sun, 21 Sep 2008 19:10:39 +0000 Subject: [PATCH 12/16] limits raising patch from mikeeusa git-svn-id: svn://svn.icculus.org/netradiant/trunk@97 61c419a2-8eb2-4b30-bcec-8cead039b335 --- tools/quake3/q3map2/light_trace.c | 2 +- tools/quake3/q3map2/q3map2.h | 12 ++++++------ tools/quake3/q3map2/surface_meta.c | 2 +- tools/quake3/q3map2/tjunction.c | 6 +++--- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/tools/quake3/q3map2/light_trace.c b/tools/quake3/q3map2/light_trace.c index 2a4e7e4..1b9bd5f 100644 --- a/tools/quake3/q3map2/light_trace.c +++ b/tools/quake3/q3map2/light_trace.c @@ -56,7 +56,7 @@ several games based on the Quake III Arena engine, in the form of "Q3Map2." #define GROW_TRACE_NODES 16384 //% 16384 #define GROW_NODE_ITEMS 16 //% 256 -#define MAX_TW_VERTS 12 +#define MAX_TW_VERTS 36 #define TRACE_ON_EPSILON 0.1f diff --git a/tools/quake3/q3map2/q3map2.h b/tools/quake3/q3map2/q3map2.h index 33e1571..b5525fd 100644 --- a/tools/quake3/q3map2/q3map2.h +++ b/tools/quake3/q3map2/q3map2.h @@ -181,7 +181,7 @@ constants /* bsp */ #define MAX_PATCH_SIZE 32 -#define MAX_BRUSH_SIDES 1024 +#define MAX_BRUSH_SIDES 4096 #define MAX_BUILD_SIDES 300 #define MAX_EXPANDED_AXIS 128 @@ -213,7 +213,7 @@ constants #define MAX_PORTALS 32768 #define MAX_SEPERATORS MAX_POINTS_ON_WINDING -#define MAX_POINTS_ON_FIXED_WINDING 24 /* ydnar: increased this from 12 at the expense of more memory */ +#define MAX_POINTS_ON_FIXED_WINDING 36 /* ydnar: increased this from 12 at the expense of more memory */ #define MAX_PORTALS_ON_LEAF 128 @@ -303,22 +303,22 @@ abstracted bsp file /* ok to increase these at the expense of more memory */ #define MAX_MAP_MODELS 0x400 #define MAX_MAP_BRUSHES 0x8000 -#define MAX_MAP_ENTITIES 0x1000 //% 0x800 /* ydnar */ +#define MAX_MAP_ENTITIES 0x8000 //% 0x800 /* ydnar */ #define MAX_MAP_ENTSTRING 0x80000 //% 0x40000 /* ydnar */ #define MAX_MAP_SHADERS 0x800 //% 0x400 /* ydnar */ #define MAX_MAP_AREAS 0x100 /* MAX_MAP_AREA_BYTES in q_shared must match! */ #define MAX_MAP_FOGS 30 //& 0x100 /* RBSP (32 - world fog - goggles) */ -#define MAX_MAP_PLANES 0x100000 //% 0x20000 /* ydnar for md */ +#define MAX_MAP_PLANES 0x400000 //% 0x20000 /* ydnar for md */ #define MAX_MAP_NODES 0x20000 -#define MAX_MAP_BRUSHSIDES 0x100000 //% 0x20000 /* ydnar */ +#define MAX_MAP_BRUSHSIDES 0x400000 //% 0x20000 /* ydnar */ #define MAX_MAP_LEAFS 0x20000 #define MAX_MAP_LEAFFACES 0x100000 //% 0x20000 /* ydnar */ #define MAX_MAP_LEAFBRUSHES 0x40000 #define MAX_MAP_PORTALS 0x20000 #define MAX_MAP_LIGHTING 0x800000 #define MAX_MAP_LIGHTGRID 0x100000 //% 0x800000 /* ydnar: set to points, not bytes */ -#define MAX_MAP_VISIBILITY 0x200000 +#define MAX_MAP_VISIBILITY 0x800000 #define MAX_MAP_DRAW_SURFS 0x20000 #define MAX_MAP_DRAW_VERTS 0x80000 diff --git a/tools/quake3/q3map2/surface_meta.c b/tools/quake3/q3map2/surface_meta.c index 9191ac1..c9606d1 100644 --- a/tools/quake3/q3map2/surface_meta.c +++ b/tools/quake3/q3map2/surface_meta.c @@ -492,7 +492,7 @@ attempts to create a valid tri-strip w/o degenerate triangles from a brush face based on SurfaceAsTriStrip() */ -#define MAX_INDEXES 1024 +#define MAX_INDEXES 4096 void StripFaceSurface( mapDrawSurface_t *ds ) { diff --git a/tools/quake3/q3map2/tjunction.c b/tools/quake3/q3map2/tjunction.c index 220e9fd..d7195d0 100644 --- a/tools/quake3/q3map2/tjunction.c +++ b/tools/quake3/q3map2/tjunction.c @@ -63,12 +63,12 @@ typedef struct { bspDrawVert_t *dv[2]; } originalEdge_t; -#define MAX_ORIGINAL_EDGES 0x10000 +#define MAX_ORIGINAL_EDGES 0x80000 originalEdge_t originalEdges[MAX_ORIGINAL_EDGES]; int numOriginalEdges; -#define MAX_EDGE_LINES 0x10000 +#define MAX_EDGE_LINES 0x80000 edgeLine_t edgeLines[MAX_EDGE_LINES]; int numEdgeLines; @@ -328,7 +328,7 @@ void AddPatchEdges( mapDrawSurface_t *ds ) { FixSurfaceJunctions ==================== */ -#define MAX_SURFACE_VERTS 256 +#define MAX_SURFACE_VERTS 1024 void FixSurfaceJunctions( mapDrawSurface_t *ds ) { int i, j, k; edgeLine_t *e; -- 2.39.2 From 576b0dd9594a3b5fc0f7850416424f303aff87b9 Mon Sep 17 00:00:00 2001 From: rpolzer Date: Mon, 22 Sep 2008 05:46:42 +0000 Subject: [PATCH 13/16] dotProduct2scale, dotProductScale shader parameters (two extra args for the min/max of the range to map 0..1 to) git-svn-id: svn://svn.icculus.org/netradiant/trunk@98 61c419a2-8eb2-4b30-bcec-8cead039b335 --- tools/quake3/q3map2/q3map2.h | 6 +++++- tools/quake3/q3map2/shaders.c | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/tools/quake3/q3map2/q3map2.h b/tools/quake3/q3map2/q3map2.h index b5525fd..18db5b1 100644 --- a/tools/quake3/q3map2/q3map2.h +++ b/tools/quake3/q3map2/q3map2.h @@ -635,8 +635,12 @@ typedef enum CM_ALPHA_SCALE, CM_COLOR_DOT_PRODUCT, CM_ALPHA_DOT_PRODUCT, + CM_COLOR_DOT_PRODUCT_SCALE, + CM_ALPHA_DOT_PRODUCT_SCALE, CM_COLOR_DOT_PRODUCT_2, - CM_ALPHA_DOT_PRODUCT_2 + CM_ALPHA_DOT_PRODUCT_2, + CM_COLOR_DOT_PRODUCT_2_SCALE, + CM_ALPHA_DOT_PRODUCT_2_SCALE } colorModType_t; diff --git a/tools/quake3/q3map2/shaders.c b/tools/quake3/q3map2/shaders.c index a0d5d79..da86549 100644 --- a/tools/quake3/q3map2/shaders.c +++ b/tools/quake3/q3map2/shaders.c @@ -98,21 +98,47 @@ void ColorMod( colorMod_t *cm, int numVerts, bspDrawVert_t *drawVerts ) VectorSet( mult, c, c, c ); break; + case CM_COLOR_DOT_PRODUCT_SCALE: + c = DotProduct( dv->normal, cm2->data ); + c = cm2->data[4] + c * (cm2->data[5] - cm2->data[4]); + VectorSet( mult, c, c, c ); + break; + case CM_ALPHA_DOT_PRODUCT: mult[ 3 ] = DotProduct( dv->normal, cm2->data ); break; + case CM_ALPHA_DOT_PRODUCT_SCALE: + c = DotProduct( dv->normal, cm2->data ); + c = cm2->data[4] + c * (cm2->data[5] - cm2->data[4]); + mult[ 3 ] = c; + break; + case CM_COLOR_DOT_PRODUCT_2: c = DotProduct( dv->normal, cm2->data ); c *= c; VectorSet( mult, c, c, c ); break; + case CM_COLOR_DOT_PRODUCT_2_SCALE: + c = DotProduct( dv->normal, cm2->data ); + c *= c; + c = cm2->data[4] + c * (cm2->data[5] - cm2->data[4]); + VectorSet( mult, c, c, c ); + break; + case CM_ALPHA_DOT_PRODUCT_2: mult[ 3 ] = DotProduct( dv->normal, cm2->data ); mult[ 3 ] *= mult[ 3 ]; break; + case CM_ALPHA_DOT_PRODUCT_2_SCALE: + c = DotProduct( dv->normal, cm2->data ); + c *= c; + c = cm2->data[4] + c * (cm2->data[5] - cm2->data[4]); + mult[ 3 ] = c; + break; + default: break; } @@ -1753,6 +1779,13 @@ static void ParseShaderFile( const char *filename ) Parse1DMatrixAppend( shaderText, 3, cm->data ); } + /* dotProduct2scale ( X Y Z MIN MAX ) */ + else if( !Q_stricmp( token, "dotProduct2scale" ) ) + { + cm->type = CM_COLOR_DOT_PRODUCT_2_SCALE + alpha; + Parse1DMatrixAppend( shaderText, 5, cm->data ); + } + /* volume */ else if( !Q_stricmp( token, "volume" ) ) { -- 2.39.2 From a27eb6c1800e792e099249d594b34245d8ac8c0e Mon Sep 17 00:00:00 2001 From: rpolzer Date: Mon, 22 Sep 2008 11:07:44 +0000 Subject: [PATCH 14/16] -minsamplesize git-svn-id: svn://svn.icculus.org/netradiant/trunk@99 61c419a2-8eb2-4b30-bcec-8cead039b335 --- tools/quake3/q3map2/bsp.c | 8 ++++++++ tools/quake3/q3map2/light.c | 8 ++++++++ tools/quake3/q3map2/q3map2.h | 4 ++++ tools/quake3/q3map2/surface.c | 4 +++- 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/tools/quake3/q3map2/bsp.c b/tools/quake3/q3map2/bsp.c index aeaf736..00fd1fe 100644 --- a/tools/quake3/q3map2/bsp.c +++ b/tools/quake3/q3map2/bsp.c @@ -732,6 +732,14 @@ int BSPMain( int argc, char **argv ) i++; Sys_Printf( "Lightmap sample size set to %dx%d units\n", sampleSize, sampleSize ); } + else if( !strcmp( argv[ i ], "-minsamplesize" ) ) + { + minSampleSize = atoi( argv[ i + 1 ] ); + if( minSampleSize < 1 ) + minSampleSize = 1; + i++; + Sys_Printf( "Minimum lightmap sample size set to %dx%d units\n", minSampleSize, minSampleSize ); + } else if( !strcmp( argv[ i ], "-custinfoparms") ) { Sys_Printf( "Custom info parms enabled\n" ); diff --git a/tools/quake3/q3map2/light.c b/tools/quake3/q3map2/light.c index ffaf40c..e5e526f 100644 --- a/tools/quake3/q3map2/light.c +++ b/tools/quake3/q3map2/light.c @@ -2216,6 +2216,14 @@ int LightMain( int argc, char **argv ) i++; Sys_Printf( "Default lightmap sample size set to %dx%d units\n", sampleSize, sampleSize ); } + else if( !strcmp( argv[ i ], "-minsamplesize" ) ) + { + minSampleSize = atoi( argv[ i + 1 ] ); + if( minSampleSize < 1 ) + minSampleSize = 1; + i++; + Sys_Printf( "Minimum lightmap sample size set to %dx%d units\n", minSampleSize, minSampleSize ); + } else if( !strcmp( argv[ i ], "-novertex" ) ) { noVertexLighting = qtrue; diff --git a/tools/quake3/q3map2/q3map2.h b/tools/quake3/q3map2/q3map2.h index 18db5b1..a454593 100644 --- a/tools/quake3/q3map2/q3map2.h +++ b/tools/quake3/q3map2/q3map2.h @@ -248,6 +248,7 @@ constants #define GRID_EPSILON 0.0f #define DEFAULT_LIGHTMAP_SAMPLE_SIZE 16 +#define DEFAULT_LIGHTMAP_MIN_SAMPLE_SIZE 0 #define DEFAULT_LIGHTMAP_SAMPLE_OFFSET 1.0f #define DEFAULT_SUBDIVIDE_THRESHOLD 1.0f @@ -1656,6 +1657,7 @@ int GetSurfaceExtraEntityNum( int num ); int GetSurfaceExtraCastShadows( int num ); int GetSurfaceExtraRecvShadows( int num ); int GetSurfaceExtraSampleSize( int num ); +int GetSurfaceExtraMinSampleSize( int num ); float GetSurfaceExtraLongestCurve( int num ); void GetSurfaceExtraLightmapAxis( int num, vec3_t lightmapAxis ); @@ -1953,6 +1955,7 @@ Q_EXTERN char source[ 1024 ]; Q_EXTERN char outbase[ 32 ]; Q_EXTERN int sampleSize; /* lightmap sample size in units */ +Q_EXTERN int minSampleSize; /* minimum sample size to use at all */ Q_EXTERN int mapEntityNum Q_ASSIGN( 0 ); @@ -2079,6 +2082,7 @@ Q_EXTERN qboolean loMem Q_ASSIGN( qfalse ); Q_EXTERN qboolean noStyles Q_ASSIGN( qfalse ); Q_EXTERN int sampleSize Q_ASSIGN( DEFAULT_LIGHTMAP_SAMPLE_SIZE ); +Q_EXTERN int minSampleSize Q_ASSIGN( DEFAULT_LIGHTMAP_MIN_SAMPLE_SIZE ); Q_EXTERN qboolean noVertexLighting Q_ASSIGN( qfalse ); Q_EXTERN qboolean noGridLighting Q_ASSIGN( qfalse ); diff --git a/tools/quake3/q3map2/surface.c b/tools/quake3/q3map2/surface.c index 5415ae1..30b4be5 100644 --- a/tools/quake3/q3map2/surface.c +++ b/tools/quake3/q3map2/surface.c @@ -640,7 +640,9 @@ void ClassifySurfaces( int numSurfs, mapDrawSurface_t *ds ) ds->sampleSize *= ds->lightmapScale; if( ds->sampleSize <= 0 ) ds->sampleSize = 1; - else if( ds->sampleSize > 16384 ) /* powers of 2 are preferred */ + if(ds->sampleSize < minSampleSize) + ds->sampleSize = minSampleSize; + if( ds->sampleSize > 16384 ) /* powers of 2 are preferred */ ds->sampleSize = 16384; } } -- 2.39.2 From acd3555cae8845d62f55c39c6d844410457bcc08 Mon Sep 17 00:00:00 2001 From: rpolzer Date: Tue, 23 Sep 2008 14:56:52 +0000 Subject: [PATCH 15/16] fix dotproduct2 git-svn-id: svn://svn.icculus.org/netradiant/trunk@100 61c419a2-8eb2-4b30-bcec-8cead039b335 --- tools/quake3/q3map2/shaders.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/quake3/q3map2/shaders.c b/tools/quake3/q3map2/shaders.c index da86549..0dfa2da 100644 --- a/tools/quake3/q3map2/shaders.c +++ b/tools/quake3/q3map2/shaders.c @@ -123,7 +123,7 @@ void ColorMod( colorMod_t *cm, int numVerts, bspDrawVert_t *drawVerts ) case CM_COLOR_DOT_PRODUCT_2_SCALE: c = DotProduct( dv->normal, cm2->data ); c *= c; - c = cm2->data[4] + c * (cm2->data[5] - cm2->data[4]); + c = (c - cm2->data[4]) / (cm2->data[5] - cm2->data[4]); VectorSet( mult, c, c, c ); break; @@ -135,7 +135,7 @@ void ColorMod( colorMod_t *cm, int numVerts, bspDrawVert_t *drawVerts ) case CM_ALPHA_DOT_PRODUCT_2_SCALE: c = DotProduct( dv->normal, cm2->data ); c *= c; - c = cm2->data[4] + c * (cm2->data[5] - cm2->data[4]); + c = (c - cm2->data[4]) / (cm2->data[5] - cm2->data[4]); mult[ 3 ] = c; break; -- 2.39.2 From cd2e34da463f308c22c9eb09f010a57b1890ddc8 Mon Sep 17 00:00:00 2001 From: rpolzer Date: Tue, 23 Sep 2008 19:31:54 +0000 Subject: [PATCH 16/16] samplesize warning git-svn-id: svn://svn.icculus.org/netradiant/trunk@101 61c419a2-8eb2-4b30-bcec-8cead039b335 --- tools/quake3/q3map2/lightmaps_ydnar.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tools/quake3/q3map2/lightmaps_ydnar.c b/tools/quake3/q3map2/lightmaps_ydnar.c index e067114..0ee45b1 100644 --- a/tools/quake3/q3map2/lightmaps_ydnar.c +++ b/tools/quake3/q3map2/lightmaps_ydnar.c @@ -684,6 +684,19 @@ qboolean AddSurfaceToRawLightmap( int num, rawLightmap_t *lm ) sampleSize += 1.0f; } } + + if(sampleSize != lm->sampleSize) + { + Sys_FPrintf(SYS_VRB,"WARNING: surface at (%6.0f %6.0f %6.0f) (%6.0f %6.0f %6.0f) too large for desired samplesize/lightmapsize combination, increased samplesize from %.1f to %.1f\n", + info->mins[0], + info->mins[1], + info->mins[2], + info->maxs[0], + info->maxs[1], + info->maxs[2], + lm->sampleSize, + sampleSize); + } /* set actual sample size */ lm->actualSampleSize = sampleSize; -- 2.39.2