doom3-gpl
Doom 3 GPL source release
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
MainFrm.cpp
Go to the documentation of this file.
1 /*
2 ===========================================================================
3 
4 Doom 3 GPL Source Code
5 Copyright (C) 1999-2011 id Software LLC, a ZeniMax Media company.
6 
7 This file is part of the Doom 3 GPL Source Code (?Doom 3 Source Code?).
8 
9 Doom 3 Source Code is free software: you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation, either version 3 of the License, or
12 (at your option) any later version.
13 
14 Doom 3 Source Code is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
18 
19 You should have received a copy of the GNU General Public License
20 along with Doom 3 Source Code. If not, see <http://www.gnu.org/licenses/>.
21 
22 In addition, the Doom 3 Source Code is also subject to certain additional terms. You should have received a copy of these additional terms immediately following the terms and conditions of the GNU General Public License which accompanied the Doom 3 Source Code. If not, please request a copy in writing from id Software at the address below.
23 
24 If you have questions concerning this license or the applicable additional terms, you may contact in writing id Software LLC, c/o ZeniMax Media Inc., Suite 120, Rockville, Maryland 20850 USA.
25 
26 ===========================================================================
27 */
28 
29 #include "../../idlib/precompiled.h"
30 #pragma hdrstop
31 
32 #include "qe3.h"
33 #include "Radiant.h"
34 #include "ZWnd.h"
35 #include "CamWnd.h"
36 #include "MapInfo.h"
37 #include "MainFrm.h"
38 #include "RotateDlg.h"
39 #include "EntityListDlg.h"
40 #include "NewProjDlg.h"
41 #include "CommandsDlg.h"
42 #include "ScaleDialog.h"
43 #include "FindTextureDlg.h"
44 #include "SurfaceDlg.h"
45 #include "shlobj.h"
46 #include "DialogTextures.h"
47 #include "PatchDensityDlg.h"
48 #include "DialogThick.h"
49 #include "PatchDialog.h"
50 #include "Undo.h"
51 #include "NewTexWnd.h"
52 #include "splines.h"
53 #include "dlgcamera.h"
54 #include "mmsystem.h"
55 #include "LightDlg.h"
56 #include "GetString.h"
57 #include "EntKeyFindReplace.h"
58 #include "InspectorDialog.h"
59 #include "autocaulk.h"
60 
61 #include "../../sys/win32/rc/common_resource.h"
62 #include "../comafx/DialogName.h"
63 #include "../comafx/DialogColorPicker.h"
64 
65 #ifdef _DEBUG
66  #define new DEBUG_NEW
67  #undef THIS_FILE
68 static char THIS_FILE[] = __FILE__;
69 #endif
70 
71 // globals
72 CString g_strAppPath; // holds the full path of the executable
73 CMainFrame *g_pParentWnd = NULL; // used to precast to CMainFrame
74 CPrefsDlg g_Preferences; // global prefs instance
75 CPrefsDlg &g_PrefsDlg = g_Preferences; // reference used throughout
76 int g_nUpdateBits = 0; // window update flags
77 bool g_bScreenUpdates = true; // whether window painting is active, used in a few places
78 
79 //
80 // to disable updates for speed reasons both of the above should be made members
81 // of CMainFrame
82 // bool g_bSnapToGrid = true; // early use, no longer in use, clamping pref will
83 // be used
84 //
85 CString g_strProject; // holds the active project filename
86 
87 #define D3XP_ID_FILE_SAVE_COPY ( WM_USER + 28476 )
88 #define D3XP_ID_SHOW_MODELS ( WM_USER + 28477 )
89 
90 //
91 // CMainFrame
92 // command mapping stuff m_strCommand is the command string m_nKey is the windows
93 // VK_??? equivelant m_nModifiers are key states as follows bit 0 - shift 1 - alt
94 // 2 - control 4 - press only
95 //
96 #define SPEED_MOVE 32.0f
97 #define SPEED_TURN 22.5f
98 
99 #define MAX_GRID 64.0f
100 #define MIN_GRID 0.125f
101 
103  { "Texture_AxialByHeight", 'U', 0, ID_SELECT_AXIALTEXTURE_BYHEIGHT },
104  { "Texture_AxialArbitrary", 'U', RAD_SHIFT, ID_SELECT_AXIALTEXTURE_ARBITRARY },
105  { "Texture_AxialByWidth", 'U', RAD_CONTROL, ID_SELECT_AXIALTEXTURE_BYWIDTH },
106  { "Texture_Decrement", VK_SUBTRACT, RAD_SHIFT, ID_SELECTION_TEXTURE_DEC },
107  { "Texture_Increment", VK_ADD, RAD_SHIFT, ID_SELECTION_TEXTURE_INC },
108  { "Texture_Fit", '5', RAD_SHIFT, ID_SELECTION_TEXTURE_FIT },
109  { "Texture_RotateClock", VK_NEXT, RAD_SHIFT, ID_SELECTION_TEXTURE_ROTATECLOCK },
110  { "Texture_RotateCounter", VK_PRIOR, RAD_SHIFT, ID_SELECTION_TEXTURE_ROTATECOUNTER },
111  { "Texture_ScaleUp", VK_UP, RAD_CONTROL, ID_SELECTION_TEXTURE_SCALEUP },
112  { "Texture_ScaleDown", VK_DOWN, RAD_CONTROL, ID_SELECTION_TEXTURE_SCALEDOWN },
113  { "Texture_ShiftLeft", VK_LEFT, RAD_SHIFT, ID_SELECTION_TEXTURE_SHIFTLEFT },
114  { "Texture_ShiftRight", VK_RIGHT, RAD_SHIFT, ID_SELECTION_TEXTURE_SHIFTRIGHT },
115  { "Texture_ShiftUp", VK_UP, RAD_SHIFT, ID_SELECTION_TEXTURE_SHIFTUP },
116  { "Texture_ShiftDown", VK_DOWN, RAD_SHIFT, ID_SELECTION_TEXTURE_SHIFTDOWN },
117  { "Texture_ScaleLeft", VK_LEFT, RAD_CONTROL, ID_SELECTION_TEXTURE_SCALELEFT },
118  { "Texture_ScaleRight", VK_RIGHT, RAD_CONTROL, ID_SELECTION_TEXTURE_SCALERIGHT },
119  { "Texture_InvertX", 'I', RAD_CONTROL|RAD_SHIFT, ID_CURVE_NEGATIVETEXTUREY },
120  { "Texture_InvertY", 'I', RAD_SHIFT, ID_CURVE_NEGATIVETEXTUREX },
121  { "Texture_ToggleLock", 'T', RAD_SHIFT, ID_TOGGLE_LOCK },
122 
123  { "Texture_ShowAllTextures", 'A', RAD_CONTROL, ID_TEXTURES_SHOWALL },
124 
125  { "Edit_Copy", 'C', RAD_CONTROL, ID_EDIT_COPYBRUSH },
126  { "Edit_Paste", 'V', RAD_CONTROL, ID_EDIT_PASTEBRUSH },
127  { "Edit_Undo", 'Z', RAD_CONTROL, ID_EDIT_UNDO },
128  { "Edit_Redo", 'Y', RAD_CONTROL, ID_EDIT_REDO },
129 
130  { "Camera_Forward", VK_UP, 0, ID_CAMERA_FORWARD },
131  { "Camera_Back", VK_DOWN, 0, ID_CAMERA_BACK },
132  { "Camera_Left", VK_LEFT, 0, ID_CAMERA_LEFT },
133  { "Camera_Right", VK_RIGHT, 0, ID_CAMERA_RIGHT },
134  { "Camera_Up", 'D', 0, ID_CAMERA_UP },
135  { "Camera_Down", 'C', 0, ID_CAMERA_DOWN },
136  { "Camera_AngleUp", 'A', 0, ID_CAMERA_ANGLEUP },
137  { "Camera_AngleDown", 'Z', 0, ID_CAMERA_ANGLEDOWN },
138  { "Camera_StrafeRight", VK_PERIOD, 0, ID_CAMERA_STRAFERIGHT },
139  { "Camera_StrafeLeft", VK_COMMA, 0, ID_CAMERA_STRAFELEFT },
140  { "Camera_UpFloor", VK_PRIOR, 0, ID_VIEW_UPFLOOR },
141  { "Camera_DownFloor", VK_NEXT, 0, ID_VIEW_DOWNFLOOR },
142  { "Camera_CenterView", VK_END, 0, ID_VIEW_CENTER },
143 
144  { "Grid_ZoomOut", VK_INSERT, 0, ID_VIEW_ZOOMOUT },
145  { "FileSaveCopy", 'C', RAD_CONTROL|RAD_ALT|RAD_SHIFT, D3XP_ID_FILE_SAVE_COPY },
146  { "ShowHideModels", 'M', RAD_CONTROL, D3XP_ID_SHOW_MODELS },
147  { "NextView", VK_HOME, 0, ID_VIEW_NEXTVIEW },
148  { "Grid_ZoomIn", VK_DELETE, 0, ID_VIEW_ZOOMIN },
149 
150  { "Grid_SetPoint5", '4', RAD_SHIFT, ID_GRID_POINT5 },
151  { "Grid_SetPoint25", '3', RAD_SHIFT, ID_GRID_POINT25 },
152  { "Grid_SetPoint125", '2', RAD_SHIFT, ID_GRID_POINT125 },
153  //{ "Grid_SetPoint0625", '1', RAD_SHIFT, ID_GRID_POINT0625 },
154  { "Grid_Set1", '1', 0, ID_GRID_1 },
155  { "Grid_Set2", '2', 0, ID_GRID_2 },
156  { "Grid_Set4", '3', 0, ID_GRID_4 },
157  { "Grid_Set8", '4', 0, ID_GRID_8 },
158  { "Grid_Set16", '5', 0, ID_GRID_16 },
159  { "Grid_Set32", '6', 0, ID_GRID_32 },
160  { "Grid_Set64", '7', 0, ID_GRID_64 },
161  { "Grid_Down", 219, 0, ID_GRID_PREV },
162  { "Grid_Up", 221, 0, ID_GRID_NEXT },
163 
164  { "Grid_Toggle", '0', 0, ID_GRID_TOGGLE },
165  { "Grid_ToggleSizePaint", 'Q', RAD_PRESS, ID_SELECTION_TOGGLESIZEPAINT },
166 
167  { "Grid_PrecisionCursorMode",VK_F11, 0 , ID_PRECISION_CURSOR_CYCLE},
168 
169  { "Grid_NextView", VK_TAB, RAD_CONTROL, ID_VIEW_NEXTVIEW },
170  { "Grid_ToggleCrosshairs", 'X', RAD_SHIFT, ID_VIEW_CROSSHAIR },
171 
172  { "Grid_ZZoomOut", VK_INSERT, RAD_CONTROL, ID_VIEW_ZZOOMOUT },
173  { "Grid_ZZoomIn", VK_DELETE, RAD_CONTROL, ID_VIEW_ZZOOMIN },
174 
175  { "Brush_Make3Sided", '3', RAD_CONTROL, ID_BRUSH_3SIDED },
176  { "Brush_Make4Sided", '4', RAD_CONTROL, ID_BRUSH_4SIDED },
177  { "Brush_Make5Sided", '5', RAD_CONTROL, ID_BRUSH_5SIDED },
178  { "Brush_Make6Sided", '6', RAD_CONTROL, ID_BRUSH_6SIDED },
179  { "Brush_Make7Sided", '7', RAD_CONTROL, ID_BRUSH_7SIDED },
180  { "Brush_Make8Sided", '8', RAD_CONTROL, ID_BRUSH_8SIDED },
181  { "Brush_Make9Sided", '9', RAD_CONTROL, ID_BRUSH_9SIDED },
182 
183  { "Leak_NextSpot", 'K', RAD_CONTROL|RAD_SHIFT, ID_MISC_NEXTLEAKSPOT },
184  { "Leak_PrevSpot", 'L', RAD_CONTROL|RAD_SHIFT, ID_MISC_PREVIOUSLEAKSPOT },
185 
186  { "File_Open", 'O', RAD_CONTROL, ID_FILE_OPEN },
187  { "File_Save", 'S', RAD_CONTROL, ID_FILE_SAVE },
188 
189  { "TAB", VK_TAB, 0, ID_PATCH_TAB },
190  { "TAB", VK_TAB, RAD_SHIFT, ID_PATCH_TAB },
191 
192  { "Patch_BendMode", 'B', 0, ID_PATCH_BEND },
193  { "Patch_FreezeVertices", 'F', 0, ID_CURVE_FREEZE },
194  { "Patch_UnFreezeVertices", 'F', RAD_CONTROL, ID_CURVE_UNFREEZE },
195  { "Patch_UnFreezeAllVertices",'F', RAD_CONTROL|RAD_SHIFT, ID_CURVE_UNFREEZEALL },
196  { "Patch_Thicken", 'T', RAD_CONTROL, ID_CURVE_THICKEN },
197  { "Patch_ClearOverlays", 'Y', RAD_SHIFT, ID_CURVE_OVERLAY_CLEAR },
198  { "Patch_MakeOverlay", 'Y', 0, ID_CURVE_OVERLAY_SET },
199  { "Patch_CycleCapTexturing", 'P', RAD_CONTROL|RAD_SHIFT, ID_CURVE_CYCLECAP },
200  { "Patch_CycleCapTexturingAlt",'P', RAD_SHIFT, ID_CURVE_CYCLECAPALT },
201  { "Patch_InvertCurve", 'I', RAD_CONTROL, ID_CURVE_NEGATIVE },
202  { "Patch_IncPatchColumn", VK_ADD, RAD_CONTROL|RAD_SHIFT, ID_CURVE_INSERTCOLUMN },
203  { "Patch_IncPatchRow", VK_ADD, RAD_CONTROL, ID_CURVE_INSERTROW },
204  { "Patch_DecPatchColumn", VK_SUBTRACT, RAD_CONTROL|RAD_SHIFT, ID_CURVE_DELETECOLUMN },
205  { "Patch_DecPatchRow", VK_SUBTRACT, RAD_CONTROL, ID_CURVE_DELETEROW },
206  { "Patch_RedisperseRows", 'E', RAD_CONTROL, ID_CURVE_REDISPERSE_ROWS },
207  { "Patch_RedisperseCols", 'E', RAD_CONTROL|RAD_SHIFT, ID_CURVE_REDISPERSE_COLS },
208  { "Patch_Naturalize", 'N', RAD_CONTROL, ID_PATCH_NATURALIZE },
209  { "Patch_SnapToGrid", 'G', RAD_CONTROL, ID_SELECT_SNAPTOGRID },
210  { "Patch_CapCurrentCurve", 'C', RAD_SHIFT, ID_CURVE_CAP },
211 
212  { "Clipper_Toggle", 'X', 0, ID_VIEW_CLIPPER },
213  { "Clipper_ClipSelected", VK_RETURN, 0, ID_CLIP_SELECTED },
214  { "Clipper_SplitSelected", VK_RETURN, RAD_SHIFT, ID_SPLIT_SELECTED },
215  { "Clipper_FlipClip", VK_RETURN, RAD_CONTROL, ID_FLIP_CLIP },
216 
217  { "CameraClip_ZoomOut", 219, RAD_CONTROL, ID_VIEW_CUBEOUT },
218  { "CameraClip_ZoomIn", 221, RAD_CONTROL, ID_VIEW_CUBEIN },
219  { "CameraClip_Toggle", 220, RAD_CONTROL, ID_VIEW_CUBICCLIPPING },
220 
221  { "ViewTab_EntityInfo", 'N', 0, ID_VIEW_ENTITY },
222  { "ViewTab_Console", 'O', 0, ID_VIEW_CONSOLE },
223  { "ViewTab_Textures", 'T', 0, ID_VIEW_TEXTURE },
224  { "ViewTab_MediaBrowser", 'M', 0, ID_VIEW_MEDIABROWSER },
225 
226  { "Window_SurfaceInspector",'S', 0, ID_TEXTURES_INSPECTOR },
227  { "Window_PatchInspector", 'S', RAD_SHIFT, ID_PATCH_INSPECTOR },
228  { "Window_EntityList", 'I', 0, ID_EDIT_ENTITYINFO },
229  { "Window_Preferences", 'P', 0, ID_PREFS },
230  { "Window_ToggleCamera", 'C', RAD_CONTROL|RAD_SHIFT, ID_TOGGLECAMERA },
231  { "Window_ToggleView", 'V', RAD_CONTROL|RAD_SHIFT, ID_TOGGLEVIEW },
232  { "Window_ToggleZ", 'Z', RAD_CONTROL|RAD_SHIFT, ID_TOGGLEZ },
233  { "Window_LightEditor", 'J', 0, ID_PROJECTED_LIGHT },
234  { "Window_EntityColor", 'K', 0, ID_MISC_SELECTENTITYCOLOR },
235 
236  { "Selection_DragEdges", 'E', 0, ID_SELECTION_DRAGEDGES },
237  { "Selection_DragVertices", 'V', 0, ID_SELECTION_DRAGVERTECIES },
238  { "Selection_Clone", VK_SPACE, 0, ID_SELECTION_CLONE },
239  { "Selection_Delete", VK_BACK, 0, ID_SELECTION_DELETE },
240  { "Selection_UnSelect", VK_ESCAPE, 0, ID_SELECTION_DESELECT },
241  { "Selection_Invert", 'I' , 0 , ID_SELECTION_INVERT },
242  { "Selection_ToggleMoveOnly",'W', 0, ID_SELECTION_MOVEONLY },
243 
244  { "Selection_MoveDown", VK_SUBTRACT, 0, ID_SELECTION_MOVEDOWN },
245  { "Selection_MoveUp", VK_ADD, 0, ID_SELECTION_MOVEUP },
246  { "Selection_DumpBrush", 'D', RAD_SHIFT, ID_SELECTION_PRINT },
247  { "Selection_NudgeLeft", VK_LEFT, RAD_ALT, ID_SELECTION_SELECT_NUDGELEFT },
248  { "Selection_NudgeRight", VK_RIGHT, RAD_ALT, ID_SELECTION_SELECT_NUDGERIGHT },
249  { "Selection_NudgeUp", VK_UP, RAD_ALT, ID_SELECTION_SELECT_NUDGEUP },
250  { "Selection_NudgeDown", VK_DOWN, RAD_ALT, ID_SELECTION_SELECT_NUDGEDOWN },
251  { "Selection_Combine", 'K', RAD_SHIFT, ID_SELECTION_COMBINE },
252  { "Selection_Connect", 'K', RAD_CONTROL, ID_SELECTION_CONNECT },
253  { "Selection_Ungroup", 'G', RAD_SHIFT, ID_SELECTION_UNGROUPENTITY },
254  { "Selection_CSGMerge", 'M', RAD_SHIFT, ID_SELECTION_CSGMERGE },
255 
256  { "Selection_CenterOrigin", 'O', RAD_SHIFT, ID_SELECTION_CENTER_ORIGIN },
257  { "Selection_SelectCompleteEntity", 'E' , RAD_CONTROL|RAD_ALT|RAD_SHIFT , ID_SELECT_COMPLETE_ENTITY },
258  { "Selection_SelectAllOfType", 'A', RAD_SHIFT, ID_SELECT_ALL },
259 
260  { "Show_ToggleLights", '0' , RAD_ALT , ID_VIEW_SHOWLIGHTS },
261  { "Show_TogglePatches", 'P', RAD_CONTROL, ID_VIEW_SHOWCURVES },
262  { "Show_ToggleClip", 'L', RAD_CONTROL, ID_VIEW_SHOWCLIP },
263 
264  { "Show_HideSelected", 'H', 0, ID_VIEW_HIDESHOW_HIDESELECTED },
265  { "Show_ShowHidden", 'H', RAD_SHIFT, ID_VIEW_HIDESHOW_SHOWHIDDEN },
266  { "Show_HideNotSelected", 'H', RAD_CONTROL|RAD_SHIFT, ID_VIEW_HIDESHOW_HIDENOTSELECTED },
267 
268  { "Render_ToggleSound", VK_F9, 0, ID_VIEW_RENDERSOUND },
269  { "Render_ToggleSelections", VK_F8, 0, ID_VIEW_RENDERSELECTION },
270  { "Render_RebuildData", VK_F7, 0, ID_VIEW_REBUILDRENDERDATA },
271  { "Render_ToggleAnimation", VK_F6, 0, ID_VIEW_MATERIALANIMATION},
272  { "Render_ToggleEntityOutlines", VK_F5, 0, ID_VIEW_RENDERENTITYOUTLINES },
273  { "Render_ToggleRealtimeBuild", VK_F4, 0, ID_VIEW_REALTIMEREBUILD },
274  { "Render_Toggle", VK_F3, 0, ID_VIEW_RENDERMODE },
275 
276  { "Find_Textures", 'F', RAD_SHIFT, ID_TEXTURE_REPLACEALL },
277  { "Find_Entity", VK_F3, RAD_CONTROL, ID_MISC_FINDORREPLACEENTITY},
278  { "Find_NextEntity", VK_F3,RAD_SHIFT, ID_MISC_FINDNEXTENT},
279 
280  { "_ShowDOOM", VK_F2, 0, ID_SHOW_DOOM },
281 
282  { "Rotate_MouseRotate", 'R', 0, ID_SELECT_MOUSEROTATE },
283  { "Rotate_ToggleFlatRotation", 'R', RAD_CONTROL, ID_VIEW_CAMERAUPDATE },
284  { "Rotate_CycleRotationAxis", 'R', RAD_SHIFT, ID_TOGGLE_ROTATELOCK },
285 
286  { "_AutoCaulk", 'A', RAD_CONTROL|RAD_SHIFT, ID_AUTOCAULK }, // ctrl-shift-a, since SHIFT-A is already taken
287 };
288 
289 int g_nCommandCount = sizeof(g_Commands) / sizeof(SCommandInfo);
290 
292  { "Space", VK_SPACE },
293  { "Backspace", VK_BACK },
294  { "Escape", VK_ESCAPE },
295  { "End", VK_END },
296  { "Insert", VK_INSERT },
297  { "Delete", VK_DELETE },
298  { "PageUp", VK_PRIOR },
299  { "PageDown", VK_NEXT },
300  { "Up", VK_UP },
301  { "Down", VK_DOWN },
302  { "Left", VK_LEFT },
303  { "Right", VK_RIGHT },
304  { "F1", VK_F1 },
305  { "F2", VK_F2 },
306  { "F3", VK_F3 },
307  { "F4", VK_F4 },
308  { "F5", VK_F5 },
309  { "F6", VK_F6 },
310  { "F7", VK_F7 },
311  { "F8", VK_F8 },
312  { "F9", VK_F9 },
313  { "F10", VK_F10 },
314  { "F11", VK_F11 },
315  { "F12", VK_F12 },
316  { "Tab", VK_TAB },
317  { "Return", VK_RETURN },
318  { "Comma", VK_COMMA },
319  { "Period", VK_PERIOD },
320  { "Plus", VK_ADD },
321  { "Multiply", VK_MULTIPLY },
322  { "Subtract", VK_SUBTRACT },
323  { "NumPad0", VK_NUMPAD0 },
324  { "NumPad1", VK_NUMPAD1 },
325  { "NumPad2", VK_NUMPAD2 },
326  { "NumPad3", VK_NUMPAD3 },
327  { "NumPad4", VK_NUMPAD4 },
328  { "NumPad5", VK_NUMPAD5 },
329  { "NumPad6", VK_NUMPAD6 },
330  { "NumPad7", VK_NUMPAD7 },
331  { "NumPad8", VK_NUMPAD8 },
332  { "NumPad9", VK_NUMPAD9 },
333  { "[", 219 },
334  { "]", 221 },
335  { "\\", 220 }
336 };
337 
338 int g_nKeyCount = sizeof(g_Keys) / sizeof(SKeyInfo);
339 
340 const int CMD_TEXTUREWAD_END = CMD_TEXTUREWAD + 127;
341 const int CMD_BSPCOMMAND_END = CMD_BSPCOMMAND + 127;
342 const int IDMRU_END = IDMRU + 9;
343 
344 const int g_msgBSPDone = RegisterWindowMessage(DMAP_DONE);
345 const int g_msgBSPStatus = RegisterWindowMessage(DMAP_MSGID);
346 
347 IMPLEMENT_DYNAMIC(CMainFrame, CFrameWnd)
348 BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
349 //{{AFX_MSG_MAP(CMainFrame)
350  ON_WM_PARENTNOTIFY()
351  ON_WM_CREATE()
352  ON_WM_TIMER()
353  ON_WM_DESTROY()
354  ON_WM_CLOSE()
355  ON_WM_KEYDOWN()
356  ON_WM_SIZE()
357  ON_COMMAND(ID_VIEW_CAMERATOGGLE, ToggleCamera)
358  ON_COMMAND(ID_FILE_CLOSE, OnFileClose)
359  ON_COMMAND(ID_FILE_EXIT, OnFileExit)
360  ON_COMMAND(ID_FILE_LOADPROJECT, OnFileLoadproject)
361  ON_COMMAND(ID_FILE_NEW, OnFileNew)
362  ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
363  ON_COMMAND(ID_FILE_POINTFILE, OnFilePointfile)
364  ON_COMMAND(ID_FILE_PRINT, OnFilePrint)
365  ON_COMMAND(ID_FILE_PRINT_PREVIEW, OnFilePrintPreview)
366  ON_COMMAND(ID_FILE_SAVE, OnFileSave)
367  ON_COMMAND(ID_FILE_SAVEAS, OnFileSaveas)
368  ON_COMMAND(D3XP_ID_FILE_SAVE_COPY, OnFileSaveCopy)
369  ON_COMMAND(D3XP_ID_SHOW_MODELS, OnViewShowModels )
370  ON_COMMAND(ID_VIEW_100, OnView100)
371  ON_COMMAND(ID_VIEW_CENTER, OnViewCenter)
372  ON_COMMAND(ID_VIEW_CONSOLE, OnViewConsole)
373  ON_COMMAND(ID_VIEW_DOWNFLOOR, OnViewDownfloor)
374  ON_COMMAND(ID_VIEW_ENTITY, OnViewEntity)
375  ON_COMMAND(ID_VIEW_MEDIABROWSER, OnViewMediaBrowser)
376  ON_COMMAND(ID_VIEW_FRONT, OnViewFront)
377  ON_COMMAND(ID_VIEW_SHOWBLOCKS, OnViewShowblocks)
378  ON_COMMAND(ID_VIEW_SHOWCLIP, OnViewShowclip)
379  ON_COMMAND(ID_VIEW_SHOWTRIGGERS, OnViewShowTriggers)
380  ON_COMMAND(ID_VIEW_SHOWCOORDINATES, OnViewShowcoordinates)
381  ON_COMMAND(ID_VIEW_SHOWENT, OnViewShowent)
382  ON_COMMAND(ID_VIEW_SHOWLIGHTS, OnViewShowlights)
383  ON_COMMAND(ID_VIEW_SHOWNAMES, OnViewShownames)
384  ON_COMMAND(ID_VIEW_SHOWPATH, OnViewShowpath)
385  ON_COMMAND(ID_VIEW_SHOWCOMBATNODES, OnViewShowCombatNodes)
386  ON_COMMAND(ID_VIEW_SHOWWATER, OnViewShowwater)
387  ON_COMMAND(ID_VIEW_SHOWWORLD, OnViewShowworld)
388  ON_COMMAND(ID_VIEW_TEXTURE, OnViewTexture)
389  ON_COMMAND(ID_VIEW_UPFLOOR, OnViewUpfloor)
390  ON_COMMAND(ID_VIEW_XY, OnViewXy)
391  ON_COMMAND(ID_VIEW_Z100, OnViewZ100)
392  ON_COMMAND(ID_VIEW_ZOOMIN, OnViewZoomin)
393  ON_COMMAND(ID_VIEW_ZOOMOUT, OnViewZoomout)
394  ON_COMMAND(ID_VIEW_ZZOOMIN, OnViewZzoomin)
395  ON_COMMAND(ID_VIEW_ZZOOMOUT, OnViewZzoomout)
396  ON_COMMAND(ID_VIEW_SIDE, OnViewSide)
397  ON_COMMAND(ID_TEXTURES_SHOWINUSE, OnTexturesShowinuse)
398  ON_COMMAND(ID_TEXTURES_INSPECTOR, OnTexturesInspector)
399  ON_COMMAND(ID_MISC_FINDBRUSH, OnMiscFindbrush)
400  ON_COMMAND(ID_MISC_GAMMA, OnMiscGamma)
401  ON_COMMAND(ID_MISC_NEXTLEAKSPOT, OnMiscNextleakspot)
402  ON_COMMAND(ID_MISC_PREVIOUSLEAKSPOT, OnMiscPreviousleakspot)
403  ON_COMMAND(ID_MISC_PRINTXY, OnMiscPrintxy)
404  ON_COMMAND(ID_MISC_SELECTENTITYCOLOR, OnMiscSelectentitycolor)
405  ON_COMMAND(ID_MISC_FINDORREPLACEENTITY, OnMiscFindOrReplaceEntity)
406  ON_COMMAND(ID_MISC_FINDNEXTENT, OnMiscFindNextEntity)
407  ON_COMMAND(ID_MISC_SETVIEWPOS, OnMiscSetViewPos)
408  ON_COMMAND(ID_TEXTUREBK, OnTexturebk)
409  ON_COMMAND(ID_COLORS_MAJOR, OnColorsMajor)
410  ON_COMMAND(ID_COLORS_MINOR, OnColorsMinor)
411  ON_COMMAND(ID_COLORS_XYBK, OnColorsXybk)
412  ON_COMMAND(ID_BRUSH_3SIDED, OnBrush3sided)
413  ON_COMMAND(ID_BRUSH_4SIDED, OnBrush4sided)
414  ON_COMMAND(ID_BRUSH_5SIDED, OnBrush5sided)
415  ON_COMMAND(ID_BRUSH_6SIDED, OnBrush6sided)
416  ON_COMMAND(ID_BRUSH_7SIDED, OnBrush7sided)
417  ON_COMMAND(ID_BRUSH_8SIDED, OnBrush8sided)
418  ON_COMMAND(ID_BRUSH_9SIDED, OnBrush9sided)
419  ON_COMMAND(ID_BRUSH_ARBITRARYSIDED, OnBrushArbitrarysided)
420  ON_COMMAND(ID_BRUSH_FLIPX, OnBrushFlipx)
421  ON_COMMAND(ID_BRUSH_FLIPY, OnBrushFlipy)
422  ON_COMMAND(ID_BRUSH_FLIPZ, OnBrushFlipz)
423  ON_COMMAND(ID_BRUSH_ROTATEX, OnBrushRotatex)
424  ON_COMMAND(ID_BRUSH_ROTATEY, OnBrushRotatey)
425  ON_COMMAND(ID_BRUSH_ROTATEZ, OnBrushRotatez)
426  ON_COMMAND(ID_REGION_OFF, OnRegionOff)
427  ON_COMMAND(ID_REGION_SETBRUSH, OnRegionSetbrush)
428  ON_COMMAND(ID_REGION_SETSELECTION, OnRegionSetselection)
429  ON_COMMAND(ID_REGION_SETTALLBRUSH, OnRegionSettallbrush)
430  ON_COMMAND(ID_REGION_SETXY, OnRegionSetxy)
431  ON_COMMAND(ID_SELECTION_ARBITRARYROTATION, OnSelectionArbitraryrotation)
432  ON_COMMAND(ID_SELECTION_CLONE, OnSelectionClone)
433  ON_COMMAND(ID_SELECTION_CONNECT, OnSelectionConnect)
434  ON_COMMAND(ID_SELECTION_CSGSUBTRACT, OnSelectionCsgsubtract)
435  ON_COMMAND(ID_SELECTION_CSGMERGE, OnSelectionCsgmerge)
436  ON_COMMAND(ID_SELECTION_DELETE, OnSelectionDelete)
437  ON_COMMAND(ID_SELECTION_DESELECT, OnSelectionDeselect)
438  ON_COMMAND(ID_SELECTION_DRAGEDGES, OnSelectionDragedges)
439  ON_COMMAND(ID_SELECTION_DRAGVERTECIES, OnSelectionDragvertecies)
440  ON_COMMAND(ID_SELECTION_CENTER_ORIGIN, OnSelectionCenterOrigin)
441  ON_COMMAND(ID_SELECTION_MAKEHOLLOW, OnSelectionMakehollow)
442  ON_COMMAND(ID_SELECTION_SELECTCOMPLETETALL, OnSelectionSelectcompletetall)
443  ON_COMMAND(ID_SELECTION_SELECTINSIDE, OnSelectionSelectinside)
444  ON_COMMAND(ID_SELECTION_SELECTPARTIALTALL, OnSelectionSelectpartialtall)
445  ON_COMMAND(ID_SELECTION_SELECTTOUCHING, OnSelectionSelecttouching)
446  ON_COMMAND(ID_SELECTION_UNGROUPENTITY, OnSelectionUngroupentity)
447  ON_COMMAND(ID_TEXTURES_POPUP, OnTexturesPopup)
448  ON_COMMAND(ID_SPLINES_POPUP, OnSplinesPopup)
449  ON_COMMAND(ID_SPLINES_EDITPOINTS, OnSplinesEditPoints)
450  ON_COMMAND(ID_SPLINES_ADDPOINTS, OnSplinesAddPoints)
451  ON_COMMAND(ID_SPLINES_INSERTPOINTS, OnSplinesInsertPoint)
452  ON_COMMAND(ID_SPLINES_DELETEPOINTS, OnSplinesDeletePoint)
453  ON_COMMAND(ID_POPUP_SELECTION, OnPopupSelection)
454  ON_COMMAND(ID_VIEW_CHANGE, OnViewChange)
455  ON_COMMAND(ID_VIEW_CAMERAUPDATE, OnViewCameraupdate)
456  ON_WM_SIZING()
457  ON_COMMAND(ID_HELP_ABOUT, OnHelpAbout)
458  ON_COMMAND(ID_VIEW_CLIPPER, OnViewClipper)
459  ON_COMMAND(ID_CAMERA_ANGLEDOWN, OnCameraAngledown)
460  ON_COMMAND(ID_CAMERA_ANGLEUP, OnCameraAngleup)
461  ON_COMMAND(ID_CAMERA_BACK, OnCameraBack)
462  ON_COMMAND(ID_CAMERA_DOWN, OnCameraDown)
463  ON_COMMAND(ID_CAMERA_FORWARD, OnCameraForward)
464  ON_COMMAND(ID_CAMERA_LEFT, OnCameraLeft)
465  ON_COMMAND(ID_CAMERA_RIGHT, OnCameraRight)
466  ON_COMMAND(ID_CAMERA_STRAFELEFT, OnCameraStrafeleft)
467  ON_COMMAND(ID_CAMERA_STRAFERIGHT, OnCameraStraferight)
468  ON_COMMAND(ID_CAMERA_UP, OnCameraUp)
469  ON_COMMAND(ID_GRID_TOGGLE, OnGridToggle)
470  ON_COMMAND(ID_PREFS, OnPrefs)
471  ON_COMMAND(ID_TOGGLECAMERA, OnTogglecamera)
472  ON_COMMAND(ID_TOGGLEVIEW, OnToggleview)
473  ON_COMMAND(ID_TOGGLEZ, OnTogglez)
474  ON_COMMAND(ID_TOGGLE_LOCK, OnToggleLock)
475  ON_COMMAND(ID_EDIT_MAPINFO, OnEditMapinfo)
476  ON_COMMAND(ID_EDIT_ENTITYINFO, OnEditEntityinfo)
477  ON_COMMAND(ID_VIEW_NEXTVIEW, OnViewNextview)
478  ON_COMMAND(ID_HELP_COMMANDLIST, OnHelpCommandlist)
479  ON_COMMAND(ID_FILE_NEWPROJECT, OnFileNewproject)
480  ON_COMMAND(ID_FLIP_CLIP, OnFlipClip)
481  ON_COMMAND(ID_CLIP_SELECTED, OnClipSelected)
482  ON_COMMAND(ID_SPLIT_SELECTED, OnSplitSelected)
483  ON_COMMAND(ID_TOGGLEVIEW_XZ, OnToggleviewXz)
484  ON_COMMAND(ID_TOGGLEVIEW_YZ, OnToggleviewYz)
485  ON_COMMAND(ID_COLORS_BRUSH, OnColorsBrush)
486  ON_COMMAND(ID_COLORS_CLIPPER, OnColorsClipper)
487  ON_COMMAND(ID_COLORS_GRIDTEXT, OnColorsGridtext)
488  ON_COMMAND(ID_COLORS_SELECTEDBRUSH, OnColorsSelectedbrush)
489  ON_COMMAND(ID_COLORS_GRIDBLOCK, OnColorsGridblock)
490  ON_COMMAND(ID_COLORS_VIEWNAME, OnColorsViewname)
491  ON_COMMAND(ID_COLOR_SETORIGINAL, OnColorSetoriginal)
492  ON_COMMAND(ID_COLOR_SETQER, OnColorSetqer)
493  ON_COMMAND(ID_COLOR_SUPERMAL, OnColorSetSuperMal)
494  ON_COMMAND(ID_THEMES_MAX , OnColorSetMax )
495  ON_COMMAND(ID_COLOR_SETBLACK, OnColorSetblack)
496  ON_COMMAND(ID_SNAPTOGRID, OnSnaptogrid)
497  ON_COMMAND(ID_SELECT_SCALE, OnSelectScale)
498  ON_COMMAND(ID_SELECT_MOUSEROTATE, OnSelectMouserotate)
499  ON_COMMAND(ID_EDIT_COPYBRUSH, OnEditCopybrush)
500  ON_COMMAND(ID_EDIT_PASTEBRUSH, OnEditPastebrush)
501  ON_COMMAND(ID_EDIT_UNDO, OnEditUndo)
502  ON_COMMAND(ID_EDIT_REDO, OnEditRedo)
503  ON_UPDATE_COMMAND_UI(ID_EDIT_UNDO, OnUpdateEditUndo)
504  ON_UPDATE_COMMAND_UI(ID_EDIT_REDO, OnUpdateEditRedo)
505  ON_COMMAND(ID_SELECTION_INVERT, OnSelectionInvert)
506  ON_COMMAND(ID_SELECTION_TEXTURE_DEC, OnSelectionTextureDec)
507  ON_COMMAND(ID_SELECTION_TEXTURE_FIT, OnSelectionTextureFit)
508  ON_COMMAND(ID_SELECTION_TEXTURE_INC, OnSelectionTextureInc)
509  ON_COMMAND(ID_SELECTION_TEXTURE_ROTATECLOCK, OnSelectionTextureRotateclock)
510  ON_COMMAND(ID_SELECTION_TEXTURE_ROTATECOUNTER, OnSelectionTextureRotatecounter)
511  ON_COMMAND(ID_SELECTION_TEXTURE_SCALEDOWN, OnSelectionTextureScaledown)
512  ON_COMMAND(ID_SELECTION_TEXTURE_SCALEUP, OnSelectionTextureScaleup)
513  ON_COMMAND(ID_SELECTION_TEXTURE_SHIFTDOWN, OnSelectionTextureShiftdown)
514  ON_COMMAND(ID_SELECTION_TEXTURE_SHIFTLEFT, OnSelectionTextureShiftleft)
515  ON_COMMAND(ID_SELECTION_TEXTURE_SHIFTRIGHT, OnSelectionTextureShiftright)
516  ON_COMMAND(ID_SELECTION_TEXTURE_SHIFTUP, OnSelectionTextureShiftup)
517  ON_COMMAND(ID_GRID_NEXT, OnGridNext)
518  ON_COMMAND(ID_GRID_PREV, OnGridPrev)
519  ON_COMMAND(ID_SELECTION_TEXTURE_SCALELEFT, OnSelectionTextureScaleLeft)
520  ON_COMMAND(ID_SELECTION_TEXTURE_SCALERIGHT, OnSelectionTextureScaleRight)
521  ON_COMMAND(ID_TEXTURE_REPLACEALL, OnTextureReplaceall)
522  ON_COMMAND(ID_SCALELOCKX, OnScalelockx)
523  ON_COMMAND(ID_SCALELOCKY, OnScalelocky)
524  ON_COMMAND(ID_SCALELOCKZ, OnScalelockz)
525  ON_COMMAND(ID_SELECT_MOUSESCALE, OnSelectMousescale)
526  ON_COMMAND(ID_VIEW_CUBICCLIPPING, OnViewCubicclipping)
527  ON_COMMAND(ID_FILE_IMPORT, OnFileImport)
528  ON_COMMAND(ID_FILE_PROJECTSETTINGS, OnFileProjectsettings)
529  ON_UPDATE_COMMAND_UI(ID_FILE_IMPORT, OnUpdateFileImport)
530  ON_COMMAND(ID_VIEW_CUBEIN, OnViewCubein)
531  ON_COMMAND(ID_VIEW_CUBEOUT, OnViewCubeout)
532  ON_COMMAND(ID_FILE_SAVEREGION, OnFileSaveregion)
533  ON_UPDATE_COMMAND_UI(ID_FILE_SAVEREGION, OnUpdateFileSaveregion)
534  ON_COMMAND(ID_SELECTION_MOVEDOWN, OnSelectionMovedown)
535  ON_COMMAND(ID_SELECTION_MOVEUP, OnSelectionMoveup)
536  ON_COMMAND(ID_TOOLBAR_MAIN, OnToolbarMain)
537  ON_COMMAND(ID_TOOLBAR_TEXTURE, OnToolbarTexture)
538  ON_COMMAND(ID_SELECTION_PRINT, OnSelectionPrint)
539  ON_COMMAND(ID_SELECTION_TOGGLESIZEPAINT, OnSelectionTogglesizepaint)
540  ON_COMMAND(ID_BRUSH_MAKECONE, OnBrushMakecone)
541  ON_COMMAND(ID_TEXTURES_LOAD, OnTexturesLoad)
542  ON_COMMAND(ID_TOGGLE_ROTATELOCK, OnToggleRotatelock)
543  ON_COMMAND(ID_CURVE_BEVEL, OnCurveBevel)
544  ON_COMMAND(ID_CURVE_INCREASE_VERT, OnCurveIncreaseVert)
545  ON_COMMAND(ID_CURVE_DECREASE_VERT, OnCurveDecreaseVert)
546  ON_COMMAND(ID_CURVE_INCREASE_HORZ, OnCurveIncreaseHorz)
547  ON_COMMAND(ID_CURVE_DECREASE_HORZ, OnCurveDecreaseHorz)
548  ON_COMMAND(ID_CURVE_CYLINDER, OnCurveCylinder)
549  ON_COMMAND(ID_CURVE_EIGHTHSPHERE, OnCurveEighthsphere)
550  ON_COMMAND(ID_CURVE_ENDCAP, OnCurveEndcap)
551  ON_COMMAND(ID_CURVE_HEMISPHERE, OnCurveHemisphere)
552  ON_COMMAND(ID_CURVE_INVERTCURVE, OnCurveInvertcurve)
553  ON_COMMAND(ID_CURVE_QUARTER, OnCurveQuarter)
554  ON_COMMAND(ID_CURVE_SPHERE, OnCurveSphere)
555  ON_COMMAND(ID_FILE_IMPORTMAP, OnFileImportmap)
556  ON_COMMAND(ID_FILE_EXPORTMAP, OnFileExportmap)
557  ON_COMMAND(ID_EDIT_LOADPREFAB, OnEditLoadprefab)
558  ON_COMMAND(ID_VIEW_SHOWCURVES, OnViewShowcurves)
559  ON_COMMAND(ID_SELECTION_SELECT_NUDGEDOWN, OnSelectionSelectNudgedown)
560  ON_COMMAND(ID_SELECTION_SELECT_NUDGELEFT, OnSelectionSelectNudgeleft)
561  ON_COMMAND(ID_SELECTION_SELECT_NUDGERIGHT, OnSelectionSelectNudgeright)
562  ON_COMMAND(ID_SELECTION_SELECT_NUDGEUP, OnSelectionSelectNudgeup)
563  ON_WM_SYSKEYDOWN()
564  ON_COMMAND(ID_TEXTURES_LOADLIST, OnTexturesLoadlist)
565  ON_COMMAND(ID_DYNAMIC_LIGHTING, OnDynamicLighting)
566  ON_COMMAND(ID_CURVE_SIMPLEPATCHMESH, OnCurveSimplepatchmesh)
567  ON_COMMAND(ID_PATCH_SHOWBOUNDINGBOX, OnPatchToggleBox)
568  ON_COMMAND(ID_PATCH_WIREFRAME, OnPatchWireframe)
569  ON_COMMAND(ID_CURVE_PATCHCONE, OnCurvePatchcone)
570  ON_COMMAND(ID_CURVE_PATCHTUBE, OnCurvePatchtube)
571  ON_COMMAND(ID_PATCH_WELD, OnPatchWeld)
572  ON_COMMAND(ID_CURVE_PATCHBEVEL, OnCurvePatchbevel)
573  ON_COMMAND(ID_CURVE_PATCHENDCAP, OnCurvePatchendcap)
574  ON_COMMAND(ID_CURVE_PATCHINVERTEDBEVEL, OnCurvePatchinvertedbevel)
575  ON_COMMAND(ID_CURVE_PATCHINVERTEDENDCAP, OnCurvePatchinvertedendcap)
576  ON_COMMAND(ID_PATCH_DRILLDOWN, OnPatchDrilldown)
577  ON_COMMAND(ID_CURVE_INSERTCOLUMN, OnCurveInsertcolumn)
578  ON_COMMAND(ID_CURVE_INSERTROW, OnCurveInsertrow)
579  ON_COMMAND(ID_CURVE_DELETECOLUMN, OnCurveDeletecolumn)
580  ON_COMMAND(ID_CURVE_DELETEROW, OnCurveDeleterow)
581  ON_COMMAND(ID_CURVE_INSERT_ADDCOLUMN, OnCurveInsertAddcolumn)
582  ON_COMMAND(ID_CURVE_INSERT_ADDROW, OnCurveInsertAddrow)
583  ON_COMMAND(ID_CURVE_INSERT_INSERTCOLUMN, OnCurveInsertInsertcolumn)
584  ON_COMMAND(ID_CURVE_INSERT_INSERTROW, OnCurveInsertInsertrow)
585  ON_COMMAND(ID_CURVE_NEGATIVE, OnCurveNegative)
586  ON_COMMAND(ID_CURVE_NEGATIVETEXTUREX, OnCurveNegativeTextureX)
587  ON_COMMAND(ID_CURVE_NEGATIVETEXTUREY, OnCurveNegativeTextureY)
588  ON_COMMAND(ID_CURVE_DELETE_FIRSTCOLUMN, OnCurveDeleteFirstcolumn)
589  ON_COMMAND(ID_CURVE_DELETE_FIRSTROW, OnCurveDeleteFirstrow)
590  ON_COMMAND(ID_CURVE_DELETE_LASTCOLUMN, OnCurveDeleteLastcolumn)
591  ON_COMMAND(ID_CURVE_DELETE_LASTROW, OnCurveDeleteLastrow)
592  ON_COMMAND(ID_PATCH_BEND, OnPatchBend)
593  ON_COMMAND(ID_PATCH_INSDEL, OnPatchInsdel)
594  ON_COMMAND(ID_PATCH_ENTER, OnPatchEnter)
595  ON_COMMAND(ID_PATCH_TAB, OnPatchTab)
596  ON_COMMAND(ID_CURVE_PATCHDENSETUBE, OnCurvePatchdensetube)
597  ON_COMMAND(ID_CURVE_PATCHVERYDENSETUBE, OnCurvePatchverydensetube)
598  ON_COMMAND(ID_CURVE_CAP, OnCurveCap)
599  ON_COMMAND(ID_CURVE_CAP_INVERTEDBEVEL, OnCurveCapInvertedbevel)
600  ON_COMMAND(ID_CURVE_CAP_INVERTEDENDCAP, OnCurveCapInvertedendcap)
601  ON_COMMAND(ID_CURVE_REDISPERSE_COLS, OnCurveRedisperseCols)
602  ON_COMMAND(ID_CURVE_REDISPERSE_ROWS, OnCurveRedisperseRows)
603  ON_COMMAND(ID_PATCH_NATURALIZE, OnPatchNaturalize)
604  ON_COMMAND(ID_PATCH_NATURALIZEALT, OnPatchNaturalizeAlt)
605  ON_COMMAND(ID_SELECT_SNAPTOGRID, OnSnapToGrid)
606  ON_COMMAND(ID_CURVE_PATCHSQUARE, OnCurvePatchsquare)
607  ON_COMMAND(ID_TEXTURES_TEXTUREWINDOWSCALE_10, OnTexturesTexturewindowscale10)
608  ON_COMMAND(ID_TEXTURES_TEXTUREWINDOWSCALE_100, OnTexturesTexturewindowscale100)
609  ON_COMMAND(ID_TEXTURES_TEXTUREWINDOWSCALE_200, OnTexturesTexturewindowscale200)
610  ON_COMMAND(ID_TEXTURES_TEXTUREWINDOWSCALE_25, OnTexturesTexturewindowscale25)
611  ON_COMMAND(ID_TEXTURES_TEXTUREWINDOWSCALE_50, OnTexturesTexturewindowscale50)
612  ON_COMMAND(ID_TEXTURES_FLUSH, OnTexturesFlush)
613  ON_COMMAND(ID_CURVE_OVERLAY_CLEAR, OnCurveOverlayClear)
614  ON_COMMAND(ID_CURVE_OVERLAY_SET, OnCurveOverlaySet)
615  ON_COMMAND(ID_CURVE_THICKEN, OnCurveThicken)
616  ON_COMMAND(ID_CURVE_CYCLECAP, OnCurveCyclecap)
617  ON_COMMAND(ID_CURVE_CYCLECAPALT, OnCurveCyclecapAlt)
618  ON_COMMAND(ID_CURVE_MATRIX_TRANSPOSE, OnCurveMatrixTranspose)
619  ON_COMMAND(ID_TEXTURES_RELOADSHADERS, OnTexturesReloadshaders)
620  ON_COMMAND(ID_SHOW_ENTITIES, OnShowEntities)
621  ON_COMMAND(ID_VIEW_ENTITIESAS_SKINNED, OnViewEntitiesasSkinned)
622  ON_COMMAND(ID_VIEW_ENTITIESAS_WIREFRAME, OnViewEntitiesasWireframe)
623  ON_COMMAND(ID_VIEW_SHOWHINT, OnViewShowhint)
624  ON_UPDATE_COMMAND_UI(ID_TEXTURES_SHOWINUSE, OnUpdateTexturesShowinuse)
625  ON_COMMAND(ID_TEXTURES_SHOWALL, OnTexturesShowall)
626  ON_COMMAND(ID_TEXTURES_HIDEALL, OnTexturesHideall)
627  ON_COMMAND(ID_PATCH_INSPECTOR, OnPatchInspector)
628  ON_COMMAND(ID_VIEW_OPENGLLIGHTING, OnViewOpengllighting)
629  ON_COMMAND(ID_SELECT_ALL, OnSelectAll)
630  ON_COMMAND(ID_VIEW_SHOWCAULK, OnViewShowcaulk)
631  ON_COMMAND(ID_CURVE_FREEZE, OnCurveFreeze)
632  ON_COMMAND(ID_CURVE_UNFREEZE, OnCurveUnFreeze)
633  ON_COMMAND(ID_CURVE_UNFREEZEALL, OnCurveUnFreezeAll)
634  ON_COMMAND(ID_SELECT_RESELECT, OnSelectReselect)
635  ON_COMMAND(ID_VIEW_SHOWANGLES, OnViewShowangles)
636  ON_COMMAND(ID_EDIT_SAVEPREFAB, OnEditSaveprefab)
637  ON_COMMAND(ID_CURVE_MOREENDCAPSBEVELS_SQUAREBEVEL, OnCurveMoreendcapsbevelsSquarebevel)
638  ON_COMMAND(ID_CURVE_MOREENDCAPSBEVELS_SQUAREENDCAP, OnCurveMoreendcapsbevelsSquareendcap)
639  ON_COMMAND(ID_BRUSH_PRIMITIVES_SPHERE, OnBrushPrimitivesSphere)
640  ON_COMMAND(ID_VIEW_CROSSHAIR, OnViewCrosshair)
641  ON_COMMAND(ID_VIEW_HIDESHOW_HIDESELECTED, OnViewHideshowHideselected)
642  ON_COMMAND(ID_VIEW_HIDESHOW_HIDENOTSELECTED, OnViewHideshowHideNotselected)
643  ON_COMMAND(ID_VIEW_HIDESHOW_SHOWHIDDEN, OnViewHideshowShowhidden)
644  ON_COMMAND(ID_TEXTURES_SHADERS_SHOW, OnTexturesShadersShow)
645  ON_COMMAND(ID_TEXTURES_FLUSH_UNUSED, OnTexturesFlushUnused)
646  ON_COMMAND(ID_PROJECTED_LIGHT, OnProjectedLight)
647  ON_COMMAND(ID_SHOW_LIGHTTEXTURES, OnShowLighttextures)
648  ON_COMMAND(ID_SHOW_LIGHTVOLUMES, OnShowLightvolumes)
649  ON_WM_ACTIVATE()
650  ON_COMMAND(ID_SPLINES_MODE, OnSplinesMode)
651  ON_COMMAND(ID_SPLINES_LOAD, OnSplinesLoad)
652  ON_COMMAND(ID_SPLINES_SAVE, OnSplinesSave)
653  //ON_COMMAND(ID_SPLINES_EDIT, OnSplinesEdit)
654  ON_COMMAND(ID_SPLINE_TEST, OnSplineTest)
655  ON_COMMAND(ID_POPUP_NEWCAMERA_INTERPOLATED, OnPopupNewcameraInterpolated)
656  ON_COMMAND(ID_POPUP_NEWCAMERA_SPLINE, OnPopupNewcameraSpline)
657  ON_COMMAND(ID_POPUP_NEWCAMERA_FIXED, OnPopupNewcameraFixed)
658  ON_COMMAND(ID_SELECTION_MOVEONLY, OnSelectionMoveonly)
659  ON_COMMAND(ID_SELECT_BRUSHESONLY, OnSelectBrushesOnly)
660  ON_COMMAND(ID_SELECT_BYBOUNDINGBRUSH, OnSelectByBoundingBrush)
661  ON_COMMAND(ID_SELECTION_COMBINE, OnSelectionCombine)
662  ON_COMMAND(ID_PATCH_COMBINE, OnPatchCombine)
663  ON_COMMAND(ID_SHOW_DOOM, OnShowDoom)
664  ON_COMMAND(ID_VIEW_RENDERMODE, OnViewRendermode)
665  ON_COMMAND(ID_VIEW_REBUILDRENDERDATA, OnViewRebuildrenderdata)
666  ON_COMMAND(ID_VIEW_REALTIMEREBUILD, OnViewRealtimerebuild)
667  ON_COMMAND(ID_VIEW_RENDERENTITYOUTLINES, OnViewRenderentityoutlines)
668  ON_COMMAND(ID_VIEW_MATERIALANIMATION, OnViewMaterialanimation)
669  ON_COMMAND(ID_SELECT_AXIALTEXTURE_BYWIDTH, OnAxialTextureByWidth)
670  ON_COMMAND(ID_SELECT_AXIALTEXTURE_BYHEIGHT, OnAxialTextureByHeight)
671  ON_COMMAND(ID_SELECT_AXIALTEXTURE_ARBITRARY, OnAxialTextureArbitrary)
672  ON_COMMAND(ID_SELECTION_EXPORT_TOOBJ, OnSelectionExportToobj)
673  ON_COMMAND(ID_SELECTION_EXPORT_TOCM, OnSelectionExportToCM)
674  ON_COMMAND(ID_VIEW_RENDERSELECTION, OnViewRenderselection)
675  ON_COMMAND(ID_SELECT_NOMODELS, OnSelectNomodels)
676  ON_COMMAND(ID_VIEW_SHOW_SHOWVISPORTALS, OnViewShowShowvisportals)
677  ON_COMMAND(ID_VIEW_SHOW_NODRAW, OnViewShowNoDraw)
678  ON_COMMAND(ID_VIEW_RENDERSOUND, OnViewRendersound)
679  ON_COMMAND(ID_SOUND_SHOWSOUNDVOLUMES, OnSoundShowsoundvolumes)
680  ON_COMMAND(ID_SOUND_SHOWSELECTEDSOUNDVOLUMES, OnSoundShowselectedsoundvolumes)
681  ON_COMMAND(ID_PATCH_NURBEDITOR, OnNurbEditor)
682  ON_COMMAND(ID_SELECT_COMPLETE_ENTITY, OnSelectCompleteEntity)
683  ON_COMMAND(ID_PRECISION_CURSOR_CYCLE , OnPrecisionCursorCycle)
684  ON_COMMAND(ID_MATERIALS_GENERATEMATERIALSLIST,OnGenerateMaterialsList)
685  ON_COMMAND(ID_SELECTION_VIEW_WIREFRAMEON, OnSelectionWireFrameOn)
686  ON_COMMAND(ID_SELECTION_VIEW_WIREFRAMEOFF, OnSelectionWireFrameOff)
687  ON_COMMAND(ID_SELECTION_VIEW_VISIBLEON, OnSelectionVisibleOn)
688  ON_COMMAND(ID_SELECTION_VIEW_VISIBLEOFF, OnSelectionVisibleOff)
689  //}}AFX_MSG_MAP
690  ON_COMMAND_RANGE(CMD_TEXTUREWAD, CMD_TEXTUREWAD_END, OnTextureWad)
691  ON_COMMAND_RANGE(CMD_BSPCOMMAND, CMD_BSPCOMMAND_END, OnBspCommand)
692  ON_COMMAND_RANGE(IDMRU, IDMRU_END, OnMru)
693  ON_COMMAND_RANGE(ID_VIEW_NEAREST, ID_TEXTURES_FLATSHADE, OnViewNearest)
694  ON_COMMAND_RANGE(ID_GRID_POINT0625, ID_GRID_64, OnGrid1)
695 #if _MSC_VER < 1300
696  ON_REGISTERED_MESSAGE(g_msgBSPDone, OnBSPDone)
697  ON_REGISTERED_MESSAGE(g_msgBSPStatus, OnBSPStatus)
698  ON_MESSAGE(WM_DISPLAYCHANGE, OnDisplayChange)
699 #endif
700  ON_COMMAND(ID_AUTOCAULK, OnAutocaulk)
701  ON_UPDATE_COMMAND_UI(ID_AUTOCAULK, OnUpdateAutocaulk)
702  ON_COMMAND(ID_SELECT_ALLTARGETS, OnSelectAlltargets)
703  END_MESSAGE_MAP()
704 static UINT indicators[] = {
705  ID_SEPARATOR, // status line indicator
706  ID_SEPARATOR, // status line indicator
707  ID_SEPARATOR, // status line indicator
708  ID_SEPARATOR, // status line indicator
709  ID_SEPARATOR, // status line indicator
710  ID_SEPARATOR, // status line indicator
711 };
712 
713 /*
714  =======================================================================================================================
715  =======================================================================================================================
716  */
717 void CMainFrame::OnDisplayChange(UINT wParam, long lParam) {
718  int n = wParam;
719 }
720 
721 /*
722  =======================================================================================================================
723  =======================================================================================================================
724  */
725 void CMainFrame::OnBSPStatus(UINT wParam, long lParam) {
726  // lparam is an atom contain the text
727  char buff[1024];
728  if (::GlobalGetAtomName(static_cast<ATOM>(lParam), buff, sizeof(buff))) {
729  common->Printf("%s", buff);
730  ::GlobalDeleteAtom(static_cast<ATOM>(lParam));
731  }
732 }
733 
734 /*
735  =======================================================================================================================
736  =======================================================================================================================
737  */
738 void CMainFrame::OnBSPDone(UINT wParam, long lParam) {
739  idStr str = cvarSystem->GetCVarString( "radiant_bspdone" );
740  if (str.Length()) {
741  sndPlaySound(str.c_str(), SND_FILENAME | SND_ASYNC);
742  }
743 }
744 
745 //
746 // =======================================================================================================================
747 // CMainFrame construction/destruction
748 // =======================================================================================================================
749 //
751  m_bDoLoop = false;
752  g_pParentWnd = this;
753  m_pXYWnd = NULL;
754  m_pCamWnd = NULL;
755  m_pZWnd = NULL;
756  m_pYZWnd = NULL;
757  m_pXZWnd = NULL;
758  m_pActiveXY = NULL;
759  m_bCamPreview = true;
760  nurbMode = 0;
761 }
762 
763 /*
764  =======================================================================================================================
765  =======================================================================================================================
766  */
768 }
769 
770 /*
771  =======================================================================================================================
772  =======================================================================================================================
773  */
774 void HandlePopup(CWnd *pWindow, unsigned int uId) {
775  // Get the current position of the mouse
776  CPoint ptMouse;
777  GetCursorPos(&ptMouse);
778 
779  // Load up a menu that has the options we are looking for in it
780  CMenu mnuPopup;
781  VERIFY(mnuPopup.LoadMenu(uId));
782  mnuPopup.GetSubMenu(0)->TrackPopupMenu
783  (
784  TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_RIGHTBUTTON,
785  ptMouse.x,
786  ptMouse.y,
787  pWindow
788  );
789  mnuPopup.DestroyMenu();
790 
791  // Set focus back to window
792  pWindow->SetFocus();
793 }
794 
795 /*
796  =======================================================================================================================
797  =======================================================================================================================
798  */
799 void CMainFrame::OnParentNotify(UINT message, LPARAM lParam) {
800 }
801 
802 /*
803  =======================================================================================================================
804  =======================================================================================================================
805  */
807  CMenu *pMenu = GetMenu();
808  if (pMenu) {
809  //
810  pMenu->CheckMenuItem(ID_VIEW_SHOWNAMES, MF_BYCOMMAND | MF_CHECKED);
811  pMenu->CheckMenuItem(ID_VIEW_SHOWCOORDINATES, MF_BYCOMMAND | MF_CHECKED);
812  pMenu->CheckMenuItem(ID_VIEW_SHOWLIGHTS, MF_BYCOMMAND | MF_CHECKED);
813  pMenu->CheckMenuItem(ID_VIEW_SHOWCOMBATNODES, MF_BYCOMMAND | MF_CHECKED);
814  pMenu->CheckMenuItem(ID_VIEW_ENTITY, MF_BYCOMMAND | MF_CHECKED);
815  pMenu->CheckMenuItem(ID_VIEW_SHOWPATH, MF_BYCOMMAND | MF_CHECKED);
816  pMenu->CheckMenuItem(ID_VIEW_SHOWWATER, MF_BYCOMMAND | MF_CHECKED);
817  pMenu->CheckMenuItem(ID_VIEW_SHOWWORLD, MF_BYCOMMAND | MF_CHECKED);
818  pMenu->CheckMenuItem(ID_VIEW_SHOWCLIP, MF_BYCOMMAND | MF_CHECKED);
819  pMenu->CheckMenuItem(ID_VIEW_SHOWTRIGGERS, MF_BYCOMMAND | MF_CHECKED);
820  pMenu->CheckMenuItem(ID_VIEW_SHOWHINT, MF_BYCOMMAND | MF_CHECKED);
821  pMenu->CheckMenuItem(ID_VIEW_SHOWCAULK, MF_BYCOMMAND | MF_CHECKED);
822  pMenu->CheckMenuItem(ID_VIEW_SHOW_SHOWVISPORTALS, MF_BYCOMMAND | MF_CHECKED);
823  pMenu->CheckMenuItem(ID_VIEW_SHOW_NODRAW, MF_BYCOMMAND | MF_CHECKED);
824  pMenu->CheckMenuItem(ID_VIEW_SHOWANGLES, MF_BYCOMMAND | MF_CHECKED);
825 
826  if (!g_qeglobals.d_savedinfo.show_names) {
827  pMenu->CheckMenuItem(ID_VIEW_SHOWNAMES, MF_BYCOMMAND | MF_UNCHECKED);
828  }
829 
830  if (!g_qeglobals.d_savedinfo.show_coordinates) {
831  pMenu->CheckMenuItem(ID_VIEW_SHOWCOORDINATES, MF_BYCOMMAND | MF_UNCHECKED);
832  }
833 
834  if (g_qeglobals.d_savedinfo.exclude & EXCLUDE_LIGHTS) {
835  pMenu->CheckMenuItem(ID_VIEW_SHOWLIGHTS, MF_BYCOMMAND | MF_UNCHECKED);
836  }
837 
838  if (g_qeglobals.d_savedinfo.exclude & EXCLUDE_COMBATNODES) {
839  pMenu->CheckMenuItem(ID_VIEW_SHOWCOMBATNODES, MF_BYCOMMAND | MF_UNCHECKED);
840  }
841 
842  if (g_qeglobals.d_savedinfo.exclude & EXCLUDE_ENT) {
843  pMenu->CheckMenuItem(ID_VIEW_ENTITY, MF_BYCOMMAND | MF_UNCHECKED);
844  }
845 
846  if (g_qeglobals.d_savedinfo.exclude & EXCLUDE_PATHS) {
847  pMenu->CheckMenuItem(ID_VIEW_SHOWPATH, MF_BYCOMMAND | MF_UNCHECKED);
848  }
849 
850  if (g_qeglobals.d_savedinfo.exclude & EXCLUDE_DYNAMICS) {
851  pMenu->CheckMenuItem(ID_VIEW_SHOWWATER, MF_BYCOMMAND | MF_UNCHECKED);
852  }
853 
854  if (g_qeglobals.d_savedinfo.exclude & EXCLUDE_WORLD) {
855  pMenu->CheckMenuItem(ID_VIEW_SHOWWORLD, MF_BYCOMMAND | MF_UNCHECKED);
856  }
857 
858  if (g_qeglobals.d_savedinfo.exclude & EXCLUDE_CLIP) {
859  pMenu->CheckMenuItem(ID_VIEW_SHOWCLIP, MF_BYCOMMAND | MF_UNCHECKED);
860  }
861 
862  if (g_qeglobals.d_savedinfo.exclude & EXCLUDE_TRIGGERS) {
863  pMenu->CheckMenuItem(ID_VIEW_SHOWTRIGGERS, MF_BYCOMMAND | MF_UNCHECKED);
864  }
865 
866  if (g_qeglobals.d_savedinfo.exclude & EXCLUDE_HINT) {
867  pMenu->CheckMenuItem(ID_VIEW_SHOWHINT, MF_BYCOMMAND | MF_UNCHECKED);
868  }
869 
870  if (g_qeglobals.d_savedinfo.exclude & EXCLUDE_CAULK) {
871  pMenu->CheckMenuItem(ID_VIEW_SHOWCAULK, MF_BYCOMMAND | MF_UNCHECKED);
872  }
873 
874  if (g_qeglobals.d_savedinfo.exclude & EXCLUDE_VISPORTALS) {
875  pMenu->CheckMenuItem(ID_VIEW_SHOW_SHOWVISPORTALS, MF_BYCOMMAND | MF_UNCHECKED);
876  }
877 
878  if (g_qeglobals.d_savedinfo.exclude & EXCLUDE_NODRAW) {
879  pMenu->CheckMenuItem(ID_VIEW_SHOW_NODRAW, MF_BYCOMMAND | MF_UNCHECKED);
880  }
881 
882  if (g_qeglobals.d_savedinfo.exclude & EXCLUDE_ANGLES) {
883  pMenu->CheckMenuItem(ID_VIEW_SHOWANGLES, MF_BYCOMMAND | MF_UNCHECKED);
884  }
885 
886  pMenu->CheckMenuItem(ID_TOGGLE_LOCK, MF_BYCOMMAND | (g_PrefsDlg.m_bTextureLock) ? MF_CHECKED : MF_UNCHECKED);
887  pMenu->CheckMenuItem
888  (
889  ID_TOGGLE_ROTATELOCK,
890  MF_BYCOMMAND | (g_PrefsDlg.m_bRotateLock) ? MF_CHECKED : MF_UNCHECKED
891  );
892  pMenu->CheckMenuItem
893  (
894  ID_VIEW_CUBICCLIPPING,
895  MF_BYCOMMAND | (g_PrefsDlg.m_bCubicClipping) ? MF_CHECKED : MF_UNCHECKED
896  );
897  pMenu->CheckMenuItem
898  (
899  ID_VIEW_OPENGLLIGHTING,
900  MF_BYCOMMAND | (g_PrefsDlg.m_bGLLighting) ? MF_CHECKED : MF_UNCHECKED
901  );
902  pMenu->CheckMenuItem(ID_SNAPTOGRID, MF_BYCOMMAND | (!g_PrefsDlg.m_bNoClamp) ? MF_CHECKED : MF_UNCHECKED);
903  if (m_wndToolBar.GetSafeHwnd()) {
904  m_wndToolBar.GetToolBarCtrl().CheckButton
905  (
906  ID_VIEW_CUBICCLIPPING,
907  (g_PrefsDlg.m_bCubicClipping) ? TRUE : FALSE
908  );
909  }
910 
911  int n = g_PrefsDlg.m_nTextureScale;
912  int id;
913  switch (n)
914  {
915  case 10:
917  break;
918  case 25:
920  break;
921  case 50:
923  break;
924  case 200:
926  break;
927  default:
929  break;
930  }
931 
932  CheckTextureScale(id);
933  }
934 
935  if (g_qeglobals.d_project_entity) {
936  // FillTextureMenu(); // redundant but i'll clean it up later.. yeah right..
937  FillBSPMenu();
938  LoadMruInReg(g_qeglobals.d_lpMruMenu, "Software\\" EDITOR_REGISTRY_KEY "\\MRU" );
939  PlaceMenuMRUItem(g_qeglobals.d_lpMruMenu, ::GetSubMenu(::GetMenu(GetSafeHwnd()), 0), ID_FILE_EXIT);
940  }
941 }
942 
943 /*
944  =======================================================================================================================
945  =======================================================================================================================
946  */
948  int i, j;
949  char key[1024], *ptr;
950  MENUITEMINFO MenuItemInfo;
951 
952  // return;
953  for (i = 0; i < g_nCommandCount; i++) {
954  memset(&MenuItemInfo, 0, sizeof(MENUITEMINFO));
955  MenuItemInfo.cbSize = sizeof(MENUITEMINFO);
956  MenuItemInfo.fMask = MIIM_TYPE;
957  MenuItemInfo.dwTypeData = key;
958  MenuItemInfo.cch = sizeof(key);
959  if (!pMenu->GetMenuItemInfo(g_Commands[i].m_nCommand, &MenuItemInfo)) {
960  continue;
961  }
962 
963  if (MenuItemInfo.fType != MFT_STRING) {
964  continue;
965  }
966 
967  ptr = strchr(key, '\t');
968  if (ptr) {
969  *ptr = '\0';
970  }
971 
972  strcat(key, "\t");
973  if (g_Commands[i].m_nModifiers) { // are there modifiers present?
974  if (g_Commands[i].m_nModifiers & RAD_SHIFT) {
975  strcat(key, "Shift-");
976  }
977 
978  if (g_Commands[i].m_nModifiers & RAD_ALT) {
979  strcat(key, "Alt-");
980  }
981 
982  if (g_Commands[i].m_nModifiers & RAD_CONTROL) {
983  strcat(key, "Ctrl-");
984  }
985  }
986 
987  for (j = 0; j < g_nKeyCount; j++) {
988  if (g_Commands[i].m_nKey == g_Keys[j].m_nVKKey) {
989  strcat(key, g_Keys[j].m_strName);
990  break;
991  }
992  }
993 
994  if (j >= g_nKeyCount) {
995  sprintf(&key[strlen(key)], "%c", g_Commands[i].m_nKey);
996  }
997 
998  memset(&MenuItemInfo, 0, sizeof(MENUITEMINFO));
999  MenuItemInfo.cbSize = sizeof(MENUITEMINFO);
1000  MenuItemInfo.fMask = MIIM_TYPE;
1001  MenuItemInfo.fType = MFT_STRING;
1002  MenuItemInfo.dwTypeData = key;
1003  MenuItemInfo.cch = strlen(key);
1004  SetMenuItemInfo(pMenu->m_hMenu, g_Commands[i].m_nCommand, FALSE, &MenuItemInfo);
1005  }
1006 }
1007 
1008 /*
1009 ==============
1010 MFCCreate
1011 ==============
1012 */
1013 void MFCCreate( HINSTANCE hInstance )
1014 {
1015  HMENU hMenu = NULL;
1016  int i = sizeof(g_qeglobals.d_savedinfo);
1017  long l = i;
1018 
1019  g_qeglobals.d_savedinfo.exclude |= (EXCLUDE_HINT | EXCLUDE_CLIP);
1020  LoadRegistryInfo("radiant_SavedInfo", &g_qeglobals.d_savedinfo, &l);
1021 
1022  int nOldSize = g_qeglobals.d_savedinfo.iSize;
1023  if (g_qeglobals.d_savedinfo.iSize != sizeof(g_qeglobals.d_savedinfo)) {
1024  // fill in new defaults
1025  g_qeglobals.d_savedinfo.iSize = sizeof(g_qeglobals.d_savedinfo);
1026  g_qeglobals.d_savedinfo.fGamma = 1.0;
1027  g_qeglobals.d_savedinfo.iTexMenu = ID_VIEW_BILINEARMIPMAP;
1028  g_qeglobals.d_savedinfo.m_nTextureTweak = 1.0;
1029 
1030  //g_qeglobals.d_savedinfo.exclude = INCLUDE_EASY | INCLUDE_NORMAL | INCLUDE_HARD | INCLUDE_DEATHMATCH;
1031  g_qeglobals.d_savedinfo.show_coordinates = true;
1032  g_qeglobals.d_savedinfo.show_names = false;
1033 
1034  for (i=0 ; i<3 ; i++) {
1035  g_qeglobals.d_savedinfo.colors[COLOR_TEXTUREBACK][i] = 0;
1036  g_qeglobals.d_savedinfo.colors[COLOR_GRIDBACK][i] = 1.0;
1037  g_qeglobals.d_savedinfo.colors[COLOR_GRIDMINOR][i] = 0.75;
1038  g_qeglobals.d_savedinfo.colors[COLOR_GRIDMAJOR][i] = 0.5;
1039  g_qeglobals.d_savedinfo.colors[COLOR_CAMERABACK][i] = 0.25;
1040  }
1041 
1042  g_qeglobals.d_savedinfo.colors[COLOR_GRIDBLOCK][0] = 0.0;
1043  g_qeglobals.d_savedinfo.colors[COLOR_GRIDBLOCK][1] = 0.0;
1044  g_qeglobals.d_savedinfo.colors[COLOR_GRIDBLOCK][2] = 1.0;
1045 
1046  g_qeglobals.d_savedinfo.colors[COLOR_GRIDTEXT][0] = 0.0;
1047  g_qeglobals.d_savedinfo.colors[COLOR_GRIDTEXT][1] = 0.0;
1048  g_qeglobals.d_savedinfo.colors[COLOR_GRIDTEXT][2] = 0.0;
1049 
1050  g_qeglobals.d_savedinfo.colors[COLOR_SELBRUSHES][0] = 1.0;
1051  g_qeglobals.d_savedinfo.colors[COLOR_SELBRUSHES][1] = 0.0;
1052  g_qeglobals.d_savedinfo.colors[COLOR_SELBRUSHES][2] = 0.0;
1053 
1054  g_qeglobals.d_savedinfo.colors[COLOR_CLIPPER][0] = 0.0;
1055  g_qeglobals.d_savedinfo.colors[COLOR_CLIPPER][1] = 0.0;
1056  g_qeglobals.d_savedinfo.colors[COLOR_CLIPPER][2] = 1.0;
1057 
1058  g_qeglobals.d_savedinfo.colors[COLOR_BRUSHES][0] = 0.0;
1059  g_qeglobals.d_savedinfo.colors[COLOR_BRUSHES][1] = 0.0;
1060  g_qeglobals.d_savedinfo.colors[COLOR_BRUSHES][2] = 0.0;
1061 
1062  g_qeglobals.d_savedinfo.colors[COLOR_VIEWNAME][0] = 0.5;
1063  g_qeglobals.d_savedinfo.colors[COLOR_VIEWNAME][1] = 0.0;
1064  g_qeglobals.d_savedinfo.colors[COLOR_VIEWNAME][2] = 0.75;
1065 
1066 
1067  // old size was smaller, reload original prefs
1068  if (nOldSize > 0 && nOldSize < sizeof(g_qeglobals.d_savedinfo)) {
1069  long l = nOldSize;
1070  LoadRegistryInfo("radiant_SavedInfo", &g_qeglobals.d_savedinfo, &l);
1071  }
1072  }
1073 }
1074 
1075 /*
1076  =======================================================================================================================
1077  =======================================================================================================================
1078  */
1079 int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) {
1080  char *pBuffer = g_strAppPath.GetBufferSetLength(_MAX_PATH + 1);
1081  int nResult = ::GetModuleFileName(NULL, pBuffer, _MAX_PATH);
1082  ASSERT(nResult != 0);
1083  pBuffer[g_strAppPath.ReverseFind('\\') + 1] = '\0';
1084  g_strAppPath.ReleaseBuffer();
1085 
1087 
1088  InitCommonControls();
1089  g_qeglobals.d_hInstance = AfxGetInstanceHandle();
1090  MFCCreate(AfxGetInstanceHandle());
1091 
1092  // g_PrefsDlg.LoadPrefs();
1093  if (CFrameWnd::OnCreate(lpCreateStruct) == -1) {
1094  return -1;
1095  }
1096 
1097  UINT nID = (g_PrefsDlg.m_bWideToolbar) ? IDR_TOOLBAR_ADVANCED : IDR_TOOLBAR1;
1098 
1099  if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
1100  | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || !m_wndToolBar.LoadToolBar(nID)) {
1101  TRACE0("Failed to create toolbar\n");
1102  return -1; // fail to create
1103  }
1104 
1105  if (!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators) / sizeof(UINT))) {
1106  TRACE0("Failed to create status bar\n");
1107  return -1; // fail to create
1108  }
1109 
1110  m_bCamPreview = true;
1111 
1112  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SCALELOCKX, FALSE);
1113  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SCALELOCKY, FALSE);
1114  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SCALELOCKZ, FALSE);
1115  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SELECT_BYBOUNDINGBRUSH, FALSE);
1116  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SELECT_BRUSHESONLY, FALSE);
1117  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_PATCH_SHOWBOUNDINGBOX, FALSE);
1118  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_PATCH_WELD, TRUE);
1119  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_PATCH_DRILLDOWN, TRUE);
1120  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SHOW_LIGHTVOLUMES, FALSE);
1121  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SHOW_LIGHTTEXTURES, FALSE);
1122  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SELECTION_MOVEONLY, FALSE);
1123  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SOUND_SHOWSOUNDVOLUMES,g_qeglobals.d_savedinfo.showSoundAlways);
1124  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SOUND_SHOWSELECTEDSOUNDVOLUMES,g_qeglobals.d_savedinfo.showSoundWhenSelected);
1125 
1126  m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
1127  EnableDocking(CBRS_ALIGN_ANY);
1128  DockControlBar(&m_wndToolBar);
1129 
1130  g_nScaleHow = 0;
1131 
1132  m_wndTextureBar.Create(this, IDD_TEXTUREBAR, CBRS_BOTTOM, 7433);
1133  m_wndTextureBar.EnableDocking(CBRS_ALIGN_ANY);
1134  DockControlBar(&m_wndTextureBar);
1135 
1136  g_qeglobals.d_lpMruMenu = CreateMruMenuDefault();
1137 
1138  m_bAutoMenuEnable = FALSE;
1139 
1140  LoadCommandMap();
1141 
1142  CMenu *pMenu = GetMenu();
1143  ShowMenuItemKeyBindings(pMenu);
1144 
1145  CFont *pFont = new CFont();
1146  pFont->CreatePointFont(g_PrefsDlg.m_nStatusSize * 10, "Arial");
1147  m_wndStatusBar.SetFont(pFont);
1148 
1149 
1150  if (g_PrefsDlg.m_bRunBefore == FALSE) {
1151  g_PrefsDlg.m_bRunBefore = TRUE;
1152  g_PrefsDlg.SavePrefs();
1153 
1154  /*
1155  * if (MessageBox("Would you like QERadiant to build and load a default project?
1156  * If this is the first time you have run QERadiant or you are not familiar with
1157  * editing QE4 project files directly, this is HIGHLY recommended", "Create a
1158  * default project?", MB_YESNO) == IDYES) { OnFileNewproject(); }
1159  */
1160  }
1161  else
1162  {
1163  // load plugins before the first Map_LoadFile required for model plugins
1164  if (g_PrefsDlg.m_bLoadLastMap && g_PrefsDlg.m_strLastMap.GetLength() > 0) {
1165  Map_LoadFile(g_PrefsDlg.m_strLastMap.GetBuffer(0));
1166  }
1167  }
1168 
1169  SetGridStatus();
1170  SetTexValStatus();
1172  LoadBarState("RadiantToolBars2");
1173 
1175  m_pXYWnd->SetFocus();
1176 
1177  PostMessage(WM_KEYDOWN, 'O', NULL);
1178 
1179  if ( radiant_entityMode.GetBool() ) {
1180  g_qeglobals.d_savedinfo.exclude |= (EXCLUDE_PATHS | EXCLUDE_CLIP | EXCLUDE_CAULK | EXCLUDE_VISPORTALS | EXCLUDE_NODRAW | EXCLUDE_TRIGGERS);
1181  }
1182 
1183  Sys_UpdateWindows ( W_ALL );
1184  return 0;
1185 }
1186 
1187 /*
1188  =======================================================================================================================
1189  =======================================================================================================================
1190  */
1191 
1192 void FindReplace(CString& strContents, const char* pTag, const char* pValue) {
1193  if (strcmp(pTag, pValue) == 0)
1194  return;
1195  for (int nPos = strContents.Find(pTag); nPos >= 0; nPos = strContents.Find(pTag)) {
1196  int nRightLen = strContents.GetLength() - strlen(pTag) - nPos;
1197  CString strLeft = strContents.Left(nPos);
1198  CString strRight = strContents.Right(nRightLen);
1199  strLeft += pValue;
1200  strLeft += strRight;
1201  strContents = strLeft;
1202  }
1203 }
1204 
1206  CString strINI;
1207  char pBuff[1024];
1208  strINI = g_strAppPath;
1209  strINI += "\\radiant.ini";
1210 
1211  for (int i = 0; i < g_nCommandCount; i++) {
1212  int nLen = GetPrivateProfileString("Commands", g_Commands[i].m_strCommand, "", pBuff, 1024, strINI);
1213  if (nLen > 0) {
1214  CString strBuff = pBuff;
1215  strBuff.TrimLeft();
1216  strBuff.TrimRight();
1217 
1218  int nSpecial = strBuff.Find("+alt");
1219  g_Commands[i].m_nModifiers = 0;
1220  if (nSpecial >= 0) {
1221  g_Commands[i].m_nModifiers |= RAD_ALT;
1222  FindReplace(strBuff, "+alt", "");
1223  }
1224 
1225  nSpecial = strBuff.Find("+ctrl");
1226  if (nSpecial >= 0) {
1227  g_Commands[i].m_nModifiers |= RAD_CONTROL;
1228  FindReplace(strBuff, "+ctrl", "");
1229  }
1230 
1231  nSpecial = strBuff.Find("+shift");
1232  if (nSpecial >= 0) {
1233  g_Commands[i].m_nModifiers |= RAD_SHIFT;
1234  FindReplace(strBuff, "+shift", "");
1235  }
1236 
1237  strBuff.TrimLeft();
1238  strBuff.TrimRight();
1239  strBuff.MakeUpper();
1240  if (nLen == 1) { // most often case.. deal with first
1241  g_Commands[i].m_nKey = __toascii(strBuff.GetAt(0));
1242  }
1243  else { // special key
1244  for (int j = 0; j < g_nKeyCount; j++) {
1245  if (strBuff.CompareNoCase(g_Keys[j].m_strName) == 0) {
1246  g_Commands[i].m_nKey = g_Keys[j].m_nVKKey;
1247  break;
1248  }
1249  }
1250  }
1251  }
1252  }
1253 }
1254 
1255 /*
1256  =======================================================================================================================
1257  =======================================================================================================================
1258  */
1260  // TODO: Modify the Window class or styles here by modifying the CREATESTRUCT cs
1261  return CFrameWnd::PreCreateWindow(cs);
1262 }
1263 
1264 // CMainFrame diagnostics
1265 #ifdef _DEBUG
1266 
1267 /*
1268  =======================================================================================================================
1269  =======================================================================================================================
1270  */
1271 void CMainFrame::AssertValid() const {
1272  CFrameWnd::AssertValid();
1273 }
1274 
1275 /*
1276  =======================================================================================================================
1277  =======================================================================================================================
1278  */
1279 void CMainFrame::Dump(CDumpContext &dc) const {
1280  CFrameWnd::Dump(dc);
1281 }
1282 #endif // _DEBUG
1283 
1284 //
1285 // =======================================================================================================================
1286 // CMainFrame message handlers
1287 // =======================================================================================================================
1288 //
1290  //
1291  // the project file can be specified on the command line, or implicitly found in
1292  // the basedir directory
1293  //
1294  bool bProjectLoaded = false;
1295  if (g_PrefsDlg.m_bLoadLast && g_PrefsDlg.m_strLastProject.GetLength() > 0) {
1296  bProjectLoaded = QE_LoadProject(g_PrefsDlg.m_strLastProject.GetBuffer(0));
1297  }
1298  if (!bProjectLoaded) {
1299  bProjectLoaded = QE_LoadProject( EDITOR_DEFAULT_PROJECT );
1300  }
1301 
1302  if (!bProjectLoaded) {
1303  CFileDialog dlgFile( true, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, EDITOR_WINDOWTEXT " Project files (*.qe4, *.prj)|*.qe4|*.prj||", this );
1304  if (dlgFile.DoModal() == IDOK) {
1305  bProjectLoaded = QE_LoadProject(dlgFile.GetPathName().GetBuffer(0));
1306  }
1307  }
1308 
1309  if (!bProjectLoaded) {
1310  Error("Unable to load project file. It was unavailable in the scripts path and the default could not be found");
1311  }
1312 
1313  QE_Init();
1314 
1315  common->Printf("Entering message loop\n");
1316 
1317  m_bDoLoop = true;
1318  SetTimer(QE_TIMER0, 100, NULL);
1319  SetTimer(QE_TIMER1, g_PrefsDlg.m_nAutoSave * 60 * 1000, NULL);
1320 }
1321 
1322 /*
1323  =======================================================================================================================
1324  =======================================================================================================================
1325  */
1326 BOOL CMainFrame::OnCommand(WPARAM wParam, LPARAM lParam) {
1327  return CFrameWnd::OnCommand(wParam, lParam);
1328 }
1329 
1330 /*
1331  =======================================================================================================================
1332  =======================================================================================================================
1333  */
1334 LRESULT CMainFrame::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam) {
1335  //RoutineProcessing();
1336  return CFrameWnd::DefWindowProc(message, wParam, lParam);
1337 }
1338 
1339 /*
1340  =======================================================================================================================
1341  =======================================================================================================================
1342  */
1344  if (m_bDoLoop) {
1345  double time = 0.0;
1346  static double oldtime = 0.0;
1347  double delta = 0.0;
1348 
1349  time = Sys_DoubleTime();
1350  delta = time - oldtime;
1351  oldtime = time;
1352  if (delta > 0.2) {
1353  delta = 0.2;
1354  }
1355 
1356  // run time dependant behavior
1357  if (m_pCamWnd) {
1358  m_pCamWnd->Cam_MouseControl(delta);
1359  }
1360 
1361  if (g_PrefsDlg.m_bQE4Painting && g_nUpdateBits) {
1362  int nBits = g_nUpdateBits; // this is done to keep this routine from being
1363  g_nUpdateBits = 0; // re-entered due to the paint process.. only
1364  UpdateWindows(nBits); // happens in rare cases but causes a stack overflow
1365  }
1366  }
1367 }
1368 
1369 /*
1370  =======================================================================================================================
1371  =======================================================================================================================
1372  */
1373 LRESULT CMainFrame::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) {
1374  return CFrameWnd::WindowProc(message, wParam, lParam);
1375 }
1376 
1377 /*
1378  =======================================================================================================================
1379  =======================================================================================================================
1380  */
1381 bool MouseDown() {
1382  if (::GetAsyncKeyState(VK_LBUTTON)) {
1383  return true;
1384  }
1385 
1386  if (::GetAsyncKeyState(VK_RBUTTON)) {
1387  return true;
1388  }
1389 
1390  if (::GetAsyncKeyState(VK_MBUTTON)) {
1391  return true;
1392  }
1393 
1394  return false;
1395 }
1396 
1397 /*
1398  =======================================================================================================================
1399  =======================================================================================================================
1400  */
1401 
1402 void CMainFrame::OnTimer(UINT nIDEvent) {
1403  static bool autoSavePending = false;
1404 
1405  if ( nIDEvent == QE_TIMER0 && !MouseDown() ) {
1406  QE_CountBrushesAndUpdateStatusBar();
1407  }
1408  if ( nIDEvent == QE_TIMER1 || autoSavePending ) {
1409  if ( MouseDown() ) {
1410  autoSavePending = true;
1411  return;
1412  }
1413  if ( Sys_Waiting() ) {
1414  autoSavePending = true;
1415  return;
1416  }
1417  QE_CheckAutoSave();
1418  autoSavePending = false;
1419  }
1420 }
1421 
1422 struct SplitInfo {
1423  int m_nMin;
1424  int m_nCur;
1425 };
1426 
1427 /*
1428  =======================================================================================================================
1429  =======================================================================================================================
1430  */
1431 bool LoadWindowPlacement(HWND hwnd, const char *pName) {
1432  WINDOWPLACEMENT wp;
1433  wp.length = sizeof(WINDOWPLACEMENT);
1434 
1435  LONG lSize = sizeof(wp);
1436  if (LoadRegistryInfo(pName, &wp, &lSize)) {
1437  ::SetWindowPlacement(hwnd, &wp);
1438  return true;
1439  }
1440 
1441  return false;
1442 }
1443 
1444 /*
1445  =======================================================================================================================
1446  =======================================================================================================================
1447  */
1448 void SaveWindowPlacement(HWND hwnd, const char *pName) {
1449  WINDOWPLACEMENT wp;
1450  wp.length = sizeof(WINDOWPLACEMENT);
1451  if (::GetWindowPlacement(hwnd, &wp)) {
1452  SaveRegistryInfo(pName, &wp, sizeof(wp));
1453  }
1454 }
1455 
1456 /*
1457  =======================================================================================================================
1458  =======================================================================================================================
1459  */
1461  KillTimer(QE_TIMER0);
1462 
1463  SaveBarState("RadiantToolBars2");
1464 
1465  // FIXME original mru stuff needs replaced with mfc stuff
1466  SaveMruInReg(g_qeglobals.d_lpMruMenu, "Software\\" EDITOR_REGISTRY_KEY "\\MRU");
1467 
1468  DeleteMruMenu(g_qeglobals.d_lpMruMenu);
1469 
1470  SaveRegistryInfo("radiant_SavedInfo", &g_qeglobals.d_savedinfo, sizeof(g_qeglobals.d_savedinfo));
1471 
1472  SaveWindowPlacement(GetSafeHwnd(), "radiant_MainWindowPlace");
1473 
1474  SaveWindowPlacement(m_pXYWnd->GetSafeHwnd(), "radiant_xywindow");
1475  SaveWindowPlacement(m_pXZWnd->GetSafeHwnd(), "radiant_xzwindow");
1476  SaveWindowPlacement(m_pYZWnd->GetSafeHwnd(), "radiant_yzwindow");
1477  SaveWindowPlacement(m_pCamWnd->GetSafeHwnd(), "radiant_camerawindow");
1478  SaveWindowPlacement(m_pZWnd->GetSafeHwnd(), "radiant_zwindow");
1479  SaveWindowState(g_Inspectors->texWnd.GetSafeHwnd(), "radiant_texwindow");
1480 
1481  if (m_pXYWnd->GetSafeHwnd()) {
1482  m_pXYWnd->SendMessage(WM_DESTROY, 0, 0);
1483  }
1484 
1485  delete m_pXYWnd;
1486  m_pXYWnd = NULL;
1487 
1488  if (m_pYZWnd->GetSafeHwnd()) {
1489  m_pYZWnd->SendMessage(WM_DESTROY, 0, 0);
1490  }
1491 
1492  delete m_pYZWnd;
1493  m_pYZWnd = NULL;
1494 
1495  if (m_pXZWnd->GetSafeHwnd()) {
1496  m_pXZWnd->SendMessage(WM_DESTROY, 0, 0);
1497  }
1498 
1499  delete m_pXZWnd;
1500  m_pXZWnd = NULL;
1501 
1502  if (m_pZWnd->GetSafeHwnd()) {
1503  m_pZWnd->SendMessage(WM_DESTROY, 0, 0);
1504  }
1505 
1506  delete m_pZWnd;
1507  m_pZWnd = NULL;
1508 
1509  if (m_pCamWnd->GetSafeHwnd()) {
1510  m_pCamWnd->SendMessage(WM_DESTROY, 0, 0);
1511  }
1512 
1513  delete m_pCamWnd;
1514  m_pCamWnd = NULL;
1515 
1516  if ( idStr::Icmp(currentmap, "unnamed.map") != 0 ) {
1517  g_PrefsDlg.m_strLastMap = currentmap;
1518  g_PrefsDlg.SavePrefs();
1519  }
1520 
1521  CleanUpEntities();
1522 
1523  while (active_brushes.next != &active_brushes) {
1524  Brush_Free(active_brushes.next, false);
1525  }
1526 
1527  while (selected_brushes.next != &selected_brushes) {
1528  Brush_Free(selected_brushes.next, false);
1529  }
1530 
1531  while (filtered_brushes.next != &filtered_brushes) {
1532  Brush_Free(filtered_brushes.next, false);
1533  }
1534 
1535  while (entities.next != &entities) {
1537  }
1538 
1539 
1540  g_qeglobals.d_project_entity->epairs.Clear();
1541 
1542  entity_t *pEntity = g_qeglobals.d_project_entity->next;
1543  while (pEntity != NULL && pEntity != g_qeglobals.d_project_entity) {
1544  entity_t *pNextEntity = pEntity->next;
1545  Entity_Free(pEntity);
1546  pEntity = pNextEntity;
1547  }
1548 
1549  Texture_Cleanup();
1550 
1551  if (world_entity) {
1553  }
1554 
1555  //
1556  // FIXME: idMaterial
1557  // if (notexture) { // Timo // Surface properties plugin #ifdef _DEBUG if (
1558  // !notexture->pData ) common->Printf("WARNING: found a qtexture_t* with no
1559  // IPluginQTexture\n"); #endif if ( notexture->pData )
1560  // GETPLUGINTEXDEF(notexture)->DecRef(); Mem_Free(notexture); }
1561  // if (current_texture) free(current_texture);
1562  //
1563 
1564  // FIXME: idMaterial FreeShaders();
1565  CFrameWnd::OnDestroy();
1566 
1567  AfxGetApp()->ExitInstance();
1568 }
1569 
1570 /*
1571  =======================================================================================================================
1572  =======================================================================================================================
1573  */
1575  if (ConfirmModified()) {
1577  CFrameWnd::OnClose();
1578  }
1579 }
1580 
1581 /*
1582  =======================================================================================================================
1583  =======================================================================================================================
1584  */
1585 void CMainFrame::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) {
1586  // run through our list to see if we have a handler for nChar
1587 
1588  for (int i = 0; i < g_nCommandCount; i++) {
1589  if (g_Commands[i].m_nKey == nChar) { // find a match?
1590  bool bGo = true;
1591  if (g_Commands[i].m_nModifiers & RAD_PRESS) {
1592  int nModifiers = g_Commands[i].m_nModifiers &~RAD_PRESS;
1593  if (nModifiers) { // are there modifiers present?
1594  if (nModifiers & RAD_ALT) {
1595  if (!(GetAsyncKeyState(VK_MENU) & 0x8000)) {
1596  bGo = false;
1597  }
1598  }
1599 
1600  if (nModifiers & RAD_CONTROL) {
1601  if (!(GetAsyncKeyState(VK_CONTROL) & 0x8000)) {
1602  bGo = false;
1603  }
1604  }
1605 
1606  if (nModifiers & RAD_SHIFT) {
1607  if (!(GetAsyncKeyState(VK_SHIFT) & 0x8000)) {
1608  bGo = false;
1609  }
1610  }
1611  }
1612  else { // no modifiers make sure none of those keys are pressed
1613  if (GetAsyncKeyState(VK_MENU) & 0x8000) {
1614  bGo = false;
1615  }
1616 
1617  if (GetAsyncKeyState(VK_CONTROL) & 0x8000) {
1618  bGo = false;
1619  }
1620 
1621  if (GetAsyncKeyState(VK_SHIFT) & 0x8000) {
1622  bGo = false;
1623  }
1624  }
1625 
1626  if (bGo) {
1627  SendMessage(WM_COMMAND, g_Commands[i].m_nCommand, 0);
1628  break;
1629  }
1630  }
1631  }
1632  }
1633 }
1634 
1635 /*
1636  =======================================================================================================================
1637  =======================================================================================================================
1638  */
1639 bool CamOK(unsigned int nKey) {
1640  if (nKey == VK_UP || nKey == VK_LEFT || nKey == VK_RIGHT || nKey == VK_DOWN) {
1641  if (::GetAsyncKeyState(nKey)) {
1642  return true;
1643  }
1644  else {
1645  return false;
1646  }
1647  }
1648 
1649  return true;
1650 }
1651 
1652 /*
1653  =======================================================================================================================
1654  =======================================================================================================================
1655  */
1656 void CMainFrame::OnSysKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) {
1657  // OnKeyDown(nChar, nRepCnt, nFlags);
1658  if (nChar == VK_DOWN) {
1659  OnKeyDown(nChar, nRepCnt, nFlags);
1660  }
1661 
1662  CFrameWnd::OnSysKeyDown(nChar, nRepCnt, nFlags);
1663 }
1664 
1665 /*
1666  =======================================================================================================================
1667  =======================================================================================================================
1668  */
1669 void CMainFrame::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) {
1670 
1671  for (int i = 0; i < g_nCommandCount; i++) {
1672  if (g_Commands[i].m_nKey == nChar) { // find a match?
1673  // check modifiers
1674  unsigned int nState = 0;
1675  if (GetAsyncKeyState(VK_MENU) & 0x8000) {
1676  nState |= RAD_ALT;
1677  }
1678 
1679  if (GetAsyncKeyState(VK_CONTROL) & 0x8000) {
1680  nState |= RAD_CONTROL;
1681  }
1682 
1683  if (GetAsyncKeyState(VK_SHIFT) & 0x8000) {
1684  nState |= RAD_SHIFT;
1685  }
1686 
1687  if ((g_Commands[i].m_nModifiers & 0x7) == nState) {
1688  SendMessage(WM_COMMAND, g_Commands[i].m_nCommand, 0);
1689  break;
1690  }
1691  }
1692  }
1693 
1694  CFrameWnd::OnKeyDown(nChar, nRepCnt, nFlags);
1695 }
1696 
1697 /*
1698  =======================================================================================================================
1699  =======================================================================================================================
1700  */
1701 BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext *pContext) {
1702 
1703  g_Inspectors = new CInspectorDialog( this );
1704  g_Inspectors->Create(IDD_DIALOG_INSPECTORS, this);
1705 
1706  LoadWindowPlacement(g_Inspectors->GetSafeHwnd(), "radiant_InspectorsWindow");
1707  g_Inspectors->ShowWindow(SW_SHOW);
1708 
1709  CRect r;
1710  g_Inspectors->GetWindowRect ( r );
1711 
1712  //stupid hack to get the window resize itself properly
1713  r.DeflateRect(0,0,0,1);
1714  g_Inspectors->MoveWindow(r);
1715  r.InflateRect(0,0,0,1);
1716  g_Inspectors->MoveWindow(r);
1717 
1718 
1719  if (!LoadWindowPlacement(GetSafeHwnd(), "radiant_MainWindowPlace")) {
1720  }
1721 
1722  CRect rect(5, 25, 100, 100);
1723  CRect rctParent;
1724  GetClientRect(rctParent);
1725 
1726  m_pCamWnd = new CCamWnd();
1727  m_pCamWnd->Create(CAMERA_WINDOW_CLASS, "", QE3_CHILDSTYLE, rect, this, 1234);
1728 
1729  m_pZWnd = new CZWnd();
1730  m_pZWnd->Create(Z_WINDOW_CLASS, "", QE3_CHILDSTYLE, rect, this, 1238);
1731 
1732  m_pXYWnd = new CXYWnd();
1733  m_pXYWnd->Create(XY_WINDOW_CLASS, "", QE3_CHILDSTYLE, rect, this, 1235);
1734  m_pXYWnd->SetViewType(XY);
1735 
1736  m_pXZWnd = new CXYWnd();
1737  m_pXZWnd->Create(XY_WINDOW_CLASS, "", QE3_CHILDSTYLE, rect, this, 1236);
1738  m_pXZWnd->SetViewType(XZ);
1739 
1740  m_pYZWnd = new CXYWnd();
1741  m_pYZWnd->Create(XY_WINDOW_CLASS, "", QE3_CHILDSTYLE, rect, this, 1237);
1742  m_pYZWnd->SetViewType(YZ);
1743 
1745 
1746  CRect rctWork;
1747 
1748  LoadWindowPlacement(m_pXYWnd->GetSafeHwnd(), "radiant_xywindow");
1749  LoadWindowPlacement(m_pXZWnd->GetSafeHwnd(), "radiant_xzwindow");
1750  LoadWindowPlacement(m_pYZWnd->GetSafeHwnd(), "radiant_yzwindow");
1751  LoadWindowPlacement(m_pCamWnd->GetSafeHwnd(), "radiant_camerawindow");
1752  LoadWindowPlacement(m_pZWnd->GetSafeHwnd(), "radiant_zwindow");
1753 
1754  if (!g_PrefsDlg.m_bXZVis) {
1755  m_pXZWnd->ShowWindow(SW_HIDE);
1756  }
1757 
1758  if (!g_PrefsDlg.m_bYZVis) {
1759  m_pYZWnd->ShowWindow(SW_HIDE);
1760  }
1761 
1762  if (!g_PrefsDlg.m_bZVis) {
1763  m_pZWnd->ShowWindow(SW_HIDE);
1764  }
1765 
1766  CreateQEChildren();
1767 
1768  if (m_pXYWnd) {
1769  m_pXYWnd->SetActive(true);
1770  }
1771 
1772  Texture_SetMode(g_qeglobals.d_savedinfo.iTexMenu);
1773 
1774  g_Inspectors->SetMode(W_CONSOLE);
1775  return TRUE;
1776 }
1777 
1778 CRect g_rctOld(0, 0, 0, 0);
1779 
1780 /*
1781  =======================================================================================================================
1782  =======================================================================================================================
1783  */
1784 void CMainFrame::OnSize(UINT nType, int cx, int cy) {
1785  CFrameWnd::OnSize(nType, cx, cy);
1786 
1787  CRect rctParent;
1788  GetClientRect(rctParent);
1789 
1790  UINT nID;
1791  UINT nStyle;
1792  int nWidth;
1793  if (m_wndStatusBar.GetSafeHwnd()) {
1794  m_wndStatusBar.GetPaneInfo( 0, nID, nStyle, nWidth);
1795  m_wndStatusBar.SetPaneInfo( 0, nID, nStyle, rctParent.Width() * 0.15f );
1796  m_wndStatusBar.GetPaneInfo( 1, nID, nStyle, nWidth);
1797  m_wndStatusBar.SetPaneInfo( 1, nID, nStyle, rctParent.Width() * 0.15f);
1798  m_wndStatusBar.GetPaneInfo( 2, nID, nStyle, nWidth);
1799  m_wndStatusBar.SetPaneInfo( 2, nID, nStyle, rctParent.Width() * 0.15f );
1800  m_wndStatusBar.GetPaneInfo( 3, nID, nStyle, nWidth);
1801  m_wndStatusBar.SetPaneInfo( 3, nID, nStyle, rctParent.Width() * 0.39f );
1802  m_wndStatusBar.GetPaneInfo( 4, nID, nStyle, nWidth);
1803  m_wndStatusBar.SetPaneInfo( 4, nID, nStyle, rctParent.Width() * 0.15f );
1804  m_wndStatusBar.GetPaneInfo( 5, nID, nStyle, nWidth);
1805  m_wndStatusBar.SetPaneInfo( 5, nID, nStyle, rctParent.Width() * 0.01f );
1806  }
1807 }
1808 
1809 void OpenDialog(void);
1810 void SaveAsDialog(bool bRegion);
1811 void Select_Ungroup();
1812 
1813 /*
1814  =======================================================================================================================
1815  =======================================================================================================================
1816  */
1818  if (m_bCamPreview) {
1819  m_bCamPreview = false;
1820  }
1821  else {
1822  m_bCamPreview = true;
1823  }
1824 }
1825 
1826 /*
1827  =======================================================================================================================
1828  =======================================================================================================================
1829  */
1831 }
1832 
1833 /*
1834  =======================================================================================================================
1835  =======================================================================================================================
1836  */
1838  PostMessage(WM_CLOSE, 0, 0L);
1839 }
1840 
1841 /*
1842  =======================================================================================================================
1843  =======================================================================================================================
1844  */
1846  if (ConfirmModified()) {
1847  ProjectDialog();
1848  }
1849 }
1850 
1851 /*
1852  =======================================================================================================================
1853  =======================================================================================================================
1854  */
1856  if (ConfirmModified()) {
1857  Map_New();
1858  }
1859 }
1860 
1861 /*
1862  =======================================================================================================================
1863  =======================================================================================================================
1864  */
1866  if (ConfirmModified()) {
1867  OpenDialog();
1868  }
1869 }
1870 
1871 /*
1872  =======================================================================================================================
1873  =======================================================================================================================
1874  */
1876  if (g_qeglobals.d_pointfile_display_list) {
1877  Pointfile_Clear();
1878  }
1879  else {
1880  Pointfile_Check();
1881  }
1882  Sys_UpdateWindows(W_ALL);
1883 }
1884 
1885 /*
1886  =======================================================================================================================
1887  =======================================================================================================================
1888  */
1890 }
1891 
1892 /*
1893  =======================================================================================================================
1894  =======================================================================================================================
1895  */
1897 }
1898 
1899 /*
1900  =======================================================================================================================
1901  =======================================================================================================================
1902  */
1904  if (!strcmp(currentmap, "unnamed.map")) {
1905  SaveAsDialog(false);
1906  }
1907  else {
1908  Map_SaveFile(currentmap, false);
1909  }
1910 
1911  // DHM - _D3XP
1912  SetTimer(QE_TIMER1, g_PrefsDlg.m_nAutoSave * 60 * 1000, NULL);
1913 }
1914 
1915 /*
1916  =======================================================================================================================
1917  =======================================================================================================================
1918  */
1920  SaveAsDialog(false);
1921 }
1922 
1923 /*
1924  =======================================================================================================================
1925  =======================================================================================================================
1926  */
1928  char aFile[260] = "\0";
1929  char aFilter[260] = "Map\0*.map\0\0";
1930  char aTitle[260] = "Save a Copy\0";
1931  OPENFILENAME afn;
1932 
1933  memset( &afn, 0, sizeof(OPENFILENAME) );
1934 
1935  CString strPath = ValueForKey(g_qeglobals.d_project_entity, "basepath");
1936  AddSlash(strPath);
1937  strPath += "maps";
1938  if (g_PrefsDlg.m_strMaps.GetLength() > 0) {
1939  strPath += va("\\%s", g_PrefsDlg.m_strMaps);
1940  }
1941 
1942  /* Place the terminating null character in the szFile. */
1943  aFile[0] = '\0';
1944 
1945  /* Set the members of the OPENFILENAME structure. */
1946  afn.lStructSize = sizeof(OPENFILENAME);
1947  afn.hwndOwner = g_pParentWnd->GetSafeHwnd();
1948  afn.lpstrFilter = aFilter;
1949  afn.nFilterIndex = 1;
1950  afn.lpstrFile = aFile;
1951  afn.nMaxFile = sizeof(aFile);
1952  afn.lpstrFileTitle = NULL;
1953  afn.nMaxFileTitle = 0;
1954  afn.lpstrInitialDir = strPath;
1955  afn.lpstrTitle = aTitle;
1956  afn.Flags = OFN_SHOWHELP | OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_OVERWRITEPROMPT;
1957 
1958  /* Display the Open dialog box. */
1959  if (!GetSaveFileName(&afn)) {
1960  return; // canceled
1961  }
1962 
1963  DefaultExtension(afn.lpstrFile, ".map");
1964  Map_SaveFile(afn.lpstrFile, false); // ignore region
1965 
1966  // Set the title back to the current working map
1967  Sys_SetTitle(currentmap);
1968 }
1969 
1970 /*
1971 ==================================================================================================
1972 */
1974  g_qeglobals.d_savedinfo.exclude ^= EXCLUDE_MODELS;
1975 
1976  Sys_UpdateWindows(W_ALL);
1977 }
1978 
1979 /*
1980  =======================================================================================================================
1981  =======================================================================================================================
1982  */
1984  if (m_pXYWnd) {
1985  m_pXYWnd->SetScale(1);
1986  }
1987 
1988  if (m_pXZWnd) {
1989  m_pXZWnd->SetScale(1);
1990  }
1991 
1992  if (m_pYZWnd) {
1993  m_pYZWnd->SetScale(1);
1994  }
1995 
1996  Sys_UpdateWindows(W_XY | W_XY_OVERLAY);
1997 }
1998 
1999 /*
2000  =======================================================================================================================
2001  =======================================================================================================================
2002  */
2005  m_pCamWnd->Camera().angles[YAW] = 22.5 * floor((m_pCamWnd->Camera().angles[YAW] + 11) / 22.5);
2006  Sys_UpdateWindows(W_CAMERA | W_XY_OVERLAY);
2007 }
2008 
2009 /*
2010  =======================================================================================================================
2011  =======================================================================================================================
2012  */
2014  g_Inspectors->SetMode(W_CONSOLE);
2015 }
2016 
2017 /*
2018  =======================================================================================================================
2019  =======================================================================================================================
2020  */
2022  m_pCamWnd->Cam_ChangeFloor(false);
2023 }
2024 
2025 /*
2026  =======================================================================================================================
2027  =======================================================================================================================
2028  */
2030  g_Inspectors->SetMode(W_ENTITY);
2031 }
2032 
2034  g_Inspectors->SetMode(W_MEDIA);
2035 }
2036 
2037 
2038 
2039 /*
2040  =======================================================================================================================
2041  =======================================================================================================================
2042  */
2044  m_pXYWnd->SetViewType(YZ);
2046  Sys_UpdateWindows(W_XY);
2047 }
2048 
2049 /*
2050  =======================================================================================================================
2051  =======================================================================================================================
2052  */
2053 
2054 BOOL DoMru(HWND hWnd,WORD wId)
2055 {
2056  char szFileName[128];
2057  OFSTRUCT of;
2058  BOOL fExist;
2059 
2060  GetMenuItem(g_qeglobals.d_lpMruMenu, wId, TRUE, szFileName, sizeof(szFileName));
2061 
2062  // Test if the file exists.
2063 
2064  fExist = OpenFile(szFileName ,&of,OF_EXIST) != HFILE_ERROR;
2065 
2066  if (fExist) {
2067 
2068  // Place the file on the top of MRU.
2069  AddNewItem(g_qeglobals.d_lpMruMenu,(LPSTR)szFileName);
2070 
2071  // Now perform opening this file !!!
2072  Map_LoadFile (szFileName);
2073  }
2074  else
2075  // Remove the file on MRU.
2076  DelMenuItem(g_qeglobals.d_lpMruMenu,wId,TRUE);
2077 
2078  // Refresh the File menu.
2079  PlaceMenuMRUItem(g_qeglobals.d_lpMruMenu,GetSubMenu(GetMenu(hWnd),0),
2080  ID_FILE_EXIT);
2081 
2082  return fExist;
2083 }
2084 
2085 void CMainFrame::OnMru(unsigned int nID) {
2086  // DHM - _D3XP
2087  if (ConfirmModified()) {
2088  DoMru(GetSafeHwnd(), nID);
2089 }
2090 }
2091 
2092 /*
2093  =======================================================================================================================
2094  =======================================================================================================================
2095  */
2096 void CMainFrame::OnViewNearest(unsigned int nID) {
2097  Texture_SetMode(nID);
2098 }
2099 
2100 /*
2101  =======================================================================================================================
2102  =======================================================================================================================
2103  */
2104 void CMainFrame::OnTextureWad(unsigned int nID) {
2105  Sys_BeginWait();
2106 
2107  // FIXME: idMaterial Texture_ShowDirectory (nID);
2108  Sys_UpdateWindows(W_ALL);
2109 }
2110 
2111 /*
2112  =======================================================================================================================
2113  =======================================================================================================================
2114  */
2115 
2116 /*
2117 ============
2118 RunBsp
2119 
2120 This is the new all-internal bsp
2121 ============
2122 */
2123 void RunBsp (const char *command) {
2124  char sys[2048];
2125  char name[2048];
2126  char *in;
2127 
2128  // bring the console window forward for feedback
2129  g_Inspectors->SetMode(W_CONSOLE);
2130 
2131  // decide if we are doing a .map or a .reg
2132  strcpy (name, currentmap);
2133  if ( region_active ) {
2134  Map_SaveFile (name, false);
2135  StripExtension (name);
2136  strcat (name, ".reg");
2137  }
2138 
2139  if ( !Map_SaveFile ( name, region_active ) ) {
2140  return;
2141  }
2142 
2143  // name should be a full pathname, but we only
2144  // want to pass the maps/ part to dmap
2145  in = strstr(name, "maps/");
2146  if ( !in ) {
2147  in = strstr(name, "maps\\");
2148  }
2149  if ( !in ) {
2150  in = name;
2151  }
2152 
2153  if (idStr::Icmpn(command, "bspext", strlen("runbsp")) == 0) {
2154  PROCESS_INFORMATION ProcessInformation;
2155  STARTUPINFO startupinfo;
2156  char buff[2048];
2157 
2158  idStr base = cvarSystem->GetCVarString( "fs_basepath" );
2159  idStr cd = cvarSystem->GetCVarString( "fs_cdpath" );
2160  idStr paths;
2161  if (base.Length()) {
2162  paths += "+set fs_basepath ";
2163  paths += base;
2164  }
2165  if (cd.Length()) {
2166  paths += "+set fs_cdpath ";
2167  paths += cd;
2168  }
2169 
2170  ::GetModuleFileName(AfxGetApp()->m_hInstance, buff, sizeof(buff));
2171  if (strlen(command) > strlen("bspext")) {
2172  idStr::snPrintf( sys, sizeof(sys), "%s %s +set r_fullscreen 0 +dmap editorOutput %s %s +quit", buff, paths.c_str(), command + strlen("bspext"), in );
2173  } else {
2174  idStr::snPrintf( sys, sizeof(sys), "%s %s +set r_fullscreen 0 +dmap editorOutput %s +quit", buff, paths.c_str(), in );
2175  }
2176 
2177  ::GetStartupInfo (&startupinfo);
2178  if (!CreateProcess(NULL, sys, NULL, NULL, FALSE, 0, NULL, NULL, &startupinfo, &ProcessInformation)) {
2179  common->Printf("Could not start bsp process %s %s/n", buff, sys);
2180  }
2181  g_pParentWnd->SetFocus();
2182 
2183  } else { // assumes bsp is the command
2184  if (strlen(command) > strlen("bsp")) {
2185  idStr::snPrintf( sys, sizeof(sys), "dmap %s %s", command + strlen("bsp"), in );
2186  } else {
2187  idStr::snPrintf( sys, sizeof(sys), "dmap %s", in );
2188  }
2189 
2190  cmdSystem->BufferCommandText( CMD_EXEC_NOW, "disconnect\n" );
2191 
2192  // issue the bsp command
2193  Dmap_f( idCmdArgs( sys, false ) );
2194  }
2195 }
2196 
2197 void CMainFrame::OnBspCommand(unsigned int nID) {
2198  if (g_PrefsDlg.m_bSnapShots && stricmp(currentmap, "unnamed.map") != 0) {
2199  Map_Snapshot();
2200  }
2201 
2202  RunBsp(bsp_commands[LOWORD(nID - CMD_BSPCOMMAND)]);
2203 
2204  // DHM - _D3XP
2205  SetTimer(QE_TIMER1, g_PrefsDlg.m_nAutoSave * 60 * 1000, NULL);
2206 }
2207 
2208 /*
2209  =======================================================================================================================
2210  =======================================================================================================================
2211  */
2213  g_qeglobals.show_blocks = !(g_qeglobals.show_blocks);
2214  CheckMenuItem
2215  (
2216  ::GetMenu(GetSafeHwnd()),
2217  ID_VIEW_SHOWBLOCKS,
2218  MF_BYCOMMAND | (g_qeglobals.show_blocks ? MF_CHECKED : MF_UNCHECKED)
2219  );
2220  Sys_UpdateWindows(W_XY);
2221 }
2222 
2223 /*
2224  =======================================================================================================================
2225  =======================================================================================================================
2226  */
2228  if ((g_qeglobals.d_savedinfo.exclude ^= EXCLUDE_CLIP) & EXCLUDE_CLIP) {
2229  CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWCLIP, MF_BYCOMMAND | MF_UNCHECKED);
2230  }
2231  else {
2232  CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWCLIP, MF_BYCOMMAND | MF_CHECKED);
2233  }
2234 
2235  Sys_UpdateWindows(W_XY | W_CAMERA);
2236 }
2237 
2238 /*
2239  =======================================================================================================================
2240  =======================================================================================================================
2241  */
2243  if ((g_qeglobals.d_savedinfo.exclude ^= EXCLUDE_TRIGGERS) & EXCLUDE_TRIGGERS) {
2244  CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWTRIGGERS, MF_BYCOMMAND | MF_UNCHECKED);
2245  }
2246  else {
2247  CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWTRIGGERS, MF_BYCOMMAND | MF_CHECKED);
2248  }
2249 
2250  Sys_UpdateWindows(W_XY | W_CAMERA);
2251 }
2252 
2253 /*
2254  =======================================================================================================================
2255  =======================================================================================================================
2256  */
2258  g_qeglobals.d_savedinfo.show_coordinates ^= 1;
2259  CheckMenuItem
2260  (
2261  ::GetMenu(GetSafeHwnd()),
2262  ID_VIEW_SHOWCOORDINATES,
2263  MF_BYCOMMAND | (g_qeglobals.d_savedinfo.show_coordinates ? MF_CHECKED : MF_UNCHECKED)
2264  );
2265  Sys_UpdateWindows(W_XY);
2266 }
2267 
2268 /*
2269  =======================================================================================================================
2270  =======================================================================================================================
2271  */
2273  if ((g_qeglobals.d_savedinfo.exclude ^= EXCLUDE_ENT) & EXCLUDE_ENT) {
2274  CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWENT, MF_BYCOMMAND | MF_UNCHECKED);
2275  }
2276  else {
2277  CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWENT, MF_BYCOMMAND | MF_CHECKED);
2278  }
2279 
2280  Sys_UpdateWindows(W_XY | W_CAMERA);
2281 }
2282 
2283 /*
2284  =======================================================================================================================
2285  =======================================================================================================================
2286  */
2288  if ((g_qeglobals.d_savedinfo.exclude ^= EXCLUDE_LIGHTS) & EXCLUDE_LIGHTS) {
2289  CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWLIGHTS, MF_BYCOMMAND | MF_UNCHECKED);
2290  }
2291  else {
2292  CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWLIGHTS, MF_BYCOMMAND | MF_CHECKED);
2293  }
2294 
2295  Sys_UpdateWindows(W_XY | W_CAMERA);
2296 }
2297 
2298 /*
2299  =======================================================================================================================
2300  =======================================================================================================================
2301  */
2303  g_qeglobals.d_savedinfo.show_names = !(g_qeglobals.d_savedinfo.show_names);
2304  CheckMenuItem
2305  (
2306  ::GetMenu(GetSafeHwnd()),
2307  ID_VIEW_SHOWNAMES,
2308  MF_BYCOMMAND | (g_qeglobals.d_savedinfo.show_names ? MF_CHECKED : MF_UNCHECKED)
2309  );
2311  Sys_UpdateWindows(W_XY);
2312 }
2313 
2314 /*
2315  =======================================================================================================================
2316  =======================================================================================================================
2317  */
2319  if ((g_qeglobals.d_savedinfo.exclude ^= EXCLUDE_PATHS) & EXCLUDE_PATHS) {
2320  CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWPATH, MF_BYCOMMAND | MF_UNCHECKED);
2321  }
2322  else {
2323  CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWPATH, MF_BYCOMMAND | MF_CHECKED);
2324  }
2325 
2326  Sys_UpdateWindows(W_XY | W_CAMERA);
2327 }
2328 
2329 /*
2330  =======================================================================================================================
2331  =======================================================================================================================
2332  */
2334  if ((g_qeglobals.d_savedinfo.exclude ^= EXCLUDE_COMBATNODES) & EXCLUDE_COMBATNODES) {
2335  CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWCOMBATNODES, MF_BYCOMMAND | MF_UNCHECKED);
2336  }
2337  else {
2338  CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWCOMBATNODES, MF_BYCOMMAND | MF_CHECKED);
2339  }
2340 
2341  Sys_UpdateWindows(W_XY | W_CAMERA);
2342 }
2343 
2344 /*
2345  =======================================================================================================================
2346  =======================================================================================================================
2347  */
2349  if ((g_qeglobals.d_savedinfo.exclude ^= EXCLUDE_DYNAMICS) & EXCLUDE_DYNAMICS) {
2350  CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWWATER, MF_BYCOMMAND | MF_UNCHECKED);
2351  }
2352  else {
2353  CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWWATER, MF_BYCOMMAND | MF_CHECKED);
2354  }
2355 
2356  Sys_UpdateWindows(W_XY | W_CAMERA);
2357 }
2358 
2359 /*
2360  =======================================================================================================================
2361  =======================================================================================================================
2362  */
2364  if ((g_qeglobals.d_savedinfo.exclude ^= EXCLUDE_WORLD) & EXCLUDE_WORLD) {
2365  CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWWORLD, MF_BYCOMMAND | MF_UNCHECKED);
2366  }
2367  else {
2368  CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWWORLD, MF_BYCOMMAND | MF_CHECKED);
2369  }
2370 
2371  Sys_UpdateWindows(W_XY | W_CAMERA);
2372 }
2373 
2374 /*
2375  =======================================================================================================================
2376  =======================================================================================================================
2377  */
2379  g_Inspectors->SetMode(W_TEXTURE);
2380 }
2381 
2382 /*
2383  =======================================================================================================================
2384  =======================================================================================================================
2385  */
2387  m_pCamWnd->Cam_ChangeFloor(true);
2388 }
2389 
2390 /*
2391  =======================================================================================================================
2392  =======================================================================================================================
2393  */
2395  m_pXYWnd->SetViewType(XY);
2397  Sys_UpdateWindows(W_XY);
2398 }
2399 
2400 /*
2401  =======================================================================================================================
2402  =======================================================================================================================
2403  */
2405  z.scale = 1;
2406  Sys_UpdateWindows(W_Z | W_Z_OVERLAY);
2407 }
2408 
2409 /*
2410  =======================================================================================================================
2411  =======================================================================================================================
2412  */
2414  if ( m_pXYWnd && m_pXYWnd->Active() ) {
2415  m_pXYWnd->SetScale( m_pXYWnd->Scale() * 5.0f / 4.0f );
2416  if ( m_pXYWnd->Scale() > 256.0f ) {
2417  m_pXYWnd->SetScale( 256.0f );
2418  }
2419  }
2420 
2421  if ( m_pXZWnd && m_pXZWnd->Active() ) {
2422  m_pXZWnd->SetScale( m_pXZWnd->Scale() * 5.0f / 4.0f );
2423  if ( m_pXZWnd->Scale() > 256.0f ) {
2424  m_pXZWnd->SetScale( 256.0f );
2425  }
2426  }
2427 
2428  if ( m_pYZWnd && m_pYZWnd->Active() ) {
2429  m_pYZWnd->SetScale( m_pYZWnd->Scale() * 5.0f / 4.0f );
2430  if ( m_pYZWnd->Scale() > 256.0f ) {
2431  m_pYZWnd->SetScale( 256.0f );
2432  }
2433  }
2434 
2435  Sys_UpdateWindows( W_XY | W_XY_OVERLAY );
2436 }
2437 
2438 /*
2439  =======================================================================================================================
2440  =======================================================================================================================
2441  */
2443  if ( m_pXYWnd && m_pXYWnd->Active() ) {
2444  m_pXYWnd->SetScale( m_pXYWnd->Scale() * 4.0f / 5.0f );
2445  if ( m_pXYWnd->Scale() < 0.1f / 32.0f ) {
2446  m_pXYWnd->SetScale( 0.1f / 32.0f );
2447  }
2448  }
2449 
2450  if ( m_pXZWnd && m_pXZWnd->Active() ) {
2451  m_pXZWnd->SetScale( m_pXZWnd->Scale() * 4.0f / 5.0f );
2452  if ( m_pXZWnd->Scale() < 0.1f / 32.0f ) {
2453  m_pXZWnd->SetScale( 0.1f / 32.0f );
2454  }
2455  }
2456 
2457  if ( m_pYZWnd && m_pYZWnd->Active() ) {
2458  m_pYZWnd->SetScale( m_pYZWnd->Scale() * 4.0f / 5.0f );
2459  if ( m_pYZWnd->Scale() < 0.1f / 32.0f ) {
2460  m_pYZWnd->SetScale( 0.1f / 32.0f );
2461  }
2462  }
2463 
2464  Sys_UpdateWindows(W_XY | W_XY_OVERLAY);
2465 }
2466 
2467 /*
2468  =======================================================================================================================
2469  =======================================================================================================================
2470  */
2472  z.scale *= 5.0f / 4.0f;
2473  if ( z.scale > 4.0f ) {
2474  z.scale = 4.0f;
2475  }
2476 
2477  Sys_UpdateWindows(W_Z | W_Z_OVERLAY);
2478 }
2479 
2480 /*
2481  =======================================================================================================================
2482  =======================================================================================================================
2483  */
2485  z.scale *= 4.0f / 5.0f;
2486  if ( z.scale < 0.125f ) {
2487  z.scale = 0.125f;
2488  }
2489 
2490  Sys_UpdateWindows(W_Z | W_Z_OVERLAY);
2491 }
2492 
2493 /*
2494  =======================================================================================================================
2495  =======================================================================================================================
2496  */
2498  m_pXYWnd->SetViewType(XZ);
2500  Sys_UpdateWindows(W_XY);
2501 }
2502 
2503 static void UpdateGrid(void)
2504 {
2505  // g_qeglobals.d_gridsize = 1 << g_qeglobals.d_gridsize;
2506  if (g_PrefsDlg.m_bSnapTToGrid) {
2507  g_qeglobals.d_savedinfo.m_nTextureTweak = g_qeglobals.d_gridsize;
2508  }
2509 }
2510 
2511 /*
2512  =======================================================================================================================
2513  =======================================================================================================================
2514  */
2515 void CMainFrame::OnGrid1(unsigned int nID) {
2516  switch (nID)
2517  {
2518  case ID_GRID_1:
2519  g_qeglobals.d_gridsize = 1;
2520  break;
2521  case ID_GRID_2:
2522  g_qeglobals.d_gridsize = 2;
2523  break;
2524  case ID_GRID_4:
2525  g_qeglobals.d_gridsize = 4;
2526  break;
2527  case ID_GRID_8:
2528  g_qeglobals.d_gridsize = 8;
2529  break;
2530  case ID_GRID_16:
2531  g_qeglobals.d_gridsize = 16;
2532  break;
2533  case ID_GRID_32:
2534  g_qeglobals.d_gridsize = 32;
2535  break;
2536  case ID_GRID_64:
2537  g_qeglobals.d_gridsize = 64;
2538  break;
2539  case ID_GRID_POINT5:
2540  g_qeglobals.d_gridsize = 0.5f;
2541  break;
2542  case ID_GRID_POINT25:
2543  g_qeglobals.d_gridsize = 0.25f;
2544  break;
2545  case ID_GRID_POINT125:
2546  g_qeglobals.d_gridsize = 0.125f;
2547  break;
2548  //case ID_GRID_POINT0625:
2549  // g_qeglobals.d_gridsize = 0.0625f;
2550  // break;
2551  }
2552 
2553  UpdateGrid();
2554 
2555  SetGridStatus();
2556  SetGridChecks(nID);
2557  Sys_UpdateWindows(W_XY | W_Z);
2558 }
2559 
2560 /*
2561  =======================================================================================================================
2562  =======================================================================================================================
2563  */
2565  Sys_BeginWait();
2567  g_Inspectors->texWnd.RedrawWindow();
2568 }
2569 
2570 // from TexWnd.cpp
2571 extern bool texture_showinuse;
2572 
2573 /*
2574  =======================================================================================================================
2575  =======================================================================================================================
2576  */
2578  pCmdUI->SetCheck(texture_showinuse);
2579 }
2580 
2581 /*
2582  =======================================================================================================================
2583  =======================================================================================================================
2584  */
2586  DoSurface();
2587 }
2588 
2589 /*
2590  =======================================================================================================================
2591  =======================================================================================================================
2592  */
2594  DoFind();
2595 }
2596 
2597 /*
2598  =======================================================================================================================
2599  =======================================================================================================================
2600  */
2602  float fSave = g_qeglobals.d_savedinfo.fGamma;
2603  DoGamma();
2604  if (fSave != g_qeglobals.d_savedinfo.fGamma) {
2605  MessageBox("You must restart Q3Radiant for Gamma settings to take place");
2606  }
2607 }
2608 
2609 /*
2610  =======================================================================================================================
2611  =======================================================================================================================
2612  */
2614  Pointfile_Next();
2615 }
2616 
2617 /*
2618  =======================================================================================================================
2619  =======================================================================================================================
2620  */
2622  Pointfile_Prev();
2623 }
2624 
2625 /*
2626  =======================================================================================================================
2627  =======================================================================================================================
2628  */
2630  WXY_Print();
2631 }
2632 
2633 /*
2634  =======================================================================================================================
2635  =======================================================================================================================
2636  */
2637 
2638 void UpdateRadiantColor( float r, float g, float b, float a ) {
2639  if ( g_pParentWnd ) {
2640  g_pParentWnd->RoutineProcessing();
2641  }
2642 }
2643 
2644 bool DoColor( int iIndex ) {
2645  COLORREF cr = (int)(g_qeglobals.d_savedinfo.colors[iIndex][0]*255) +
2646  (((int)(g_qeglobals.d_savedinfo.colors[iIndex][1]*255))<<8) +
2647  (((int)(g_qeglobals.d_savedinfo.colors[iIndex][2]*255))<<16);
2648 
2649  CDialogColorPicker dlg(cr);
2650 
2652 
2653  if ( dlg.DoModal() == IDOK ) {
2654  g_qeglobals.d_savedinfo.colors[iIndex][0] = (dlg.GetColor() & 255)/255.0;
2655  g_qeglobals.d_savedinfo.colors[iIndex][1] = ((dlg.GetColor() >> 8)&255)/255.0;
2656  g_qeglobals.d_savedinfo.colors[iIndex][2] = ((dlg.GetColor() >> 16)&255)/255.0;
2657 
2658  Sys_UpdateWindows (W_ALL);
2659  return true;
2660  } else {
2661  return false;
2662  }
2663 }
2664 
2665 /*
2666  =======================================================================================================================
2667  =======================================================================================================================
2668  */
2669 extern void Select_SetKeyVal(const char *key, const char *val);
2671 
2672  entity_t *ent = NULL;
2673  if (QE_SingleBrush(true, true)) {
2674  ent = selected_brushes.next->owner;
2675  CString strColor = ValueForKey(ent, "_color");
2676  if (strColor.GetLength() > 0) {
2677  float fR, fG, fB;
2678  int n = sscanf(strColor, "%f %f %f", &fR, &fG, &fB);
2679  if (n == 3) {
2680  g_qeglobals.d_savedinfo.colors[COLOR_ENTITY][0] = fR;
2681  g_qeglobals.d_savedinfo.colors[COLOR_ENTITY][1] = fG;
2682  g_qeglobals.d_savedinfo.colors[COLOR_ENTITY][2] = fB;
2683  }
2684  }
2685  }
2686 
2687  if (DoColor(COLOR_ENTITY)) {
2688  char buffer[100];
2689  sprintf(buffer, "%f %f %f", g_qeglobals.d_savedinfo.colors[COLOR_ENTITY][0], g_qeglobals.d_savedinfo.colors[COLOR_ENTITY][1],g_qeglobals.d_savedinfo.colors[COLOR_ENTITY][2]);
2690  Select_SetKeyVal("_color", buffer);
2691  if (ent) {
2693  }
2694  Sys_UpdateWindows(W_ALL);
2695  }
2696 }
2697 
2698 CString strFindKey;
2705 
2706 // all this because there's no ansi stristr(), sigh...
2707 //
2708 LPCSTR String_ToLower(LPCSTR psString)
2709 {
2710  const int iBufferSize = 4096;
2711  static char sString[8][iBufferSize];
2712  static int iIndex=0;
2713 
2714  if (strlen(psString)>=iBufferSize)
2715  {
2716  assert(0);
2717  common->Printf("String_ToLower(): Warning, input string was %d bytes too large, performing strlwr() inline!\n",strlen(psString)-(iBufferSize-1));
2718  return strlwr(const_cast<char*>(psString));
2719  }
2720 
2721  iIndex = ++ iIndex & 7;
2722 
2723  strcpy(sString[iIndex],psString);
2724  strlwr(sString[iIndex]);
2725 
2726  return sString[iIndex];
2727 }
2728 
2729 
2730 bool FindNextBrush(brush_t* pPrevFoundBrush) // can be NULL for fresh search
2731 {
2732  bool bFoundSomething = false;
2733  entity_t *pLastFoundEnt;
2734  brush_t *pLastFoundBrush;
2735 
2736  CWaitCursor waitcursor;
2737 
2738  Select_Deselect(true); // bool bDeSelectToListBack
2739 
2740  // see whether to start search from prev_brush->next by checking if prev_brush is still in the active list...
2741  //
2742  brush_t *pStartBrush = active_brushes.next;
2743 
2744  if (pPrevFoundBrush && !gbSelectAllMatchingEnts)
2745  {
2746  brush_t *pPrev = NULL;
2747  for (brush_t* b = active_brushes.next ; b != &active_brushes ; b = b->next)
2748  {
2749  if (pPrev == pPrevFoundBrush && pPrevFoundBrush)
2750  {
2751  pStartBrush = b;
2752  break;
2753  }
2754  pPrev = b;
2755  }
2756  }
2757 
2758  // now do the search proper...
2759  //
2760  int iBrushesScanned = 0;
2761  int iBrushesSelected=0;
2762  int iEntsScanned = 0;
2763 
2764  brush_t* pNextBrush;
2765  for (brush_t* b = pStartBrush; b != &active_brushes ; b = pNextBrush)
2766  {
2767  // setup the <nextbrush> ptr before going any further (because selecting a brush down below moves it to a
2768  // different link list), but we need to ensure that the next brush has a different ent-owner than the current
2769  // one, or multi-brush ents will confuse the list process if they get selected (infinite loop badness)...
2770  //
2771  // pNextBrush = &active_brushes; // default to loop-stop condition
2772  pNextBrush = b->next;
2773  while (pNextBrush->owner == b->owner && pNextBrush!=&active_brushes)
2774  {
2775  pNextBrush = pNextBrush->next;
2776  }
2777 
2778  iBrushesScanned++;
2779 
2780  // a simple progress bar so they don't think it's locked up on long searches...
2781  //
2782  static int iDotBodge=0;
2783  if (!(++iDotBodge&15))
2784  common->Printf("."); // cut down on printing
2785 
2786  bool bMatch = false;
2787  entity_t* ent = b->owner;
2788 
2789  if (ent && ent!= world_entity) // needed!
2790  {
2791  iEntsScanned++;
2792  if (FilterBrush (b))
2793  continue;
2794 
2795  // only check the find-key if there was one specified...
2796  //
2797  if (!strFindKey.IsEmpty())
2798  {
2799  const char *psEntFoundValue = ValueForKey(ent, strFindKey);
2800 
2801  if (strlen(psEntFoundValue)
2802  &&
2803  (
2804 // (stricmp(strFindValue, psEntFoundValue)==0) // found this exact key/value
2805  (
2806  (gbWholeStringMatchOnly && stricmp(psEntFoundValue, strFindValue)==0)
2807  ||
2808  (!gbWholeStringMatchOnly && strstr(String_ToLower(psEntFoundValue), String_ToLower(strFindValue)))
2809  )
2810  || // or
2811  (strFindValue.IsEmpty()) // any value for this key if blank value search specified
2812  )
2813  )
2814  {
2815  bMatch = true;
2816  }
2817  }
2818  else
2819  {
2820  // no FIND key specified, so just scan all of them...
2821  //
2822  int iNumEntKeys = GetNumKeys(ent);
2823  for (int i=0; i<iNumEntKeys; i++)
2824  {
2825  const char *psEntFoundValue = ValueForKey(ent, GetKeyString(ent, i));
2826  if (psEntFoundValue)
2827  {
2828  if ( (strlen(psEntFoundValue) && strFindValue.IsEmpty()) // if blank <value> search specified then any found-value is ok
2829  ||
2830  (gbWholeStringMatchOnly && stricmp(psEntFoundValue, strFindValue)==0)
2831  ||
2832  (!gbWholeStringMatchOnly && strstr(String_ToLower(psEntFoundValue), String_ToLower(strFindValue)))
2833  )
2834  {
2835  if (!gbWholeStringMatchOnly && strstr(String_ToLower(psEntFoundValue), String_ToLower(strFindValue)))
2836  {
2837 // OutputDebugString(va("Matching because: psEntFoundValue '%s' & strFindValue '%s'\n",psEntFoundValue, strFindValue));
2838 // Sys_Printf("Matching because: psEntFoundValue '%s' & strFindValue '%s'\n",psEntFoundValue, strFindValue);
2839 
2840 // if (strstr(psEntFoundValue,"killsplat"))
2841 // {
2842 // DebugBreak();
2843 // }
2844  }
2845  bMatch = true;
2846  break;
2847  }
2848  }
2849  }
2850  }
2851 
2852  if (bMatch)
2853  {
2854  bFoundSomething = true;
2855  pLastFoundEnt = ent;
2856  pLastFoundBrush = b;
2857  iBrushesSelected++;
2858 
2859  g_bScreenUpdates = false; // !!!!!!!!!!!!!!!!!!!!!!!!!!!!
2860 
2861  Select_Brush(b);
2862 
2863  g_bScreenUpdates = true; // !!!!!!!!!!!!!!!!!!!!!!!!!!!!
2864 
2865  if (!gbSelectAllMatchingEnts)
2866  break;
2867  }
2868  }
2869  }
2870  if (gbSelectAllMatchingEnts)
2871  {
2872  common->Printf("\nBrushes Selected: %d (Brushes Scanned %d, Ents Scanned %d)\n", iBrushesSelected, iBrushesScanned, iEntsScanned);
2873  }
2874 
2875  if (bFoundSomething)
2876  {
2877  idVec3 v3Origin;
2878 
2879  if (pLastFoundEnt->origin[0] != 0.0f || pLastFoundEnt->origin[1] != 0.0f || pLastFoundEnt->origin[2] != 0.0f)
2880  {
2881  VectorCopy(pLastFoundEnt->origin,v3Origin);
2882  }
2883  else
2884  {
2885  // pLastFoundEnt's origin is zero, so use average point of brush mins maxs instead...
2886  //
2887  v3Origin[0] = (pLastFoundBrush->mins[0] + pLastFoundBrush->maxs[0])/2;
2888  v3Origin[1] = (pLastFoundBrush->mins[1] + pLastFoundBrush->maxs[1])/2;
2889  v3Origin[2] = (pLastFoundBrush->mins[2] + pLastFoundBrush->maxs[2])/2;
2890  }
2891 
2892  // got one, jump the camera to it...
2893  //
2894  VectorCopy(v3Origin, g_pParentWnd->GetCamera()->Camera().origin);
2895  g_pParentWnd->GetCamera()->Camera().origin[1] -= 32; // back off a touch to look at it
2896  g_pParentWnd->GetCamera()->Camera().angles[0] = 0;
2897  g_pParentWnd->GetCamera()->Camera().angles[1] = 90;
2898  g_pParentWnd->GetCamera()->Camera().angles[2] = 0;
2899 
2900  // force main screen into XY camera mode (just in case)...
2901  //
2902  g_pParentWnd->SetActiveXY(g_pParentWnd->GetXYWnd());
2903  g_pParentWnd->GetXYWnd()->PositionView();
2904 
2905  Sys_UpdateWindows (W_ALL);
2906  //
2907  // and record for next find request (F3)...
2908  //
2909  gpPrevEntBrushFound = pLastFoundBrush;
2910  }
2911 
2912  return bFoundSomething;
2913 }
2914 
2915 
2917 {
2918  CEntKeyFindReplace FindReplace(&strFindKey, &strFindValue, &strReplaceKey, &strReplaceValue, &gbWholeStringMatchOnly, &gbSelectAllMatchingEnts);
2919  switch (FindReplace.DoModal())
2920  {
2921  case ID_RET_REPLACE:
2922  {
2923  brush_t* next = NULL;
2924  int iOccurences = 0;
2925  for (brush_t* b = active_brushes.next ; b != &active_brushes ; b = next)
2926  {
2927  next = b->next; // important to do this here, in case brush gets linked to a different list
2928  entity_t* ent = b->owner;
2929 
2930  if (ent) // needed!
2931  {
2932  if (FilterBrush (b))
2933  continue;
2934 
2935  const char *psEntFoundValue = ValueForKey(ent, strFindKey);
2936 
2937  if (stricmp(strFindValue, psEntFoundValue)==0 || // found this exact key/value
2938  (strlen(psEntFoundValue) && strFindValue.IsEmpty()) // or any value for this key if blank value search specified
2939  )
2940  {
2941  // found this search key/value, so delete it...
2942  //
2943  DeleteKey(ent,strFindKey);
2944  //
2945  // and replace with the new key/value (if specified)...
2946  //
2947  if (!strReplaceKey.IsEmpty() && !strReplaceValue.IsEmpty())
2948  {
2949  SetKeyValue (ent, strReplaceKey, strReplaceValue);
2950  }
2951  iOccurences++;
2952  }
2953  }
2954  }
2955  if (iOccurences)
2956  {
2957  common->Printf("%d occurence(s) replaced\n",iOccurences);
2958  }
2959  else
2960  {
2961  common->Printf("Nothing found to replace\n");
2962  }
2963  }
2964  break;
2965  case ID_RET_FIND:
2966  {
2967  gpPrevEntBrushFound = NULL;
2969  }
2970  break;
2971  }
2972 }
2974 {
2975  // try it once, if it fails, try it again from top, and give up if still failed after that...
2976  //
2977  if (!FindNextBrush(gpPrevEntBrushFound))
2978  {
2979  gpPrevEntBrushFound = NULL;
2981  }
2982 }
2983 
2985 {
2986  CString psNewCoords = GetString("Input coords (x y z [rot])\n\nUse spaces to seperate numbers");
2987  if (!psNewCoords.IsEmpty())
2988  {
2989  idVec3 v3Viewpos;
2990  float fYaw = 0;
2991 
2992  psNewCoords.Remove(',');
2993  int iArgsFound = sscanf(psNewCoords,"%f %f %f",&v3Viewpos[0], &v3Viewpos[1], &v3Viewpos[2]);
2994  if (iArgsFound == 3)
2995  {
2996  // try for an optional 4th (note how this wasn't part of the sscanf() above, so I can check 1st-3, not just any 3)
2997  //
2998  int iArgsFound = sscanf(psNewCoords,"%f %f %f %f", &v3Viewpos[0], &v3Viewpos[1], &v3Viewpos[2], &fYaw);
2999  if (iArgsFound != 4)
3000  {
3001  fYaw = 0; // jic
3002  }
3003 
3004  g_pParentWnd->GetCamera()->Camera().angles[YAW] = fYaw;
3005  VectorCopy (v3Viewpos, g_pParentWnd->GetCamera()->Camera().origin);
3006  VectorCopy (v3Viewpos, g_pParentWnd->GetXYWnd()->GetOrigin());
3007  Sys_UpdateWindows (W_ALL);
3008  }
3009  else
3010  {
3011  ErrorBox(va("\"%s\" wasn't 3 valid floats with spaces",psNewCoords));
3012  }
3013  }
3014 }
3015 
3016 /*
3017  =======================================================================================================================
3018  =======================================================================================================================
3019  */
3021  DoColor(COLOR_TEXTUREBACK);
3022  Sys_UpdateWindows(W_ALL);
3023 }
3024 
3025 /*
3026  =======================================================================================================================
3027  =======================================================================================================================
3028  */
3030  DoColor(COLOR_GRIDMAJOR);
3031  Sys_UpdateWindows(W_ALL);
3032 }
3033 
3034 /*
3035  =======================================================================================================================
3036  =======================================================================================================================
3037  */
3039  DoColor(COLOR_GRIDMINOR);
3040  Sys_UpdateWindows(W_ALL);
3041 }
3042 
3043 /*
3044  =======================================================================================================================
3045  =======================================================================================================================
3046  */
3048  DoColor(COLOR_GRIDBACK);
3049  Sys_UpdateWindows(W_ALL);
3050 }
3051 
3052 /*
3053  =======================================================================================================================
3054  =======================================================================================================================
3055  */
3057  Undo_Start("3 sided");
3059  Brush_MakeSided(3);
3061  Undo_End();
3062 }
3063 
3064 /*
3065  =======================================================================================================================
3066  =======================================================================================================================
3067  */
3069  Undo_Start("4 sided");
3071  Brush_MakeSided(4);
3073  Undo_End();
3074 }
3075 
3076 /*
3077  =======================================================================================================================
3078  =======================================================================================================================
3079  */
3081  Undo_Start("5 sided");
3083  Brush_MakeSided(5);
3085  Undo_End();
3086 }
3087 
3088 /*
3089  =======================================================================================================================
3090  =======================================================================================================================
3091  */
3093  Undo_Start("6 sided");
3095  Brush_MakeSided(6);
3097  Undo_End();
3098 }
3099 
3100 /*
3101  =======================================================================================================================
3102  =======================================================================================================================
3103  */
3105  Undo_Start("7 sided");
3107  Brush_MakeSided(7);
3109  Undo_End();
3110 }
3111 
3112 /*
3113  =======================================================================================================================
3114  =======================================================================================================================
3115  */
3117  Undo_Start("8 sided");
3119  Brush_MakeSided(8);
3121  Undo_End();
3122 }
3123 
3124 /*
3125  =======================================================================================================================
3126  =======================================================================================================================
3127  */
3129  Undo_Start("9 sided");
3131  Brush_MakeSided(9);
3133  Undo_End();
3134 }
3135 
3136 /*
3137  =======================================================================================================================
3138  =======================================================================================================================
3139  */
3141  Undo_Start("arbitrary sided");
3143  DoSides();
3145  Undo_End();
3146 }
3147 
3148 /*
3149  =======================================================================================================================
3150  =======================================================================================================================
3151  */
3153  Undo_Start("flip X");
3155 
3156  Select_FlipAxis(0);
3157  for (brush_t * b = selected_brushes.next; b != &selected_brushes; b = b->next) {
3158  if (b->owner->eclass->fixedsize) {
3159  char buf[16];
3160  float a = FloatForKey(b->owner, "angle");
3161  a = div((180 - a), 180).rem;
3162  SetKeyValue(b->owner, "angle", itoa(a, buf, 10));
3163  Brush_Build(b);
3164  }
3165  }
3166  Patch_ToggleInverted();
3168  Undo_End();
3169 }
3170 
3171 /*
3172  =======================================================================================================================
3173  =======================================================================================================================
3174  */
3176  Undo_Start("flip Y");
3178 
3179  Select_FlipAxis(1);
3180  for (brush_t * b = selected_brushes.next; b != &selected_brushes; b = b->next) {
3181  if (b->owner->eclass->fixedsize) {
3182  float a = FloatForKey(b->owner, "angle");
3183  if (a == 0 || a == 180 || a == 360) {
3184  continue;
3185  }
3186 
3187  if (a == 90 || a == 270) {
3188  a += 180;
3189  }
3190  else if (a > 270) {
3191  a += 90;
3192  }
3193  else if (a > 180) {
3194  a -= 90;
3195  }
3196  else if (a > 90) {
3197  a += 90;
3198  }
3199  else {
3200  a -= 90;
3201  }
3202 
3203  a = (int)a % 360;
3204 
3205  char buf[16];
3206  SetKeyValue(b->owner, "angle", itoa(a, buf, 10));
3207  Brush_Build(b);
3208  }
3209  }
3210  Patch_ToggleInverted();
3212  Undo_End();
3213 }
3214 
3215 /*
3216  =======================================================================================================================
3217  =======================================================================================================================
3218  */
3220  Undo_Start("flip Z");
3222  Select_FlipAxis(2);
3223  Patch_ToggleInverted();
3225  Undo_End();
3226 }
3227 
3228 /*
3229  =======================================================================================================================
3230  =======================================================================================================================
3231  */
3233  Undo_Start("rotate X");
3235  Select_RotateAxis(0, 90);
3237  Undo_End();
3238 }
3239 
3240 /*
3241  =======================================================================================================================
3242  =======================================================================================================================
3243  */
3245  Undo_Start("rotate Y");
3247  Select_RotateAxis(1, 90);
3249  Undo_End();
3250 }
3251 
3252 /*
3253  =======================================================================================================================
3254  =======================================================================================================================
3255  */
3257  Undo_Start("rotate Z");
3259  Select_RotateAxis(2, 90);
3261  Undo_End();
3262 }
3263 
3264 /*
3265  =======================================================================================================================
3266  =======================================================================================================================
3267  */
3269  Map_RegionOff();
3270 }
3271 
3272 /*
3273  =======================================================================================================================
3274  =======================================================================================================================
3275  */
3277  Map_RegionBrush();
3278 }
3279 
3280 /*
3281  =======================================================================================================================
3282  =======================================================================================================================
3283  */
3286 }
3287 
3288 /*
3289  =======================================================================================================================
3290  =======================================================================================================================
3291  */
3294 }
3295 
3296 /*
3297  =======================================================================================================================
3298  =======================================================================================================================
3299  */
3301  Map_RegionXY();
3302 }
3303 
3304 /*
3305  =======================================================================================================================
3306  =======================================================================================================================
3307  */
3309  // if (ActiveXY()) ActiveXY()->UndoCopy();
3310  Undo_Start("arbitrary rotation");
3312 
3313  CRotateDlg dlg;
3314  dlg.DoModal();
3315 
3316  // DoRotate ();
3318  Undo_End();
3319 }
3320 
3321 /*
3322  =======================================================================================================================
3323  =======================================================================================================================
3324  */
3326  // if (ActiveXY()) ActiveXY()->UndoCopy();
3327  Select_Clone();
3328 }
3329 
3330 /*
3331  =======================================================================================================================
3332  =======================================================================================================================
3333  */
3335  ConnectEntities();
3336 }
3337 
3338 /*
3339  =======================================================================================================================
3340  =======================================================================================================================
3341  */
3343  // if (ActiveXY()) ActiveXY()->UndoCopy();
3344  Undo_Start("hollow");
3346  CSG_MakeHollow();
3348  Undo_End();
3349 }
3350 
3351 /*
3352  =======================================================================================================================
3353  =======================================================================================================================
3354  */
3356  // if (ActiveXY()) ActiveXY()->UndoCopy();
3357  Undo_Start("CSG subtract");
3358  CSG_Subtract();
3359  Undo_End();
3360 }
3361 
3362 /*
3363  =======================================================================================================================
3364  =======================================================================================================================
3365  */
3367  // if (ActiveXY()) ActiveXY()->UndoCopy();
3368  Undo_Start("CSG merge");
3370  CSG_Merge();
3372  Undo_End();
3373 }
3374 
3375 /*
3376  =======================================================================================================================
3377  =======================================================================================================================
3378  */
3380  brush_t *brush;
3381 
3382  // if (ActiveXY()) ActiveXY()->UndoCopy();
3383  Undo_Start("delete");
3385 
3386  // add all deleted entities to the undo
3387  for (brush = selected_brushes.next; brush != &selected_brushes; brush = brush->next) {
3388  Undo_AddEntity(brush->owner);
3389  }
3390 
3391  // NOTE: Select_Delete does NOT delete entities
3392  Select_Delete();
3394  Undo_End();
3395 }
3396 
3397 /*
3398  =======================================================================================================================
3399  =======================================================================================================================
3400  */
3402  if (!ByeByeSurfaceDialog()) {
3403  if (g_bClipMode) {
3404  OnViewClipper();
3405  } else if (g_bRotateMode) {
3407  } else if (g_bScaleMode) {
3409  } else if (g_bPathMode) {
3410  if (ActiveXY()) {
3411  ActiveXY()->KillPathMode();
3412  }
3413  } else if (g_bAxialMode) {
3414  g_bAxialMode = false;
3415  Sys_UpdateWindows(W_CAMERA);
3416  } else {
3417  if (g_qeglobals.d_select_mode == sel_curvepoint && g_qeglobals.d_num_move_points > 0) {
3418  g_qeglobals.d_num_move_points = 0;
3419  Sys_UpdateWindows(W_ALL);
3420  } else {
3421  Select_Deselect();
3422  SetStatusText(2, " ");
3423  }
3424  }
3425  }
3426 }
3427 
3428 /*
3429  =======================================================================================================================
3430  =======================================================================================================================
3431  */
3433  if (g_qeglobals.d_select_mode == sel_edge) {
3434  g_qeglobals.d_select_mode = sel_brush;
3435  Sys_UpdateWindows(W_ALL);
3436  }
3437  else {
3438  SetupVertexSelection();
3439  if (g_qeglobals.d_numpoints) {
3440  g_qeglobals.d_select_mode = sel_edge;
3441  }
3442 
3443  Sys_UpdateWindows(W_ALL);
3444  }
3445 }
3446 
3447 /*
3448  =======================================================================================================================
3449  =======================================================================================================================
3450  */
3452  if (g_qeglobals.d_select_mode == sel_vertex || g_qeglobals.d_select_mode == sel_curvepoint) {
3453  g_qeglobals.d_select_mode = sel_brush;
3454  Sys_UpdateWindows(W_ALL);
3455  }
3456  else {
3457  // --if (QE_SingleBrush() && selected_brushes.next->patchBrush)
3458  if (OnlyPatchesSelected()) {
3459  Patch_EditPatch();
3460  }
3461  else if (!AnyPatchesSelected()) {
3462  SetupVertexSelection();
3463  if (g_qeglobals.d_numpoints) {
3464  g_qeglobals.d_select_mode = sel_vertex;
3465  }
3466  }
3467 
3468  Sys_UpdateWindows(W_ALL);
3469  }
3470 }
3471 
3472 /*
3473  =======================================================================================================================
3474  =======================================================================================================================
3475  */
3477  Undo_Start("center origin");
3479  Select_CenterOrigin();
3481  Undo_End();
3482 }
3483 
3484 /*
3485  =======================================================================================================================
3486  =======================================================================================================================
3487  */
3489  //if (ActiveXY()) {
3490  // ActiveXY()->UndoCopy();
3491  //}
3492 
3493  Select_CompleteTall();
3494 }
3495 
3496 /*
3497  =======================================================================================================================
3498  =======================================================================================================================
3499  */
3501  Select_Inside();
3502 }
3503 
3504 /*
3505  =======================================================================================================================
3506  =======================================================================================================================
3507  */
3509  Select_PartialTall();
3510 }
3511 
3512 /*
3513  =======================================================================================================================
3514  =======================================================================================================================
3515  */
3517  Select_Touching();
3518 }
3519 
3520 /*
3521  =======================================================================================================================
3522  =======================================================================================================================
3523  */
3525  Select_Ungroup();
3526 }
3527 
3529 {
3530  Select_AutoCaulk();
3531 }
3532 void CMainFrame::OnUpdateAutocaulk(CCmdUI* pCmdUI)
3533 {
3534  pCmdUI->Enable( selected_brushes.next != &selected_brushes);
3535 }
3536 
3537 
3538 /*
3539  =======================================================================================================================
3540  =======================================================================================================================
3541  */
3544 }
3545 
3546 /*
3547  =======================================================================================================================
3548  =======================================================================================================================
3549  */
3552 }
3553 
3554 /*
3555  =======================================================================================================================
3556  =======================================================================================================================
3557  */
3560 }
3561 
3562 /*
3563  =======================================================================================================================
3564  =======================================================================================================================
3565  */
3567  OnViewNextview();
3568 }
3569 
3570 /*
3571  =======================================================================================================================
3572  =======================================================================================================================
3573  */
3575  g_qeglobals.flatRotation++;
3576 
3577  if (g_qeglobals.flatRotation > 2) {
3578  g_qeglobals.flatRotation = 0;
3579  }
3580 
3581  if (g_qeglobals.flatRotation) {
3582  g_qeglobals.rotateAxis = 0;
3583  if (ActiveXY()->GetViewType() == XY) {
3584  g_qeglobals.rotateAxis = 2;
3585  } else if (ActiveXY()->GetViewType() == XZ) {
3586  g_qeglobals.rotateAxis = 1;
3587  }
3588  }
3589  Select_InitializeRotation();
3590  Sys_UpdateWindows(W_CAMERA | W_XY);
3591 }
3592 
3593 
3594 /*
3595  =======================================================================================================================
3596  =======================================================================================================================
3597  */
3598 void CMainFrame::OnSizing(UINT fwSide, LPRECT pRect) {
3599  CFrameWnd::OnSizing(fwSide, pRect);
3600  GetClientRect(g_rctOld);
3601 }
3602 
3603 /*
3604  =======================================================================================================================
3605  =======================================================================================================================
3606  */
3608  DoAbout();
3609 }
3610 
3611 /*
3612  =======================================================================================================================
3613  =======================================================================================================================
3614  */
3616  if (ActiveXY()) {
3617  if (ActiveXY()->ClipMode()) {
3618  ActiveXY()->SetClipMode(false);
3619  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_VIEW_CLIPPER, FALSE);
3620  }
3621  else {
3622  if (ActiveXY()->RotateMode()) {
3624  }
3625 
3626  ActiveXY()->SetClipMode(true);
3627  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_VIEW_CLIPPER);
3628  }
3629  }
3630 }
3631 
3632 /*
3633  =======================================================================================================================
3634  =======================================================================================================================
3635  */
3637  m_pCamWnd->Camera().angles[0] -= SPEED_TURN;
3638  if (m_pCamWnd->Camera().angles[0] < -85) {
3639  m_pCamWnd->Camera().angles[0] = -85;
3640  }
3641 
3642  Sys_UpdateWindows(W_CAMERA | W_XY_OVERLAY);
3643 }
3644 
3645 /*
3646  =======================================================================================================================
3647  =======================================================================================================================
3648  */
3650  m_pCamWnd->Camera().angles[0] += SPEED_TURN;
3651  if (m_pCamWnd->Camera().angles[0] > 85) {
3652  m_pCamWnd->Camera().angles[0] = 85;
3653  }
3654 
3655  Sys_UpdateWindows(W_CAMERA | W_XY_OVERLAY);
3656 }
3657 
3658 /*
3659  =======================================================================================================================
3660  =======================================================================================================================
3661  */
3664 
3665  int nUpdate = (g_PrefsDlg.m_bCamXYUpdate) ? (W_CAMERA | W_XY) : (W_CAMERA);
3666  Sys_UpdateWindows(nUpdate);
3667 }
3668 
3669 /*
3670  =======================================================================================================================
3671  =======================================================================================================================
3672  */
3674  m_pCamWnd->Camera().origin[2] -= SPEED_MOVE;
3675  Sys_UpdateWindows(W_CAMERA | W_XY | W_Z);
3676 }
3677 
3678 /*
3679  =======================================================================================================================
3680  =======================================================================================================================
3681  */
3684 
3685  int nUpdate = (g_PrefsDlg.m_bCamXYUpdate) ? (W_CAMERA | W_XY) : (W_CAMERA);
3686  Sys_UpdateWindows(nUpdate);
3687 }
3688 
3689 /*
3690  =======================================================================================================================
3691  =======================================================================================================================
3692  */
3694  m_pCamWnd->Camera().angles[1] += SPEED_TURN;
3695 
3696  int nUpdate = (g_PrefsDlg.m_bCamXYUpdate) ? (W_CAMERA | W_XY) : (W_CAMERA);
3697  Sys_UpdateWindows(nUpdate);
3698 }
3699 
3700 /*
3701  =======================================================================================================================
3702  =======================================================================================================================
3703  */
3705  m_pCamWnd->Camera().angles[1] -= SPEED_TURN;
3706 
3707  int nUpdate = (g_PrefsDlg.m_bCamXYUpdate) ? (W_CAMERA | W_XY) : (W_CAMERA);
3708  Sys_UpdateWindows(nUpdate);
3709 }
3710 
3711 /*
3712  =======================================================================================================================
3713  =======================================================================================================================
3714  */
3717 
3718  int nUpdate = (g_PrefsDlg.m_bCamXYUpdate) ? (W_CAMERA | W_XY) : (W_CAMERA);
3719  Sys_UpdateWindows(nUpdate);
3720 }
3721 
3722 /*
3723  =======================================================================================================================
3724  =======================================================================================================================
3725  */
3728 
3729  int nUpdate = (g_PrefsDlg.m_bCamXYUpdate) ? (W_CAMERA | W_XY) : (W_CAMERA);
3730  Sys_UpdateWindows(nUpdate);
3731 }
3732 
3733 /*
3734  =======================================================================================================================
3735  =======================================================================================================================
3736  */
3738  m_pCamWnd->Camera().origin[2] += SPEED_MOVE;
3739  Sys_UpdateWindows(W_CAMERA | W_XY | W_Z);
3740 }
3741 
3742 /*
3743  =======================================================================================================================
3744  =======================================================================================================================
3745  */
3747  g_qeglobals.d_showgrid ^= 1;
3748  Sys_UpdateWindows(W_XY | W_Z);
3749 }
3750 
3751 /*
3752  =======================================================================================================================
3753  =======================================================================================================================
3754  */
3756  BOOL bToolbar = g_PrefsDlg.m_bWideToolbar;
3757  g_PrefsDlg.LoadPrefs();
3758  if (g_PrefsDlg.DoModal() == IDOK) {
3759  if (g_PrefsDlg.m_bWideToolbar != bToolbar) {
3760  MessageBox("You need to restart Q3Radiant for the view changes to take place.");
3761  }
3762 
3764 
3765  CMenu *pMenu = GetMenu();
3766  if (pMenu) {
3767  pMenu->CheckMenuItem(ID_SNAPTOGRID, MF_BYCOMMAND | (!g_PrefsDlg.m_bNoClamp) ? MF_CHECKED : MF_UNCHECKED);
3768  }
3769  }
3770 }
3771 
3772 //
3773 // =======================================================================================================================
3774 // 0 = radiant styel 1 = qe4 style
3775 // =======================================================================================================================
3776 //
3777 void CMainFrame::SetWindowStyle(int nStyle) {
3778 }
3779 
3780 /*
3781  =======================================================================================================================
3782  =======================================================================================================================
3783  */
3785  if (m_pCamWnd->IsWindowVisible()) {
3786  m_pCamWnd->ShowWindow(SW_HIDE);
3787  } else {
3788  m_pCamWnd->ShowWindow(SW_SHOW);
3789  }
3790 }
3791 
3792 
3793 /*
3794  =======================================================================================================================
3795  =======================================================================================================================
3796  */
3798  if (m_pXYWnd && m_pXYWnd->GetSafeHwnd()) {
3799  if (m_pXYWnd->IsWindowVisible()) {
3800  m_pXYWnd->ShowWindow(SW_HIDE);
3801  } else {
3802  m_pXYWnd->ShowWindow(SW_SHOW);
3803  }
3804  }
3805 }
3806 
3807 /*
3808  =======================================================================================================================
3809  =======================================================================================================================
3810  */
3812  if (m_pZWnd && m_pZWnd->GetSafeHwnd()) {
3813  if (m_pZWnd->IsWindowVisible()) {
3814  m_pZWnd->ShowWindow(SW_HIDE);
3815  } else {
3816  m_pZWnd->ShowWindow(SW_SHOW);
3817  }
3818  }
3819 }
3820 
3821 /*
3822  =======================================================================================================================
3823  =======================================================================================================================
3824  */
3826  g_PrefsDlg.m_bTextureLock = !g_PrefsDlg.m_bTextureLock;
3827 
3828  CMenu *pMenu = GetMenu();
3829  if (pMenu) {
3830  pMenu->CheckMenuItem(ID_TOGGLE_LOCK, MF_BYCOMMAND | (g_PrefsDlg.m_bTextureLock) ? MF_CHECKED : MF_UNCHECKED);
3831  }
3832 
3833  g_PrefsDlg.SavePrefs();
3834  SetGridStatus();
3835 }
3836 
3837 /*
3838  =======================================================================================================================
3839  =======================================================================================================================
3840  */
3842  CMapInfo dlg;
3843  dlg.DoModal();
3844 }
3845 
3846 /*
3847  =======================================================================================================================
3848  =======================================================================================================================
3849  */
3852 }
3853 
3854 /*
3855  =======================================================================================================================
3856  =======================================================================================================================
3857  */
3859  if (m_pXYWnd->GetViewType() == XY) {
3860  m_pXYWnd->SetViewType(XZ);
3861  }
3862  else if (m_pXYWnd->GetViewType() == XZ) {
3863  m_pXYWnd->SetViewType(YZ);
3864  }
3865  else {
3866  m_pXYWnd->SetViewType(XY);
3867  }
3868 
3870  if (g_qeglobals.flatRotation) {
3871  g_qeglobals.rotateAxis = 0;
3872  if (ActiveXY()->GetViewType() == XY) {
3873  g_qeglobals.rotateAxis = 2;
3874  } else if (ActiveXY()->GetViewType() == XZ) {
3875  g_qeglobals.rotateAxis = 1;
3876  }
3877  }
3878  Sys_UpdateWindows(W_XY | W_CAMERA);
3879 }
3880 
3881 /*
3882  =======================================================================================================================
3883  =======================================================================================================================
3884  */
3886  CCommandsDlg dlg;
3887  dlg.DoModal();
3888 #if 0
3889  if (g_b3Dfx) {
3890  C3DFXCamWnd *pWnd = new C3DFXCamWnd();
3891  CRect rect(50, 50, 400, 400);
3892  pWnd->Create(_3DFXCAMERA_WINDOW_CLASS, "", QE3_CHILDSTYLE, rect, this, 1234);
3893  pWnd->ShowWindow(SW_SHOW);
3894  }
3895 #endif
3896 }
3897 
3898 /*
3899  =======================================================================================================================
3900  =======================================================================================================================
3901  */
3903 {
3904 }
3905 
3906 /*
3907  =======================================================================================================================
3908  =======================================================================================================================
3909  */
3911  for (int n = 0; n < 6; n++) {
3912  if (m_strStatus[n].GetLength() >= 0 && m_wndStatusBar.GetSafeHwnd()) {
3913  m_wndStatusBar.SetPaneText(n, m_strStatus[n]);
3914  }
3915  }
3916 }
3917 
3918 /*
3919  =======================================================================================================================
3920  =======================================================================================================================
3921  */
3922 void CMainFrame::SetStatusText(int nPane, const char *pText) {
3923  if (pText && nPane <= 5 && nPane >= 0) {
3924  m_strStatus[nPane] = pText;
3925  UpdateStatusText();
3926  }
3927 }
3928 
3929 /*
3930  =======================================================================================================================
3931  =======================================================================================================================
3932  */
3933 void CMainFrame::UpdateWindows(int nBits) {
3934 
3935  if (!g_bScreenUpdates) {
3936  return;
3937  }
3938 
3939  if (nBits & (W_XY | W_XY_OVERLAY)) {
3940  if (m_pXYWnd) {
3941  m_pXYWnd->RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW);
3942  }
3943 
3944  if (m_pXZWnd) {
3945  m_pXZWnd->RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW);
3946  }
3947 
3948  if (m_pYZWnd) {
3949  m_pYZWnd->RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW);
3950  }
3951  }
3952 
3953  if (nBits & W_CAMERA || ((nBits & W_CAMERA_IFON) && m_bCamPreview)) {
3954  if (m_pCamWnd) {
3955  m_pCamWnd->RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW);
3956  }
3957  }
3958 
3959  if (nBits & (W_Z | W_Z_OVERLAY)) {
3960  if (m_pZWnd) {
3961  m_pZWnd->RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW);
3962  }
3963  }
3964 
3965  if (nBits & W_TEXTURE) {
3966  g_Inspectors->texWnd.RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW);
3967  }
3968 }
3969 
3970 /*
3971  =======================================================================================================================
3972  =======================================================================================================================
3973  */
3974 void WINAPI Sys_UpdateWindows(int nBits) {
3975  if (g_PrefsDlg.m_bQE4Painting) {
3976  g_nUpdateBits |= nBits;
3977  }
3978  else if ( g_pParentWnd ) {
3979  g_pParentWnd->UpdateWindows(nBits);
3980  }
3981 }
3982 
3983 /*
3984  =======================================================================================================================
3985  =======================================================================================================================
3986  */
3988  if (m_pActiveXY) {
3989  m_pActiveXY->FlipClip();
3990  }
3991 }
3992 
3993 /*
3994  =======================================================================================================================
3995  =======================================================================================================================
3996  */
3998  if (m_pActiveXY && m_pActiveXY->ClipMode()) {
3999  Undo_Start("clip selected");
4001  m_pActiveXY->Clip();
4003  Undo_End();
4004  } else {
4005  if (g_bPatchBendMode) {
4006  Patch_BendHandleENTER();
4007  } else if (g_bAxialMode) {
4008 
4009  }
4010  //else if (g_bPatchBendMode) {
4011  // Patch_InsDelHandleENTER();
4012  //}
4013  }
4014 }
4015 
4016 /*
4017  =======================================================================================================================
4018  =======================================================================================================================
4019  */
4021  if (m_pActiveXY) {
4022  Undo_Start("split selected");
4026  Undo_End();
4027  }
4028 }
4029 
4030 /*
4031  =======================================================================================================================
4032  =======================================================================================================================
4033  */
4035  return m_pActiveXY;
4036 }
4037 
4038 /*
4039  =======================================================================================================================
4040  =======================================================================================================================
4041  */
4043  if (m_pXZWnd && m_pXZWnd->GetSafeHwnd()) {
4044  // get windowplacement doesn't actually save this so we will here
4045  g_PrefsDlg.m_bXZVis = m_pXZWnd->IsWindowVisible();
4046  if (g_PrefsDlg.m_bXZVis) {
4047  m_pXZWnd->ShowWindow(SW_HIDE);
4048  } else {
4049  m_pXZWnd->ShowWindow(SW_SHOW);
4050  }
4051 
4052  g_PrefsDlg.m_bXZVis ^= 1;
4053  g_PrefsDlg.SavePrefs();
4054  }
4055 }
4056 
4057 /*
4058  =======================================================================================================================
4059  =======================================================================================================================
4060  */
4062  if (m_pYZWnd && m_pYZWnd->GetSafeHwnd()) {
4063  g_PrefsDlg.m_bYZVis = m_pYZWnd->IsWindowVisible();
4064  if (g_PrefsDlg.m_bYZVis) {
4065  m_pYZWnd->ShowWindow(SW_HIDE);
4066  } else {
4067  m_pYZWnd->ShowWindow(SW_SHOW);
4068  }
4069 
4070  g_PrefsDlg.m_bYZVis ^= 1;
4071  g_PrefsDlg.SavePrefs();
4072  }
4073 }
4074 
4075 /*
4076  =======================================================================================================================
4077  =======================================================================================================================
4078  */
4079 
4081 {
4082  ShowControlBar(&m_wndToolBar, !m_wndToolBar.IsWindowVisible(), false);
4083 }
4084 
4086 {
4087  ShowControlBar(&m_wndTextureBar, !m_wndTextureBar.IsWindowVisible(), false);
4088 }
4089 
4090 
4091 /*
4092  =======================================================================================================================
4093  =======================================================================================================================
4094  */
4096  DoColor(COLOR_BRUSHES);
4097  Sys_UpdateWindows(W_ALL);
4098 }
4099 
4100 /*
4101  =======================================================================================================================
4102  =======================================================================================================================
4103  */
4105  DoColor(COLOR_CLIPPER);
4106  Sys_UpdateWindows(W_ALL);
4107 }
4108 
4109 /*
4110  =======================================================================================================================
4111  =======================================================================================================================
4112  */
4114  DoColor(COLOR_GRIDTEXT);
4115  Sys_UpdateWindows(W_ALL);
4116 }
4117 
4118 /*
4119  =======================================================================================================================
4120  =======================================================================================================================
4121  */
4123  DoColor(COLOR_SELBRUSHES);
4124  Sys_UpdateWindows(W_ALL);
4125 }
4126 
4127 /*
4128  =======================================================================================================================
4129  =======================================================================================================================
4130  */
4132  DoColor(COLOR_GRIDBLOCK);
4133  Sys_UpdateWindows(W_ALL);
4134 }
4135 
4136 /*
4137  =======================================================================================================================
4138  =======================================================================================================================
4139  */
4141  DoColor(COLOR_VIEWNAME);
4142  Sys_UpdateWindows(W_ALL);
4143 }
4144 
4145 /*
4146  =======================================================================================================================
4147  =======================================================================================================================
4148  */
4150  for (int i = 0; i < 3; i++) {
4151  g_qeglobals.d_savedinfo.colors[COLOR_TEXTUREBACK][i] = 0.0f;
4152  g_qeglobals.d_savedinfo.colors[COLOR_GRIDBACK][i] = 1.0f;
4153  g_qeglobals.d_savedinfo.colors[COLOR_GRIDMINOR][i] = 0.75f;
4154  g_qeglobals.d_savedinfo.colors[COLOR_GRIDMAJOR][i] = 0.5f;
4155  g_qeglobals.d_savedinfo.colors[COLOR_CAMERABACK][i] = 0.25f;
4156  }
4157 
4158  g_qeglobals.d_savedinfo.colors[COLOR_GRIDBLOCK][0] = 0.0f;
4159  g_qeglobals.d_savedinfo.colors[COLOR_GRIDBLOCK][1] = 0.0f;
4160  g_qeglobals.d_savedinfo.colors[COLOR_GRIDBLOCK][2] = 1.0f;
4161 
4162  g_qeglobals.d_savedinfo.colors[COLOR_GRIDTEXT][0] = 0.0f;
4163  g_qeglobals.d_savedinfo.colors[COLOR_GRIDTEXT][1] = 0.0f;
4164  g_qeglobals.d_savedinfo.colors[COLOR_GRIDTEXT][2] = 0.0f;
4165 
4166  g_qeglobals.d_savedinfo.colors[COLOR_SELBRUSHES][0] = 1.0f;
4167  g_qeglobals.d_savedinfo.colors[COLOR_SELBRUSHES][1] = 0.0f;
4168  g_qeglobals.d_savedinfo.colors[COLOR_SELBRUSHES][2] = 0.0f;
4169 
4170  g_qeglobals.d_savedinfo.colors[COLOR_CLIPPER][0] = 0.0f;
4171  g_qeglobals.d_savedinfo.colors[COLOR_CLIPPER][1] = 0.0f;
4172  g_qeglobals.d_savedinfo.colors[COLOR_CLIPPER][2] = 1.0f;
4173 
4174  g_qeglobals.d_savedinfo.colors[COLOR_BRUSHES][0] = 0.0f;
4175  g_qeglobals.d_savedinfo.colors[COLOR_BRUSHES][1] = 0.0f;
4176  g_qeglobals.d_savedinfo.colors[COLOR_BRUSHES][2] = 0.0f;
4177 
4178  g_qeglobals.d_savedinfo.colors[COLOR_VIEWNAME][0] = 0.5f;
4179  g_qeglobals.d_savedinfo.colors[COLOR_VIEWNAME][1] = 0.0f;
4180  g_qeglobals.d_savedinfo.colors[COLOR_VIEWNAME][2] = 0.75f;
4181 
4182  g_qeglobals.d_savedinfo.colors[COLOR_PRECISION_CROSSHAIR][0] = 1.0;
4183  g_qeglobals.d_savedinfo.colors[COLOR_PRECISION_CROSSHAIR][1] = 0.0;
4184  g_qeglobals.d_savedinfo.colors[COLOR_PRECISION_CROSSHAIR][2] = 1.0;
4185 
4186  Sys_UpdateWindows(W_ALL);
4187 }
4188 
4189 /*
4190  =======================================================================================================================
4191  =======================================================================================================================
4192  */
4194  for (int i = 0; i < 3; i++) {
4195  g_qeglobals.d_savedinfo.colors[COLOR_TEXTUREBACK][i] = 0.0f;
4196  g_qeglobals.d_savedinfo.colors[COLOR_GRIDBACK][i] = 1.0f;
4197  g_qeglobals.d_savedinfo.colors[COLOR_GRIDMINOR][i] = 1.0f;
4198  g_qeglobals.d_savedinfo.colors[COLOR_GRIDMAJOR][i] = 0.5f;
4199  g_qeglobals.d_savedinfo.colors[COLOR_CAMERABACK][i] = 0.25f;
4200  }
4201 
4202  g_qeglobals.d_savedinfo.colors[COLOR_GRIDBLOCK][0] = 0.0f;
4203  g_qeglobals.d_savedinfo.colors[COLOR_GRIDBLOCK][1] = 0.0f;
4204  g_qeglobals.d_savedinfo.colors[COLOR_GRIDBLOCK][2] = 1.0f;
4205 
4206  g_qeglobals.d_savedinfo.colors[COLOR_GRIDTEXT][0] = 0.0f;
4207  g_qeglobals.d_savedinfo.colors[COLOR_GRIDTEXT][1] = 0.0f;
4208  g_qeglobals.d_savedinfo.colors[COLOR_GRIDTEXT][2] = 0.0f;
4209 
4210  g_qeglobals.d_savedinfo.colors[COLOR_SELBRUSHES][0] = 1.0f;
4211  g_qeglobals.d_savedinfo.colors[COLOR_SELBRUSHES][1] = 0.0f;
4212  g_qeglobals.d_savedinfo.colors[COLOR_SELBRUSHES][2] = 0.0f;
4213 
4214  g_qeglobals.d_savedinfo.colors[COLOR_CLIPPER][0] = 0.0f;
4215  g_qeglobals.d_savedinfo.colors[COLOR_CLIPPER][1] = 0.0f;
4216  g_qeglobals.d_savedinfo.colors[COLOR_CLIPPER][2] = 1.0f;
4217 
4218  g_qeglobals.d_savedinfo.colors[COLOR_BRUSHES][0] = 0.0f;
4219  g_qeglobals.d_savedinfo.colors[COLOR_BRUSHES][1] = 0.0f;
4220  g_qeglobals.d_savedinfo.colors[COLOR_BRUSHES][2] = 0.0f;
4221 
4222  g_qeglobals.d_savedinfo.colors[COLOR_VIEWNAME][0] = 0.5f;
4223  g_qeglobals.d_savedinfo.colors[COLOR_VIEWNAME][1] = 0.0f;
4224  g_qeglobals.d_savedinfo.colors[COLOR_VIEWNAME][2] = 0.75f;
4225 
4226  g_qeglobals.d_savedinfo.colors[COLOR_PRECISION_CROSSHAIR][0] = 1.0;
4227  g_qeglobals.d_savedinfo.colors[COLOR_PRECISION_CROSSHAIR][1] = 0.0;
4228  g_qeglobals.d_savedinfo.colors[COLOR_PRECISION_CROSSHAIR][2] = 1.0;
4229 
4230  Sys_UpdateWindows(W_ALL);
4231 }
4232 
4233 //FIXME: these just need to be read from a def file
4235  OnColorSetqer();
4236  g_qeglobals.d_savedinfo.colors[COLOR_TEXTUREBACK][0] = 0.0f;
4237  g_qeglobals.d_savedinfo.colors[COLOR_TEXTUREBACK][1] = 0.0f;
4238  g_qeglobals.d_savedinfo.colors[COLOR_TEXTUREBACK][2] = 0.0f;
4239  g_qeglobals.d_savedinfo.colors[COLOR_GRIDBACK][0] = 0.35f;
4240  g_qeglobals.d_savedinfo.colors[COLOR_GRIDBACK][1] = 0.35f;
4241  g_qeglobals.d_savedinfo.colors[COLOR_GRIDBACK][2] = 0.35f;
4242  g_qeglobals.d_savedinfo.colors[COLOR_GRIDMAJOR][0] = 0.5f;
4243  g_qeglobals.d_savedinfo.colors[COLOR_GRIDMAJOR][1] = 0.5f;
4244  g_qeglobals.d_savedinfo.colors[COLOR_GRIDMAJOR][2] = 0.5f;
4245  g_qeglobals.d_savedinfo.colors[COLOR_GRIDMINOR][0] = 0.39f;
4246  g_qeglobals.d_savedinfo.colors[COLOR_GRIDMINOR][1] = 0.39f;
4247  g_qeglobals.d_savedinfo.colors[COLOR_GRIDMINOR][2] = 0.39f;
4248  g_qeglobals.d_savedinfo.colors[COLOR_GRIDTEXT][0] = 0.0f;
4249  g_qeglobals.d_savedinfo.colors[COLOR_GRIDTEXT][1] = 0.0f;
4250  g_qeglobals.d_savedinfo.colors[COLOR_GRIDTEXT][2] = 0.0f;
4251  g_qeglobals.d_savedinfo.colors[COLOR_BRUSHES][0] = 0.0f;
4252  g_qeglobals.d_savedinfo.colors[COLOR_BRUSHES][1] = 0.0f;
4253  g_qeglobals.d_savedinfo.colors[COLOR_BRUSHES][2] = 0.0f;
4254  g_qeglobals.d_savedinfo.colors[COLOR_SELBRUSHES][0] = 1.0f;
4255  g_qeglobals.d_savedinfo.colors[COLOR_SELBRUSHES][1] = 0.90f;
4256  g_qeglobals.d_savedinfo.colors[COLOR_SELBRUSHES][2] = 0.90f;
4257  g_qeglobals.d_savedinfo.colors[COLOR_VIEWNAME][0] = 0.5f;
4258  g_qeglobals.d_savedinfo.colors[COLOR_VIEWNAME][1] = 0.0f;
4259  g_qeglobals.d_savedinfo.colors[COLOR_VIEWNAME][2] = 0.74f;
4260 
4261 
4262  Sys_UpdateWindows(W_ALL);
4263 }
4264 
4265 /*
4266  =======================================================================================================================
4267  =======================================================================================================================
4268  */
4270  for (int i = 0; i < 3; i++) {
4271  g_qeglobals.d_savedinfo.colors[COLOR_TEXTUREBACK][i] = 0.0f;
4272  g_qeglobals.d_savedinfo.colors[COLOR_GRIDBACK][i] = 0.0f;
4273  g_qeglobals.d_savedinfo.colors[COLOR_GRIDMINOR][i] = 0.0f;
4274  g_qeglobals.d_savedinfo.colors[COLOR_CAMERABACK][i] = 0.25f;
4275  }
4276 
4277  g_qeglobals.d_savedinfo.colors[COLOR_GRIDMAJOR][0] = 0.3f;
4278  g_qeglobals.d_savedinfo.colors[COLOR_GRIDMAJOR][1] = 0.5f;
4279  g_qeglobals.d_savedinfo.colors[COLOR_GRIDMAJOR][2] = 0.5f;
4280 
4281  g_qeglobals.d_savedinfo.colors[COLOR_GRIDBLOCK][0] = 0.0f;
4282  g_qeglobals.d_savedinfo.colors[COLOR_GRIDBLOCK][1] = 0.0f;
4283  g_qeglobals.d_savedinfo.colors[COLOR_GRIDBLOCK][2] = 1.0f;
4284 
4285  g_qeglobals.d_savedinfo.colors[COLOR_GRIDTEXT][0] = 1.0f;
4286  g_qeglobals.d_savedinfo.colors[COLOR_GRIDTEXT][1] = 1.0f;
4287  g_qeglobals.d_savedinfo.colors[COLOR_GRIDTEXT][2] = 1.0f;
4288 
4289  g_qeglobals.d_savedinfo.colors[COLOR_SELBRUSHES][0] = 1.0f;
4290  g_qeglobals.d_savedinfo.colors[COLOR_SELBRUSHES][1] = 0.0f;
4291  g_qeglobals.d_savedinfo.colors[COLOR_SELBRUSHES][2] = 0.0f;
4292 
4293  g_qeglobals.d_savedinfo.colors[COLOR_CLIPPER][0] = 0.0f;
4294  g_qeglobals.d_savedinfo.colors[COLOR_CLIPPER][1] = 0.0f;
4295  g_qeglobals.d_savedinfo.colors[COLOR_CLIPPER][2] = 1.0f;
4296 
4297  g_qeglobals.d_savedinfo.colors[COLOR_BRUSHES][0] = 1.0f;
4298  g_qeglobals.d_savedinfo.colors[COLOR_BRUSHES][1] = 1.0f;
4299  g_qeglobals.d_savedinfo.colors[COLOR_BRUSHES][2] = 1.0f;
4300 
4301  g_qeglobals.d_savedinfo.colors[COLOR_VIEWNAME][0] = 0.7f;
4302  g_qeglobals.d_savedinfo.colors[COLOR_VIEWNAME][1] = 0.7f;
4303  g_qeglobals.d_savedinfo.colors[COLOR_VIEWNAME][2] = 0.0f;
4304 
4305  g_qeglobals.d_savedinfo.colors[COLOR_PRECISION_CROSSHAIR][0] = 1.0;
4306  g_qeglobals.d_savedinfo.colors[COLOR_PRECISION_CROSSHAIR][1] = 0.0;
4307  g_qeglobals.d_savedinfo.colors[COLOR_PRECISION_CROSSHAIR][2] = 1.0;
4308 
4309  Sys_UpdateWindows(W_ALL);
4310 }
4311 
4313  for (int i=0 ; i<3 ; i++) {
4314  g_qeglobals.d_savedinfo.colors[COLOR_TEXTUREBACK][i] = 0.25f;
4315  g_qeglobals.d_savedinfo.colors[COLOR_GRIDBACK][i] = 0.77f;
4316  g_qeglobals.d_savedinfo.colors[COLOR_GRIDMINOR][i] = 0.83f;
4317  g_qeglobals.d_savedinfo.colors[COLOR_GRIDMAJOR][i] = 0.89f;
4318  g_qeglobals.d_savedinfo.colors[COLOR_CAMERABACK][i] = 0.25f;
4319  }
4320 
4321  g_qeglobals.d_savedinfo.colors[COLOR_GRIDBLOCK][0] = 1.0f;
4322  g_qeglobals.d_savedinfo.colors[COLOR_GRIDBLOCK][1] = 1.0f;
4323  g_qeglobals.d_savedinfo.colors[COLOR_GRIDBLOCK][2] = 1.0f;
4324  g_qeglobals.d_savedinfo.colors[COLOR_GRIDTEXT][0] = 0.0f;
4325  g_qeglobals.d_savedinfo.colors[COLOR_GRIDTEXT][1] = 0.0f;
4326  g_qeglobals.d_savedinfo.colors[COLOR_GRIDTEXT][2] = 0.0f;
4327  g_qeglobals.d_savedinfo.colors[COLOR_SELBRUSHES][0] = 1.0f;
4328  g_qeglobals.d_savedinfo.colors[COLOR_SELBRUSHES][1] = 0.0f;
4329  g_qeglobals.d_savedinfo.colors[COLOR_SELBRUSHES][2] = 0.0f;
4330  g_qeglobals.d_savedinfo.colors[COLOR_CLIPPER][0] = 0.0f;
4331  g_qeglobals.d_savedinfo.colors[COLOR_CLIPPER][1] = 0.0f;
4332  g_qeglobals.d_savedinfo.colors[COLOR_CLIPPER][2] = 1.0f;
4333  g_qeglobals.d_savedinfo.colors[COLOR_BRUSHES][0] = 0.0f;
4334  g_qeglobals.d_savedinfo.colors[COLOR_BRUSHES][1] = 0.0f;
4335  g_qeglobals.d_savedinfo.colors[COLOR_BRUSHES][2] = 0.0f;
4336  g_qeglobals.d_savedinfo.colors[COLOR_VIEWNAME][0] = 0.5f;
4337  g_qeglobals.d_savedinfo.colors[COLOR_VIEWNAME][1] = 0.0f;
4338  g_qeglobals.d_savedinfo.colors[COLOR_VIEWNAME][2] = 0.75f;
4339 
4340  //g_qeglobals.d_savedinfo.colors[COLOR_CAMERABACK][0] = 0.0f;
4341  //g_qeglobals.d_savedinfo.colors[COLOR_CAMERABACK][1] = 1.0f;
4342  //g_qeglobals.d_savedinfo.colors[COLOR_CAMERABACK][2] = 1.0f;
4343 
4344  g_qeglobals.d_savedinfo.colors[COLOR_PRECISION_CROSSHAIR][0] = 1.0f;
4345  g_qeglobals.d_savedinfo.colors[COLOR_PRECISION_CROSSHAIR][1] = 0.0f;
4346  g_qeglobals.d_savedinfo.colors[COLOR_PRECISION_CROSSHAIR][2] = 1.0f;
4347 
4348  Sys_UpdateWindows (W_ALL);
4349 
4350 }
4351 
4352 /*
4353  =======================================================================================================================
4354  =======================================================================================================================
4355  */
4357  g_PrefsDlg.m_bNoClamp ^= 1;
4358  g_PrefsDlg.SavePrefs();
4359 
4360  CMenu *pMenu = GetMenu();
4361  if (pMenu) {
4362  pMenu->CheckMenuItem(ID_SNAPTOGRID, MF_BYCOMMAND | (!g_PrefsDlg.m_bNoClamp) ? MF_CHECKED : MF_UNCHECKED);
4363  }
4364 }
4365 
4366 /*
4367  =======================================================================================================================
4368  =======================================================================================================================
4369  */
4371  // if (ActiveXY()) ActiveXY()->UndoCopy();
4372  Undo_Start("scale");
4374 
4375  CScaleDialog dlg;
4376  if (dlg.DoModal() == IDOK) {
4377  if (dlg.m_fX > 0 && dlg.m_fY > 0 && dlg.m_fZ > 0) {
4378  Select_Scale(dlg.m_fX, dlg.m_fY, dlg.m_fZ);
4379  Sys_UpdateWindows(W_ALL);
4380  }
4381  else {
4382  common->Printf("Warning.. Tried to scale by a zero value.");
4383  }
4384  }
4385 
4387  Undo_End();
4388 }
4389 
4390 /*
4391  =======================================================================================================================
4392  =======================================================================================================================
4393  */
4395  if (ActiveXY()) {
4396  if (ActiveXY()->ClipMode()) {
4397  OnViewClipper();
4398  }
4399 
4400  if (ActiveXY()->RotateMode()) {
4401  ActiveXY()->SetRotateMode(false);
4402  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SELECT_MOUSEROTATE, FALSE);
4404  }
4405  else {
4406  // may not work if no brush selected, see return value
4407  if (ActiveXY()->SetRotateMode(true)) {
4408  g_qeglobals.rotateAxis = 0;
4409  if (ActiveXY()->GetViewType() == XY) {
4410  g_qeglobals.rotateAxis = 2;
4411  } else if (ActiveXY()->GetViewType() == XZ) {
4412  g_qeglobals.rotateAxis = 1;
4413  }
4414  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SELECT_MOUSEROTATE, TRUE);
4415  }
4416  else { // if MFC called, we need to set back to FALSE ourselves
4417  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SELECT_MOUSEROTATE, FALSE);
4418  }
4419  }
4420  }
4421  Sys_UpdateWindows(W_CAMERA | W_XY);
4422 }
4423 
4424 /*
4425  =======================================================================================================================
4426  =======================================================================================================================
4427  */
4429  if (ActiveXY()) {
4430  ActiveXY()->Copy();
4431  }
4432 }
4433 
4434 /*
4435  =======================================================================================================================
4436  =======================================================================================================================
4437  */
4439  if (ActiveXY()) {
4440  ActiveXY()->Paste();
4441  }
4442 }
4443 
4444 /*
4445  =======================================================================================================================
4446  =======================================================================================================================
4447  */
4449  // if (ActiveXY()) ActiveXY()->Undo();
4450  Undo_Undo();
4451 }
4452 
4453 /*
4454  =======================================================================================================================
4455  =======================================================================================================================
4456  */
4458  Undo_Redo();
4459 }
4460 
4461 /*
4462  =======================================================================================================================
4463  =======================================================================================================================
4464  */
4465 void CMainFrame::OnUpdateEditUndo(CCmdUI *pCmdUI) {
4466  /*
4467  * BOOL bEnable = false; if (ActiveXY()) bEnable = ActiveXY()->UndoAvailable();
4468  * pCmdUI->Enable(bEnable);
4469  */
4470  pCmdUI->Enable(Undo_UndoAvailable());
4471 }
4472 
4473 /*
4474  =======================================================================================================================
4475  =======================================================================================================================
4476  */
4477 void CMainFrame::OnUpdateEditRedo(CCmdUI *pCmdUI) {
4478  pCmdUI->Enable(Undo_RedoAvailable());
4479 }
4480 
4481 /*
4482  =======================================================================================================================
4483  =======================================================================================================================
4484  */
4486  g_qeglobals.d_savedinfo.m_nTextureTweak -= 1.0f;
4487  if ( g_qeglobals.d_savedinfo.m_nTextureTweak == 0.0f ) {
4488  g_qeglobals.d_savedinfo.m_nTextureTweak -= 1.0f;
4489  }
4490 
4491  SetTexValStatus();
4492 }
4493 
4494 /*
4495  =======================================================================================================================
4496  =======================================================================================================================
4497  */
4499  Select_FitTexture( 1.0f, 1.0f );
4500 }
4501 
4502 /*
4503  =======================================================================================================================
4504  =======================================================================================================================
4505  */
4507  g_qeglobals.d_savedinfo.m_nTextureTweak += 1.0f;
4508  if ( g_qeglobals.d_savedinfo.m_nTextureTweak == 0.0f ) {
4509  g_qeglobals.d_savedinfo.m_nTextureTweak += 1.0f;
4510  }
4511 
4512  SetTexValStatus();
4513 }
4514 
4515 /*
4516  =======================================================================================================================
4517  =======================================================================================================================
4518  */
4520  Select_RotateTexture(abs(g_PrefsDlg.m_nRotation));
4521 }
4522 
4523 /*
4524  =======================================================================================================================
4525  =======================================================================================================================
4526  */
4528  Select_RotateTexture(-abs(g_PrefsDlg.m_nRotation));
4529 }
4530 
4531 /*
4532  =======================================================================================================================
4533  =======================================================================================================================
4534  */
4536  Select_ScaleTexture(0, -g_qeglobals.d_savedinfo.m_nTextureTweak);
4537 }
4538 
4539 /*
4540  =======================================================================================================================
4541  =======================================================================================================================
4542  */
4544  Select_ScaleTexture(0, g_qeglobals.d_savedinfo.m_nTextureTweak);
4545 }
4546 
4547 /*
4548  =======================================================================================================================
4549  =======================================================================================================================
4550  */
4552  Select_ScaleTexture(g_qeglobals.d_savedinfo.m_nTextureTweak, 0);
4553 }
4554 
4555 /*
4556  =======================================================================================================================
4557  =======================================================================================================================
4558  */
4560  Select_ScaleTexture(g_qeglobals.d_savedinfo.m_nTextureTweak, 0);
4561 }
4562 
4563 /*
4564  =======================================================================================================================
4565  =======================================================================================================================
4566  */
4568  Select_ShiftTexture(0, -g_qeglobals.d_savedinfo.m_nTextureTweak, true);
4569 }
4570 
4571 /*
4572  =======================================================================================================================
4573  =======================================================================================================================
4574  */
4576  Select_ShiftTexture(-g_qeglobals.d_savedinfo.m_nTextureTweak, 0, true);
4577 }
4578 
4579 /*
4580  =======================================================================================================================
4581  =======================================================================================================================
4582  */
4584  Select_ShiftTexture(g_qeglobals.d_savedinfo.m_nTextureTweak, 0, true);
4585 }
4586 
4587 /*
4588  =======================================================================================================================
4589  =======================================================================================================================
4590  */
4592  Select_ShiftTexture(0, g_qeglobals.d_savedinfo.m_nTextureTweak, true);
4593 }
4594 
4595 /*
4596  =======================================================================================================================
4597  =======================================================================================================================
4598  */
4600  HMENU hMenu = ::GetMenu(GetSafeHwnd());
4601  CheckMenuItem(hMenu, ID_GRID_1, MF_BYCOMMAND | MF_UNCHECKED);
4602  CheckMenuItem(hMenu, ID_GRID_2, MF_BYCOMMAND | MF_UNCHECKED);
4603  CheckMenuItem(hMenu, ID_GRID_4, MF_BYCOMMAND | MF_UNCHECKED);
4604  CheckMenuItem(hMenu, ID_GRID_8, MF_BYCOMMAND | MF_UNCHECKED);
4605  CheckMenuItem(hMenu, ID_GRID_16, MF_BYCOMMAND | MF_UNCHECKED);
4606  CheckMenuItem(hMenu, ID_GRID_32, MF_BYCOMMAND | MF_UNCHECKED);
4607  CheckMenuItem(hMenu, ID_GRID_64, MF_BYCOMMAND | MF_UNCHECKED);
4608  CheckMenuItem(hMenu, ID_GRID_POINT5, MF_BYCOMMAND | MF_UNCHECKED);
4609  CheckMenuItem(hMenu, ID_GRID_POINT25, MF_BYCOMMAND | MF_UNCHECKED);
4610  CheckMenuItem(hMenu, ID_GRID_POINT125, MF_BYCOMMAND | MF_UNCHECKED);
4611  CheckMenuItem(hMenu, ID_GRID_POINT0625, MF_BYCOMMAND | MF_UNCHECKED);
4612  CheckMenuItem(hMenu, id, MF_BYCOMMAND | MF_CHECKED);
4613 }
4614 
4615 /*
4616  =======================================================================================================================
4617  =======================================================================================================================
4618  */
4620  if (g_qeglobals.d_gridsize >= MAX_GRID) {
4621  return;
4622  }
4623 
4624  g_qeglobals.d_gridsize *= 2.0f;
4625 
4626  float minGrid = MIN_GRID;
4627  int id = ID_GRID_START;
4628 
4629  while (minGrid < g_qeglobals.d_gridsize && id < ID_GRID_END) {
4630  minGrid *= 2.0f;
4631  id++;
4632  }
4633 
4634  UpdateGrid();
4635 
4636  SetGridChecks(id);
4637  SetGridStatus();
4638  Sys_UpdateWindows(W_XY | W_Z);
4639 }
4640 
4641 /*
4642  =======================================================================================================================
4643  =======================================================================================================================
4644  */
4646  if (g_qeglobals.d_gridsize <= MIN_GRID) {
4647  return;
4648  }
4649 
4650  g_qeglobals.d_gridsize /= 2;
4651 
4652  float maxGrid = MAX_GRID;
4653  int id = ID_GRID_END;
4654 
4655  while (maxGrid > g_qeglobals.d_gridsize && id > ID_GRID_START) {
4656  maxGrid /= 2.0f;
4657  id--;
4658  }
4659 
4660  UpdateGrid();
4661 
4662  SetGridChecks(id);
4663  SetGridStatus();
4664  Sys_UpdateWindows(W_XY | W_Z);
4665 }
4666 
4667 /*
4668  =======================================================================================================================
4669  =======================================================================================================================
4670  */
4672  CString strStatus;
4673  char c1;
4674  char c2;
4675  c1 = (g_PrefsDlg.m_bTextureLock) ? 'M' : ' ';
4676  c2 = (g_PrefsDlg.m_bRotateLock) ? 'R' : ' ';
4677  strStatus.Format
4678  (
4679  "G:%1.2f T:%1.2f R:%i C:%i L:%c%c",
4680  g_qeglobals.d_gridsize,
4681  g_qeglobals.d_savedinfo.m_nTextureTweak,
4682  g_PrefsDlg.m_nRotation,
4683  g_PrefsDlg.m_nCubicScale,
4684  c1,
4685  c2
4686  );
4687  SetStatusText(4, strStatus);
4688 }
4689 
4690 /*
4691  =======================================================================================================================
4692  =======================================================================================================================
4693  */
4695  //
4696  // CString strStatus; strStatus.Format("T: %i C: %i", g_nTextureTweak,
4697  // g_nCubicScale); SetStatusText(5, strStatus.GetBuffer(0));
4698  //
4699  SetGridStatus();
4700 }
4701 
4702 /*
4703  =======================================================================================================================
4704  =======================================================================================================================
4705  */
4708 }
4709 
4710 /*
4711  =======================================================================================================================
4712  =======================================================================================================================
4713  */
4715  if (g_nScaleHow & SCALE_X) {
4716  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SCALELOCKX, FALSE);
4717  }
4718  else {
4719  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SCALELOCKX);
4720  }
4721 
4722  g_nScaleHow ^= SCALE_X;
4723 }
4724 
4725 /*
4726  =======================================================================================================================
4727  =======================================================================================================================
4728  */
4730  if (g_nScaleHow & SCALE_Y) {
4731  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SCALELOCKY, FALSE);
4732  }
4733  else {
4734  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SCALELOCKY);
4735  }
4736 
4737  g_nScaleHow ^= SCALE_Y;
4738 }
4739 
4740 /*
4741  =======================================================================================================================
4742  =======================================================================================================================
4743  */
4745  if (g_nScaleHow & SCALE_Z) {
4746  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SCALELOCKZ, FALSE);
4747  }
4748  else {
4749  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SCALELOCKZ);
4750  }
4751 
4752  g_nScaleHow ^= SCALE_Z;
4753 }
4754 
4755 /*
4756  =======================================================================================================================
4757  =======================================================================================================================
4758  */
4760  if (ActiveXY()) {
4761  if (ActiveXY()->ClipMode()) {
4762  OnViewClipper();
4763  }
4764 
4765  if (ActiveXY()->RotateMode()) {
4766  // SetRotateMode(false) always works
4767  ActiveXY()->SetRotateMode(false);
4768  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SELECT_MOUSESCALE, FALSE);
4769  }
4770 
4771  if (ActiveXY()->ScaleMode()) {
4772  ActiveXY()->SetScaleMode(false);
4773  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SELECT_MOUSESCALE, FALSE);
4774  }
4775  else {
4776  ActiveXY()->SetScaleMode(true);
4777  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SELECT_MOUSESCALE);
4778  }
4779  }
4780 }
4781 
4782 /*
4783  =======================================================================================================================
4784  =======================================================================================================================
4785  */
4787 }
4788 
4789 /*
4790  =======================================================================================================================
4791  =======================================================================================================================
4792  */
4794  DoProjectSettings();
4795 }
4796 
4797 /*
4798  =======================================================================================================================
4799  =======================================================================================================================
4800  */
4801 void CMainFrame::OnUpdateFileImport(CCmdUI *pCmdUI) {
4802  pCmdUI->Enable(FALSE);
4803 }
4804 
4805 /*
4806  =======================================================================================================================
4807  =======================================================================================================================
4808  */
4810  g_PrefsDlg.m_nCubicScale--;
4811  if (g_PrefsDlg.m_nCubicScale < 1) {
4812  g_PrefsDlg.m_nCubicScale = 1;
4813  }
4814 
4815  g_PrefsDlg.SavePrefs();
4816  Sys_UpdateWindows(W_CAMERA);
4817  SetTexValStatus();
4818 }
4819 
4820 /*
4821  =======================================================================================================================
4822  =======================================================================================================================
4823  */
4825  g_PrefsDlg.m_nCubicScale++;
4826  if (g_PrefsDlg.m_nCubicScale > 99) {
4827  g_PrefsDlg.m_nCubicScale = 99;
4828  }
4829 
4830  g_PrefsDlg.SavePrefs();
4831  Sys_UpdateWindows(W_CAMERA);
4832  SetTexValStatus();
4833 }
4834 
4835 /*
4836  =======================================================================================================================
4837  =======================================================================================================================
4838  */
4840  g_PrefsDlg.m_bCubicClipping ^= 1;
4841 
4842  CMenu *pMenu = GetMenu();
4843  if (pMenu) {
4844  pMenu->CheckMenuItem
4845  (
4846  ID_VIEW_CUBICCLIPPING,
4847  MF_BYCOMMAND | (g_PrefsDlg.m_bCubicClipping) ? MF_CHECKED : MF_UNCHECKED
4848  );
4849  }
4850 
4851  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_VIEW_CUBICCLIPPING, (g_PrefsDlg.m_bCubicClipping) ? TRUE : FALSE);
4852  g_PrefsDlg.SavePrefs();
4854  Sys_UpdateWindows(W_CAMERA);
4855 }
4856 
4857 /*
4858  =======================================================================================================================
4859  =======================================================================================================================
4860  */
4862  SaveAsDialog(true);
4863 }
4864 
4865 /*
4866  =======================================================================================================================
4867  =======================================================================================================================
4868  */
4870  pCmdUI->Enable (static_cast<BOOL>(region_active));
4871 }
4872 
4873 /*
4874  =======================================================================================================================
4875  =======================================================================================================================
4876  */
4878  Undo_Start("move up");
4880 
4881  idVec3 vAmt;
4882  vAmt[0] = vAmt[1] = 0.0f;
4883  vAmt[2] = -g_qeglobals.d_gridsize;
4884  Select_Move(vAmt);
4885  Sys_UpdateWindows(W_CAMERA | W_XY | W_Z);
4886 
4888  Undo_End();
4889 }
4890 
4891 /*
4892  =======================================================================================================================
4893  =======================================================================================================================
4894  */
4896  idVec3 vAmt;
4897  vAmt[0] = vAmt[1] = 0.0f;
4898  vAmt[2] = g_qeglobals.d_gridsize;
4899  Select_Move(vAmt);
4900  Sys_UpdateWindows(W_CAMERA | W_XY | W_Z);
4901 }
4902 
4903 /*
4904  =======================================================================================================================
4905  =======================================================================================================================
4906  */
4908 }
4909 
4910 /*
4911  =======================================================================================================================
4912  =======================================================================================================================
4913  */
4915 }
4916 
4917 /*
4918  =======================================================================================================================
4919  =======================================================================================================================
4920  */
4922  for (brush_t * b = selected_brushes.next; b != &selected_brushes; b = b->next) {
4923  Brush_Print(b);
4924  }
4925 }
4926 
4927 /*
4928  =======================================================================================================================
4929  =======================================================================================================================
4930  */
4932  if (m_wndTextureBar.GetSafeHwnd()) {
4934  }
4935 }
4936 
4937 bool g_bTABDown = false;
4939 
4940 /*
4941  =======================================================================================================================
4942  =======================================================================================================================
4943  */
4945  if (::GetAsyncKeyState('Q')) {
4946  if (!g_bTABDown) {
4947  g_bTABDown = true;
4948  g_bOriginalFlag = ( g_PrefsDlg.m_bSizePaint != FALSE );
4949  g_PrefsDlg.m_bSizePaint = !g_bOriginalFlag;
4950  Sys_UpdateWindows(W_XY);
4951  return;
4952  }
4953  }
4954  else {
4955  g_bTABDown = false;
4956  g_PrefsDlg.m_bSizePaint = g_bOriginalFlag;
4957  Sys_UpdateWindows(W_XY);
4958  return;
4959  }
4960 }
4961 
4962 /*
4963  =======================================================================================================================
4964  =======================================================================================================================
4965  */
4967  Undo_Start("make cone");
4969  DoSides(true);
4971  Undo_End();
4972 }
4973 
4974 /*
4975  =======================================================================================================================
4976  =======================================================================================================================
4977  */
4979  BROWSEINFO bi;
4980  CString strPath;
4981  char *p = strPath.GetBuffer(MAX_PATH + 1);
4982  bi.hwndOwner = GetSafeHwnd();
4983  bi.pidlRoot = NULL;
4984  bi.pszDisplayName = p;
4985  bi.lpszTitle = "Load textures from path";
4986  bi.ulFlags = 0;
4987  bi.lpfn = NULL;
4988  bi.lParam = NULL;
4989  bi.iImage = 0;
4990 
4991  LPITEMIDLIST pidlBrowse;
4992  pidlBrowse = SHBrowseForFolder(&bi);
4993  if (pidlBrowse) {
4994  SHGetPathFromIDList(pidlBrowse, p);
4995  strPath.ReleaseBuffer();
4996  AddSlash(strPath);
4997  //FIXME: idMaterial
4998  //Texture_ShowDirectory(strPath.GetBuffer(0));
4999  }
5000 }
5001 
5002 /*
5003  =======================================================================================================================
5004  =======================================================================================================================
5005  */
5007  g_qeglobals.flatRotation = false;
5008  g_qeglobals.rotateAxis++;
5009  if (g_qeglobals.rotateAxis > 2) {
5010  g_qeglobals.rotateAxis = 0;
5011  }
5012  Select_InitializeRotation();
5013  Sys_UpdateWindows(W_CAMERA | W_XY);
5014 }
5015 
5016 /*
5017  =======================================================================================================================
5018  =======================================================================================================================
5019  */
5021  // Curve_MakeCurvedBrush (false, false, false, false, false, true, true);
5022 }
5023 
5024 /*
5025  =======================================================================================================================
5026  =======================================================================================================================
5027  */
5029  // Curve_MakeCurvedBrush (false, false, false, true, true, true, true);
5030 }
5031 
5032 /*
5033  =======================================================================================================================
5034  =======================================================================================================================
5035  */
5037  // Curve_MakeCurvedBrush (false, true, false, true, true, false, false);
5038 }
5039 
5040 /*
5041  =======================================================================================================================
5042  =======================================================================================================================
5043  */
5045  // Curve_MakeCurvedBrush (false, false, false, false, true, true, true);
5046 }
5047 
5048 /*
5049  =======================================================================================================================
5050  =======================================================================================================================
5051  */
5053  // Curve_MakeCurvedBrush (false, true, false, true, true, true, true);
5054 }
5055 
5056 /*
5057  =======================================================================================================================
5058  =======================================================================================================================
5059  */
5061  // Curve_Invert ();
5062 }
5063 
5064 /*
5065  =======================================================================================================================
5066  =======================================================================================================================
5067  */
5069  // Curve_MakeCurvedBrush (false, true, false, true, true, true, false);
5070 }
5071 
5072 /*
5073  =======================================================================================================================
5074  =======================================================================================================================
5075  */
5077  // Curve_MakeCurvedBrush (false, true, true, true, true, true, true);
5078 }
5079 
5080 /*
5081  =======================================================================================================================
5082  =======================================================================================================================
5083  */
5085  CFileDialog dlgFile(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "Map files (*.map)|*.map||", this);
5086  if (dlgFile.DoModal() == IDOK) {
5087  Map_ImportFile(dlgFile.GetPathName().GetBuffer(0));
5088  }
5089 }
5090 
5091 /*
5092  =======================================================================================================================
5093  =======================================================================================================================
5094  */
5096  CFileDialog dlgFile(FALSE, "map", NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "Map files (*.map)|*.map||", this);
5097  if (dlgFile.DoModal() == IDOK) {
5098  Map_SaveSelected(dlgFile.GetPathName().GetBuffer(0));
5099  }
5100 }
5101 
5102 /*
5103  =======================================================================================================================
5104  =======================================================================================================================
5105  */
5107  if ((g_qeglobals.d_savedinfo.exclude ^= EXCLUDE_CURVES) & EXCLUDE_CURVES) {
5108  CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWCURVES, MF_BYCOMMAND | MF_UNCHECKED);
5109  }
5110  else {
5111  CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWCURVES, MF_BYCOMMAND | MF_CHECKED);
5112  }
5113 
5114  Sys_UpdateWindows(W_XY | W_CAMERA);
5115 }
5116 
5117 /*
5118  =======================================================================================================================
5119  =======================================================================================================================
5120  */
5122  NudgeSelection(3, g_qeglobals.d_savedinfo.m_nTextureTweak);
5123 }
5124 
5125 /*
5126  =======================================================================================================================
5127  =======================================================================================================================
5128  */
5130  NudgeSelection(0, g_qeglobals.d_savedinfo.m_nTextureTweak);
5131 }
5132 
5133 /*
5134  =======================================================================================================================
5135  =======================================================================================================================
5136  */
5138  NudgeSelection(2, g_qeglobals.d_savedinfo.m_nTextureTweak);
5139 }
5140 
5141 /*
5142  =======================================================================================================================
5143  =======================================================================================================================
5144  */
5146  NudgeSelection(1, g_qeglobals.d_savedinfo.m_nTextureTweak);
5147 }
5148 
5149 /*
5150  =======================================================================================================================
5151  =======================================================================================================================
5152  */
5153 void CMainFrame::NudgeSelection(int nDirection, float fAmount) {
5154  if (ActiveXY()->RotateMode()) {
5155  int nAxis = 0;
5156  if (ActiveXY()->GetViewType() == XY) {
5157  nAxis = 2;
5158  } else if (g_pParentWnd->ActiveXY()->GetViewType() == XZ) {
5159  nAxis = 1;
5160  fAmount = -fAmount;
5161  }
5162 
5163  if (nDirection == 2 || nDirection == 3) {
5164  fAmount = -fAmount;
5165  }
5166 
5167  float fDeg = -fAmount;
5168 
5169  g_pParentWnd->ActiveXY()->Rotation()[nAxis] += fAmount;
5170 
5171  CString strStatus;
5172  strStatus.Format
5173  (
5174  "Rotation x:: %.1f y:: %.1f z:: %.1f",
5175  g_pParentWnd->ActiveXY()->Rotation()[0],
5176  g_pParentWnd->ActiveXY()->Rotation()[1],
5177  g_pParentWnd->ActiveXY()->Rotation()[2]
5178  );
5179  g_pParentWnd->SetStatusText(2, strStatus);
5180  Select_RotateAxis(nAxis, fDeg, false, true);
5181  Sys_UpdateWindows(W_ALL);
5182  }
5183  else if (ActiveXY()->ScaleMode()) {
5184  if (nDirection == 0 || nDirection == 3) {
5185  fAmount = -fAmount;
5186  }
5187 
5188  idVec3 v;
5189  v[0] = v[1] = v[2] = 1.0f;
5190  if (fAmount > 0) {
5191  v[0] = 1.1f;
5192  v[1] = 1.1f;
5193  v[2] = 1.1f;
5194  }
5195  else {
5196  v[0] = 0.9f;
5197  v[1] = 0.9f;
5198  v[2] = 0.9f;
5199  }
5200 
5201  Select_Scale
5202  (
5203  (g_nScaleHow & SCALE_X) ? v[0] : 1.0f,
5204  (g_nScaleHow & SCALE_Y) ? v[1] : 1.0f,
5205  (g_nScaleHow & SCALE_Z) ? v[2] : 1.0f
5206  );
5207  Sys_UpdateWindows(W_ALL);
5208  }
5209  else {
5210  // 0 - left, 1 - up, 2 - right, 3 - down
5211  int nDim;
5212  if (nDirection == 0) {
5213  nDim = ActiveXY()->GetViewType() == YZ ? 1 : 0;
5214  fAmount = -fAmount;
5215  }
5216  else if (nDirection == 1) {
5217  nDim = ActiveXY()->GetViewType() == XY ? 1 : 2;
5218  }
5219  else if (nDirection == 2) {
5220  nDim = ActiveXY()->GetViewType() == YZ ? 1 : 0;
5221  }
5222  else {
5223  nDim = ActiveXY()->GetViewType() == XY ? 1 : 2;
5224  fAmount = -fAmount;
5225  }
5226 
5227  Nudge(nDim, fAmount);
5228  }
5229 }
5230 
5231 /*
5232  =======================================================================================================================
5233  =======================================================================================================================
5234  */
5236  return CFrameWnd::PreTranslateMessage(pMsg);
5237 }
5238 
5239 /*
5240  =======================================================================================================================
5241  =======================================================================================================================
5242  */
5243 void CMainFrame::Nudge(int nDim, float fNudge) {
5244  idVec3 vMove;
5245  vMove[0] = vMove[1] = vMove[2] = 0;
5246  vMove[nDim] = fNudge;
5247  Select_Move(vMove, true);
5248  Sys_UpdateWindows(W_ALL);
5249 }
5250 
5251 /*
5252  =======================================================================================================================
5253  =======================================================================================================================
5254  */
5256  CDialogTextures dlg;
5257  dlg.DoModal();
5258 }
5259 
5260 /*
5261  =======================================================================================================================
5262  =======================================================================================================================
5263  */
5265  g_PrefsDlg.m_selectByBoundingBrush ^= 1;
5266  m_wndToolBar.GetToolBarCtrl().CheckButton
5267  (
5268  ID_SELECT_BYBOUNDINGBRUSH,
5269  (g_PrefsDlg.m_selectByBoundingBrush) ? TRUE : FALSE
5270  );
5271 }
5272 
5273 /*
5274  =======================================================================================================================
5275  =======================================================================================================================
5276  */
5278  g_PrefsDlg.m_selectOnlyBrushes ^= 1;
5279  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SELECT_BRUSHESONLY, (g_PrefsDlg.m_selectOnlyBrushes) ? TRUE : FALSE);
5280 }
5281 
5282 
5283 
5284 
5285 /*
5286  =======================================================================================================================
5287  =======================================================================================================================
5288  */
5290  CCamWnd *pCam = new CCamWnd();
5291  CRect rect(100, 100, 300, 300);
5292  pCam->Create(CAMERA_WINDOW_CLASS, "", WS_OVERLAPPEDWINDOW, rect, GetDesktopWindow(), 12345);
5293  pCam->ShowWindow(SW_SHOW);
5294 }
5295 
5296 /*
5297  =======================================================================================================================
5298  =======================================================================================================================
5299  */
5301  Undo_Start("make simpe patch mesh");
5303 
5304  CPatchDensityDlg dlg;
5305  dlg.DoModal();
5306 
5308  Undo_End();
5309 }
5310 
5311 /*
5312  =======================================================================================================================
5313  =======================================================================================================================
5314  */
5316  g_bPatchShowBounds ^= 1;
5317  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_PATCH_SHOWBOUNDINGBOX, (g_bPatchShowBounds) ? TRUE : FALSE);
5318  Sys_UpdateWindows(W_ALL);
5319 }
5320 
5321 /*
5322  =======================================================================================================================
5323  =======================================================================================================================
5324  */
5326  g_bPatchWireFrame ^= 1;
5327  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_PATCH_WIREFRAME, (g_bPatchWireFrame) ? TRUE : FALSE);
5328  Sys_UpdateWindows(W_ALL);
5329 }
5330 
5331 /*
5332  =======================================================================================================================
5333  =======================================================================================================================
5334  */
5336  Undo_Start("make curve cone");
5338  Patch_BrushToMesh(true);
5339  Sys_UpdateWindows(W_ALL);
5341  Undo_End();
5342 }
5343 
5344 /*
5345  =======================================================================================================================
5346  =======================================================================================================================
5347  */
5349  Undo_Start("make curve cylinder");
5351  Patch_BrushToMesh(false);
5352  Sys_UpdateWindows(W_ALL);
5354  Undo_End();
5355 }
5356 
5357 /*
5358  =======================================================================================================================
5359  =======================================================================================================================
5360  */
5362  g_bPatchWeld ^= 1;
5363  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_PATCH_WELD, (g_bPatchWeld) ? TRUE : FALSE);
5364  Sys_UpdateWindows(W_ALL);
5365 }
5366 
5367 /*
5368  =======================================================================================================================
5369  =======================================================================================================================
5370  */
5372  Undo_Start("make bevel");
5374  Patch_BrushToMesh(false, true, false);
5375  Sys_UpdateWindows(W_ALL);
5377  Undo_End();
5378 }
5379 
5380 /*
5381  =======================================================================================================================
5382  =======================================================================================================================
5383  */
5385  Undo_Start("make end cap");
5387  Patch_BrushToMesh(false, false, true);
5388  Sys_UpdateWindows(W_ALL);
5390  Undo_End();
5391 }
5392 
5393 /*
5394  =======================================================================================================================
5395  =======================================================================================================================
5396  */
5398  // Patch_BrushToMesh(false, true, false, true); Sys_UpdateWindows (W_ALL);
5399 }
5400 
5401 /*
5402  =======================================================================================================================
5403  =======================================================================================================================
5404  */
5406  // Patch_BrushToMesh(false, false, true, true); Sys_UpdateWindows (W_ALL);
5407 }
5408 
5409 /*
5410  =======================================================================================================================
5411  =======================================================================================================================
5412  */
5414  g_bPatchDrillDown ^= 1;
5415  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_PATCH_DRILLDOWN, (g_bPatchDrillDown) ? TRUE : FALSE);
5416  Sys_UpdateWindows(W_ALL);
5417 }
5418 
5419 /*
5420  =======================================================================================================================
5421  =======================================================================================================================
5422  */
5424  Undo_Start("insert colum");
5426 
5427  // Patch_AdjustSelectedRowCols(0, 2);
5428  Patch_AdjustSelected(true, true, true);
5429  Sys_UpdateWindows(W_ALL);
5431  Undo_End();
5432 }
5433 
5434 /*
5435  =======================================================================================================================
5436  =======================================================================================================================
5437  */
5439  Undo_Start("insert row");
5441 
5442  // Patch_AdjustSelectedRowCols(2, 0);
5443  Patch_AdjustSelected(true, false, true);
5444  Sys_UpdateWindows(W_ALL);
5446  Undo_End();
5447 }
5448 
5449 /*
5450  =======================================================================================================================
5451  =======================================================================================================================
5452  */
5454  Undo_Start("delete column");
5456  Patch_AdjustSelected(false, true, true);
5457  Sys_UpdateWindows(W_ALL);
5459  Undo_End();
5460 }
5461 
5462 /*
5463  =======================================================================================================================
5464  =======================================================================================================================
5465  */
5467  Undo_Start("delete row");
5469  Patch_AdjustSelected(false, false, true);
5470  Sys_UpdateWindows(W_ALL);
5472  Undo_End();
5473 }
5474 
5475 /*
5476  =======================================================================================================================
5477  =======================================================================================================================
5478  */
5480  Undo_Start("add (2) columns");
5482  Patch_AdjustSelected(true, true, true);
5483  Sys_UpdateWindows(W_ALL);
5485  Undo_End();
5486 }
5487 
5488 /*
5489  =======================================================================================================================
5490  =======================================================================================================================
5491  */
5493  Undo_Start("add (2) rows");
5495  Patch_AdjustSelected(true, false, true);
5496  Sys_UpdateWindows(W_ALL);
5498  Undo_End();
5499 }
5500 
5501 /*
5502  =======================================================================================================================
5503  =======================================================================================================================
5504  */
5506  Undo_Start("insert (2) columns");
5508  Patch_AdjustSelected(true, true, false);
5509  Sys_UpdateWindows(W_ALL);
5511  Undo_End();
5512 }
5513 
5514 /*
5515  =======================================================================================================================
5516  =======================================================================================================================
5517  */
5519  Undo_Start("insert (2) rows");
5521  Patch_AdjustSelected(true, false, false);
5522  Sys_UpdateWindows(W_ALL);
5524  Undo_End();
5525 }
5526 
5527 /*
5528  =======================================================================================================================
5529  =======================================================================================================================
5530  */
5532  Patch_ToggleInverted();
5533 
5534  // Sys_UpdateWindows(W_ALL);
5535 }
5536 
5537 /*
5538  =======================================================================================================================
5539  =======================================================================================================================
5540  */
5542  Select_FlipTexture(false);
5543 
5544  // Sys_UpdateWindows(W_ALL);
5545 }
5546 
5547 /*
5548  =======================================================================================================================
5549  =======================================================================================================================
5550  */
5552  Select_FlipTexture(true);
5553  // Sys_UpdateWindows(W_ALL);
5554 }
5555 
5556 /*
5557  =======================================================================================================================
5558  =======================================================================================================================
5559  */
5561  Undo_Start("delete first (2) columns");
5563  Patch_AdjustSelected(false, true, true);
5564  Sys_UpdateWindows(W_ALL);
5566  Undo_End();
5567 }
5568 
5569 /*
5570  =======================================================================================================================
5571  =======================================================================================================================
5572  */
5574  Undo_Start("delete first (2) rows");
5576  Patch_AdjustSelected(false, false, true);
5577  Sys_UpdateWindows(W_ALL);
5579  Undo_End();
5580 }
5581 
5582 /*
5583  =======================================================================================================================
5584  =======================================================================================================================
5585  */
5587  Undo_Start("delete last (2) columns");
5589  Patch_AdjustSelected(false, true, false);
5590  Sys_UpdateWindows(W_ALL);
5592  Undo_End();
5593 }
5594 
5595 /*
5596  =======================================================================================================================
5597  =======================================================================================================================
5598  */
5600  Undo_Start("delete last (2) rows");
5602  Patch_AdjustSelected(false, false, false);
5603  Sys_UpdateWindows(W_ALL);
5605  Undo_End();
5606 }
5607 
5608 /*
5609  =======================================================================================================================
5610  =======================================================================================================================
5611  */
5613  Patch_BendToggle();
5614  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_PATCH_BEND, (g_bPatchBendMode) ? TRUE : FALSE);
5615  Sys_UpdateWindows(W_ALL);
5616 }
5617 
5618 /*
5619  =======================================================================================================================
5620  =======================================================================================================================
5621  */
5623  Patch_InsDelToggle();
5624  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_PATCH_INSDEL, (g_bPatchInsertMode) ? TRUE : FALSE);
5625  Sys_UpdateWindows(W_ALL);
5626 }
5627 
5628 /*
5629  =======================================================================================================================
5630  =======================================================================================================================
5631  */
5633 }
5634 
5635 /*
5636  =======================================================================================================================
5637  =======================================================================================================================
5638  */
5639 extern bool Sys_KeyDown(int key);
5641  if (g_bPatchBendMode) {
5642  Patch_BendHandleTAB();
5643  }
5644  else if (g_bPatchInsertMode) {
5645  Patch_InsDelHandleTAB();
5646  }
5647  else if (g_bAxialMode) {
5648  int faceCount = g_ptrSelectedFaces.GetSize();
5649  if (faceCount > 0) {
5650  face_t *selFace = reinterpret_cast < face_t * > (g_ptrSelectedFaces.GetAt(0));
5651  int *ip = (Sys_KeyDown(VK_SHIFT)) ? &g_axialAnchor : &g_axialDest;
5652  (*ip)++;
5653  if ( *ip >= selFace->face_winding->GetNumPoints() ) {
5654  *ip = 0;
5655  }
5656  }
5657  Sys_UpdateWindows(W_CAMERA);
5658  } else {
5659  //
5660  // check to see if the selected brush is part of a func group if it is, deselect
5661  // everything and reselect the next brush in the group
5662  //
5663  brush_t *b = selected_brushes.next;
5664  entity_t *e;
5665  if (b != &selected_brushes) {
5666  if ( idStr::Icmp(b->owner->eclass->name, "worldspawn") != 0 ) {
5667  e = b->owner;
5668  Select_Deselect();
5669  brush_t *b2;
5670  for (b2 = e->brushes.onext; b2 != &e->brushes; b2 = b2->onext) {
5671  if (b == b2) {
5672  b2 = b2->onext;
5673  break;
5674  }
5675  }
5676 
5677  if (b2 == &e->brushes) {
5678  b2 = b2->onext;
5679  }
5680 
5681  Select_Brush(b2, false);
5682  Sys_UpdateWindows(W_ALL);
5683  }
5684  }
5685  }
5686 }
5687 
5688 /*
5689  =======================================================================================================================
5690  =======================================================================================================================
5691  */
5693  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_PATCH_BEND, (g_bPatchBendMode) ? TRUE : FALSE);
5694  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_PATCH_INSDEL, (g_bPatchInsertMode) ? TRUE : FALSE);
5695 }
5696 
5697 /*
5698  =======================================================================================================================
5699  =======================================================================================================================
5700  */
5702  Undo_Start("dense cylinder");
5704 
5705  Patch_BrushToMesh(false);
5708  Sys_UpdateWindows(W_ALL);
5709 
5711  Undo_End();
5712 }
5713 
5714 /*
5715  =======================================================================================================================
5716  =======================================================================================================================
5717  */
5719  Undo_Start("very dense cylinder");
5721 
5722  Patch_BrushToMesh(false);
5727  Sys_UpdateWindows(W_ALL);
5728 
5730  Undo_End();
5731 }
5732 
5733 /*
5734  =======================================================================================================================
5735  =======================================================================================================================
5736  */
5738  Patch_CapCurrent();
5739  Sys_UpdateWindows(W_ALL);
5740 }
5741 
5742 /*
5743  =======================================================================================================================
5744  =======================================================================================================================
5745  */
5747  Patch_CapCurrent(true);
5748  Sys_UpdateWindows(W_ALL);
5749 }
5750 
5751 /*
5752  =======================================================================================================================
5753  =======================================================================================================================
5754  */
5756  Patch_CapCurrent(false, true);
5757  Sys_UpdateWindows(W_ALL);
5758 }
5759 
5760 /*
5761  =======================================================================================================================
5762  =======================================================================================================================
5763  */
5765  Patch_DisperseColumns();
5766  Sys_UpdateWindows(W_ALL);
5767 }
5768 
5769 /*
5770  =======================================================================================================================
5771  =======================================================================================================================
5772  */
5774  Patch_DisperseRows();
5775  Sys_UpdateWindows(W_ALL);
5776 }
5777 
5778 /*
5779  =======================================================================================================================
5780  =======================================================================================================================
5781  */
5783  Patch_NaturalizeSelected();
5784  Sys_UpdateWindows(W_ALL);
5785 }
5786 
5787 /*
5788  =======================================================================================================================
5789  =======================================================================================================================
5790  */
5792  Patch_NaturalizeSelected(false, false, true);
5793  Sys_UpdateWindows(W_ALL);
5794 }
5795 
5796 /*
5797  =======================================================================================================================
5798  =======================================================================================================================
5799  */
5801  Select_SnapToGrid();
5802  Sys_UpdateWindows(W_ALL);
5803 }
5804 
5805 /*
5806  =======================================================================================================================
5807  =======================================================================================================================
5808  */
5810  Undo_Start("square cylinder");
5812 
5813  Patch_BrushToMesh(false, false, false, true);
5814  Sys_UpdateWindows(W_ALL);
5815 
5817  Undo_End();
5818 }
5819 
5820 /*
5821  =======================================================================================================================
5822  =======================================================================================================================
5823  */
5825  CMenu *pMenu = GetMenu();
5826  if (pMenu) {
5827  pMenu->CheckMenuItem(ID_TEXTURES_TEXTUREWINDOWSCALE_10, MF_BYCOMMAND | MF_UNCHECKED);
5828  pMenu->CheckMenuItem(ID_TEXTURES_TEXTUREWINDOWSCALE_25, MF_BYCOMMAND | MF_UNCHECKED);
5829  pMenu->CheckMenuItem(ID_TEXTURES_TEXTUREWINDOWSCALE_50, MF_BYCOMMAND | MF_UNCHECKED);
5830  pMenu->CheckMenuItem(ID_TEXTURES_TEXTUREWINDOWSCALE_100, MF_BYCOMMAND | MF_UNCHECKED);
5831  pMenu->CheckMenuItem(ID_TEXTURES_TEXTUREWINDOWSCALE_200, MF_BYCOMMAND | MF_UNCHECKED);
5832  pMenu->CheckMenuItem(id, MF_BYCOMMAND | MF_CHECKED);
5833  }
5834 
5835  g_PrefsDlg.SavePrefs();
5836  //FIXME: idMaterial
5837  //Texture_ResetPosition();
5838  Sys_UpdateWindows(W_TEXTURE);
5839 }
5840 
5841 /*
5842  =======================================================================================================================
5843  =======================================================================================================================
5844  */
5846  g_PrefsDlg.m_nTextureScale = 10;
5847  CheckTextureScale(ID_TEXTURES_TEXTUREWINDOWSCALE_10);
5848 }
5849 
5850 /*
5851  =======================================================================================================================
5852  =======================================================================================================================
5853  */
5855  g_PrefsDlg.m_nTextureScale = 100;
5856  CheckTextureScale(ID_TEXTURES_TEXTUREWINDOWSCALE_100);
5857 }
5858 
5859 /*
5860  =======================================================================================================================
5861  =======================================================================================================================
5862  */
5864  g_PrefsDlg.m_nTextureScale = 200;
5865  CheckTextureScale(ID_TEXTURES_TEXTUREWINDOWSCALE_200);
5866 }
5867 
5868 /*
5869  =======================================================================================================================
5870  =======================================================================================================================
5871  */
5873  g_PrefsDlg.m_nTextureScale = 25;
5874  CheckTextureScale(ID_TEXTURES_TEXTUREWINDOWSCALE_25);
5875 }
5876 
5877 /*
5878  =======================================================================================================================
5879  =======================================================================================================================
5880  */
5882  g_PrefsDlg.m_nTextureScale = 50;
5883  CheckTextureScale(ID_TEXTURES_TEXTUREWINDOWSCALE_50);
5884 }
5885 
5886 /*
5887  =======================================================================================================================
5888  =======================================================================================================================
5889  */
5891  //FIXME: idMaterial
5892  //Texture_Flush();
5893  Sys_UpdateWindows(W_ALL);
5894 }
5895 
5896 /*
5897  =======================================================================================================================
5898  =======================================================================================================================
5899  */
5901  Patch_ClearOverlays();
5902  Sys_UpdateWindows(W_ALL);
5903 }
5904 
5905 /*
5906  =======================================================================================================================
5907  =======================================================================================================================
5908  */
5910  Patch_SetOverlays();
5911  Sys_UpdateWindows(W_ALL);
5912 }
5913 
5914 /*
5915  =======================================================================================================================
5916  =======================================================================================================================
5917  */
5919  Undo_Start("curve thicken");
5921 
5922  CDialogThick dlg;
5923  if ( dlg.DoModal() == IDOK ) {
5924  Patch_Thicken( dlg.m_nAmount, ( dlg.m_bSeams != FALSE ) );
5925  Sys_UpdateWindows(W_ALL);
5926  }
5927 
5929  Undo_End();
5930 }
5931 
5932 /*
5933  =======================================================================================================================
5934  =======================================================================================================================
5935  */
5937  Patch_NaturalizeSelected(true, true);
5938  Sys_UpdateWindows(W_ALL);
5939 }
5940 
5942  Patch_NaturalizeSelected(true, true, true);
5943  Sys_UpdateWindows(W_ALL);
5944 }
5945 
5946 /*
5947  =======================================================================================================================
5948  =======================================================================================================================
5949  */
5951  Patch_Transpose();
5952  Sys_UpdateWindows(W_ALL);
5953 }
5954 
5955 /*
5956  =======================================================================================================================
5957  =======================================================================================================================
5958  */
5960  CWaitCursor wait;
5961  declManager->Reload( false );
5962  Sys_UpdateWindows(W_ALL);
5963 }
5964 
5965 /*
5966  =======================================================================================================================
5967  =======================================================================================================================
5968  */
5970  CMenu *pMenu = GetMenu();
5971  if (pMenu) {
5972  pMenu->CheckMenuItem(ID_VIEW_ENTITIESAS_WIREFRAME, MF_BYCOMMAND | (g_PrefsDlg.m_nEntityShowState == ENTITY_WIRE) ? MF_CHECKED : MF_UNCHECKED);
5973  pMenu->CheckMenuItem(ID_VIEW_ENTITIESAS_SKINNED, MF_BYCOMMAND | (g_PrefsDlg.m_nEntityShowState == ENTITY_SKINNED) ? MF_CHECKED : MF_UNCHECKED);
5974  }
5975 }
5976 
5977 /*
5978  =======================================================================================================================
5979  =======================================================================================================================
5980  */
5983 }
5984 
5985 /*
5986  =======================================================================================================================
5987  =======================================================================================================================
5988  */
5990  g_PrefsDlg.m_nEntityShowState = ENTITY_SKINNED;
5991  SetEntityCheck();
5992  g_PrefsDlg.SavePrefs();
5993  Sys_UpdateWindows(W_ALL);
5994 }
5995 
5996 /*
5997  =======================================================================================================================
5998  =======================================================================================================================
5999  */
6001  g_PrefsDlg.m_nEntityShowState = ENTITY_WIRE;
6002  SetEntityCheck();
6003  g_PrefsDlg.SavePrefs();
6004  Sys_UpdateWindows(W_ALL);
6005 }
6006 
6007 /*
6008  =======================================================================================================================
6009  =======================================================================================================================
6010  */
6012  if ((g_qeglobals.d_savedinfo.exclude ^= EXCLUDE_HINT) & EXCLUDE_HINT) {
6013  CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWHINT, MF_BYCOMMAND | MF_UNCHECKED);
6014  }
6015  else {
6016  CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWHINT, MF_BYCOMMAND | MF_CHECKED);
6017  }
6018 
6019  Sys_UpdateWindows(W_XY | W_CAMERA);
6020 }
6021 
6022 /*
6023  =======================================================================================================================
6024  =======================================================================================================================
6025  */
6027  Texture_ShowAll();
6028 }
6029 
6031  Texture_HideAll();
6032 }
6033 
6034 /*
6035  =======================================================================================================================
6036  =======================================================================================================================
6037  */
6039  DoPatchInspector();
6040 }
6041 
6042 /*
6043  =======================================================================================================================
6044  =======================================================================================================================
6045  */
6047  g_PrefsDlg.m_bGLLighting ^= 1;
6048  g_PrefsDlg.SavePrefs();
6049  CheckMenuItem
6050  (
6051  ::GetMenu(GetSafeHwnd()),
6052  ID_VIEW_OPENGLLIGHTING,
6053  MF_BYCOMMAND | (g_PrefsDlg.m_bGLLighting) ? MF_CHECKED : MF_UNCHECKED
6054  );
6055  Sys_UpdateWindows(W_XY | W_CAMERA);
6056 }
6057 
6058 /*
6059  =======================================================================================================================
6060  =======================================================================================================================
6061  */
6063  Select_AllOfType();
6064 }
6065 
6066 /*
6067  =======================================================================================================================
6068  =======================================================================================================================
6069  */
6071  if ((g_qeglobals.d_savedinfo.exclude ^= EXCLUDE_CAULK) & EXCLUDE_CAULK) {
6072  CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWCAULK, MF_BYCOMMAND | MF_UNCHECKED);
6073  }
6074  else {
6075  CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWCAULK, MF_BYCOMMAND | MF_CHECKED);
6076  }
6077 
6078  Sys_UpdateWindows(W_XY | W_CAMERA);
6079 }
6080 
6081 /*
6082  =======================================================================================================================
6083  =======================================================================================================================
6084  */
6086  Patch_Freeze();
6087 }
6088 
6089 /*
6090  =======================================================================================================================
6091  =======================================================================================================================
6092  */
6094  Patch_UnFreeze(false);
6095 }
6096 
6097 /*
6098  =======================================================================================================================
6099  =======================================================================================================================
6100  */
6102  Patch_UnFreeze(true);
6103 }
6104 
6105 /*
6106  =======================================================================================================================
6107  =======================================================================================================================
6108  */
6110  Select_Reselect();
6111 }
6112 
6113 /*
6114  =======================================================================================================================
6115  =======================================================================================================================
6116  */
6118  if ((g_qeglobals.d_savedinfo.exclude ^= EXCLUDE_ANGLES) & EXCLUDE_ANGLES) {
6119  CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWANGLES, MF_BYCOMMAND | MF_UNCHECKED);
6120  }
6121  else {
6122  CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWANGLES, MF_BYCOMMAND | MF_CHECKED);
6123  }
6124 
6125  Sys_UpdateWindows(W_XY | W_CAMERA);
6126 }
6127 
6128 /*
6129  =======================================================================================================================
6130  =======================================================================================================================
6131  */
6133  CFileDialog dlgFile
6134  (
6135  FALSE,
6136  "pfb",
6137  NULL,
6138  OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
6139  "Prefab files (*.pfb)|*.pfb||",
6140  this
6141  );
6142  char CurPath[1024];
6143  ::GetCurrentDirectory(1024, CurPath);
6144 
6145  dlgFile.m_ofn.lpstrInitialDir = CurPath;
6146  if (dlgFile.DoModal() == IDOK) {
6147  Map_SaveSelected(dlgFile.GetPathName().GetBuffer(0));
6148  }
6149 }
6150 
6151 /*
6152  =======================================================================================================================
6153  =======================================================================================================================
6154  */
6156  CFileDialog dlgFile
6157  (
6158  TRUE,
6159  "pfb",
6160  NULL,
6161  OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
6162  "Prefab files (*.pfb)|*.pfb||",
6163  this
6164  );
6165  char CurPath[1024];
6166  ::GetCurrentDirectory(1024, CurPath);
6167  dlgFile.m_ofn.lpstrInitialDir = CurPath;
6168  if (dlgFile.DoModal() == IDOK) {
6169  Map_ImportFile(dlgFile.GetPathName().GetBuffer(0));
6170  }
6171 }
6172 
6173 /*
6174  =======================================================================================================================
6175  =======================================================================================================================
6176  */
6178  Undo_Start("square bevel");
6180 
6181  Patch_BrushToMesh(false, true, false, true);
6182  Sys_UpdateWindows(W_ALL);
6183 
6185  Undo_End();
6186 }
6187 
6188 /*
6189  =======================================================================================================================
6190  =======================================================================================================================
6191  */
6193  Undo_Start("square endcap");
6195 
6196  Patch_BrushToMesh(false, false, true, true);
6197  Sys_UpdateWindows(W_ALL);
6198 
6200  Undo_End();
6201 }
6202 
6203 /*
6204  =======================================================================================================================
6205  =======================================================================================================================
6206  */
6208  Undo_Start("make sphere");
6210 
6211  DoSides(false, true);
6212 
6214  Undo_End();
6215 }
6216 
6217 extern bool g_bCrossHairs;
6218 
6219 /*
6220  =======================================================================================================================
6221  =======================================================================================================================
6222  */
6224  g_bCrossHairs ^= 1;
6225  Sys_UpdateWindows(W_XY);
6226 }
6227 
6228 /*
6229  =======================================================================================================================
6230  =======================================================================================================================
6231  */
6233  Select_Hide();
6234  Select_Deselect();
6235 }
6236 
6238  Select_Hide(true);
6239  Select_Deselect();
6240 }
6241 
6242 /*
6243  =======================================================================================================================
6244  =======================================================================================================================
6245  */
6247  Select_ShowAllHidden();
6248 }
6249 
6250 /*
6251  =======================================================================================================================
6252  =======================================================================================================================
6253  */
6255  //
6256  // g_PrefsDlg.m_bShowShaders ^= 1; CheckMenuItem (
6257  // ::GetMenu(GetSafeHwnd()), ID_TEXTURES_SHADERS_SHOW, MF_BYCOMMAND |
6258  // ((g_PrefsDlg.m_bShowShaders) ? MF_CHECKED : MF_UNCHECKED ));
6259  // Sys_UpdateWindows(W_TEXTURE);
6260  //
6261 }
6262 
6263 /*
6264  =======================================================================================================================
6265  =======================================================================================================================
6266  */
6268  //FIXME: idMaterial
6269  //Texture_FlushUnused();
6270  Sys_UpdateWindows(W_TEXTURE);
6271 }
6272 
6273 /*
6274  =======================================================================================================================
6275  =======================================================================================================================
6276  */
6278  Select_Invert();
6279  Sys_UpdateWindows(W_XY | W_Z | W_CAMERA);
6280 }
6281 
6282 /*
6283  =======================================================================================================================
6284  =======================================================================================================================
6285  */
6287  LightEditorInit( NULL );
6288 }
6289 
6290 /*
6291  =======================================================================================================================
6292  =======================================================================================================================
6293  */
6295  g_bShowLightTextures ^= 1;
6296  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SHOW_LIGHTTEXTURES, (g_bShowLightTextures) ? TRUE : FALSE);
6297  Sys_UpdateWindows(W_ALL);
6298 }
6299 
6300 /*
6301  =======================================================================================================================
6302  =======================================================================================================================
6303  */
6305  g_bShowLightVolumes ^= 1;
6306  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SHOW_LIGHTVOLUMES, (g_bShowLightVolumes) ? TRUE : FALSE);
6307  Sys_UpdateWindows(W_ALL);
6308 }
6309 
6310 /*
6311  =======================================================================================================================
6312  =======================================================================================================================
6313  */
6314 void CMainFrame::OnActivate(UINT nState, CWnd *pWndOther, BOOL bMinimized) {
6315  CFrameWnd::OnActivate(nState, pWndOther, bMinimized);
6316 
6317  if ( nState != WA_INACTIVE ) {
6318  common->ActivateTool( true );
6319  if (::IsWindowVisible(win32.hWnd)) {
6320  ::ShowWindow(win32.hWnd, SW_HIDE);
6321  }
6322 
6323  // start playing the editor sound world
6324  soundSystem->SetPlayingSoundWorld( g_qeglobals.sw );
6325  }
6326  else {
6327  //com_editorActive = false;
6328  }
6329 }
6330 
6331 /*
6332  =======================================================================================================================
6333  =======================================================================================================================
6334  */
6336  g_qeglobals.d_select_mode = sel_addpoint;
6337  g_splineList->clear();
6338  g_splineList->startEdit(true);
6340  Sys_UpdateWindows(W_ALL);
6341 }
6342 
6343 /*
6344  =======================================================================================================================
6345  =======================================================================================================================
6346  */
6348  g_splineList->load("maps/test.camera");
6350 }
6351 
6352 /*
6353  =======================================================================================================================
6354  =======================================================================================================================
6355  */
6357  g_splineList->save("maps/test.camera");
6358 }
6359 
6360 /*
6361  =======================================================================================================================
6362  =======================================================================================================================
6363  */
6366  Sys_UpdateWindows(W_ALL);
6367 }
6368 
6369 extern void testCamSpeed();
6370 
6371 /*
6372  =======================================================================================================================
6373  =======================================================================================================================
6374  */
6376  long start = GetTickCount();
6377  g_splineList->startCamera(start);
6378 
6379  float cycle = g_splineList->getTotalTime();
6380  long msecs = cycle * 1000;
6381  long current = start;
6382  idVec3 lookat(0, 0, 0);
6383  idVec3 dir;
6384 
6385  while (current < start + msecs) {
6386  float fov;
6387  g_splineList->getCameraInfo(current, g_pParentWnd->GetCamera()->Camera().origin, dir, &fov);
6388  g_pParentWnd->GetCamera()->Camera().angles[1] = atan2(dir[1], dir[0]) * 180 / 3.14159;
6389  g_pParentWnd->GetCamera()->Camera().angles[0] = asin(dir[2]) * 180 / 3.14159;
6390  g_pParentWnd->UpdateWindows(W_XY | W_CAMERA);
6391  current = GetTickCount();
6392  }
6393 
6394  g_splineList->setRunning(false);
6395 }
6396 
6397 /*
6398  =======================================================================================================================
6399  =======================================================================================================================
6400  */
6402 }
6403 
6404 /*
6405  =======================================================================================================================
6406  =======================================================================================================================
6407  */
6409 }
6410 
6411 /*
6412  =======================================================================================================================
6413  =======================================================================================================================
6414  */
6416  g_qeglobals.d_select_mode = sel_addpoint;
6417  g_qeglobals.selectObject = g_splineList->startNewCamera(idCameraPosition::INTERPOLATED);
6418  OnSplinesEdit();
6419 }
6420 
6421 /*
6422  =======================================================================================================================
6423  =======================================================================================================================
6424  */
6426  g_qeglobals.d_select_mode = sel_addpoint;
6427  g_qeglobals.selectObject = g_splineList->startNewCamera(idCameraPosition::SPLINE);
6428  OnSplinesEdit();
6429 }
6430 
6431 /*
6432  =======================================================================================================================
6433  =======================================================================================================================
6434  */
6436  g_qeglobals.d_select_mode = sel_addpoint;
6437  g_qeglobals.selectObject = g_splineList->startNewCamera(idCameraPosition::FIXED);
6438  OnSplinesEdit();
6439 }
6440 
6441 extern void Patch_AdjustSubdivisions(float hadj, float vadj);
6442 
6443 /*
6444  =======================================================================================================================
6445  =======================================================================================================================
6446  */
6448  Patch_AdjustSubdivisions( 0.0f, -0.5f );
6449 }
6450 
6451 /*
6452  =======================================================================================================================
6453  =======================================================================================================================
6454  */
6456  Patch_AdjustSubdivisions( 0.0f, 0.5f );
6457 }
6458 
6459 /*
6460  =======================================================================================================================
6461  =======================================================================================================================
6462  */
6464  Patch_AdjustSubdivisions( -0.5f, 0.0f );
6465 }
6466 
6467 /*
6468  =======================================================================================================================
6469  =======================================================================================================================
6470  */
6472  Patch_AdjustSubdivisions( 0.5f, 0.0f );
6473 }
6474 
6475 /*
6476  =======================================================================================================================
6477  =======================================================================================================================
6478  */
6480  g_moveOnly ^= 1;
6481  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SELECTION_MOVEONLY, (g_moveOnly) ? TRUE : FALSE);
6482 }
6483 
6485 {
6486  // TODO: Add your command handler code here
6487 
6488 }
6489 
6491 {
6492  if (g_qeglobals.d_select_count < 2) {
6493  Sys_Status("Must have at least two things selected.", 0);
6494  Sys_Beep();
6495  return;
6496  }
6497 
6498  entity_t *e1 = g_qeglobals.d_select_order[0]->owner;
6499 
6500  if (e1 == world_entity) {
6501  Sys_Status("First selection must not be world.", 0);
6502  Sys_Beep();
6503  return;
6504  }
6505 
6506  idStr str;
6507  idMat3 mat;
6508  idVec3 v;
6509  if (e1->eclass->nShowFlags & ECLASS_LIGHT) {
6510  // copy the lights origin and rotation matrix to
6511  // light_origin and light_rotation
6512  e1->trackLightOrigin = true;
6513  e1->brushes.onext->trackLightOrigin = true;
6514  if (GetVectorForKey(e1, "origin", v)) {
6515  SetKeyVec3(e1, "light_origin", v);
6516  e1->lightOrigin = v;
6517  }
6518  if (!GetMatrixForKey(e1, "rotation", mat)) {
6519  mat.Identity();
6520  }
6521  sprintf(str, "%g %g %g %g %g %g %g %g %g", mat[0][0], mat[0][1], mat[0][2], mat[1][0], mat[1][1], mat[1][2], mat[2][0], mat[2][1], mat[2][2]);
6522  SetKeyValue(e1, "light_rotation", str, false);
6523  e1->lightRotation = mat;
6524  }
6525 
6526  bool setModel = true;
6527  for (brush_t *b = selected_brushes.next; b != &selected_brushes; b = b->next) {
6528  if (b->owner != e1) {
6529  if (e1->eclass->nShowFlags & ECLASS_LIGHT) {
6530  if (GetVectorForKey(b->owner, "origin", v)) {
6531  e1->origin = b->owner->origin;
6532  SetKeyVec3(e1, "origin", b->owner->origin);
6533  }
6534  if (GetMatrixForKey(b->owner, "rotation", mat)) {
6535  e1->rotation = b->owner->rotation;
6536  mat = b->owner->rotation;
6537  sprintf(str, "%g %g %g %g %g %g %g %g %g", mat[0][0], mat[0][1], mat[0][2], mat[1][0], mat[1][1], mat[1][2], mat[2][0], mat[2][1], mat[2][2]);
6538  SetKeyValue(e1, "rotation", str, false);
6539  }
6540  if (b->modelHandle) {
6541  SetKeyValue(e1, "model", ValueForKey(b->owner, "model"));
6542  setModel = false;
6543  } else {
6544  b->entityModel = true;
6545  }
6546  }
6548  Entity_LinkBrush(e1, b);
6549  }
6550  }
6551 
6552  if (setModel) {
6553  SetKeyValue(e1, "model", ValueForKey(e1, "name"));
6554  }
6555 
6556  Select_Deselect();
6557  Select_Brush(g_qeglobals.d_select_order[0]);
6558  Sys_UpdateWindows(W_XY | W_CAMERA);
6559 }
6560 
6561 extern void Patch_Weld(patchMesh_t *p, patchMesh_t *p2);
6563  patchMesh_t *p, *p2;
6564  p = p2 = NULL;
6565  for (brush_t *b = selected_brushes.next; b != &selected_brushes; b = b->next) {
6566  if (b->pPatch) {
6567  if (p == NULL) {
6568  p = b->pPatch;
6569  } else if (p2 == NULL) {
6570  p2 = b->pPatch;
6571  Patch_Weld(p, p2);
6572  return;
6573  }
6574  }
6575  }
6576 }
6577 
6579 {
6580  int show = ::IsWindowVisible(win32.hWnd) ? SW_HIDE : SW_NORMAL;
6581  if (show == SW_NORMAL) {
6582  g_Inspectors->SetMode(W_TEXTURE);
6583  }
6584  ::ShowWindow(win32.hWnd, show);
6585 }
6586 
6588 {
6590  CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_RENDERMODE, MF_BYCOMMAND | (m_pCamWnd->GetRenderMode()) ? MF_CHECKED : MF_UNCHECKED);
6591  Sys_UpdateWindows(W_ALL);
6592 }
6593 
6595 {
6597  if (!m_pCamWnd->GetRenderMode()) {
6598  OnViewRendermode();
6599  }
6600  Sys_UpdateWindows(W_ALL);
6601 }
6602 
6604 {
6606  CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_REALTIMEREBUILD, MF_BYCOMMAND | (m_pCamWnd->GetRebuildMode()) ? MF_CHECKED : MF_UNCHECKED);
6607  Sys_UpdateWindows(W_ALL);
6608 }
6609 
6611 {
6613  CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_RENDERENTITYOUTLINES, MF_BYCOMMAND | (m_pCamWnd->GetEntityMode()) ? MF_CHECKED : MF_UNCHECKED);
6614  Sys_UpdateWindows(W_ALL);
6615 }
6616 
6618 {
6620  CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_MATERIALANIMATION, MF_BYCOMMAND | (m_pCamWnd->GetAnimationMode()) ? MF_CHECKED : MF_UNCHECKED);
6621  Sys_UpdateWindows(W_ALL);
6622 }
6623 
6624 extern void Face_SetAxialScale_BrushPrimit(face_t *face, bool y);
6626  // temp test code
6627  int faceCount = g_ptrSelectedFaces.GetSize();
6628 
6629  if (faceCount > 0) {
6630  for (int i = 0; i < faceCount; i++) {
6631  face_t *selFace = reinterpret_cast < face_t * > (g_ptrSelectedFaces.GetAt(i));
6632  Face_SetAxialScale_BrushPrimit(selFace, false);
6633  }
6634  Sys_UpdateWindows(W_CAMERA);
6635  }
6636 
6637 }
6638 
6640  // temp test code
6641  int faceCount = g_ptrSelectedFaces.GetSize();
6642 
6643  if (faceCount > 0) {
6644  for (int i = 0; i < faceCount; i++) {
6645  face_t *selFace = reinterpret_cast < face_t * > (g_ptrSelectedFaces.GetAt(i));
6646  Face_SetAxialScale_BrushPrimit(selFace, true);
6647  }
6648  Sys_UpdateWindows(W_CAMERA);
6649  }
6650 }
6651 
6653  if (g_bAxialMode) {
6654  g_bAxialMode = false;
6655  }
6656  int faceCount = g_ptrSelectedFaces.GetSize();
6657  if (faceCount > 0) {
6658  g_axialAnchor = 0;
6659  g_axialDest = 1;
6660  g_bAxialMode = true;
6661  }
6662  Sys_UpdateWindows(W_CAMERA);
6663 }
6664 
6665 extern void Select_ToOBJ();
6667 {
6668  Select_ToOBJ();
6669 }
6670 
6671 extern void Select_ToCM();
6673 {
6674  Select_ToCM();
6675 }
6676 
6678  Select_WireFrame( false );
6679 }
6680 
6682  Select_WireFrame( true );
6683 }
6684 
6686  Select_ForceVisible( true );
6687 }
6688 
6690  Select_ForceVisible( false );
6691 }
6692 
6693 
6695 {
6697  CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_RENDERSELECTION, MF_BYCOMMAND | (m_pCamWnd->GetSelectMode()) ? MF_CHECKED : MF_UNCHECKED);
6698  Sys_UpdateWindows(W_CAMERA);
6699 }
6700 
6702 {
6703  g_PrefsDlg.m_selectNoModels ^= 1;
6704  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SELECT_NOMODELS, (g_PrefsDlg.m_selectNoModels) ? TRUE : FALSE);
6705 }
6706 
6708 {
6709  if ((g_qeglobals.d_savedinfo.exclude ^= EXCLUDE_VISPORTALS) & EXCLUDE_VISPORTALS) {
6710  CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOW_SHOWVISPORTALS, MF_BYCOMMAND | MF_UNCHECKED);
6711  }
6712  else {
6713  CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOW_SHOWVISPORTALS, MF_BYCOMMAND | MF_CHECKED);
6714  }
6715 
6716  Sys_UpdateWindows(W_XY | W_CAMERA);
6717 }
6718 
6720 {
6721  if ((g_qeglobals.d_savedinfo.exclude ^= EXCLUDE_NODRAW) & EXCLUDE_NODRAW) {
6722  CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOW_NODRAW, MF_BYCOMMAND | MF_UNCHECKED);
6723  }
6724  else {
6725  CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOW_NODRAW, MF_BYCOMMAND | MF_CHECKED);
6726  }
6727 
6728  Sys_UpdateWindows(W_XY | W_CAMERA);
6729 }
6730 
6731 
6732 
6734 {
6736  CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_RENDERSOUND, MF_BYCOMMAND | (m_pCamWnd->GetSoundMode()) ? MF_CHECKED : MF_UNCHECKED);
6737  Sys_UpdateWindows(W_CAMERA);
6738 }
6739 
6740 
6742 {
6743  g_qeglobals.d_savedinfo.showSoundAlways ^= 1;
6744  if (g_qeglobals.d_savedinfo.showSoundAlways) {
6745  g_qeglobals.d_savedinfo.showSoundWhenSelected = false;
6746  }
6747  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SOUND_SHOWSOUNDVOLUMES,g_qeglobals.d_savedinfo.showSoundAlways);
6748  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SOUND_SHOWSELECTEDSOUNDVOLUMES,g_qeglobals.d_savedinfo.showSoundWhenSelected);
6749  Sys_UpdateWindows(W_XY | W_CAMERA);
6750 }
6751 
6753  nurbMode ^= 1;
6754  if (nurbMode) {
6755  int num = nurb.GetNumValues();
6756  idStr temp = va("%i 3 ", num);
6757  for (int i = 0; i < num; i++) {
6758  temp += va("(%i %i) ", (int)nurb.GetValue(i).x, (int)nurb.GetValue(i).y);
6759  }
6760  temp += "\r\n";
6761  if (OpenClipboard()) {
6762  ::EmptyClipboard();
6763  HGLOBAL clip;
6764  char* buff;
6765  clip = ::GlobalAlloc(GMEM_DDESHARE, temp.Length()+1);
6766  buff = (char*)::GlobalLock(clip);
6767  strcpy(buff, temp);
6768  ::GlobalUnlock(clip);
6769  ::SetClipboardData(CF_TEXT, clip);
6770  ::CloseClipboard();
6771  }
6772  nurb.Clear();
6773  }
6774 }
6775 
6776 
6778 {
6779  g_qeglobals.d_savedinfo.showSoundWhenSelected ^= 1;
6780  if (g_qeglobals.d_savedinfo.showSoundWhenSelected) {
6781  g_qeglobals.d_savedinfo.showSoundAlways = false;
6782  }
6783  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SOUND_SHOWSOUNDVOLUMES,g_qeglobals.d_savedinfo.showSoundAlways);
6784  m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SOUND_SHOWSELECTEDSOUNDVOLUMES,g_qeglobals.d_savedinfo.showSoundWhenSelected);
6785  Sys_UpdateWindows(W_XY | W_CAMERA);
6786 }
6787 
6789 {
6790  Select_AllTargets();
6791 }
6792 
6793 
6795 {
6796  brush_t* b = NULL;
6797  entity_t* e = NULL;
6798 
6799  b = selected_brushes.next;
6800  if ( b == &selected_brushes )
6801  {
6802  return; //no brushes selected
6803  }
6804 
6805  e = b->owner;
6806  if ( b->owner == world_entity )
6807  {
6808  return; //don't select the world entity
6809  }
6810 
6811  for (b = e->brushes.onext; b != &e->brushes; b = b->onext)
6812  {
6813  Select_Brush ( b , false );
6814  }
6815  Sys_UpdateWindows ( W_ALL );
6816 }
6817 
6818 
6819 
6820 
6821 //---------------------------------------------------------------------------
6822 // OnPrecisionCursorCycle
6823 //
6824 // Called when the user presses the "cycle precision cursor mode" key.
6825 // Cycles the precision cursor among the following three modes:
6826 // PRECISION_CURSOR_NONE
6827 // PRECISION_CURSOR_SNAP
6828 // PRECISION_CURSOR_FREE
6829 //---------------------------------------------------------------------------
6831 {
6833 }
6834 
6836 {
6837  idStrList mtrList;
6838  idStr mtrName,mtrFileName;
6839 
6840 
6841  g_Inspectors->consoleWnd.ExecuteCommand ( "clear" );
6842  Sys_BeginWait ();
6843  common->Printf ( "Generating list of active materials...\n" );
6844 
6845  for ( brush_t* b = active_brushes.next ; b != &active_brushes ; b=b->next ) {
6846  if ( b->pPatch ){
6847  mtrName = b->pPatch->d_texture->GetName();
6848  if ( !mtrList.Find( mtrName) ) {
6849  mtrList.Insert ( mtrName );
6850  }
6851 
6852  }
6853  else {
6854  for ( face_t* f = b->brush_faces ; f != NULL ; f=f->next)
6855  {
6856  mtrName = f->d_texture->GetName();
6857  if ( !mtrList.Find( mtrName) ) {
6858  mtrList.Insert ( mtrName );
6859  }
6860 
6861  }
6862  }
6863  }
6864 
6865  mtrList.Sort();
6866  for ( int i = 0 ; i < mtrList.Num() ; i++ ) {
6867  common->Printf ( "%s\n" , mtrList[i].c_str());
6868  }
6869 
6870  mtrFileName = currentmap;
6871 // mtrFileName.ExtractFileName( mtrFileName );
6872  mtrFileName = mtrFileName.StripPath();
6873 
6874  common->Printf ( "Done...found %i unique materials\n" , mtrList.Num());
6875  mtrFileName = mtrFileName + idStr ( "_Materials.txt" );
6876  g_Inspectors->SetMode ( W_CONSOLE , true );
6877  g_Inspectors->consoleWnd.SetConsoleText ( va ( "condump %s" , mtrFileName.c_str()) );
6878 
6879  Sys_EndWait ();
6880 }
6881 
6882 /*
6883 =======================================================================================================================
6884 =======================================================================================================================
6885 */
6886 
6887 
6890 }
6891 
6894 }
6895 
6898 }
6899 
6902 }
#define ID_CURVE_DELETE_FIRSTCOLUMN
CMainFrame * g_pParentWnd
Definition: MainFrm.cpp:73
afx_msg void OnMiscSelectentitycolor()
Definition: MainFrm.cpp:2670
bool FilterBrush(brush_t *pb)
Definition: XYWnd.cpp:3167
#define ID_POPUP_NEWCAMERA_SPLINE
#define ID_PREFS
#define ID_COLORS_GRIDTEXT
CEntityDlg entityDlg
afx_msg void OnCurveDecreaseHorz()
Definition: MainFrm.cpp:6471
#define ID_COLORS_MAJOR
GLubyte g
Definition: glext.h:4662
bool g_bPathMode
Definition: XYWnd.cpp:72
#define ID_TEXTURES_SHOWALL
afx_msg void OnViewUpfloor()
Definition: MainFrm.cpp:2386
void SaveAsDialog(bool bRegion)
void Brush_Print(brush_t *b)
#define ID_SELECTION_COMBINE
#define strcmp
Definition: Str.h:41
afx_msg void OnMiscNextleakspot()
Definition: MainFrm.cpp:2613
afx_msg void OnColorsXybk()
Definition: MainFrm.cpp:3047
#define ID_VIEW_RENDERSOUND
#define ID_REGION_SETXY
#define ID_CAMERA_DOWN
#define ID_CAMERA_FORWARD
static int snPrintf(char *dest, int size, const char *fmt,...) id_attribute((format(printf
Definition: Str.cpp:1465
#define ID_SELECTION_TOGGLESIZEPAINT
#define stricmp
Definition: Str.h:64
void Nudge(int nDim, float fNudge)
Definition: MainFrm.cpp:5243
void UpdateEntitySel(eclass_t *ent)
#define ID_SELECTION_CLONE
#define ID_SPLINES_SAVE
float getTotalTime()
Definition: splines.h:360
void RunBsp(const char *command)
Definition: MainFrm.cpp:2123
void SetStatusText(int nPane, const char *pText)
Definition: MainFrm.cpp:3922
void Undo_AddBrushList(brush_t *brushlist)
Definition: Undo.cpp:408
#define ID_VIEW_HIDESHOW_HIDESELECTED
afx_msg void OnSelectionWireFrameOff()
Definition: MainFrm.cpp:6677
void WINAPI Sys_UpdateWindows(int nBits)
Definition: MainFrm.cpp:3974
afx_msg void OnViewHideshowShowhidden()
Definition: MainFrm.cpp:6246
afx_msg void OnColorSetSuperMal()
Definition: MainFrm.cpp:4234
void CyclePrecisionCrosshairMode()
Definition: XYWnd.cpp:4484
type GetValue(const int index) const
Definition: Curve.h:58
void UpdateRadiantColor(float r, float g, float b, float a)
Definition: MainFrm.cpp:2638
entity_t * world_entity
Definition: EditorMap.cpp:49
afx_msg void OnViewDownfloor()
Definition: MainFrm.cpp:2021
afx_msg void OnToggleToolbar()
Definition: MainFrm.cpp:4080
#define ID_VIEW_ENTITIESAS_SKINNED
static void show()
afx_msg void OnSelectionTextureShiftleft()
Definition: MainFrm.cpp:4575
afx_msg void OnViewShowangles()
Definition: MainFrm.cpp:6117
#define ID_CURVE_PATCHDENSETUBE
idVec3 lightOrigin
Definition: EditorEntity.h:45
afx_msg void OnSelectByBoundingBrush()
Definition: MainFrm.cpp:5264
void showCameraInspector()
Definition: DlgCamera.cpp:50
void EditCurvePoints()
Definition: EntityDlg.cpp:1202
afx_msg void OnColorSetMax()
Definition: MainFrm.cpp:4312
#define ID_SELECTION_TEXTURE_INC
assert(prefInfo.fullscreenBtn)
#define ID_CURVE_INVERTCURVE
afx_msg void OnToggleLock()
Definition: MainFrm.cpp:3825
afx_msg void OnSelectionSelectpartialtall()
Definition: MainFrm.cpp:3508
afx_msg void OnCameraBack()
Definition: MainFrm.cpp:3662
afx_msg void OnGridToggle()
Definition: MainFrm.cpp:3746
#define ID_TOGGLE_ROTATELOCK
char * m_strName
Definition: MainFrm.h:58
idCVarSystem * cvarSystem
Definition: CVarSystem.cpp:487
#define ID_CURVE_INSERT_ADDCOLUMN
Definition: ZWnd.h:42
afx_msg void OnFileOpen()
Definition: MainFrm.cpp:1865
afx_msg void OnPatchInspector()
Definition: MainFrm.cpp:6038
afx_msg void OnFileClose()
Definition: MainFrm.cpp:1830
#define ID_REGION_OFF
#define ID_SELECTION_CENTER_ORIGIN
#define ID_CURVE_CAP_INVERTEDENDCAP
afx_msg void OnSplinesPopup()
Definition: MainFrm.cpp:3550
bool GetSoundMode()
Definition: CamWnd.h:119
#define ID_MISC_SELECTENTITYCOLOR
afx_msg void OnTexturesHideall()
Definition: MainFrm.cpp:6030
afx_msg void OnPrefs()
Definition: MainFrm.cpp:3755
#define ID_TEXTURES_HIDEALL
#define ID_PATCH_INSPECTOR
#define ID_SELECTION_VIEW_WIREFRAMEON
SCommandInfo g_Commands[]
Definition: MainFrm.cpp:102
#define ID_SELECTION_CSGMERGE
#define D3XP_ID_FILE_SAVE_COPY
Definition: MainFrm.cpp:87
afx_msg void OnCurveBevel()
Definition: MainFrm.cpp:5020
afx_msg void OnSoundShowselectedsoundvolumes()
Definition: MainFrm.cpp:6777
void Brush_MakeSided(int sides)
#define ID_TEXTURES_SHADERS_SHOW
bool g_bCrossHairs
Definition: XYWnd.cpp:51
afx_msg void OnBrushPrimitivesSphere()
Definition: MainFrm.cpp:6207
#define ID_SELECT_BYBOUNDINGBRUSH
afx_msg void OnViewShowhint()
Definition: MainFrm.cpp:6011
void Map_BuildBrushData(void)
Definition: EditorMap.cpp:121
void Select_ToOBJ()
Definition: CamWnd.cpp:1633
const int RAD_ALT
Definition: MainFrm.h:44
#define ID_SPLINES_EDITPOINTS
afx_msg void OnCurveNegativeTextureY()
Definition: MainFrm.cpp:5551
#define ID_SELECT_SCALE
void Paste()
Definition: XYWnd.cpp:4260
afx_msg void OnCurveDeleteLastcolumn()
Definition: MainFrm.cpp:5586
afx_msg void OnTexturesReloadshaders()
Definition: MainFrm.cpp:5959
#define ROLL
Definition: Angles.h:43
int g_nKeyCount
Definition: MainFrm.cpp:338
bool m_bDoLoop
Definition: MainFrm.h:162
#define ID_VIEW_CUBEOUT
afx_msg void OnFileNew()
Definition: MainFrm.cpp:1855
#define ID_SOUND_SHOWSOUNDVOLUMES
int m_nCubicScale
Definition: PrefsDlg.h:106
#define ID_VIEW_XY
#define ID_VIEW_SHOWANGLES
brush_t selected_brushes
Definition: EditorMap.cpp:40
void SetActiveXY(CXYWnd *p)
Definition: MainFrm.h:126
#define ID_MATERIALS_GENERATEMATERIALSLIST
float y
Definition: Vector.h:55
#define ID_VIEW_CAMERAUPDATE
afx_msg void ToggleCamera()
Definition: MainFrm.cpp:1817
#define ID_COLORS_SELECTEDBRUSH
afx_msg void OnCameraUp()
Definition: MainFrm.cpp:3737
void Pointfile_Next(void)
Definition: PointFile.cpp:50
bool GetEntityMode()
Definition: CamWnd.h:110
afx_msg void OnViewShowpath()
Definition: MainFrm.cpp:2318
#define ID_TEXTURE_REPLACEALL
#define ID_TOGGLECAMERA
void Entity_Free(entity_t *e)
CONST PIXELFORMATDESCRIPTOR UINT
Definition: win_qgl.cpp:47
afx_msg void OnViewZoomin()
Definition: MainFrm.cpp:2413
afx_msg void OnSelectionTextureFit()
Definition: MainFrm.cpp:4498
brush_t active_brushes
Definition: EditorMap.cpp:39
const GLdouble * v
Definition: glext.h:2936
#define ID_VIEW_SHOWWATER
afx_msg void OnSelectionTextureScaleLeft()
Definition: MainFrm.cpp:4551
CXYWnd * m_pXZWnd
Definition: MainFrm.h:151
#define ID_CURVE_CYCLECAP
afx_msg void OnToggleview()
Definition: MainFrm.cpp:3797
afx_msg void OnSize(UINT nType, int cx, int cy)
Definition: MainFrm.cpp:1784
afx_msg void OnSelectionSelectNudgedown()
Definition: MainFrm.cpp:5121
BOOL m_bCamXYUpdate
Definition: PrefsDlg.h:78
afx_msg void OnCurveNegativeTextureX()
Definition: MainFrm.cpp:5541
#define ID_CURVE_MOREENDCAPSBEVELS_SQUAREENDCAP
#define ID_CURVE_DELETECOLUMN
afx_msg void OnSelectionExportToCM()
Definition: MainFrm.cpp:6672
afx_msg void OnViewXy()
Definition: MainFrm.cpp:2394
afx_msg void OnSelectionExportToobj()
Definition: MainFrm.cpp:6666
afx_msg void OnCameraAngleup()
Definition: MainFrm.cpp:3649
#define ID_VIEW_HIDESHOW_SHOWHIDDEN
BOOL m_bGLLighting
Definition: PrefsDlg.h:116
bool texture_showinuse
Definition: NewTexWnd.cpp:743
CXYWnd * m_pActiveXY
Definition: MainFrm.h:155
void Entity_UnlinkBrush(brush_t *b)
#define MAX_GRID
Definition: MainFrm.cpp:99
afx_msg void OnTexturesShowinuse()
Definition: MainFrm.cpp:2564
#define ID_CAMERA_LEFT
afx_msg void OnViewClipper()
Definition: MainFrm.cpp:3615
#define ID_VIEW_RENDERENTITYOUTLINES
afx_msg void OnCurveInsertInsertrow()
Definition: MainFrm.cpp:5518
#define ID_FILE_POINTFILE
#define ID_SELECTION_EXPORT_TOCM
afx_msg void OnSelectBrushesOnly()
Definition: MainFrm.cpp:5277
afx_msg void OnViewShowblocks()
Definition: MainFrm.cpp:2212
#define ID_EDIT_COPYBRUSH
#define MIN_GRID
Definition: MainFrm.cpp:100
afx_msg void OnCurveSimplepatchmesh()
Definition: MainFrm.cpp:5300
afx_msg void OnCurveInsertrow()
Definition: MainFrm.cpp:5438
#define ID_BRUSH_ARBITRARYSIDED
int Undo_RedoAvailable(void)
Definition: Undo.cpp:890
#define ID_TEXTURES_FLATSHADE
afx_msg void OnMiscFindbrush()
Definition: MainFrm.cpp:2593
afx_msg void OnSelectCompleteEntity()
Definition: MainFrm.cpp:6794
afx_msg void OnHelpCommandlist()
Definition: MainFrm.cpp:3885
int Length(void) const
Definition: Str.h:702
void WINAPI Pointfile_Check(void)
Definition: PointFile.cpp:91
#define ID_TOOLBAR_MAIN
afx_msg void OnSelectBrushlight()
Definition: MainFrm.cpp:6484
#define ID_CURVE_CYLINDER
#define ID_VIEW_SHOW_SHOWVISPORTALS
#define ID_SELECTION_EXPORT_TOOBJ
afx_msg void OnViewNearest(unsigned int nID)
Definition: MainFrm.cpp:2096
afx_msg void OnFileNewproject()
Definition: MainFrm.cpp:3902
afx_msg void OnSelectionPrint()
Definition: MainFrm.cpp:4921
afx_msg void OnToggleviewYz()
Definition: MainFrm.cpp:4061
#define ID_SELECTION_DRAGEDGES
void SetTexValStatus()
Definition: MainFrm.cpp:4694
BOOL m_selectNoModels
Definition: PrefsDlg.h:108
afx_msg void OnFilePrint()
Definition: MainFrm.cpp:1889
#define ID_VIEW_SHOWCOORDINATES
afx_msg void OnTexturesFlushUnused()
Definition: MainFrm.cpp:6267
const int SCALE_Z
Definition: XYWnd.h:45
void Dmap_f(const idCmdArgs &args)
Definition: dmap.cpp:393
#define ID_VIEW_FRONT
GLenum GLint GLint y
Definition: glext.h:2849
#define ID_TEXTURES_TEXTUREWINDOWSCALE_100
#define ID_CURVE_HEMISPHERE
#define ID_CURVE_QUARTER
#define ID_CURVE_REDISPERSE_ROWS
bool Map_SaveFile(const char *filename, bool use_region, bool autosave)
Definition: EditorMap.cpp:653
#define ID_GRID_POINT0625
GLenum GLsizei n
Definition: glext.h:3705
idCameraPosition * startNewCamera(idCameraPosition::positionType type)
Definition: splines.cpp:777
#define ID_SELECTION_TEXTURE_SHIFTUP
bool trackLightOrigin
Definition: EditorEntity.h:47
void SetWindowStyle(int nStyle)
Definition: MainFrm.cpp:3777
BOOL m_bZVis
Definition: PrefsDlg.h:85
afx_msg void OnPatchNaturalize()
Definition: MainFrm.cpp:5782
case const int
Definition: Callbacks.cpp:52
#define IDR_TOOLBAR1
#define VectorCopy(a, b)
Definition: Vector.h:1999
afx_msg void OnSplinesTargetPoints()
Definition: MainFrm.cpp:6401
#define ID_VIEW_DOWNFLOOR
void Texture_ShowAll(void)
Definition: NewTexWnd.cpp:676
#define ID_BRUSH_ROTATEX
#define ID_TEXTURES_POPUP
brush_t * gpPrevEntBrushFound
Definition: MainFrm.cpp:2704
#define ID_CLIP_SELECTED
void Map_RegionBrush(void)
Definition: EditorMap.cpp:1092
afx_msg void OnDynamicLighting()
Definition: MainFrm.cpp:5289
afx_msg void OnViewCubein()
Definition: MainFrm.cpp:4809
#define ID_CURVE_SIMPLEPATCHMESH
afx_msg void OnPatchInsdel()
Definition: MainFrm.cpp:5622
afx_msg void OnBrushFlipz()
Definition: MainFrm.cpp:3219
afx_msg void OnCameraRight()
Definition: MainFrm.cpp:3704
afx_msg void OnBrushRotatez()
Definition: MainFrm.cpp:3256
#define WINAPI
Definition: qgl.h:64
SKeyInfo g_Keys[]
Definition: MainFrm.cpp:291
afx_msg void OnCameraLeft()
Definition: MainFrm.cpp:3693
afx_msg void OnColorSetqer()
Definition: MainFrm.cpp:4193
#define ID_VIEW_UPFLOOR
afx_msg void OnCurvePatchbevel()
Definition: MainFrm.cpp:5371
afx_msg void OnBSPDone(UINT wParam, long lParam)
Definition: MainFrm.cpp:738
idVec3 origin
Definition: EditorEntity.h:37
void UpdateStatusText()
Definition: MainFrm.cpp:3910
#define ID_SHOW_DOOM
#define ID_PATCH_DRILLDOWN
afx_msg void OnBrush7sided()
Definition: MainFrm.cpp:3104
#define ID_SHOW_ENTITIES
afx_msg void OnCurveCapInvertedendcap()
Definition: MainFrm.cpp:5755
afx_msg void OnTexturesLoadlist()
Definition: MainFrm.cpp:5255
void Sys_Status(const char *psz, int part)
Definition: Radiant.cpp:465
CXYWnd * ActiveXY()
Definition: MainFrm.cpp:4034
#define ID_TEXTURES_TEXTUREWINDOWSCALE_50
#define ID_FILE_NEWPROJECT
camera_t & Camera()
Definition: CamWnd.h:90
#define ID_SELECTION_MAKEHOLLOW
afx_msg void OnSelectionUngroupentity()
Definition: MainFrm.cpp:3524
#define ID_VIEW_SIDE
void Undo_Redo(void)
Definition: Undo.cpp:764
const char * ValueForKey(entity_t *ent, const char *key)
#define ID_PROJECTED_LIGHT
afx_msg void OnPatchBend()
Definition: MainFrm.cpp:5612
afx_msg void OnToggleviewXz()
Definition: MainFrm.cpp:4042
Definition: Vector.h:316
#define ID_CURVE_INSERT_INSERTCOLUMN
#define ID_PATCH_WIREFRAME
void HandlePopup(CWnd *pWindow, unsigned int uId)
Definition: MainFrm.cpp:774
bool GetMatrixForKey(entity_t *ent, const char *key, idMat3 &mat)
#define ID_VIEW_CLIPPER
bool LoadWindowPlacement(HWND hwnd, const char *pName)
Definition: MainFrm.cpp:1431
#define ID_GRID_2
#define ID_SELECTION_SELECTTOUCHING
#define ID_CURVE_MATRIX_TRANSPOSE
afx_msg void OnBrush8sided()
Definition: MainFrm.cpp:3116
afx_msg void OnCurveInsertAddcolumn()
Definition: MainFrm.cpp:5479
afx_msg void OnCurveInsertInsertcolumn()
Definition: MainFrm.cpp:5505
#define ID_SELECTION_VIEW_WIREFRAMEOFF
afx_msg void OnSelectionMakehollow()
Definition: MainFrm.cpp:3342
void Map_ImportFile(char *fileName)
Definition: EditorMap.cpp:1330
virtual ~CMainFrame()
Definition: MainFrm.cpp:767
void GetSurfaceAttributes()
Definition: TextureBar.cpp:180
void Brush_Free(brush_t *b, bool bRemoveNode)
#define ID_COLORS_XYBK
#define ID_CURVE_PATCHSQUARE
#define ID_PATCH_INSDEL
afx_msg void OnBrush9sided()
Definition: MainFrm.cpp:3128
#define ID_VIEW_SHOWTRIGGERS
idAngles angles
Definition: CamWnd.h:49
#define ID_SELECTION_TEXTURE_DEC
#define IDR_POPUP_SPLINE
BOOL m_bYZVis
Definition: PrefsDlg.h:84
idCmdSystem * cmdSystem
Definition: CmdSystem.cpp:116
afx_msg void OnSelectionTogglesizepaint()
Definition: MainFrm.cpp:4944
#define ID_COLORS_MINOR
bool gbWholeStringMatchOnly
Definition: MainFrm.cpp:2702
#define ID_SELECT_MOUSESCALE
afx_msg void OnColorSetblack()
Definition: MainFrm.cpp:4269
afx_msg void OnViewCubeout()
Definition: MainFrm.cpp:4824
void CheckTextureScale(int id)
Definition: MainFrm.cpp:5824
#define ID_PATCH_WELD
afx_msg void OnTogglez()
Definition: MainFrm.cpp:3811
afx_msg void OnEditCopybrush()
Definition: MainFrm.cpp:4428
#define ID_TEXTURES_TEXTUREWINDOWSCALE_25
afx_msg void OnRegionOff()
Definition: MainFrm.cpp:3268
afx_msg void OnPopupNewcameraSpline()
Definition: MainFrm.cpp:6425
afx_msg void OnFileLoadproject()
Definition: MainFrm.cpp:1845
CXYWnd * GetXYWnd()
Definition: MainFrm.h:120
const int SCALE_Y
Definition: XYWnd.h:44
void SetViewType(int n)
Definition: XYWnd.cpp:3998
#define ID_CURVE_NEGATIVETEXTUREY
afx_msg void OnCurvePatchdensetube()
Definition: MainFrm.cpp:5701
void Identity(void)
Definition: Matrix.h:591
afx_msg void OnSelectionTextureShiftup()
Definition: MainFrm.cpp:4591
afx_msg void OnSelectionWireFrameOn()
Definition: MainFrm.cpp:6681
bool LoadRegistryInfo(const char *pszName, void *pvBuf, long *plSize)
Definition: Radiant.cpp:405
#define ID_CAMERA_ANGLEDOWN
#define ID_PRECISION_CURSOR_CYCLE
void SetXYFriend(CXYWnd *pWnd)
Definition: CamWnd.cpp:224
#define ID_SHOW_LIGHTVOLUMES
const int g_msgBSPStatus
Definition: MainFrm.cpp:345
idMat3 lightRotation
Definition: EditorEntity.h:46
#define ID_MISC_FINDBRUSH
void AddCurvePoints()
Definition: EntityDlg.cpp:1168
BOOL DoMru(HWND hWnd, WORD wId)
Definition: MainFrm.cpp:2054
void ShowMenuItemKeyBindings(CMenu *pMenu)
Definition: MainFrm.cpp:947
BOOL m_bRotateLock
Definition: PrefsDlg.h:87
BOOL m_selectOnlyBrushes
Definition: PrefsDlg.h:107
#define ID_GRID_8
int i
Definition: process.py:33
int GetNumKeys(entity_t *ent)
bool g_bOriginalFlag
Definition: MainFrm.cpp:4938
#define ID_SELECT_MOUSEROTATE
#define BOOL
Definition: mprintf.c:71
#define ID_COLOR_SETQER
#define ID_GRID_END
void Undo_Start(char *operation)
Definition: Undo.cpp:362
#define ID_SELECT_NOMODELS
#define ID_SOUND_SHOWSELECTEDSOUNDVOLUMES
bool SetRotateMode(bool bMode)
Definition: XYWnd.cpp:4040
afx_msg void OnCurveCap()
Definition: MainFrm.cpp:5737
GLuint GLuint num
Definition: glext.h:5390
#define ID_CURVE_PATCHINVERTEDBEVEL
afx_msg void OnViewRealtimerebuild()
Definition: MainFrm.cpp:6603
afx_msg void OnTexturesInspector()
Definition: MainFrm.cpp:2585
brush_t brushes
Definition: EditorEntity.h:35
afx_msg void OnSelectionDeselect()
Definition: MainFrm.cpp:3401
bool g_bShowLightTextures
Definition: EditorBrush.cpp:44
afx_msg void OnCurveDeleteFirstcolumn()
Definition: MainFrm.cpp:5560
#define ID_GRID_NEXT
afx_msg void OnViewRendersound()
Definition: MainFrm.cpp:6733
void Brush_Build(brush_t *b, bool bSnap, bool bMarkMap, bool bConvert, bool updateLights)
#define ID_SELECT_ALLTARGETS
void SetGridChecks(int nID)
Definition: MainFrm.cpp:4599
afx_msg void OnTimer(UINT nIDEvent)
Definition: MainFrm.cpp:1402
void Texture_HideAll()
Definition: NewTexWnd.cpp:688
void MFCCreate(HINSTANCE hInstance)
Definition: MainFrm.cpp:1013
#define ID_BRUSH_ROTATEZ
afx_msg void OnEditSaveprefab()
Definition: MainFrm.cpp:6132
afx_msg void OnBrushRotatey()
Definition: MainFrm.cpp:3244
#define ID_VIEW_CHANGE
int Icmp(const char *text) const
Definition: Str.h:667
#define ID_VIEW_RENDERMODE
#define EDITOR_DEFAULT_PROJECT
Definition: Licensee.h:91
#define ID_SELECT_AXIALTEXTURE_ARBITRARY
#define ID_SELECTION_TEXTURE_SCALEUP
afx_msg void OnCurveHemisphere()
Definition: MainFrm.cpp:5052
afx_msg void OnTexturesTexturewindowscale100()
Definition: MainFrm.cpp:5854
#define ID_VIEW_REALTIMEREBUILD
void ToggleSelectMode()
Definition: CamWnd.cpp:1965
#define ID_GRID_32
#define ID_SELECTION_DRAGVERTECIES
idMat3 rotation
Definition: EditorEntity.h:44
void Map_RegionXY(void)
Definition: EditorMap.cpp:1038
#define EDITOR_REGISTRY_KEY
Definition: Licensee.h:92
#define ID_SPLINES_MODE
afx_msg void OnAxialTextureArbitrary()
Definition: MainFrm.cpp:6652
afx_msg void OnCurveInsertcolumn()
Definition: MainFrm.cpp:5423
afx_msg void OnViewRenderselection()
Definition: MainFrm.cpp:6694
list l
Definition: prepare.py:17
#define D3XP_ID_SHOW_MODELS
Definition: MainFrm.cpp:88
#define ID_SELECTION_PRINT
afx_msg void OnMiscPrintxy()
Definition: MainFrm.cpp:2629
int m_nAutoSave
Definition: PrefsDlg.h:104
afx_msg void OnBrushArbitrarysided()
Definition: MainFrm.cpp:3140
void SetKeyValue(entity_t *ent, const char *key, const char *value, bool trackAngles)
bool MouseDown()
Definition: MainFrm.cpp:1381
afx_msg void OnViewShowcoordinates()
Definition: MainFrm.cpp:2257
#define ID_CAMERA_STRAFELEFT
#define ID_VIEW_NEAREST
#define ID_TEXTURES_LOAD
#define ID_CURVE_DELETE_LASTROW
idStr & StripPath(void)
Definition: Str.cpp:885
afx_msg void OnEditLoadprefab()
Definition: MainFrm.cpp:6155
#define ID_GRID_1
#define ID_BRUSH_6SIDED
int g_axialDest
Definition: CamWnd.cpp:50
afx_msg void OnScalelockx()
Definition: MainFrm.cpp:4714
afx_msg void OnViewShowworld()
Definition: MainFrm.cpp:2363
void Undo_Undo(void)
Definition: Undo.cpp:582
#define ID_SELECT_RESELECT
afx_msg void OnSelectionTextureScaleRight()
Definition: MainFrm.cpp:4559
#define ID_TEXTURES_SHOWINUSE
afx_msg void OnSelectScale()
Definition: MainFrm.cpp:4370
#define ID_PATCH_COMBINE
int com_editors
Definition: Common.cpp:97
afx_msg void OnSelectionMoveup()
Definition: MainFrm.cpp:4895
int Icmpn(const char *text, int n) const
Definition: Str.h:672
void SetScale(float f)
Definition: XYWnd.h:155
#define ID_SPLIT_SELECTED
afx_msg void OnCurvePatchendcap()
Definition: MainFrm.cpp:5384
#define ID_SELECTION_TEXTURE_SHIFTRIGHT
afx_msg void OnRegionSetbrush()
Definition: MainFrm.cpp:3276
#define ID_CURVE_OVERLAY_CLEAR
virtual void BufferCommandText(cmdExecution_t exec, const char *text)=0
afx_msg void OnPatchCombine()
Definition: MainFrm.cpp:6562
#define ID_CURVE_INCREASE_VERT
afx_msg void OnEditUndo()
Definition: MainFrm.cpp:4448
virtual BOOL OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext *pContext)
Definition: MainFrm.cpp:1701
afx_msg void OnViewShownames()
Definition: MainFrm.cpp:2302
#define ID_COLORS_VIEWNAME
#define ID_BRUSH_9SIDED
CZWnd * m_pZWnd
Definition: MainFrm.h:153
void ToggleEntityMode()
Definition: CamWnd.cpp:1918
afx_msg void OnCurveCyclecapAlt()
Definition: MainFrm.cpp:5941
void SetActive(bool b)
Definition: XYWnd.h:125
afx_msg void OnFileSaveas()
Definition: MainFrm.cpp:1919
Definition: CamWnd.h:64
void Error(const char *pFormat,...)
Definition: cmdlib.cpp:45
void BuildRendererState()
Definition: CamWnd.cpp:1707
afx_msg void OnSelectionVisibleOff()
Definition: MainFrm.cpp:6689
afx_msg void OnViewShowCombatNodes()
Definition: MainFrm.cpp:2333
afx_msg void OnViewEntity()
Definition: MainFrm.cpp:2029
void Sort(cmp_t *compare=(cmp_t *)&idListSortCompare< type >)
Definition: List.h:898
bool ByeByeSurfaceDialog()
Definition: SurfaceDlg.cpp:314
afx_msg void OnCurveDeletecolumn()
Definition: MainFrm.cpp:5453
afx_msg void OnPopupNewcameraInterpolated()
Definition: MainFrm.cpp:6415
#define ID_VIEW_CONSOLE
#define ID_POPUP_NEWCAMERA_INTERPOLATED
virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
Definition: MainFrm.cpp:1373
#define ID_SHOW_LIGHTTEXTURES
afx_msg void OnEditEntityinfo()
Definition: MainFrm.cpp:3850
#define ID_SELECTION_MOVEONLY
afx_msg void OnFileExit()
Definition: MainFrm.cpp:1837
#define ID_COLORS_BRUSH
CCamWnd * GetCamera()
Definition: MainFrm.h:123
void PositionView()
Definition: XYWnd.cpp:3951
BOOL m_bLoadLast
Definition: PrefsDlg.h:61
afx_msg void OnCurveSphere()
Definition: MainFrm.cpp:5076
#define ID_SELECTION_TEXTURE_SHIFTLEFT
CString m_strLastMap
Definition: PrefsDlg.h:64
#define ID_SELECTION_DELETE
const int RAD_CONTROL
Definition: MainFrm.h:45
#define ID_COLOR_SETBLACK
const int RAD_SHIFT
Definition: MainFrm.h:43
#define ID_SPLINES_ADDPOINTS
#define ID_SPLINES_INSERTPOINTS
#define ID_FILE_PROJECTSETTINGS
afx_msg void OnViewShowNoDraw()
Definition: MainFrm.cpp:6719
BOOL m_bLoadLastMap
Definition: PrefsDlg.h:71
afx_msg void OnViewSide()
Definition: MainFrm.cpp:2497
int Undo_UndoAvailable(void)
Definition: Undo.cpp:901
#define ID_MISC_SETVIEWPOS
void save(const char *filename)
Definition: splines.cpp:1330
bool region_active
Definition: EditorMap.cpp:835
#define ID_POPUP_NEWCAMERA_FIXED
bool DoColor(int iIndex)
Definition: MainFrm.cpp:2644
afx_msg void OnUpdateFileImport(CCmdUI *pCmdUI)
Definition: MainFrm.cpp:4801
#define ID_BRUSH_FLIPZ
afx_msg void OnViewRebuildrenderdata()
Definition: MainFrm.cpp:6594
void Face_SetAxialScale_BrushPrimit(face_t *face, bool y)
void ToggleRenderMode()
Definition: CamWnd.cpp:1894
#define ID_CURVE_ENDCAP
#define ID_VIEW_SHOWCLIP
afx_msg void OnEditRedo()
Definition: MainFrm.cpp:4457
afx_msg void OnSizing(UINT fwSide, LPRECT pRect)
Definition: MainFrm.cpp:3598
afx_msg void OnClose()
Definition: MainFrm.cpp:1574
#define ID_CURVE_CYCLECAPALT
idSys * sys
Definition: maya_main.cpp:48
#define ID_VIEW_SHOWCAULK
afx_msg void OnSplinesInsertPoint()
Definition: MainFrm.cpp:6900
void Select_AutoCaulk()
Definition: autocaulk.cpp:96
#define ID_SELECTION_SELECT_NUDGERIGHT
#define ID_COLORS_CLIPPER
afx_msg void OnViewFront()
Definition: MainFrm.cpp:2043
#define ID_VIEW_CENTER
#define ID_COLOR_SUPERMAL
afx_msg void OnSelectReselect()
Definition: MainFrm.cpp:6109
idVec3 & Rotation()
Definition: XYWnd.cpp:4353
void startCamera(long t)
Definition: splines.cpp:1223
afx_msg void OnCameraStrafeleft()
Definition: MainFrm.cpp:3715
afx_msg void OnCurveCylinder()
Definition: MainFrm.cpp:5028
virtual void SetPlayingSoundWorld(idSoundWorld *soundWorld)=0
afx_msg void OnSelectAll()
Definition: MainFrm.cpp:6062
BOOL m_bSizePaint
Definition: PrefsDlg.h:86
#define ID_COLOR_SETORIGINAL
#define ID_SCALELOCKY
afx_msg void OnSelectionTextureScaleup()
Definition: MainFrm.cpp:4543
afx_msg void OnPopupNewcameraFixed()
Definition: MainFrm.cpp:6435
LPCSTR String_ToLower(LPCSTR psString)
Definition: MainFrm.cpp:2708
void Pointfile_Clear(void)
Definition: PointFile.cpp:154
afx_msg void OnBrush6sided()
Definition: MainFrm.cpp:3092
#define ID_TEXTURES_FLUSH
#define ID_CURVE_PATCHCONE
afx_msg void OnBrush4sided()
Definition: MainFrm.cpp:3068
afx_msg void OnTogglecamera()
Definition: MainFrm.cpp:3784
afx_msg void OnCurveDeleteFirstrow()
Definition: MainFrm.cpp:5573
#define ID_VIEW_ZOOMOUT
afx_msg void OnSelectionTextureRotateclock()
Definition: MainFrm.cpp:4519
#define ID_PATCH_BEND
#define ID_VIEW_CUBEIN
afx_msg void OnCurvePatchtube()
Definition: MainFrm.cpp:5348
idCommon * common
Definition: Common.cpp:206
#define ID_VIEW_NEXTVIEW
CToolBar m_wndToolBar
Definition: MainFrm.h:144
void Copy()
Definition: XYWnd.cpp:4142
#define ID_GRID_POINT125
#define ID_VIEW_SHOWCOMBATNODES
void clear()
Definition: splines.cpp:751
afx_msg void OnFileExportmap()
Definition: MainFrm.cpp:5095
#define NULL
Definition: Lib.h:88
#define ID_PATCH_ENTER
afx_msg void OnCurvePatchinvertedendcap()
Definition: MainFrm.cpp:5405
CStatusBar m_wndStatusBar
Definition: MainFrm.h:135
virtual const char * GetCVarString(const char *name) const =0
#define ID_AUTOCAULK
#define ID_BRUSH_8SIDED
bool GetRenderMode()
Definition: CamWnd.h:104
afx_msg void OnViewEntitiesasWireframe()
Definition: MainFrm.cpp:6000
#define ID_SELECTION_CONNECT
#define ID_FILE_IMPORTMAP
#define ID_SCALELOCKX
#define ID_CURVE_INCREASE_HORZ
#define ID_SELECTION_SELECT_NUDGEUP
#define IDR_POPUP_TEXTURE
const int RAD_PRESS
Definition: MainFrm.h:46
GLuint buffer
Definition: glext.h:3108
#define IDR_TOOLBAR_ADVANCED
#define ID_VIEW_CUBICCLIPPING
CString g_strAppPath
Definition: MainFrm.cpp:72
CString strFindValue
Definition: MainFrm.cpp:2699
#define ID_SELECTION_TEXTURE_ROTATECLOCK
#define ID_PATCH_SHOWBOUNDINGBOX
void WXY_Print(void)
Definition: XYWnd.cpp:687
#define ID_CURVE_DECREASE_VERT
void SetScaleMode(bool bMode)
Definition: XYWnd.cpp:4068
afx_msg void OnSelectionSelectNudgeright()
Definition: MainFrm.cpp:5137
void(* UpdateParent)(float r, float g, float b, float a)
#define ID_BRUSH_4SIDED
virtual void Clear(void)
Definition: Curve.h:2338
afx_msg void OnSelectionCsgmerge()
Definition: MainFrm.cpp:3366
#define SPEED_MOVE
Definition: MainFrm.cpp:96
bool GetAnimationMode()
Definition: CamWnd.h:113
#define ID_TEXTURES_FLUSH_UNUSED
afx_msg void OnMiscPreviousleakspot()
Definition: MainFrm.cpp:2621
afx_msg void OnSelectMousescale()
Definition: MainFrm.cpp:4759
afx_msg void OnBrush3sided()
Definition: MainFrm.cpp:3056
#define ID_VIEW_SHOWPATH
#define ID_REGION_SETSELECTION
#define ID_FILE_LOADPROJECT
void Cam_MouseControl(float dtime)
Definition: CamWnd.cpp:552
void CreateQEChildren()
Definition: MainFrm.cpp:1289
#define ID_SPLINES_POPUP
void Select_RotateTexture(float amt, bool absolute)
idCurve_NURBS< idVec2 > nurb
Definition: MainFrm.h:159
afx_msg void OnSnapToGrid()
Definition: MainFrm.cpp:5800
afx_msg void OnPatchDrilldown()
Definition: MainFrm.cpp:5413
afx_msg void OnFileImport()
Definition: MainFrm.cpp:4786
struct entity_s * next
Definition: EditorEntity.h:34
afx_msg void OnColorsMinor()
Definition: MainFrm.cpp:3038
CPtrArray & g_ptrSelectedFaces
#define ID_MISC_FINDNEXTENT
Definition: eax4.h:1413
void ExecuteCommand(const idStr &cmd="")
Definition: ConsoleDlg.cpp:206
#define ID_CURVE_SPHERE
afx_msg void OnMiscSetViewPos()
Definition: MainFrm.cpp:2984
afx_msg void OnAxialTextureByHeight()
Definition: MainFrm.cpp:6639
afx_msg void OnCurveDeleteLastrow()
Definition: MainFrm.cpp:5599
bool nurbMode
Definition: MainFrm.h:158
#define ID_CURVE_INSERT_ADDROW
afx_msg void OnCurveRedisperseCols()
Definition: MainFrm.cpp:5764
float x
Definition: Vector.h:54
#define ID_VIEW_100
afx_msg void OnColorSetoriginal()
Definition: MainFrm.cpp:4149
afx_msg void OnToolbarTexture()
Definition: MainFrm.cpp:4914
afx_msg void OnParentNotify(UINT message, LPARAM lParam)
Definition: MainFrm.cpp:799
#define ID_BRUSH_7SIDED
type * Find(type const &obj) const
Definition: List.h:782
#define ID_SELECTION_VIEW_VISIBLEOFF
#define ID_CURVE_CAP
afx_msg void OnColorsBrush()
Definition: MainFrm.cpp:4095
#define ID_SPLINES_LOAD
#define ID_BRUSH_3SIDED
BOOL m_bQE4Painting
Definition: PrefsDlg.h:81
brush_t filtered_brushes
Definition: EditorMap.cpp:45
CString strReplaceKey
Definition: MainFrm.cpp:2700
#define ID_SELECTION_TEXTURE_FIT
#define ID_BRUSH_5SIDED
#define ID_GRID_4
#define ID_DYNAMIC_LIGHTING
#define ID_CURVE_INSERTROW
#define ID_TEXTURES_TEXTUREWINDOWSCALE_10
#define ID_CURVE_NEGATIVETEXTUREX
#define ID_FILE_IMPORT
int GetViewType()
Definition: XYWnd.h:154
afx_msg void OnTexturesTexturewindowscale25()
Definition: MainFrm.cpp:5872
afx_msg void OnGrid1(unsigned int nID)
Definition: MainFrm.cpp:2515
virtual void Reload(bool force)=0
#define SPEED_TURN
Definition: MainFrm.cpp:97
bool load(const char *filename)
Definition: splines.cpp:1307
bool SaveRegistryInfo(const char *pszName, void *pvBuf, long lSize)
Definition: Radiant.cpp:398
#define ID_GRID_POINT25
#define ID_GRID_TOGGLE
afx_msg void OnColorsGridblock()
Definition: MainFrm.cpp:4131
afx_msg void OnSelectionCsgsubtract()
Definition: MainFrm.cpp:3355
afx_msg void OnActivate(UINT nState, CWnd *pWndOther, BOOL bMinimized)
Definition: MainFrm.cpp:6314
#define ID_BRUSH_FLIPY
#define ID_CURVE_PATCHTUBE
idVec3 origin
Definition: CamWnd.h:48
bool g_bShowLightVolumes
Definition: EditorBrush.cpp:43
#define ID_CAMERA_RIGHT
#define ID_CURVE_CAP_INVERTEDBEVEL
afx_msg void OnCurveEndcap()
Definition: MainFrm.cpp:5044
afx_msg void OnGridNext()
Definition: MainFrm.cpp:4619
#define ID_SELECT_SNAPTOGRID
int g_nUpdateBits
Definition: MainFrm.cpp:76
afx_msg void OnCurveQuarter()
Definition: MainFrm.cpp:5068
afx_msg void OnCurveIncreaseHorz()
Definition: MainFrm.cpp:6463
int m_nRotation
Definition: PrefsDlg.h:90
afx_msg void OnBrushRotatex()
Definition: MainFrm.cpp:3232
void DefaultExtension(char *path, char *extension)
Definition: cmdlib.cpp:166
#define ID_MISC_PREVIOUSLEAKSPOT
afx_msg void OnCurveEighthsphere()
Definition: MainFrm.cpp:5036
afx_msg void OnUpdateTexturesShowinuse(CCmdUI *pCmdUI)
Definition: MainFrm.cpp:2577
afx_msg void OnToolbarMain()
Definition: MainFrm.cpp:4907
#define ID_FILE_SAVEREGION
afx_msg void OnSplinesLoad()
Definition: MainFrm.cpp:6347
#define IDD_DIALOG_INSPECTORS
#define ID_VIEW_SHOWENT
afx_msg void OnCurveMatrixTranspose()
Definition: MainFrm.cpp:5950
GLubyte GLubyte GLubyte a
Definition: glext.h:4662
void Select_SetKeyVal(const char *key, const char *val)
void DeleteKey(entity_t *ent, const char *key)
afx_msg void OnTexturesTexturewindowscale50()
Definition: MainFrm.cpp:5881
void startEdit(bool camera)
Definition: splines.cpp:917
#define ID_EDIT_LOADPREFAB
virtual void Printf(const char *fmt,...) id_attribute((format(printf
afx_msg void OnHelpAbout()
Definition: MainFrm.cpp:3607
CString strReplaceValue
Definition: MainFrm.cpp:2701
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct)
Definition: MainFrm.cpp:1079
afx_msg void OnView100()
Definition: MainFrm.cpp:1983
afx_msg void OnCameraForward()
Definition: MainFrm.cpp:3682
afx_msg void OnSelectionSelectNudgeleft()
Definition: MainFrm.cpp:5129
afx_msg void OnUpdateEditUndo(CCmdUI *pCmdUI)
Definition: MainFrm.cpp:4465
#define ID_TOGGLEVIEW
CInspectorDialog * g_Inspectors
#define ID_VIEW_SHOWBLOCKS
int g_nScaleHow
Definition: XYWnd.cpp:53
int m_nCur
Definition: MainFrm.cpp:1424
#define ID_SELECTION_SELECT_NUDGEDOWN
afx_msg void OnScalelocky()
Definition: MainFrm.cpp:4729
afx_msg void OnUpdateEditRedo(CCmdUI *pCmdUI)
Definition: MainFrm.cpp:4477
#define ID_SNAPTOGRID
void Undo_AddEntity(entity_t *entity)
Definition: Undo.cpp:493
void InsertCurvePoint()
Definition: EntityDlg.cpp:1227
afx_msg void OnSelectNomodels()
Definition: MainFrm.cpp:6701
afx_msg void OnRegionSetxy()
Definition: MainFrm.cpp:3300
CString m_strStatus[15]
Definition: MainFrm.h:154
int m_nStatusSize
Definition: PrefsDlg.h:77
afx_msg void OnSplinesEditPoints()
Definition: MainFrm.cpp:6892
afx_msg void OnSplinesSave()
Definition: MainFrm.cpp:6356
afx_msg void OnPatchNaturalizeAlt()
Definition: MainFrm.cpp:5791
void OpenDialog(void)
afx_msg void OnCameraAngledown()
Definition: MainFrm.cpp:3636
void UpdateWindows(int nBits)
Definition: MainFrm.cpp:3933
afx_msg void OnDestroy()
Definition: MainFrm.cpp:1460
void ToggleAnimationMode()
Definition: CamWnd.cpp:1931
#define ID_CURVE_THICKEN
int m_nEntityShowState
Definition: PrefsDlg.h:110
void buildCamera()
Definition: splines.cpp:1081
#define ID_SELECTION_MOVEDOWN
unsigned int m_nModifiers
Definition: MainFrm.h:52
afx_msg void OnColorsSelectedbrush()
Definition: MainFrm.cpp:4122
#define ID_BRUSH_MAKECONE
void SetMode(int mode, bool updateTabs=true)
bool m_bCubicClipping
Definition: PrefsDlg.h:105
afx_msg void OnMiscFindNextEntity()
Definition: MainFrm.cpp:2973
afx_msg void OnTexturesTexturewindowscale10()
Definition: MainFrm.cpp:5845
afx_msg void OnCurveInsertAddrow()
Definition: MainFrm.cpp:5492
idDeclManager * declManager
#define ID_BRUSH_FLIPX
void SaveWindowPlacement(HWND hwnd, const char *pName)
Definition: MainFrm.cpp:1448
afx_msg void OnViewShowcurves()
Definition: MainFrm.cpp:5106
#define ID_SELECTION_ARBITRARYROTATION
#define YAW
Definition: Angles.h:42
BOOL m_bWideToolbar
Definition: PrefsDlg.h:88
afx_msg void OnViewConsole()
Definition: MainFrm.cpp:2013
afx_msg void OnBrushFlipy()
Definition: MainFrm.cpp:3175
BOOL m_bSnapTToGrid
Definition: PrefsDlg.h:82
afx_msg void OnClipSelected()
Definition: MainFrm.cpp:3997
afx_msg void OnViewShowShowvisportals()
Definition: MainFrm.cpp:6707
GLubyte GLubyte b
Definition: glext.h:4662
int m_nMin
Definition: MainFrm.cpp:1423
#define ID_HELP_COMMANDLIST
afx_msg void OnSplinesMode()
Definition: MainFrm.cpp:6335
#define ID_VIEW_MATERIALANIMATION
afx_msg void OnPatchEnter()
Definition: MainFrm.cpp:5632
afx_msg void OnBrush5sided()
Definition: MainFrm.cpp:3080
afx_msg void OnPatchWeld()
Definition: MainFrm.cpp:5361
#define ID_PATCH_NATURALIZE
BOOL m_bTextureLock
Definition: PrefsDlg.h:60
afx_msg void OnViewZoomout()
Definition: MainFrm.cpp:2442
afx_msg void OnRegionSetselection()
Definition: MainFrm.cpp:3284
idVec3 forward
Definition: CamWnd.h:55
void Pointfile_Prev(void)
Definition: PointFile.cpp:71
void Texture_Cleanup(CStringList *pList)
Definition: NewTexWnd.cpp:739
void Texture_SetMode(int iMenu)
Definition: NewTexWnd.cpp:751
#define ID_SELECTION_INVERT
afx_msg void OnGridPrev()
Definition: MainFrm.cpp:4645
bool Sys_KeyDown(int key)
Definition: NewTexWnd.cpp:49
#define ID_CURVE_BEVEL
afx_msg void OnScalelockz()
Definition: MainFrm.cpp:4744
#define ID_TEXTUREBK
#define IDR_POPUP_SELECTION
afx_msg void OnViewMaterialanimation()
Definition: MainFrm.cpp:6617
void Patch_AdjustSubdivisions(float hadj, float vadj)
#define ID_SELECTION_TEXTURE_ROTATECOUNTER
afx_msg void OnViewEntitiesasSkinned()
Definition: MainFrm.cpp:5989
afx_msg void OnShowLighttextures()
Definition: MainFrm.cpp:6294
afx_msg void OnViewShowent()
Definition: MainFrm.cpp:2272
CConsoleDlg consoleWnd
afx_msg void OnCurveOverlayClear()
Definition: MainFrm.cpp:5900
#define ID_VIEW_SHOWCURVES
int Insert(const type &obj, int index=0)
Definition: List.h:679
void LoadCommandMap()
Definition: MainFrm.cpp:1205
#define ID_CURVE_PATCHENDCAP
void UpdatePatchToolbarButtons()
Definition: MainFrm.cpp:5692
#define ID_VIEW_RENDERSELECTION
long LONG
void Map_RegionSelectedBrushes(void)
Definition: EditorMap.cpp:1003
afx_msg void OnTexturesTexturewindowscale200()
Definition: MainFrm.cpp:5863
#define ID_VIEW_SHOW_NODRAW
bool g_bClipMode
Definition: XYWnd.cpp:55
int m_nTextureScale
Definition: PrefsDlg.h:111
void RoutineProcessing()
Definition: MainFrm.cpp:1343
afx_msg void OnCurvePatchsquare()
Definition: MainFrm.cpp:5809
void ToggleRebuildMode()
Definition: CamWnd.cpp:1906
LPCSTR GetString(LPCSTR psPrompt)
Definition: GetString.cpp:87
GLdouble GLdouble GLdouble r
Definition: glext.h:2951
static void ShowDialog()
#define ID_PATCH_NATURALIZEALT
BOOL m_bXZVis
Definition: PrefsDlg.h:83
afx_msg void OnTexturesShowall()
Definition: MainFrm.cpp:6026
void Select_Ungroup()
afx_msg void OnMiscFindOrReplaceEntity()
Definition: MainFrm.cpp:2916
#define ID_TEXTURES_TEXTUREWINDOWSCALE_200
afx_msg void OnMru(unsigned int nID)
Definition: MainFrm.cpp:2085
afx_msg void OnPopupSelection()
Definition: MainFrm.cpp:3558
bool GetVectorForKey(entity_t *ent, const char *key, idVec3 &vec)
void Entity_LinkBrush(entity_t *e, brush_t *b)
#define ID_CAMERA_UP
afx_msg void OnViewCubicclipping()
Definition: MainFrm.cpp:4839
Definition: Matrix.h:333
afx_msg void OnSysKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
Definition: MainFrm.cpp:1656
afx_msg void OnTexturesLoad()
Definition: MainFrm.cpp:4978
CTextureBar m_wndTextureBar
Definition: MainFrm.h:145
#define ID_TOGGLEZ
afx_msg void OnViewOpengllighting()
Definition: MainFrm.cpp:6046
#define ID_MISC_GAMMA
afx_msg void OnBrushMakecone()
Definition: MainFrm.cpp:4966
#define ID_CURVE_INSERT_INSERTROW
afx_msg void OnSelectionTextureShiftdown()
Definition: MainFrm.cpp:4567
void DoPatchInspector()
void FindReplace(CString &strContents, const char *pTag, const char *pValue)
Definition: MainFrm.cpp:1192
afx_msg void OnViewCameraupdate()
Definition: MainFrm.cpp:3574
afx_msg void OnAutocaulk()
Definition: MainFrm.cpp:3528
#define ID_VIEW_HIDESHOW_HIDENOTSELECTED
void Undo_EndBrushList(brush_t *brushlist)
Definition: Undo.cpp:470
afx_msg void OnTexturesPopup()
Definition: MainFrm.cpp:3542
GLuint id
Definition: glext.h:3103
bool GetBool(void) const
Definition: CVarSystem.h:142
#define show(x)
Definition: getpart.c:36
#define ID_HELP_ABOUT
#define ID_SPLINES_DELETEPOINTS
void Texture_ShowInuse(void)
Definition: NewTexWnd.cpp:710
void SetGridStatus()
Definition: MainFrm.cpp:4671
virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam)
Definition: MainFrm.cpp:1326
afx_msg void OnColorsGridtext()
Definition: MainFrm.cpp:4113
void NudgeSelection(int nDirection, float fAmount)
Definition: MainFrm.cpp:5153
tuple f
Definition: idal.py:89
int g_axialAnchor
Definition: CamWnd.cpp:49
afx_msg void OnShowDoom()
Definition: MainFrm.cpp:6578
CString g_strProject
Definition: MainFrm.cpp:85
#define ID_FILE_EXIT
#define IDR_POPUP_ENTITY
BOOL m_bRunBefore
Definition: PrefsDlg.h:62
afx_msg void OnCurveMoreendcapsbevelsSquarebevel()
Definition: MainFrm.cpp:6177
afx_msg void OnFilePointfile()
Definition: MainFrm.cpp:1875
afx_msg void OnCameraDown()
Definition: MainFrm.cpp:3673
GLuint in
Definition: glext.h:5388
afx_msg void OnFileSaveregion()
Definition: MainFrm.cpp:4861
#define ID_SELECTION_VIEW_VISIBLEON
afx_msg void OnColorsClipper()
Definition: MainFrm.cpp:4104
int Num(void) const
Definition: List.h:265
afx_msg void OnViewRendermode()
Definition: MainFrm.cpp:6587
#define ID_SELECT_ALL
afx_msg void OnMiscGamma()
Definition: MainFrm.cpp:2601
bool SaveWindowState(HWND hWnd, const char *pszName)
Definition: Radiant.cpp:410
void Map_LoadFile(const char *filename)
Definition: EditorMap.cpp:424
#define ID_CAMERA_STRAFERIGHT
afx_msg void OnSplinesDeletePoint()
Definition: MainFrm.cpp:6896
afx_msg void OnSelectionInvert()
Definition: MainFrm.cpp:6277
CString strFindKey
Definition: MainFrm.cpp:2698
afx_msg void OnCurvePatchverydensetube()
Definition: MainFrm.cpp:5718
#define ID_RET_REPLACE
#define ID_SELECTION_DESELECT
afx_msg void OnSnaptogrid()
Definition: MainFrm.cpp:4356
#define ID_TEXTURES_INSPECTOR
#define ID_PATCH_TAB
const GLcharARB * name
Definition: glext.h:3629
#define ID_VIEW_ZZOOMIN
afx_msg void OnUpdateFileSaveregion(CCmdUI *pCmdUI)
Definition: MainFrm.cpp:4869
idSoundSystem * soundSystem
Definition: snd_system.cpp:92
unsigned int m_nCommand
Definition: MainFrm.h:53
#define ID_CURVE_FREEZE
#define ID_RET_FIND
afx_msg void OnShowEntities()
Definition: MainFrm.cpp:5981
afx_msg void OnPatchWireframe()
Definition: MainFrm.cpp:5325
virtual BOOL PreTranslateMessage(MSG *pMsg)
Definition: MainFrm.cpp:5235
#define ID_SCALELOCKZ
#define ID_SPLINE_TEST
CPrefsDlg & g_PrefsDlg
Definition: MainFrm.cpp:75
afx_msg void OnTexturesFlush()
Definition: MainFrm.cpp:5890
#define ID_VIEW_BILINEARMIPMAP
afx_msg void OnCurveFreeze()
Definition: MainFrm.cpp:6085
#define ID_TOGGLEVIEW_YZ
#define ID_TOGGLE_LOCK
afx_msg void OnSplinesEdit()
Definition: MainFrm.cpp:6364
Definition: XYWnd.h:70
entity_t entities
Definition: EditorMap.cpp:47
afx_msg void OnPatchTab()
Definition: MainFrm.cpp:5640
afx_msg void OnCurvePatchinvertedbevel()
Definition: MainFrm.cpp:5397
#define ID_VIEW_ENTITY
Definition: Str.h:116
afx_msg void OnSelectionDragvertecies()
Definition: MainFrm.cpp:3451
afx_msg void OnSplineTest()
Definition: MainFrm.cpp:6375
#define ID_CURVE_MOREENDCAPSBEVELS_SQUAREBEVEL
afx_msg void OnFileSaveCopy()
Definition: MainFrm.cpp:1927
afx_msg void OnViewCenter()
Definition: MainFrm.cpp:2003
void SaveWindowPlacement(int ID=-1)
Definition: TabsDlg.cpp:335
#define ID_SELECTION_SELECTCOMPLETETALL
bool getCameraInfo(long time, idVec3 &origin, idVec3 &direction, float *fv)
Definition: splines.cpp:989
#define ID_FILE_EXPORTMAP
afx_msg void OnSelectionTextureShiftright()
Definition: MainFrm.cpp:4583
#define ID_SELECT_BRUSHESONLY
void Undo_End(void)
Definition: Undo.cpp:552
afx_msg void OnSplinesCameraPoints()
Definition: MainFrm.cpp:6408
#define ID_EDIT_ENTITYINFO
afx_msg void OnCurveMoreendcapsbevelsSquareendcap()
Definition: MainFrm.cpp:6192
afx_msg void OnSelectionDelete()
Definition: MainFrm.cpp:3379
afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags)
Definition: MainFrm.cpp:1585
afx_msg void OnFileImportmap()
Definition: MainFrm.cpp:5084
const int SCALE_X
Definition: XYWnd.h:43
bool GetSelectMode()
Definition: CamWnd.h:116
#define ID_CURVE_PATCHBEVEL
idCVar radiant_entityMode("radiant_entityMode","0", CVAR_TOOL|CVAR_ARCHIVE,"")
afx_msg void OnCurveDecreaseVert()
Definition: MainFrm.cpp:6455
void SplitClip()
Definition: XYWnd.cpp:3920
#define ID_SELECTION_SELECT_NUDGELEFT
unsigned int m_nKey
Definition: MainFrm.h:51
CString m_strLastProject
Definition: PrefsDlg.h:63
#define ID_SELECTION_TEXTURE_SHIFTDOWN
const char * c_str(void) const
Definition: Str.h:487
void Patch_Weld(patchMesh_t *p, patchMesh_t *p2)
afx_msg void OnSelectionMoveonly()
Definition: MainFrm.cpp:6479
#define FALSE
Definition: mprintf.c:70
const char * GetKeyString(entity_t *ent, int iIndex)
#define ID_VIEW_MEDIABROWSER
void setRunning(bool b)
Definition: splines.h:357
#define ID_SELECT_AXIALTEXTURE_BYWIDTH
#define ID_CURVE_REDISPERSE_COLS
#define ID_CURVE_PATCHINVERTEDENDCAP
bool g_bScreenUpdates
Definition: MainFrm.cpp:77
#define ID_SELECTION_TEXTURE_SCALERIGHT
void SetButtonMenuStates()
Definition: MainFrm.cpp:806
afx_msg void OnDisplayChange(WPARAM wp, LPARAM lp)
Definition: MainFrm.cpp:717
#define ID_VIEW_CROSSHAIR
#define ID_CURVE_OVERLAY_SET
void StripExtension(char *path)
Definition: cmdlib.cpp:222
bool g_bTABDown
Definition: MainFrm.cpp:4937
afx_msg void OnRegionSettallbrush()
Definition: MainFrm.cpp:3292
#define ID_VIEW_Z100
afx_msg void OnBspCommand(unsigned int nID)
Definition: MainFrm.cpp:2197
void DoSurface(void)
Definition: SurfaceDlg.cpp:282
afx_msg void OnViewZ100()
Definition: MainFrm.cpp:2404
#define ID_SELECTION_TEXTURE_SCALELEFT
idCameraDef * g_splineList
Definition: splines.cpp:35
afx_msg void OnFileSave()
Definition: MainFrm.cpp:1903
#define ID_EDIT_SAVEPREFAB
void Map_RegionTallBrush(void)
Definition: EditorMap.cpp:1067
afx_msg void OnCurveNegative()
Definition: MainFrm.cpp:5531
afx_msg void OnSelectionConnect()
Definition: MainFrm.cpp:3334
afx_msg void OnSelectionSelectcompletetall()
Definition: MainFrm.cpp:3488
#define ID_VIEW_TEXTURE
afx_msg void OnCurveCyclecap()
Definition: MainFrm.cpp:5936
afx_msg void OnCurveOverlaySet()
Definition: MainFrm.cpp:5909
afx_msg void OnCurveCapInvertedbevel()
Definition: MainFrm.cpp:5746
#define ID_CURVE_DECREASE_HORZ
afx_msg void OnFileProjectsettings()
Definition: MainFrm.cpp:4793
#define ID_TOGGLEVIEW_XZ
afx_msg void OnNurbEditor()
Definition: MainFrm.cpp:6752
afx_msg void OnViewShowlights()
Definition: MainFrm.cpp:2287
void OnPrecisionCursorCycle()
Definition: MainFrm.cpp:6830
bool m_bCamPreview
Definition: MainFrm.h:156
#define ID_CURVE_UNFREEZEALL
afx_msg void OnSelectionDragedges()
Definition: MainFrm.cpp:3432
afx_msg void OnBSPStatus(UINT wParam, long lParam)
Definition: MainFrm.cpp:725
afx_msg void OnTextureReplaceall()
Definition: MainFrm.cpp:4706
bool gbSelectAllMatchingEnts
Definition: MainFrm.cpp:2703
#define ID_TEXTURES_RELOADSHADERS
#define ID_SELECTION_SELECTINSIDE
#define ID_CURVE_NEGATIVE
void LoadPrefs()
Definition: PrefsDlg.cpp:324
afx_msg void OnTextureWad(unsigned int nID)
Definition: MainFrm.cpp:2104
afx_msg void OnColorsMajor()
Definition: MainFrm.cpp:3029
afx_msg void OnSelectionSelectNudgeup()
Definition: MainFrm.cpp:5145
char currentmap[1024]
Definition: EditorMap.cpp:37
#define ID_MISC_NEXTLEAKSPOT
afx_msg void OnViewShowwater()
Definition: MainFrm.cpp:2348
#define TRUE
Definition: mprintf.c:69
afx_msg void OnProjectedLight()
Definition: MainFrm.cpp:6286
afx_msg void OnEditPastebrush()
Definition: MainFrm.cpp:4438
#define EDITOR_WINDOWTEXT
Definition: Licensee.h:93
afx_msg void OnUpdateAutocaulk(CCmdUI *pCmdUI)
Definition: MainFrm.cpp:3532
CString m_strMaps
Definition: PrefsDlg.h:97
afx_msg void OnFlipClip()
Definition: MainFrm.cpp:3987
bool CamOK(unsigned int nKey)
Definition: MainFrm.cpp:1639
#define ID_SELECTION_SELECTPARTIALTALL
afx_msg void OnViewHideshowHideNotselected()
Definition: MainFrm.cpp:6237
void Select_ToCM()
Definition: CamWnd.cpp:1662
#define ID_GRID_64
afx_msg void OnViewRenderentityoutlines()
Definition: MainFrm.cpp:6610
afx_msg void OnSelectionTextureRotatecounter()
Definition: MainFrm.cpp:4527
GLint j
Definition: qgl.h:264
void SavePrefs()
Definition: PrefsDlg.cpp:391
#define ID_EDIT_MAPINFO
void KillPathMode()
Definition: XYWnd.cpp:1911
#define ID_TOOLBAR_TEXTURE
afx_msg void OnCameraStraferight()
Definition: MainFrm.cpp:3726
#define VectorMA(v, s, b, o)
Definition: Vector.h:1998
void Map_RegionOff(void)
Definition: EditorMap.cpp:949
#define ID_REGION_SETTALLBRUSH
#define ID_COLORS_GRIDBLOCK
virtual LRESULT DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
Definition: MainFrm.cpp:1334
afx_msg void OnSelectAlltargets()
Definition: MainFrm.cpp:6788
bool g_bRotateMode
Definition: XYWnd.cpp:54
#define ID_FILE_SAVEAS
afx_msg void OnFilePrintPreview()
Definition: MainFrm.cpp:1896
#define ID_CURVE_EIGHTHSPHERE
unsigned int m_nVKKey
Definition: MainFrm.h:59
#define ID_EDIT_PASTEBRUSH
#define ID_VIEW_ZOOMIN
#define ID_GRID_POINT5
afx_msg void OnViewHideshowHideselected()
Definition: MainFrm.cpp:6232
virtual BOOL PreCreateWindow(CREATESTRUCT &cs)
Definition: MainFrm.cpp:1259
afx_msg void OnViewShowclip()
Definition: MainFrm.cpp:2227
void UpdatePrefs()
Definition: NewTexWnd.cpp:167
#define ID_VIEW_SHOWLIGHTS
afx_msg void OnAxialTextureByWidth()
Definition: MainFrm.cpp:6625
BOOL m_selectByBoundingBrush
Definition: PrefsDlg.h:109
#define ID_CURVE_INSERTCOLUMN
#define ID_CAMERA_BACK
afx_msg void OnSelectMouserotate()
Definition: MainFrm.cpp:4394
afx_msg void OnToggleTextureBar()
Definition: MainFrm.cpp:4085
#define ID_VIEW_ZZOOMOUT
void Cam_ChangeFloor(bool up)
Definition: CamWnd.cpp:472
char * va(const char *fmt,...)
Definition: Str.cpp:1568
afx_msg void OnSplinesAddPoints()
Definition: MainFrm.cpp:6888
#define ID_CURVE_UNFREEZE
int GetNumValues(void) const
Definition: Curve.h:56
bool g_bScaleMode
Definition: XYWnd.cpp:52
Win32Vars_t win32
Definition: win_main.cpp:65
afx_msg void OnSelectionTextureInc()
Definition: MainFrm.cpp:4506
afx_msg void OnViewChange()
Definition: MainFrm.cpp:3566
afx_msg void OnViewCrosshair()
Definition: MainFrm.cpp:6223
bool FindNextBrush(brush_t *pPrevFoundBrush)
Definition: MainFrm.cpp:2730
afx_msg void OnSplitSelected()
Definition: MainFrm.cpp:4020
#define ID_CAMERA_ANGLEUP
#define ID_SELECTION_CSGSUBTRACT
#define ID_SELECTION_TEXTURE_SCALEDOWN
afx_msg void OnViewNextview()
Definition: MainFrm.cpp:3858
afx_msg void OnTexturebk()
Definition: MainFrm.cpp:3020
afx_msg void OnCurveRedisperseRows()
Definition: MainFrm.cpp:5773
afx_msg void OnColorsViewname()
Definition: MainFrm.cpp:4140
CRect g_rctOld(0, 0, 0, 0)
#define ID_VIEW_SHOWHINT
void ToggleSoundMode()
Definition: CamWnd.cpp:1948
afx_msg void OnTexturesShadersShow()
Definition: MainFrm.cpp:6254
GLfloat GLfloat p
Definition: glext.h:4674
void SetKeyVec3(entity_t *ent, const char *key, idVec3 v)
afx_msg void OnSelectionMovedown()
Definition: MainFrm.cpp:4877
afx_msg void OnViewTexture()
Definition: MainFrm.cpp:2378
#define ID_CURVE_PATCHVERYDENSETUBE
#define IDD_TEXTUREBAR
#define ID_PATCH_NURBEDITOR
void FlipClip()
Definition: XYWnd.cpp:3941
float Scale()
Definition: XYWnd.h:156
afx_msg void OnViewShowTriggers()
Definition: MainFrm.cpp:2242
void UpdateTextureBar()
Definition: MainFrm.cpp:4931
void Map_SaveSelected(char *fileName)
Definition: EditorMap.cpp:1352
CCamWnd * m_pCamWnd
Definition: MainFrm.h:152
#define ID_CURVE_DELETE_LASTCOLUMN
afx_msg void OnCurvePatchcone()
Definition: MainFrm.cpp:5335
float FloatForKey(entity_t *ent, const char *key)
afx_msg void OnEditMapinfo()
Definition: MainFrm.cpp:3841
#define ID_SELECT_AXIALTEXTURE_BYHEIGHT
GLdouble GLdouble z
Definition: glext.h:3067
#define ID_TEXTURES_LOADLIST
bool Active()
Definition: XYWnd.h:126
#define ID_SELECTION_MOVEUP
const int IDMRU_END
Definition: MainFrm.cpp:342
afx_msg void OnSelectionVisibleOn()
Definition: MainFrm.cpp:6685
void Clip()
Definition: XYWnd.cpp:3874
afx_msg void OnSelectionClone()
Definition: MainFrm.cpp:3325
afx_msg void OnViewShowcaulk()
Definition: MainFrm.cpp:6070
afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
Definition: MainFrm.cpp:1669
#define ID_GRID_PREV
#define ID_GRID_16
void ErrorBox(const char *sString)
Definition: GetString.cpp:112
afx_msg void OnSelectionTextureDec()
Definition: MainFrm.cpp:4485
void DeleteCurvePoint()
Definition: EntityDlg.cpp:1292
#define ID_VIEW_SHOWNAMES
void SetEntityCheck()
Definition: MainFrm.cpp:5969
CPrefsDlg g_Preferences
Definition: MainFrm.cpp:74
#define ID_REGION_SETBRUSH
#define ID_SELECT_COMPLETE_ENTITY
afx_msg void OnSelectionSelectinside()
Definition: MainFrm.cpp:3500
int sprintf(idStr &string, const char *fmt,...)
Definition: Str.cpp:1528
afx_msg void OnPatchToggleBox()
Definition: MainFrm.cpp:5315
#define ID_VIEW_SHOWWORLD
#define ID_SELECTION_UNGROUPENTITY
afx_msg void OnCurveUnFreeze()
Definition: MainFrm.cpp:6093
#define ID_POPUP_SELECTION
#define ID_MISC_PRINTXY
afx_msg void OnViewShowModels()
Definition: MainFrm.cpp:1973
afx_msg void OnSelectionCombine()
Definition: MainFrm.cpp:6490
CXYWnd * m_pYZWnd
Definition: MainFrm.h:150
idVec3 & GetOrigin()
Definition: XYWnd.cpp:3840
afx_msg void OnSelectionTextureScaledown()
Definition: MainFrm.cpp:4535
#define ID_BRUSH_PRIMITIVES_SPHERE
bool g_bAxialMode
Definition: CamWnd.cpp:51
afx_msg void OnCurveIncreaseVert()
Definition: MainFrm.cpp:6447
virtual void ActivateTool(bool active)=0
afx_msg void OnShowLightvolumes()
Definition: MainFrm.cpp:6304
BOOL m_bSnapShots
Definition: PrefsDlg.h:74
void Map_New(void)
Definition: EditorMap.cpp:807
#define ID_CURVE_DELETEROW
afx_msg void OnSelectionSelecttouching()
Definition: MainFrm.cpp:3516
#define ID_VIEW_CAMERATOGGLE
GLuint start
Definition: glext.h:2845
const int CMD_BSPCOMMAND_END
Definition: MainFrm.cpp:341
afx_msg void OnSoundShowsoundvolumes()
Definition: MainFrm.cpp:6741
eclass_t * eclass
Definition: EditorEntity.h:41
afx_msg void OnCurveInvertcurve()
Definition: MainFrm.cpp:5060
#define PITCH
Definition: Angles.h:41
idVec3 right
Definition: CamWnd.h:55
#define ID_CURVE_DELETE_FIRSTROW
void LightEditorInit(const idDict *spawnArgs)
Definition: edit_stub.cpp:38
bool GetRebuildMode()
Definition: CamWnd.h:107
#define ID_BRUSH_ROTATEY
#define ID_MISC_FINDORREPLACEENTITY
void SetConsoleText(const idStr &text)
Definition: ConsoleDlg.cpp:201
#define ID_VIEW_REBUILDRENDERDATA
afx_msg void OnGenerateMaterialsList()
Definition: MainFrm.cpp:6835
afx_msg void OnToggleRotatelock()
Definition: MainFrm.cpp:5006
void SetClipMode(bool bMode)
Definition: XYWnd.cpp:1398
const int CMD_TEXTUREWAD_END
Definition: MainFrm.cpp:340
afx_msg void OnViewZzoomout()
Definition: MainFrm.cpp:2484
#define ID_FLIP_CLIP
afx_msg void OnCurveUnFreezeAll()
Definition: MainFrm.cpp:6101
#define ID_VIEW_OPENGLLIGHTING
bool ClipMode()
Definition: XYWnd.cpp:1428
afx_msg void OnSelectionArbitraryrotation()
Definition: MainFrm.cpp:3308
void testCamSpeed()
int g_nCommandCount
Definition: MainFrm.cpp:289
#define ID_THEMES_MAX
const int g_msgBSPDone
Definition: MainFrm.cpp:344
afx_msg void OnSelectionCenterOrigin()
Definition: MainFrm.cpp:3476
#define ID_VIEW_ENTITIESAS_WIREFRAME
BOOL m_bNoClamp
Definition: PrefsDlg.h:89
#define ID_GRID_START
afx_msg void OnBrushFlipx()
Definition: MainFrm.cpp:3152
afx_msg void OnViewZzoomin()
Definition: MainFrm.cpp:2471
afx_msg void OnViewMediaBrowser()
Definition: MainFrm.cpp:2033
afx_msg void OnCurveDeleterow()
Definition: MainFrm.cpp:5466
afx_msg void OnCurveThicken()
Definition: MainFrm.cpp:5918
CXYWnd * m_pXYWnd
Definition: MainFrm.h:149