2 ===========================================================================
5 Copyright (C) 1999-2011 id Software LLC, a ZeniMax Media company.
7 This file is part of the Doom 3 GPL Source Code (?Doom 3 Source Code?).
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.
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.
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/>.
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.
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.
26 ===========================================================================
29 #include "../../idlib/precompiled.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"
46 #include "DialogTextures.h"
47 #include "PatchDensityDlg.h"
48 #include "DialogThick.h"
49 #include "PatchDialog.h"
51 #include "NewTexWnd.h"
53 #include "dlgcamera.h"
56 #include "GetString.h"
57 #include "EntKeyFindReplace.h"
58 #include "InspectorDialog.h"
59 #include "autocaulk.h"
61 #include "../../sys/win32/rc/common_resource.h"
62 #include "../comafx/DialogName.h"
63 #include "../comafx/DialogColorPicker.h"
68 static char THIS_FILE[] = __FILE__;
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
80 // to disable updates for speed reasons both of the above should be made members
82 // bool g_bSnapToGrid = true; // early use, no longer in use, clamping pref will
85 CString g_strProject; // holds the active project filename
87 #define D3XP_ID_FILE_SAVE_COPY ( WM_USER + 28476 )
88 #define D3XP_ID_SHOW_MODELS ( WM_USER + 28477 )
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
96 #define SPEED_MOVE 32.0f
97 #define SPEED_TURN 22.5f
99 #define MAX_GRID 64.0f
100 #define MIN_GRID 0.125f
102 SCommandInfo g_Commands[] = {
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 },
123 { "Texture_ShowAllTextures", 'A', RAD_CONTROL, ID_TEXTURES_SHOWALL },
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 },
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 },
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 },
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 },
164 { "Grid_Toggle", '0', 0, ID_GRID_TOGGLE },
165 { "Grid_ToggleSizePaint", 'Q', RAD_PRESS, ID_SELECTION_TOGGLESIZEPAINT },
167 { "Grid_PrecisionCursorMode",VK_F11, 0 , ID_PRECISION_CURSOR_CYCLE},
169 { "Grid_NextView", VK_TAB, RAD_CONTROL, ID_VIEW_NEXTVIEW },
170 { "Grid_ToggleCrosshairs", 'X', RAD_SHIFT, ID_VIEW_CROSSHAIR },
172 { "Grid_ZZoomOut", VK_INSERT, RAD_CONTROL, ID_VIEW_ZZOOMOUT },
173 { "Grid_ZZoomIn", VK_DELETE, RAD_CONTROL, ID_VIEW_ZZOOMIN },
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 },
183 { "Leak_NextSpot", 'K', RAD_CONTROL|RAD_SHIFT, ID_MISC_NEXTLEAKSPOT },
184 { "Leak_PrevSpot", 'L', RAD_CONTROL|RAD_SHIFT, ID_MISC_PREVIOUSLEAKSPOT },
186 { "File_Open", 'O', RAD_CONTROL, ID_FILE_OPEN },
187 { "File_Save", 'S', RAD_CONTROL, ID_FILE_SAVE },
189 { "TAB", VK_TAB, 0, ID_PATCH_TAB },
190 { "TAB", VK_TAB, RAD_SHIFT, ID_PATCH_TAB },
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 },
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 },
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 },
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 },
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 },
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 },
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 },
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 },
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 },
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 },
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 },
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},
280 { "_ShowDOOM", VK_F2, 0, ID_SHOW_DOOM },
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 },
286 { "_AutoCaulk", 'A', RAD_CONTROL|RAD_SHIFT, ID_AUTOCAULK }, // ctrl-shift-a, since SHIFT-A is already taken
289 int g_nCommandCount = sizeof(g_Commands) / sizeof(SCommandInfo);
291 SKeyInfo g_Keys[] = {
292 { "Space", VK_SPACE },
293 { "Backspace", VK_BACK },
294 { "Escape", VK_ESCAPE },
296 { "Insert", VK_INSERT },
297 { "Delete", VK_DELETE },
298 { "PageUp", VK_PRIOR },
299 { "PageDown", VK_NEXT },
303 { "Right", VK_RIGHT },
317 { "Return", VK_RETURN },
318 { "Comma", VK_COMMA },
319 { "Period", VK_PERIOD },
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 },
338 int g_nKeyCount = sizeof(g_Keys) / sizeof(SKeyInfo);
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;
344 const int g_msgBSPDone = RegisterWindowMessage(DMAP_DONE);
345 const int g_msgBSPStatus = RegisterWindowMessage(DMAP_MSGID);
347 IMPLEMENT_DYNAMIC(CMainFrame, CFrameWnd)
348 BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
349 //{{AFX_MSG_MAP(CMainFrame)
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)
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)
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)
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)
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)
696 ON_REGISTERED_MESSAGE(g_msgBSPDone, OnBSPDone)
697 ON_REGISTERED_MESSAGE(g_msgBSPStatus, OnBSPStatus)
698 ON_MESSAGE(WM_DISPLAYCHANGE, OnDisplayChange)
700 ON_COMMAND(ID_AUTOCAULK, OnAutocaulk)
701 ON_UPDATE_COMMAND_UI(ID_AUTOCAULK, OnUpdateAutocaulk)
702 ON_COMMAND(ID_SELECT_ALLTARGETS, OnSelectAlltargets)
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
714 =======================================================================================================================
715 =======================================================================================================================
717 void CMainFrame::OnDisplayChange(UINT wParam, long lParam) {
722 =======================================================================================================================
723 =======================================================================================================================
725 void CMainFrame::OnBSPStatus(UINT wParam, long lParam) {
726 // lparam is an atom contain the text
728 if (::GlobalGetAtomName(static_cast<ATOM>(lParam), buff, sizeof(buff))) {
729 common->Printf("%s", buff);
730 ::GlobalDeleteAtom(static_cast<ATOM>(lParam));
735 =======================================================================================================================
736 =======================================================================================================================
738 void CMainFrame::OnBSPDone(UINT wParam, long lParam) {
739 idStr str = cvarSystem->GetCVarString( "radiant_bspdone" );
741 sndPlaySound(str.c_str(), SND_FILENAME | SND_ASYNC);
746 // =======================================================================================================================
747 // CMainFrame construction/destruction
748 // =======================================================================================================================
750 CMainFrame::CMainFrame() {
759 m_bCamPreview = true;
764 =======================================================================================================================
765 =======================================================================================================================
767 CMainFrame::~CMainFrame() {
771 =======================================================================================================================
772 =======================================================================================================================
774 void HandlePopup(CWnd *pWindow, unsigned int uId) {
775 // Get the current position of the mouse
777 GetCursorPos(&ptMouse);
779 // Load up a menu that has the options we are looking for in it
781 VERIFY(mnuPopup.LoadMenu(uId));
782 mnuPopup.GetSubMenu(0)->TrackPopupMenu
784 TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_RIGHTBUTTON,
789 mnuPopup.DestroyMenu();
791 // Set focus back to window
796 =======================================================================================================================
797 =======================================================================================================================
799 void CMainFrame::OnParentNotify(UINT message, LPARAM lParam) {
803 =======================================================================================================================
804 =======================================================================================================================
806 void CMainFrame::SetButtonMenuStates() {
807 CMenu *pMenu = GetMenu();
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);
826 if (!g_qeglobals.d_savedinfo.show_names) {
827 pMenu->CheckMenuItem(ID_VIEW_SHOWNAMES, MF_BYCOMMAND | MF_UNCHECKED);
830 if (!g_qeglobals.d_savedinfo.show_coordinates) {
831 pMenu->CheckMenuItem(ID_VIEW_SHOWCOORDINATES, MF_BYCOMMAND | MF_UNCHECKED);
834 if (g_qeglobals.d_savedinfo.exclude & EXCLUDE_LIGHTS) {
835 pMenu->CheckMenuItem(ID_VIEW_SHOWLIGHTS, MF_BYCOMMAND | MF_UNCHECKED);
838 if (g_qeglobals.d_savedinfo.exclude & EXCLUDE_COMBATNODES) {
839 pMenu->CheckMenuItem(ID_VIEW_SHOWCOMBATNODES, MF_BYCOMMAND | MF_UNCHECKED);
842 if (g_qeglobals.d_savedinfo.exclude & EXCLUDE_ENT) {
843 pMenu->CheckMenuItem(ID_VIEW_ENTITY, MF_BYCOMMAND | MF_UNCHECKED);
846 if (g_qeglobals.d_savedinfo.exclude & EXCLUDE_PATHS) {
847 pMenu->CheckMenuItem(ID_VIEW_SHOWPATH, MF_BYCOMMAND | MF_UNCHECKED);
850 if (g_qeglobals.d_savedinfo.exclude & EXCLUDE_DYNAMICS) {
851 pMenu->CheckMenuItem(ID_VIEW_SHOWWATER, MF_BYCOMMAND | MF_UNCHECKED);
854 if (g_qeglobals.d_savedinfo.exclude & EXCLUDE_WORLD) {
855 pMenu->CheckMenuItem(ID_VIEW_SHOWWORLD, MF_BYCOMMAND | MF_UNCHECKED);
858 if (g_qeglobals.d_savedinfo.exclude & EXCLUDE_CLIP) {
859 pMenu->CheckMenuItem(ID_VIEW_SHOWCLIP, MF_BYCOMMAND | MF_UNCHECKED);
862 if (g_qeglobals.d_savedinfo.exclude & EXCLUDE_TRIGGERS) {
863 pMenu->CheckMenuItem(ID_VIEW_SHOWTRIGGERS, MF_BYCOMMAND | MF_UNCHECKED);
866 if (g_qeglobals.d_savedinfo.exclude & EXCLUDE_HINT) {
867 pMenu->CheckMenuItem(ID_VIEW_SHOWHINT, MF_BYCOMMAND | MF_UNCHECKED);
870 if (g_qeglobals.d_savedinfo.exclude & EXCLUDE_CAULK) {
871 pMenu->CheckMenuItem(ID_VIEW_SHOWCAULK, MF_BYCOMMAND | MF_UNCHECKED);
874 if (g_qeglobals.d_savedinfo.exclude & EXCLUDE_VISPORTALS) {
875 pMenu->CheckMenuItem(ID_VIEW_SHOW_SHOWVISPORTALS, MF_BYCOMMAND | MF_UNCHECKED);
878 if (g_qeglobals.d_savedinfo.exclude & EXCLUDE_NODRAW) {
879 pMenu->CheckMenuItem(ID_VIEW_SHOW_NODRAW, MF_BYCOMMAND | MF_UNCHECKED);
882 if (g_qeglobals.d_savedinfo.exclude & EXCLUDE_ANGLES) {
883 pMenu->CheckMenuItem(ID_VIEW_SHOWANGLES, MF_BYCOMMAND | MF_UNCHECKED);
886 pMenu->CheckMenuItem(ID_TOGGLE_LOCK, MF_BYCOMMAND | (g_PrefsDlg.m_bTextureLock) ? MF_CHECKED : MF_UNCHECKED);
889 ID_TOGGLE_ROTATELOCK,
890 MF_BYCOMMAND | (g_PrefsDlg.m_bRotateLock) ? MF_CHECKED : MF_UNCHECKED
894 ID_VIEW_CUBICCLIPPING,
895 MF_BYCOMMAND | (g_PrefsDlg.m_bCubicClipping) ? MF_CHECKED : MF_UNCHECKED
899 ID_VIEW_OPENGLLIGHTING,
900 MF_BYCOMMAND | (g_PrefsDlg.m_bGLLighting) ? MF_CHECKED : MF_UNCHECKED
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
906 ID_VIEW_CUBICCLIPPING,
907 (g_PrefsDlg.m_bCubicClipping) ? TRUE : FALSE
911 int n = g_PrefsDlg.m_nTextureScale;
916 id = ID_TEXTURES_TEXTUREWINDOWSCALE_10;
919 id = ID_TEXTURES_TEXTUREWINDOWSCALE_25;
922 id = ID_TEXTURES_TEXTUREWINDOWSCALE_50;
925 id = ID_TEXTURES_TEXTUREWINDOWSCALE_200;
928 id = ID_TEXTURES_TEXTUREWINDOWSCALE_100;
932 CheckTextureScale(id);
935 if (g_qeglobals.d_project_entity) {
936 // FillTextureMenu(); // redundant but i'll clean it up later.. yeah right..
938 LoadMruInReg(g_qeglobals.d_lpMruMenu, "Software\\" EDITOR_REGISTRY_KEY "\\MRU" );
939 PlaceMenuMRUItem(g_qeglobals.d_lpMruMenu, ::GetSubMenu(::GetMenu(GetSafeHwnd()), 0), ID_FILE_EXIT);
944 =======================================================================================================================
945 =======================================================================================================================
947 void CMainFrame::ShowMenuItemKeyBindings(CMenu *pMenu) {
949 char key[1024], *ptr;
950 MENUITEMINFO MenuItemInfo;
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)) {
963 if (MenuItemInfo.fType != MFT_STRING) {
967 ptr = strchr(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-");
978 if (g_Commands[i].m_nModifiers & RAD_ALT) {
982 if (g_Commands[i].m_nModifiers & RAD_CONTROL) {
983 strcat(key, "Ctrl-");
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);
994 if (j >= g_nKeyCount) {
995 sprintf(&key[strlen(key)], "%c", g_Commands[i].m_nKey);
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);
1013 void MFCCreate( HINSTANCE hInstance )
1016 int i = sizeof(g_qeglobals.d_savedinfo);
1019 g_qeglobals.d_savedinfo.exclude |= (EXCLUDE_HINT | EXCLUDE_CLIP);
1020 LoadRegistryInfo("radiant_SavedInfo", &g_qeglobals.d_savedinfo, &l);
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;
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;
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;
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;
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;
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;
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;
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;
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;
1067 // old size was smaller, reload original prefs
1068 if (nOldSize > 0 && nOldSize < sizeof(g_qeglobals.d_savedinfo)) {
1070 LoadRegistryInfo("radiant_SavedInfo", &g_qeglobals.d_savedinfo, &l);
1076 =======================================================================================================================
1077 =======================================================================================================================
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();
1086 com_editors |= EDITOR_RADIANT;
1088 InitCommonControls();
1089 g_qeglobals.d_hInstance = AfxGetInstanceHandle();
1090 MFCCreate(AfxGetInstanceHandle());
1092 // g_PrefsDlg.LoadPrefs();
1093 if (CFrameWnd::OnCreate(lpCreateStruct) == -1) {
1097 UINT nID = (g_PrefsDlg.m_bWideToolbar) ? IDR_TOOLBAR_ADVANCED : IDR_TOOLBAR1;
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
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
1110 m_bCamPreview = true;
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);
1126 m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
1127 EnableDocking(CBRS_ALIGN_ANY);
1128 DockControlBar(&m_wndToolBar);
1132 m_wndTextureBar.Create(this, IDD_TEXTUREBAR, CBRS_BOTTOM, 7433);
1133 m_wndTextureBar.EnableDocking(CBRS_ALIGN_ANY);
1134 DockControlBar(&m_wndTextureBar);
1136 g_qeglobals.d_lpMruMenu = CreateMruMenuDefault();
1138 m_bAutoMenuEnable = FALSE;
1142 CMenu *pMenu = GetMenu();
1143 ShowMenuItemKeyBindings(pMenu);
1145 CFont *pFont = new CFont();
1146 pFont->CreatePointFont(g_PrefsDlg.m_nStatusSize * 10, "Arial");
1147 m_wndStatusBar.SetFont(pFont);
1150 if (g_PrefsDlg.m_bRunBefore == FALSE) {
1151 g_PrefsDlg.m_bRunBefore = TRUE;
1152 g_PrefsDlg.SavePrefs();
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(); }
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));
1171 SetButtonMenuStates();
1172 LoadBarState("RadiantToolBars2");
1174 SetActiveXY(m_pXYWnd);
1175 m_pXYWnd->SetFocus();
1177 PostMessage(WM_KEYDOWN, 'O', NULL);
1179 if ( radiant_entityMode.GetBool() ) {
1180 g_qeglobals.d_savedinfo.exclude |= (EXCLUDE_PATHS | EXCLUDE_CLIP | EXCLUDE_CAULK | EXCLUDE_VISPORTALS | EXCLUDE_NODRAW | EXCLUDE_TRIGGERS);
1183 Sys_UpdateWindows ( W_ALL );
1188 =======================================================================================================================
1189 =======================================================================================================================
1192 void FindReplace(CString& strContents, const char* pTag, const char* pValue) {
1193 if (strcmp(pTag, pValue) == 0)
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);
1200 strLeft += strRight;
1201 strContents = strLeft;
1205 void CMainFrame::LoadCommandMap() {
1208 strINI = g_strAppPath;
1209 strINI += "\\radiant.ini";
1211 for (int i = 0; i < g_nCommandCount; i++) {
1212 int nLen = GetPrivateProfileString("Commands", g_Commands[i].m_strCommand, "", pBuff, 1024, strINI);
1214 CString strBuff = pBuff;
1216 strBuff.TrimRight();
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", "");
1225 nSpecial = strBuff.Find("+ctrl");
1226 if (nSpecial >= 0) {
1227 g_Commands[i].m_nModifiers |= RAD_CONTROL;
1228 FindReplace(strBuff, "+ctrl", "");
1231 nSpecial = strBuff.Find("+shift");
1232 if (nSpecial >= 0) {
1233 g_Commands[i].m_nModifiers |= RAD_SHIFT;
1234 FindReplace(strBuff, "+shift", "");
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));
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;
1256 =======================================================================================================================
1257 =======================================================================================================================
1259 BOOL CMainFrame::PreCreateWindow(CREATESTRUCT &cs) {
1260 // TODO: Modify the Window class or styles here by modifying the CREATESTRUCT cs
1261 return CFrameWnd::PreCreateWindow(cs);
1264 // CMainFrame diagnostics
1268 =======================================================================================================================
1269 =======================================================================================================================
1271 void CMainFrame::AssertValid() const {
1272 CFrameWnd::AssertValid();
1276 =======================================================================================================================
1277 =======================================================================================================================
1279 void CMainFrame::Dump(CDumpContext &dc) const {
1280 CFrameWnd::Dump(dc);
1285 // =======================================================================================================================
1286 // CMainFrame message handlers
1287 // =======================================================================================================================
1289 void CMainFrame::CreateQEChildren() {
1291 // the project file can be specified on the command line, or implicitly found in
1292 // the basedir directory
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));
1298 if (!bProjectLoaded) {
1299 bProjectLoaded = QE_LoadProject( EDITOR_DEFAULT_PROJECT );
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));
1309 if (!bProjectLoaded) {
1310 Error("Unable to load project file. It was unavailable in the scripts path and the default could not be found");
1315 common->Printf("Entering message loop\n");
1318 SetTimer(QE_TIMER0, 100, NULL);
1319 SetTimer(QE_TIMER1, g_PrefsDlg.m_nAutoSave * 60 * 1000, NULL);
1323 =======================================================================================================================
1324 =======================================================================================================================
1326 BOOL CMainFrame::OnCommand(WPARAM wParam, LPARAM lParam) {
1327 return CFrameWnd::OnCommand(wParam, lParam);
1331 =======================================================================================================================
1332 =======================================================================================================================
1334 LRESULT CMainFrame::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam) {
1335 //RoutineProcessing();
1336 return CFrameWnd::DefWindowProc(message, wParam, lParam);
1340 =======================================================================================================================
1341 =======================================================================================================================
1343 void CMainFrame::RoutineProcessing() {
1346 static double oldtime = 0.0;
1349 time = Sys_DoubleTime();
1350 delta = time - oldtime;
1356 // run time dependant behavior
1358 m_pCamWnd->Cam_MouseControl(delta);
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
1370 =======================================================================================================================
1371 =======================================================================================================================
1373 LRESULT CMainFrame::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) {
1374 return CFrameWnd::WindowProc(message, wParam, lParam);
1378 =======================================================================================================================
1379 =======================================================================================================================
1382 if (::GetAsyncKeyState(VK_LBUTTON)) {
1386 if (::GetAsyncKeyState(VK_RBUTTON)) {
1390 if (::GetAsyncKeyState(VK_MBUTTON)) {
1398 =======================================================================================================================
1399 =======================================================================================================================
1402 void CMainFrame::OnTimer(UINT nIDEvent) {
1403 static bool autoSavePending = false;
1405 if ( nIDEvent == QE_TIMER0 && !MouseDown() ) {
1406 QE_CountBrushesAndUpdateStatusBar();
1408 if ( nIDEvent == QE_TIMER1 || autoSavePending ) {
1409 if ( MouseDown() ) {
1410 autoSavePending = true;
1413 if ( Sys_Waiting() ) {
1414 autoSavePending = true;
1418 autoSavePending = false;
1428 =======================================================================================================================
1429 =======================================================================================================================
1431 bool LoadWindowPlacement(HWND hwnd, const char *pName) {
1433 wp.length = sizeof(WINDOWPLACEMENT);
1435 LONG lSize = sizeof(wp);
1436 if (LoadRegistryInfo(pName, &wp, &lSize)) {
1437 ::SetWindowPlacement(hwnd, &wp);
1445 =======================================================================================================================
1446 =======================================================================================================================
1448 void SaveWindowPlacement(HWND hwnd, const char *pName) {
1450 wp.length = sizeof(WINDOWPLACEMENT);
1451 if (::GetWindowPlacement(hwnd, &wp)) {
1452 SaveRegistryInfo(pName, &wp, sizeof(wp));
1457 =======================================================================================================================
1458 =======================================================================================================================
1460 void CMainFrame::OnDestroy() {
1461 KillTimer(QE_TIMER0);
1463 SaveBarState("RadiantToolBars2");
1465 // FIXME original mru stuff needs replaced with mfc stuff
1466 SaveMruInReg(g_qeglobals.d_lpMruMenu, "Software\\" EDITOR_REGISTRY_KEY "\\MRU");
1468 DeleteMruMenu(g_qeglobals.d_lpMruMenu);
1470 SaveRegistryInfo("radiant_SavedInfo", &g_qeglobals.d_savedinfo, sizeof(g_qeglobals.d_savedinfo));
1472 SaveWindowPlacement(GetSafeHwnd(), "radiant_MainWindowPlace");
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");
1481 if (m_pXYWnd->GetSafeHwnd()) {
1482 m_pXYWnd->SendMessage(WM_DESTROY, 0, 0);
1488 if (m_pYZWnd->GetSafeHwnd()) {
1489 m_pYZWnd->SendMessage(WM_DESTROY, 0, 0);
1495 if (m_pXZWnd->GetSafeHwnd()) {
1496 m_pXZWnd->SendMessage(WM_DESTROY, 0, 0);
1502 if (m_pZWnd->GetSafeHwnd()) {
1503 m_pZWnd->SendMessage(WM_DESTROY, 0, 0);
1509 if (m_pCamWnd->GetSafeHwnd()) {
1510 m_pCamWnd->SendMessage(WM_DESTROY, 0, 0);
1516 if ( idStr::Icmp(currentmap, "unnamed.map") != 0 ) {
1517 g_PrefsDlg.m_strLastMap = currentmap;
1518 g_PrefsDlg.SavePrefs();
1523 while (active_brushes.next != &active_brushes) {
1524 Brush_Free(active_brushes.next, false);
1527 while (selected_brushes.next != &selected_brushes) {
1528 Brush_Free(selected_brushes.next, false);
1531 while (filtered_brushes.next != &filtered_brushes) {
1532 Brush_Free(filtered_brushes.next, false);
1535 while (entities.next != &entities) {
1536 Entity_Free(entities.next);
1540 g_qeglobals.d_project_entity->epairs.Clear();
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;
1552 Entity_Free(world_entity);
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);
1564 // FIXME: idMaterial FreeShaders();
1565 CFrameWnd::OnDestroy();
1567 AfxGetApp()->ExitInstance();
1571 =======================================================================================================================
1572 =======================================================================================================================
1574 void CMainFrame::OnClose() {
1575 if (ConfirmModified()) {
1576 g_Inspectors->SaveWindowPlacement ();
1577 CFrameWnd::OnClose();
1582 =======================================================================================================================
1583 =======================================================================================================================
1585 void CMainFrame::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) {
1586 // run through our list to see if we have a handler for nChar
1588 for (int i = 0; i < g_nCommandCount; i++) {
1589 if (g_Commands[i].m_nKey == nChar) { // find a match?
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)) {
1600 if (nModifiers & RAD_CONTROL) {
1601 if (!(GetAsyncKeyState(VK_CONTROL) & 0x8000)) {
1606 if (nModifiers & RAD_SHIFT) {
1607 if (!(GetAsyncKeyState(VK_SHIFT) & 0x8000)) {
1612 else { // no modifiers make sure none of those keys are pressed
1613 if (GetAsyncKeyState(VK_MENU) & 0x8000) {
1617 if (GetAsyncKeyState(VK_CONTROL) & 0x8000) {
1621 if (GetAsyncKeyState(VK_SHIFT) & 0x8000) {
1627 SendMessage(WM_COMMAND, g_Commands[i].m_nCommand, 0);
1636 =======================================================================================================================
1637 =======================================================================================================================
1639 bool CamOK(unsigned int nKey) {
1640 if (nKey == VK_UP || nKey == VK_LEFT || nKey == VK_RIGHT || nKey == VK_DOWN) {
1641 if (::GetAsyncKeyState(nKey)) {
1653 =======================================================================================================================
1654 =======================================================================================================================
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);
1662 CFrameWnd::OnSysKeyDown(nChar, nRepCnt, nFlags);
1666 =======================================================================================================================
1667 =======================================================================================================================
1669 void CMainFrame::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) {
1671 for (int i = 0; i < g_nCommandCount; i++) {
1672 if (g_Commands[i].m_nKey == nChar) { // find a match?
1674 unsigned int nState = 0;
1675 if (GetAsyncKeyState(VK_MENU) & 0x8000) {
1679 if (GetAsyncKeyState(VK_CONTROL) & 0x8000) {
1680 nState |= RAD_CONTROL;
1683 if (GetAsyncKeyState(VK_SHIFT) & 0x8000) {
1684 nState |= RAD_SHIFT;
1687 if ((g_Commands[i].m_nModifiers & 0x7) == nState) {
1688 SendMessage(WM_COMMAND, g_Commands[i].m_nCommand, 0);
1694 CFrameWnd::OnKeyDown(nChar, nRepCnt, nFlags);
1698 =======================================================================================================================
1699 =======================================================================================================================
1701 BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext *pContext) {
1703 g_Inspectors = new CInspectorDialog( this );
1704 g_Inspectors->Create(IDD_DIALOG_INSPECTORS, this);
1706 LoadWindowPlacement(g_Inspectors->GetSafeHwnd(), "radiant_InspectorsWindow");
1707 g_Inspectors->ShowWindow(SW_SHOW);
1710 g_Inspectors->GetWindowRect ( r );
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);
1719 if (!LoadWindowPlacement(GetSafeHwnd(), "radiant_MainWindowPlace")) {
1722 CRect rect(5, 25, 100, 100);
1724 GetClientRect(rctParent);
1726 m_pCamWnd = new CCamWnd();
1727 m_pCamWnd->Create(CAMERA_WINDOW_CLASS, "", QE3_CHILDSTYLE, rect, this, 1234);
1729 m_pZWnd = new CZWnd();
1730 m_pZWnd->Create(Z_WINDOW_CLASS, "", QE3_CHILDSTYLE, rect, this, 1238);
1732 m_pXYWnd = new CXYWnd();
1733 m_pXYWnd->Create(XY_WINDOW_CLASS, "", QE3_CHILDSTYLE, rect, this, 1235);
1734 m_pXYWnd->SetViewType(XY);
1736 m_pXZWnd = new CXYWnd();
1737 m_pXZWnd->Create(XY_WINDOW_CLASS, "", QE3_CHILDSTYLE, rect, this, 1236);
1738 m_pXZWnd->SetViewType(XZ);
1740 m_pYZWnd = new CXYWnd();
1741 m_pYZWnd->Create(XY_WINDOW_CLASS, "", QE3_CHILDSTYLE, rect, this, 1237);
1742 m_pYZWnd->SetViewType(YZ);
1744 m_pCamWnd->SetXYFriend(m_pXYWnd);
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");
1754 if (!g_PrefsDlg.m_bXZVis) {
1755 m_pXZWnd->ShowWindow(SW_HIDE);
1758 if (!g_PrefsDlg.m_bYZVis) {
1759 m_pYZWnd->ShowWindow(SW_HIDE);
1762 if (!g_PrefsDlg.m_bZVis) {
1763 m_pZWnd->ShowWindow(SW_HIDE);
1769 m_pXYWnd->SetActive(true);
1772 Texture_SetMode(g_qeglobals.d_savedinfo.iTexMenu);
1774 g_Inspectors->SetMode(W_CONSOLE);
1778 CRect g_rctOld(0, 0, 0, 0);
1781 =======================================================================================================================
1782 =======================================================================================================================
1784 void CMainFrame::OnSize(UINT nType, int cx, int cy) {
1785 CFrameWnd::OnSize(nType, cx, cy);
1788 GetClientRect(rctParent);
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 );
1809 void OpenDialog(void);
1810 void SaveAsDialog(bool bRegion);
1811 void Select_Ungroup();
1814 =======================================================================================================================
1815 =======================================================================================================================
1817 void CMainFrame::ToggleCamera() {
1818 if (m_bCamPreview) {
1819 m_bCamPreview = false;
1822 m_bCamPreview = true;
1827 =======================================================================================================================
1828 =======================================================================================================================
1830 void CMainFrame::OnFileClose() {
1834 =======================================================================================================================
1835 =======================================================================================================================
1837 void CMainFrame::OnFileExit() {
1838 PostMessage(WM_CLOSE, 0, 0L);
1842 =======================================================================================================================
1843 =======================================================================================================================
1845 void CMainFrame::OnFileLoadproject() {
1846 if (ConfirmModified()) {
1852 =======================================================================================================================
1853 =======================================================================================================================
1855 void CMainFrame::OnFileNew() {
1856 if (ConfirmModified()) {
1862 =======================================================================================================================
1863 =======================================================================================================================
1865 void CMainFrame::OnFileOpen() {
1866 if (ConfirmModified()) {
1872 =======================================================================================================================
1873 =======================================================================================================================
1875 void CMainFrame::OnFilePointfile() {
1876 if (g_qeglobals.d_pointfile_display_list) {
1882 Sys_UpdateWindows(W_ALL);
1886 =======================================================================================================================
1887 =======================================================================================================================
1889 void CMainFrame::OnFilePrint() {
1893 =======================================================================================================================
1894 =======================================================================================================================
1896 void CMainFrame::OnFilePrintPreview() {
1900 =======================================================================================================================
1901 =======================================================================================================================
1903 void CMainFrame::OnFileSave() {
1904 if (!strcmp(currentmap, "unnamed.map")) {
1905 SaveAsDialog(false);
1908 Map_SaveFile(currentmap, false);
1912 SetTimer(QE_TIMER1, g_PrefsDlg.m_nAutoSave * 60 * 1000, NULL);
1916 =======================================================================================================================
1917 =======================================================================================================================
1919 void CMainFrame::OnFileSaveas() {
1920 SaveAsDialog(false);
1924 =======================================================================================================================
1925 =======================================================================================================================
1927 void CMainFrame::OnFileSaveCopy() {
1928 char aFile[260] = "\0";
1929 char aFilter[260] = "Map\0*.map\0\0";
1930 char aTitle[260] = "Save a Copy\0";
1933 memset( &afn, 0, sizeof(OPENFILENAME) );
1935 CString strPath = ValueForKey(g_qeglobals.d_project_entity, "basepath");
1938 if (g_PrefsDlg.m_strMaps.GetLength() > 0) {
1939 strPath += va("\\%s", g_PrefsDlg.m_strMaps);
1942 /* Place the terminating null character in the szFile. */
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;
1958 /* Display the Open dialog box. */
1959 if (!GetSaveFileName(&afn)) {
1963 DefaultExtension(afn.lpstrFile, ".map");
1964 Map_SaveFile(afn.lpstrFile, false); // ignore region
1966 // Set the title back to the current working map
1967 Sys_SetTitle(currentmap);
1971 ==================================================================================================
1973 void CMainFrame::OnViewShowModels() {
1974 g_qeglobals.d_savedinfo.exclude ^= EXCLUDE_MODELS;
1976 Sys_UpdateWindows(W_ALL);
1980 =======================================================================================================================
1981 =======================================================================================================================
1983 void CMainFrame::OnView100() {
1985 m_pXYWnd->SetScale(1);
1989 m_pXZWnd->SetScale(1);
1993 m_pYZWnd->SetScale(1);
1996 Sys_UpdateWindows(W_XY | W_XY_OVERLAY);
2000 =======================================================================================================================
2001 =======================================================================================================================
2003 void CMainFrame::OnViewCenter() {
2004 m_pCamWnd->Camera().angles[ROLL] = m_pCamWnd->Camera().angles[PITCH] = 0;
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);
2010 =======================================================================================================================
2011 =======================================================================================================================
2013 void CMainFrame::OnViewConsole() {
2014 g_Inspectors->SetMode(W_CONSOLE);
2018 =======================================================================================================================
2019 =======================================================================================================================
2021 void CMainFrame::OnViewDownfloor() {
2022 m_pCamWnd->Cam_ChangeFloor(false);
2026 =======================================================================================================================
2027 =======================================================================================================================
2029 void CMainFrame::OnViewEntity() {
2030 g_Inspectors->SetMode(W_ENTITY);
2033 void CMainFrame::OnViewMediaBrowser() {
2034 g_Inspectors->SetMode(W_MEDIA);
2040 =======================================================================================================================
2041 =======================================================================================================================
2043 void CMainFrame::OnViewFront() {
2044 m_pXYWnd->SetViewType(YZ);
2045 m_pXYWnd->PositionView();
2046 Sys_UpdateWindows(W_XY);
2050 =======================================================================================================================
2051 =======================================================================================================================
2054 BOOL DoMru(HWND hWnd,WORD wId)
2056 char szFileName[128];
2060 GetMenuItem(g_qeglobals.d_lpMruMenu, wId, TRUE, szFileName, sizeof(szFileName));
2062 // Test if the file exists.
2064 fExist = OpenFile(szFileName ,&of,OF_EXIST) != HFILE_ERROR;
2068 // Place the file on the top of MRU.
2069 AddNewItem(g_qeglobals.d_lpMruMenu,(LPSTR)szFileName);
2071 // Now perform opening this file !!!
2072 Map_LoadFile (szFileName);
2075 // Remove the file on MRU.
2076 DelMenuItem(g_qeglobals.d_lpMruMenu,wId,TRUE);
2078 // Refresh the File menu.
2079 PlaceMenuMRUItem(g_qeglobals.d_lpMruMenu,GetSubMenu(GetMenu(hWnd),0),
2085 void CMainFrame::OnMru(unsigned int nID) {
2087 if (ConfirmModified()) {
2088 DoMru(GetSafeHwnd(), nID);
2093 =======================================================================================================================
2094 =======================================================================================================================
2096 void CMainFrame::OnViewNearest(unsigned int nID) {
2097 Texture_SetMode(nID);
2101 =======================================================================================================================
2102 =======================================================================================================================
2104 void CMainFrame::OnTextureWad(unsigned int nID) {
2107 // FIXME: idMaterial Texture_ShowDirectory (nID);
2108 Sys_UpdateWindows(W_ALL);
2112 =======================================================================================================================
2113 =======================================================================================================================
2120 This is the new all-internal bsp
2123 void RunBsp (const char *command) {
2128 // bring the console window forward for feedback
2129 g_Inspectors->SetMode(W_CONSOLE);
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");
2139 if ( !Map_SaveFile ( name, region_active ) ) {
2143 // name should be a full pathname, but we only
2144 // want to pass the maps/ part to dmap
2145 in = strstr(name, "maps/");
2147 in = strstr(name, "maps\\");
2153 if (idStr::Icmpn(command, "bspext", strlen("runbsp")) == 0) {
2154 PROCESS_INFORMATION ProcessInformation;
2155 STARTUPINFO startupinfo;
2158 idStr base = cvarSystem->GetCVarString( "fs_basepath" );
2159 idStr cd = cvarSystem->GetCVarString( "fs_cdpath" );
2161 if (base.Length()) {
2162 paths += "+set fs_basepath ";
2166 paths += "+set fs_cdpath ";
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 );
2174 idStr::snPrintf( sys, sizeof(sys), "%s %s +set r_fullscreen 0 +dmap editorOutput %s +quit", buff, paths.c_str(), in );
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);
2181 g_pParentWnd->SetFocus();
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 );
2187 idStr::snPrintf( sys, sizeof(sys), "dmap %s", in );
2190 cmdSystem->BufferCommandText( CMD_EXEC_NOW, "disconnect\n" );
2192 // issue the bsp command
2193 Dmap_f( idCmdArgs( sys, false ) );
2197 void CMainFrame::OnBspCommand(unsigned int nID) {
2198 if (g_PrefsDlg.m_bSnapShots && stricmp(currentmap, "unnamed.map") != 0) {
2202 RunBsp(bsp_commands[LOWORD(nID - CMD_BSPCOMMAND)]);
2205 SetTimer(QE_TIMER1, g_PrefsDlg.m_nAutoSave * 60 * 1000, NULL);
2209 =======================================================================================================================
2210 =======================================================================================================================
2212 void CMainFrame::OnViewShowblocks() {
2213 g_qeglobals.show_blocks = !(g_qeglobals.show_blocks);
2216 ::GetMenu(GetSafeHwnd()),
2218 MF_BYCOMMAND | (g_qeglobals.show_blocks ? MF_CHECKED : MF_UNCHECKED)
2220 Sys_UpdateWindows(W_XY);
2224 =======================================================================================================================
2225 =======================================================================================================================
2227 void CMainFrame::OnViewShowclip() {
2228 if ((g_qeglobals.d_savedinfo.exclude ^= EXCLUDE_CLIP) & EXCLUDE_CLIP) {
2229 CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWCLIP, MF_BYCOMMAND | MF_UNCHECKED);
2232 CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWCLIP, MF_BYCOMMAND | MF_CHECKED);
2235 Sys_UpdateWindows(W_XY | W_CAMERA);
2239 =======================================================================================================================
2240 =======================================================================================================================
2242 void CMainFrame::OnViewShowTriggers() {
2243 if ((g_qeglobals.d_savedinfo.exclude ^= EXCLUDE_TRIGGERS) & EXCLUDE_TRIGGERS) {
2244 CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWTRIGGERS, MF_BYCOMMAND | MF_UNCHECKED);
2247 CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWTRIGGERS, MF_BYCOMMAND | MF_CHECKED);
2250 Sys_UpdateWindows(W_XY | W_CAMERA);
2254 =======================================================================================================================
2255 =======================================================================================================================
2257 void CMainFrame::OnViewShowcoordinates() {
2258 g_qeglobals.d_savedinfo.show_coordinates ^= 1;
2261 ::GetMenu(GetSafeHwnd()),
2262 ID_VIEW_SHOWCOORDINATES,
2263 MF_BYCOMMAND | (g_qeglobals.d_savedinfo.show_coordinates ? MF_CHECKED : MF_UNCHECKED)
2265 Sys_UpdateWindows(W_XY);
2269 =======================================================================================================================
2270 =======================================================================================================================
2272 void CMainFrame::OnViewShowent() {
2273 if ((g_qeglobals.d_savedinfo.exclude ^= EXCLUDE_ENT) & EXCLUDE_ENT) {
2274 CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWENT, MF_BYCOMMAND | MF_UNCHECKED);
2277 CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWENT, MF_BYCOMMAND | MF_CHECKED);
2280 Sys_UpdateWindows(W_XY | W_CAMERA);
2284 =======================================================================================================================
2285 =======================================================================================================================
2287 void CMainFrame::OnViewShowlights() {
2288 if ((g_qeglobals.d_savedinfo.exclude ^= EXCLUDE_LIGHTS) & EXCLUDE_LIGHTS) {
2289 CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWLIGHTS, MF_BYCOMMAND | MF_UNCHECKED);
2292 CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWLIGHTS, MF_BYCOMMAND | MF_CHECKED);
2295 Sys_UpdateWindows(W_XY | W_CAMERA);
2299 =======================================================================================================================
2300 =======================================================================================================================
2302 void CMainFrame::OnViewShownames() {
2303 g_qeglobals.d_savedinfo.show_names = !(g_qeglobals.d_savedinfo.show_names);
2306 ::GetMenu(GetSafeHwnd()),
2308 MF_BYCOMMAND | (g_qeglobals.d_savedinfo.show_names ? MF_CHECKED : MF_UNCHECKED)
2310 Map_BuildBrushData();
2311 Sys_UpdateWindows(W_XY);
2315 =======================================================================================================================
2316 =======================================================================================================================
2318 void CMainFrame::OnViewShowpath() {
2319 if ((g_qeglobals.d_savedinfo.exclude ^= EXCLUDE_PATHS) & EXCLUDE_PATHS) {
2320 CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWPATH, MF_BYCOMMAND | MF_UNCHECKED);
2323 CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWPATH, MF_BYCOMMAND | MF_CHECKED);
2326 Sys_UpdateWindows(W_XY | W_CAMERA);
2330 =======================================================================================================================
2331 =======================================================================================================================
2333 void CMainFrame::OnViewShowCombatNodes() {
2334 if ((g_qeglobals.d_savedinfo.exclude ^= EXCLUDE_COMBATNODES) & EXCLUDE_COMBATNODES) {
2335 CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWCOMBATNODES, MF_BYCOMMAND | MF_UNCHECKED);
2338 CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWCOMBATNODES, MF_BYCOMMAND | MF_CHECKED);
2341 Sys_UpdateWindows(W_XY | W_CAMERA);
2345 =======================================================================================================================
2346 =======================================================================================================================
2348 void CMainFrame::OnViewShowwater() {
2349 if ((g_qeglobals.d_savedinfo.exclude ^= EXCLUDE_DYNAMICS) & EXCLUDE_DYNAMICS) {
2350 CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWWATER, MF_BYCOMMAND | MF_UNCHECKED);
2353 CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWWATER, MF_BYCOMMAND | MF_CHECKED);
2356 Sys_UpdateWindows(W_XY | W_CAMERA);
2360 =======================================================================================================================
2361 =======================================================================================================================
2363 void CMainFrame::OnViewShowworld() {
2364 if ((g_qeglobals.d_savedinfo.exclude ^= EXCLUDE_WORLD) & EXCLUDE_WORLD) {
2365 CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWWORLD, MF_BYCOMMAND | MF_UNCHECKED);
2368 CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWWORLD, MF_BYCOMMAND | MF_CHECKED);
2371 Sys_UpdateWindows(W_XY | W_CAMERA);
2375 =======================================================================================================================
2376 =======================================================================================================================
2378 void CMainFrame::OnViewTexture() {
2379 g_Inspectors->SetMode(W_TEXTURE);
2383 =======================================================================================================================
2384 =======================================================================================================================
2386 void CMainFrame::OnViewUpfloor() {
2387 m_pCamWnd->Cam_ChangeFloor(true);
2391 =======================================================================================================================
2392 =======================================================================================================================
2394 void CMainFrame::OnViewXy() {
2395 m_pXYWnd->SetViewType(XY);
2396 m_pXYWnd->PositionView();
2397 Sys_UpdateWindows(W_XY);
2401 =======================================================================================================================
2402 =======================================================================================================================
2404 void CMainFrame::OnViewZ100() {
2406 Sys_UpdateWindows(W_Z | W_Z_OVERLAY);
2410 =======================================================================================================================
2411 =======================================================================================================================
2413 void CMainFrame::OnViewZoomin() {
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 );
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 );
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 );
2435 Sys_UpdateWindows( W_XY | W_XY_OVERLAY );
2439 =======================================================================================================================
2440 =======================================================================================================================
2442 void CMainFrame::OnViewZoomout() {
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 );
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 );
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 );
2464 Sys_UpdateWindows(W_XY | W_XY_OVERLAY);
2468 =======================================================================================================================
2469 =======================================================================================================================
2471 void CMainFrame::OnViewZzoomin() {
2472 z.scale *= 5.0f / 4.0f;
2473 if ( z.scale > 4.0f ) {
2477 Sys_UpdateWindows(W_Z | W_Z_OVERLAY);
2481 =======================================================================================================================
2482 =======================================================================================================================
2484 void CMainFrame::OnViewZzoomout() {
2485 z.scale *= 4.0f / 5.0f;
2486 if ( z.scale < 0.125f ) {
2490 Sys_UpdateWindows(W_Z | W_Z_OVERLAY);
2494 =======================================================================================================================
2495 =======================================================================================================================
2497 void CMainFrame::OnViewSide() {
2498 m_pXYWnd->SetViewType(XZ);
2499 m_pXYWnd->PositionView();
2500 Sys_UpdateWindows(W_XY);
2503 static void UpdateGrid(void)
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;
2512 =======================================================================================================================
2513 =======================================================================================================================
2515 void CMainFrame::OnGrid1(unsigned int nID) {
2519 g_qeglobals.d_gridsize = 1;
2522 g_qeglobals.d_gridsize = 2;
2525 g_qeglobals.d_gridsize = 4;
2528 g_qeglobals.d_gridsize = 8;
2531 g_qeglobals.d_gridsize = 16;
2534 g_qeglobals.d_gridsize = 32;
2537 g_qeglobals.d_gridsize = 64;
2539 case ID_GRID_POINT5:
2540 g_qeglobals.d_gridsize = 0.5f;
2542 case ID_GRID_POINT25:
2543 g_qeglobals.d_gridsize = 0.25f;
2545 case ID_GRID_POINT125:
2546 g_qeglobals.d_gridsize = 0.125f;
2548 //case ID_GRID_POINT0625:
2549 // g_qeglobals.d_gridsize = 0.0625f;
2557 Sys_UpdateWindows(W_XY | W_Z);
2561 =======================================================================================================================
2562 =======================================================================================================================
2564 void CMainFrame::OnTexturesShowinuse() {
2566 Texture_ShowInuse();
2567 g_Inspectors->texWnd.RedrawWindow();
2571 extern bool texture_showinuse;
2574 =======================================================================================================================
2575 =======================================================================================================================
2577 void CMainFrame::OnUpdateTexturesShowinuse(CCmdUI *pCmdUI) {
2578 pCmdUI->SetCheck(texture_showinuse);
2582 =======================================================================================================================
2583 =======================================================================================================================
2585 void CMainFrame::OnTexturesInspector() {
2590 =======================================================================================================================
2591 =======================================================================================================================
2593 void CMainFrame::OnMiscFindbrush() {
2598 =======================================================================================================================
2599 =======================================================================================================================
2601 void CMainFrame::OnMiscGamma() {
2602 float fSave = g_qeglobals.d_savedinfo.fGamma;
2604 if (fSave != g_qeglobals.d_savedinfo.fGamma) {
2605 MessageBox("You must restart Q3Radiant for Gamma settings to take place");
2610 =======================================================================================================================
2611 =======================================================================================================================
2613 void CMainFrame::OnMiscNextleakspot() {
2618 =======================================================================================================================
2619 =======================================================================================================================
2621 void CMainFrame::OnMiscPreviousleakspot() {
2626 =======================================================================================================================
2627 =======================================================================================================================
2629 void CMainFrame::OnMiscPrintxy() {
2634 =======================================================================================================================
2635 =======================================================================================================================
2638 void UpdateRadiantColor( float r, float g, float b, float a ) {
2639 if ( g_pParentWnd ) {
2640 g_pParentWnd->RoutineProcessing();
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);
2649 CDialogColorPicker dlg(cr);
2651 dlg.UpdateParent = UpdateRadiantColor;
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;
2658 Sys_UpdateWindows (W_ALL);
2666 =======================================================================================================================
2667 =======================================================================================================================
2669 extern void Select_SetKeyVal(const char *key, const char *val);
2670 void CMainFrame::OnMiscSelectentitycolor() {
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) {
2678 int n = sscanf(strColor, "%f %f %f", &fR, &fG, &fB);
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;
2687 if (DoColor(COLOR_ENTITY)) {
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);
2692 g_Inspectors->UpdateEntitySel(ent->eclass);
2694 Sys_UpdateWindows(W_ALL);
2699 CString strFindValue;
2700 CString strReplaceKey;
2701 CString strReplaceValue;
2702 bool gbWholeStringMatchOnly = true;
2703 bool gbSelectAllMatchingEnts= false;
2704 brush_t* gpPrevEntBrushFound = NULL;
2706 // all this because there's no ansi stristr(), sigh...
2708 LPCSTR String_ToLower(LPCSTR psString)
2710 const int iBufferSize = 4096;
2711 static char sString[8][iBufferSize];
2712 static int iIndex=0;
2714 if (strlen(psString)>=iBufferSize)
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));
2721 iIndex = ++ iIndex & 7;
2723 strcpy(sString[iIndex],psString);
2724 strlwr(sString[iIndex]);
2726 return sString[iIndex];
2730 bool FindNextBrush(brush_t* pPrevFoundBrush) // can be NULL for fresh search
2732 bool bFoundSomething = false;
2733 entity_t *pLastFoundEnt;
2734 brush_t *pLastFoundBrush;
2736 CWaitCursor waitcursor;
2738 Select_Deselect(true); // bool bDeSelectToListBack
2740 // see whether to start search from prev_brush->next by checking if prev_brush is still in the active list...
2742 brush_t *pStartBrush = active_brushes.next;
2744 if (pPrevFoundBrush && !gbSelectAllMatchingEnts)
2746 brush_t *pPrev = NULL;
2747 for (brush_t* b = active_brushes.next ; b != &active_brushes ; b = b->next)
2749 if (pPrev == pPrevFoundBrush && pPrevFoundBrush)
2758 // now do the search proper...
2760 int iBrushesScanned = 0;
2761 int iBrushesSelected=0;
2762 int iEntsScanned = 0;
2764 brush_t* pNextBrush;
2765 for (brush_t* b = pStartBrush; b != &active_brushes ; b = pNextBrush)
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)...
2771 // pNextBrush = &active_brushes; // default to loop-stop condition
2772 pNextBrush = b->next;
2773 while (pNextBrush->owner == b->owner && pNextBrush!=&active_brushes)
2775 pNextBrush = pNextBrush->next;
2780 // a simple progress bar so they don't think it's locked up on long searches...
2782 static int iDotBodge=0;
2783 if (!(++iDotBodge&15))
2784 common->Printf("."); // cut down on printing
2786 bool bMatch = false;
2787 entity_t* ent = b->owner;
2789 if (ent && ent!= world_entity) // needed!
2792 if (FilterBrush (b))
2795 // only check the find-key if there was one specified...
2797 if (!strFindKey.IsEmpty())
2799 const char *psEntFoundValue = ValueForKey(ent, strFindKey);
2801 if (strlen(psEntFoundValue)
2804 // (stricmp(strFindValue, psEntFoundValue)==0) // found this exact key/value
2806 (gbWholeStringMatchOnly && stricmp(psEntFoundValue, strFindValue)==0)
2808 (!gbWholeStringMatchOnly && strstr(String_ToLower(psEntFoundValue), String_ToLower(strFindValue)))
2811 (strFindValue.IsEmpty()) // any value for this key if blank value search specified
2820 // no FIND key specified, so just scan all of them...
2822 int iNumEntKeys = GetNumKeys(ent);
2823 for (int i=0; i<iNumEntKeys; i++)
2825 const char *psEntFoundValue = ValueForKey(ent, GetKeyString(ent, i));
2826 if (psEntFoundValue)
2828 if ( (strlen(psEntFoundValue) && strFindValue.IsEmpty()) // if blank <value> search specified then any found-value is ok
2830 (gbWholeStringMatchOnly && stricmp(psEntFoundValue, strFindValue)==0)
2832 (!gbWholeStringMatchOnly && strstr(String_ToLower(psEntFoundValue), String_ToLower(strFindValue)))
2835 if (!gbWholeStringMatchOnly && strstr(String_ToLower(psEntFoundValue), String_ToLower(strFindValue)))
2837 // OutputDebugString(va("Matching because: psEntFoundValue '%s' & strFindValue '%s'\n",psEntFoundValue, strFindValue));
2838 // Sys_Printf("Matching because: psEntFoundValue '%s' & strFindValue '%s'\n",psEntFoundValue, strFindValue);
2840 // if (strstr(psEntFoundValue,"killsplat"))
2854 bFoundSomething = true;
2855 pLastFoundEnt = ent;
2856 pLastFoundBrush = b;
2859 g_bScreenUpdates = false; // !!!!!!!!!!!!!!!!!!!!!!!!!!!!
2863 g_bScreenUpdates = true; // !!!!!!!!!!!!!!!!!!!!!!!!!!!!
2865 if (!gbSelectAllMatchingEnts)
2870 if (gbSelectAllMatchingEnts)
2872 common->Printf("\nBrushes Selected: %d (Brushes Scanned %d, Ents Scanned %d)\n", iBrushesSelected, iBrushesScanned, iEntsScanned);
2875 if (bFoundSomething)
2879 if (pLastFoundEnt->origin[0] != 0.0f || pLastFoundEnt->origin[1] != 0.0f || pLastFoundEnt->origin[2] != 0.0f)
2881 VectorCopy(pLastFoundEnt->origin,v3Origin);
2885 // pLastFoundEnt's origin is zero, so use average point of brush mins maxs instead...
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;
2892 // got one, jump the camera to it...
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;
2900 // force main screen into XY camera mode (just in case)...
2902 g_pParentWnd->SetActiveXY(g_pParentWnd->GetXYWnd());
2903 g_pParentWnd->GetXYWnd()->PositionView();
2905 Sys_UpdateWindows (W_ALL);
2907 // and record for next find request (F3)...
2909 gpPrevEntBrushFound = pLastFoundBrush;
2912 return bFoundSomething;
2916 void CMainFrame::OnMiscFindOrReplaceEntity()
2918 CEntKeyFindReplace FindReplace(&strFindKey, &strFindValue, &strReplaceKey, &strReplaceValue, &gbWholeStringMatchOnly, &gbSelectAllMatchingEnts);
2919 switch (FindReplace.DoModal())
2921 case ID_RET_REPLACE:
2923 brush_t* next = NULL;
2924 int iOccurences = 0;
2925 for (brush_t* b = active_brushes.next ; b != &active_brushes ; b = next)
2927 next = b->next; // important to do this here, in case brush gets linked to a different list
2928 entity_t* ent = b->owner;
2932 if (FilterBrush (b))
2935 const char *psEntFoundValue = ValueForKey(ent, strFindKey);
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
2941 // found this search key/value, so delete it...
2943 DeleteKey(ent,strFindKey);
2945 // and replace with the new key/value (if specified)...
2947 if (!strReplaceKey.IsEmpty() && !strReplaceValue.IsEmpty())
2949 SetKeyValue (ent, strReplaceKey, strReplaceValue);
2957 common->Printf("%d occurence(s) replaced\n",iOccurences);
2961 common->Printf("Nothing found to replace\n");
2967 gpPrevEntBrushFound = NULL;
2968 FindNextBrush(NULL);
2973 void CMainFrame::OnMiscFindNextEntity()
2975 // try it once, if it fails, try it again from top, and give up if still failed after that...
2977 if (!FindNextBrush(gpPrevEntBrushFound))
2979 gpPrevEntBrushFound = NULL;
2980 FindNextBrush(NULL);
2984 void CMainFrame::OnMiscSetViewPos()
2986 CString psNewCoords = GetString("Input coords (x y z [rot])\n\nUse spaces to seperate numbers");
2987 if (!psNewCoords.IsEmpty())
2992 psNewCoords.Remove(',');
2993 int iArgsFound = sscanf(psNewCoords,"%f %f %f",&v3Viewpos[0], &v3Viewpos[1], &v3Viewpos[2]);
2994 if (iArgsFound == 3)
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)
2998 int iArgsFound = sscanf(psNewCoords,"%f %f %f %f", &v3Viewpos[0], &v3Viewpos[1], &v3Viewpos[2], &fYaw);
2999 if (iArgsFound != 4)
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);
3011 ErrorBox(va("\"%s\" wasn't 3 valid floats with spaces",psNewCoords));
3017 =======================================================================================================================
3018 =======================================================================================================================
3020 void CMainFrame::OnTexturebk() {
3021 DoColor(COLOR_TEXTUREBACK);
3022 Sys_UpdateWindows(W_ALL);
3026 =======================================================================================================================
3027 =======================================================================================================================
3029 void CMainFrame::OnColorsMajor() {
3030 DoColor(COLOR_GRIDMAJOR);
3031 Sys_UpdateWindows(W_ALL);
3035 =======================================================================================================================
3036 =======================================================================================================================
3038 void CMainFrame::OnColorsMinor() {
3039 DoColor(COLOR_GRIDMINOR);
3040 Sys_UpdateWindows(W_ALL);
3044 =======================================================================================================================
3045 =======================================================================================================================
3047 void CMainFrame::OnColorsXybk() {
3048 DoColor(COLOR_GRIDBACK);
3049 Sys_UpdateWindows(W_ALL);
3053 =======================================================================================================================
3054 =======================================================================================================================
3056 void CMainFrame::OnBrush3sided() {
3057 Undo_Start("3 sided");
3058 Undo_AddBrushList(&selected_brushes);
3060 Undo_EndBrushList(&selected_brushes);
3065 =======================================================================================================================
3066 =======================================================================================================================
3068 void CMainFrame::OnBrush4sided() {
3069 Undo_Start("4 sided");
3070 Undo_AddBrushList(&selected_brushes);
3072 Undo_EndBrushList(&selected_brushes);
3077 =======================================================================================================================
3078 =======================================================================================================================
3080 void CMainFrame::OnBrush5sided() {
3081 Undo_Start("5 sided");
3082 Undo_AddBrushList(&selected_brushes);
3084 Undo_EndBrushList(&selected_brushes);
3089 =======================================================================================================================
3090 =======================================================================================================================
3092 void CMainFrame::OnBrush6sided() {
3093 Undo_Start("6 sided");
3094 Undo_AddBrushList(&selected_brushes);
3096 Undo_EndBrushList(&selected_brushes);
3101 =======================================================================================================================
3102 =======================================================================================================================
3104 void CMainFrame::OnBrush7sided() {
3105 Undo_Start("7 sided");
3106 Undo_AddBrushList(&selected_brushes);
3108 Undo_EndBrushList(&selected_brushes);
3113 =======================================================================================================================
3114 =======================================================================================================================
3116 void CMainFrame::OnBrush8sided() {
3117 Undo_Start("8 sided");
3118 Undo_AddBrushList(&selected_brushes);
3120 Undo_EndBrushList(&selected_brushes);
3125 =======================================================================================================================
3126 =======================================================================================================================
3128 void CMainFrame::OnBrush9sided() {
3129 Undo_Start("9 sided");
3130 Undo_AddBrushList(&selected_brushes);
3132 Undo_EndBrushList(&selected_brushes);
3137 =======================================================================================================================
3138 =======================================================================================================================
3140 void CMainFrame::OnBrushArbitrarysided() {
3141 Undo_Start("arbitrary sided");
3142 Undo_AddBrushList(&selected_brushes);
3144 Undo_EndBrushList(&selected_brushes);
3149 =======================================================================================================================
3150 =======================================================================================================================
3152 void CMainFrame::OnBrushFlipx() {
3153 Undo_Start("flip X");
3154 Undo_AddBrushList(&selected_brushes);
3157 for (brush_t * b = selected_brushes.next; b != &selected_brushes; b = b->next) {
3158 if (b->owner->eclass->fixedsize) {
3160 float a = FloatForKey(b->owner, "angle");
3161 a = div((180 - a), 180).rem;
3162 SetKeyValue(b->owner, "angle", itoa(a, buf, 10));
3166 Patch_ToggleInverted();
3167 Undo_EndBrushList(&selected_brushes);
3172 =======================================================================================================================
3173 =======================================================================================================================
3175 void CMainFrame::OnBrushFlipy() {
3176 Undo_Start("flip Y");
3177 Undo_AddBrushList(&selected_brushes);
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) {
3187 if (a == 90 || a == 270) {
3206 SetKeyValue(b->owner, "angle", itoa(a, buf, 10));
3210 Patch_ToggleInverted();
3211 Undo_EndBrushList(&selected_brushes);
3216 =======================================================================================================================
3217 =======================================================================================================================
3219 void CMainFrame::OnBrushFlipz() {
3220 Undo_Start("flip Z");
3221 Undo_AddBrushList(&selected_brushes);
3223 Patch_ToggleInverted();
3224 Undo_EndBrushList(&selected_brushes);
3229 =======================================================================================================================
3230 =======================================================================================================================
3232 void CMainFrame::OnBrushRotatex() {
3233 Undo_Start("rotate X");
3234 Undo_AddBrushList(&selected_brushes);
3235 Select_RotateAxis(0, 90);
3236 Undo_EndBrushList(&selected_brushes);
3241 =======================================================================================================================
3242 =======================================================================================================================
3244 void CMainFrame::OnBrushRotatey() {
3245 Undo_Start("rotate Y");
3246 Undo_AddBrushList(&selected_brushes);
3247 Select_RotateAxis(1, 90);
3248 Undo_EndBrushList(&selected_brushes);
3253 =======================================================================================================================
3254 =======================================================================================================================
3256 void CMainFrame::OnBrushRotatez() {
3257 Undo_Start("rotate Z");
3258 Undo_AddBrushList(&selected_brushes);
3259 Select_RotateAxis(2, 90);
3260 Undo_EndBrushList(&selected_brushes);
3265 =======================================================================================================================
3266 =======================================================================================================================
3268 void CMainFrame::OnRegionOff() {
3273 =======================================================================================================================
3274 =======================================================================================================================
3276 void CMainFrame::OnRegionSetbrush() {
3281 =======================================================================================================================
3282 =======================================================================================================================
3284 void CMainFrame::OnRegionSetselection() {
3285 Map_RegionSelectedBrushes();
3289 =======================================================================================================================
3290 =======================================================================================================================
3292 void CMainFrame::OnRegionSettallbrush() {
3293 Map_RegionTallBrush();
3297 =======================================================================================================================
3298 =======================================================================================================================
3300 void CMainFrame::OnRegionSetxy() {
3305 =======================================================================================================================
3306 =======================================================================================================================
3308 void CMainFrame::OnSelectionArbitraryrotation() {
3309 // if (ActiveXY()) ActiveXY()->UndoCopy();
3310 Undo_Start("arbitrary rotation");
3311 Undo_AddBrushList(&selected_brushes);
3317 Undo_EndBrushList(&selected_brushes);
3322 =======================================================================================================================
3323 =======================================================================================================================
3325 void CMainFrame::OnSelectionClone() {
3326 // if (ActiveXY()) ActiveXY()->UndoCopy();
3331 =======================================================================================================================
3332 =======================================================================================================================
3334 void CMainFrame::OnSelectionConnect() {
3339 =======================================================================================================================
3340 =======================================================================================================================
3342 void CMainFrame::OnSelectionMakehollow() {
3343 // if (ActiveXY()) ActiveXY()->UndoCopy();
3344 Undo_Start("hollow");
3345 Undo_AddBrushList(&selected_brushes);
3347 Undo_EndBrushList(&selected_brushes);
3352 =======================================================================================================================
3353 =======================================================================================================================
3355 void CMainFrame::OnSelectionCsgsubtract() {
3356 // if (ActiveXY()) ActiveXY()->UndoCopy();
3357 Undo_Start("CSG subtract");
3363 =======================================================================================================================
3364 =======================================================================================================================
3366 void CMainFrame::OnSelectionCsgmerge() {
3367 // if (ActiveXY()) ActiveXY()->UndoCopy();
3368 Undo_Start("CSG merge");
3369 Undo_AddBrushList(&selected_brushes);
3371 Undo_EndBrushList(&selected_brushes);
3376 =======================================================================================================================
3377 =======================================================================================================================
3379 void CMainFrame::OnSelectionDelete() {
3382 // if (ActiveXY()) ActiveXY()->UndoCopy();
3383 Undo_Start("delete");
3384 Undo_AddBrushList(&selected_brushes);
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);
3391 // NOTE: Select_Delete does NOT delete entities
3393 Undo_EndBrushList(&selected_brushes);
3398 =======================================================================================================================
3399 =======================================================================================================================
3401 void CMainFrame::OnSelectionDeselect() {
3402 if (!ByeByeSurfaceDialog()) {
3405 } else if (g_bRotateMode) {
3406 OnSelectMouserotate();
3407 } else if (g_bScaleMode) {
3408 OnSelectMousescale();
3409 } else if (g_bPathMode) {
3411 ActiveXY()->KillPathMode();
3413 } else if (g_bAxialMode) {
3414 g_bAxialMode = false;
3415 Sys_UpdateWindows(W_CAMERA);
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);
3422 SetStatusText(2, " ");
3429 =======================================================================================================================
3430 =======================================================================================================================
3432 void CMainFrame::OnSelectionDragedges() {
3433 if (g_qeglobals.d_select_mode == sel_edge) {
3434 g_qeglobals.d_select_mode = sel_brush;
3435 Sys_UpdateWindows(W_ALL);
3438 SetupVertexSelection();
3439 if (g_qeglobals.d_numpoints) {
3440 g_qeglobals.d_select_mode = sel_edge;
3443 Sys_UpdateWindows(W_ALL);
3448 =======================================================================================================================
3449 =======================================================================================================================
3451 void CMainFrame::OnSelectionDragvertecies() {
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);
3457 // --if (QE_SingleBrush() && selected_brushes.next->patchBrush)
3458 if (OnlyPatchesSelected()) {
3461 else if (!AnyPatchesSelected()) {
3462 SetupVertexSelection();
3463 if (g_qeglobals.d_numpoints) {
3464 g_qeglobals.d_select_mode = sel_vertex;
3468 Sys_UpdateWindows(W_ALL);
3473 =======================================================================================================================
3474 =======================================================================================================================
3476 void CMainFrame::OnSelectionCenterOrigin() {
3477 Undo_Start("center origin");
3478 Undo_AddBrushList(&selected_brushes);
3479 Select_CenterOrigin();
3480 Undo_EndBrushList(&selected_brushes);
3485 =======================================================================================================================
3486 =======================================================================================================================
3488 void CMainFrame::OnSelectionSelectcompletetall() {
3490 // ActiveXY()->UndoCopy();
3493 Select_CompleteTall();
3497 =======================================================================================================================
3498 =======================================================================================================================
3500 void CMainFrame::OnSelectionSelectinside() {
3505 =======================================================================================================================
3506 =======================================================================================================================
3508 void CMainFrame::OnSelectionSelectpartialtall() {
3509 Select_PartialTall();
3513 =======================================================================================================================
3514 =======================================================================================================================
3516 void CMainFrame::OnSelectionSelecttouching() {
3521 =======================================================================================================================
3522 =======================================================================================================================
3524 void CMainFrame::OnSelectionUngroupentity() {
3528 void CMainFrame::OnAutocaulk()
3532 void CMainFrame::OnUpdateAutocaulk(CCmdUI* pCmdUI)
3534 pCmdUI->Enable( selected_brushes.next != &selected_brushes);
3539 =======================================================================================================================
3540 =======================================================================================================================
3542 void CMainFrame::OnTexturesPopup() {
3543 HandlePopup(this, IDR_POPUP_TEXTURE);
3547 =======================================================================================================================
3548 =======================================================================================================================
3550 void CMainFrame::OnSplinesPopup() {
3551 HandlePopup(this, IDR_POPUP_SPLINE);
3555 =======================================================================================================================
3556 =======================================================================================================================
3558 void CMainFrame::OnPopupSelection() {
3559 HandlePopup(this, IDR_POPUP_SELECTION);
3563 =======================================================================================================================
3564 =======================================================================================================================
3566 void CMainFrame::OnViewChange() {
3571 =======================================================================================================================
3572 =======================================================================================================================
3574 void CMainFrame::OnViewCameraupdate() {
3575 g_qeglobals.flatRotation++;
3577 if (g_qeglobals.flatRotation > 2) {
3578 g_qeglobals.flatRotation = 0;
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;
3589 Select_InitializeRotation();
3590 Sys_UpdateWindows(W_CAMERA | W_XY);
3595 =======================================================================================================================
3596 =======================================================================================================================
3598 void CMainFrame::OnSizing(UINT fwSide, LPRECT pRect) {
3599 CFrameWnd::OnSizing(fwSide, pRect);
3600 GetClientRect(g_rctOld);
3604 =======================================================================================================================
3605 =======================================================================================================================
3607 void CMainFrame::OnHelpAbout() {
3612 =======================================================================================================================
3613 =======================================================================================================================
3615 void CMainFrame::OnViewClipper() {
3617 if (ActiveXY()->ClipMode()) {
3618 ActiveXY()->SetClipMode(false);
3619 m_wndToolBar.GetToolBarCtrl().CheckButton(ID_VIEW_CLIPPER, FALSE);
3622 if (ActiveXY()->RotateMode()) {
3623 OnSelectMouserotate();
3626 ActiveXY()->SetClipMode(true);
3627 m_wndToolBar.GetToolBarCtrl().CheckButton(ID_VIEW_CLIPPER);
3633 =======================================================================================================================
3634 =======================================================================================================================
3636 void CMainFrame::OnCameraAngledown() {
3637 m_pCamWnd->Camera().angles[0] -= SPEED_TURN;
3638 if (m_pCamWnd->Camera().angles[0] < -85) {
3639 m_pCamWnd->Camera().angles[0] = -85;
3642 Sys_UpdateWindows(W_CAMERA | W_XY_OVERLAY);
3646 =======================================================================================================================
3647 =======================================================================================================================
3649 void CMainFrame::OnCameraAngleup() {
3650 m_pCamWnd->Camera().angles[0] += SPEED_TURN;
3651 if (m_pCamWnd->Camera().angles[0] > 85) {
3652 m_pCamWnd->Camera().angles[0] = 85;
3655 Sys_UpdateWindows(W_CAMERA | W_XY_OVERLAY);
3659 =======================================================================================================================
3660 =======================================================================================================================
3662 void CMainFrame::OnCameraBack() {
3663 VectorMA(m_pCamWnd->Camera().origin, -SPEED_MOVE, m_pCamWnd->Camera().forward, m_pCamWnd->Camera().origin);
3665 int nUpdate = (g_PrefsDlg.m_bCamXYUpdate) ? (W_CAMERA | W_XY) : (W_CAMERA);
3666 Sys_UpdateWindows(nUpdate);
3670 =======================================================================================================================
3671 =======================================================================================================================
3673 void CMainFrame::OnCameraDown() {
3674 m_pCamWnd->Camera().origin[2] -= SPEED_MOVE;
3675 Sys_UpdateWindows(W_CAMERA | W_XY | W_Z);
3679 =======================================================================================================================
3680 =======================================================================================================================
3682 void CMainFrame::OnCameraForward() {
3683 VectorMA(m_pCamWnd->Camera().origin, SPEED_MOVE, m_pCamWnd->Camera().forward, m_pCamWnd->Camera().origin);
3685 int nUpdate = (g_PrefsDlg.m_bCamXYUpdate) ? (W_CAMERA | W_XY) : (W_CAMERA);
3686 Sys_UpdateWindows(nUpdate);
3690 =======================================================================================================================
3691 =======================================================================================================================
3693 void CMainFrame::OnCameraLeft() {
3694 m_pCamWnd->Camera().angles[1] += SPEED_TURN;
3696 int nUpdate = (g_PrefsDlg.m_bCamXYUpdate) ? (W_CAMERA | W_XY) : (W_CAMERA);
3697 Sys_UpdateWindows(nUpdate);
3701 =======================================================================================================================
3702 =======================================================================================================================
3704 void CMainFrame::OnCameraRight() {
3705 m_pCamWnd->Camera().angles[1] -= SPEED_TURN;
3707 int nUpdate = (g_PrefsDlg.m_bCamXYUpdate) ? (W_CAMERA | W_XY) : (W_CAMERA);
3708 Sys_UpdateWindows(nUpdate);
3712 =======================================================================================================================
3713 =======================================================================================================================
3715 void CMainFrame::OnCameraStrafeleft() {
3716 VectorMA(m_pCamWnd->Camera().origin, -SPEED_MOVE, m_pCamWnd->Camera().right, m_pCamWnd->Camera().origin);
3718 int nUpdate = (g_PrefsDlg.m_bCamXYUpdate) ? (W_CAMERA | W_XY) : (W_CAMERA);
3719 Sys_UpdateWindows(nUpdate);
3723 =======================================================================================================================
3724 =======================================================================================================================
3726 void CMainFrame::OnCameraStraferight() {
3727 VectorMA(m_pCamWnd->Camera().origin, SPEED_MOVE, m_pCamWnd->Camera().right, m_pCamWnd->Camera().origin);
3729 int nUpdate = (g_PrefsDlg.m_bCamXYUpdate) ? (W_CAMERA | W_XY) : (W_CAMERA);
3730 Sys_UpdateWindows(nUpdate);
3734 =======================================================================================================================
3735 =======================================================================================================================
3737 void CMainFrame::OnCameraUp() {
3738 m_pCamWnd->Camera().origin[2] += SPEED_MOVE;
3739 Sys_UpdateWindows(W_CAMERA | W_XY | W_Z);
3743 =======================================================================================================================
3744 =======================================================================================================================
3746 void CMainFrame::OnGridToggle() {
3747 g_qeglobals.d_showgrid ^= 1;
3748 Sys_UpdateWindows(W_XY | W_Z);
3752 =======================================================================================================================
3753 =======================================================================================================================
3755 void CMainFrame::OnPrefs() {
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.");
3763 g_Inspectors->texWnd.UpdatePrefs();
3765 CMenu *pMenu = GetMenu();
3767 pMenu->CheckMenuItem(ID_SNAPTOGRID, MF_BYCOMMAND | (!g_PrefsDlg.m_bNoClamp) ? MF_CHECKED : MF_UNCHECKED);
3773 // =======================================================================================================================
3774 // 0 = radiant styel 1 = qe4 style
3775 // =======================================================================================================================
3777 void CMainFrame::SetWindowStyle(int nStyle) {
3781 =======================================================================================================================
3782 =======================================================================================================================
3784 void CMainFrame::OnTogglecamera() {
3785 if (m_pCamWnd->IsWindowVisible()) {
3786 m_pCamWnd->ShowWindow(SW_HIDE);
3788 m_pCamWnd->ShowWindow(SW_SHOW);
3794 =======================================================================================================================
3795 =======================================================================================================================
3797 void CMainFrame::OnToggleview() {
3798 if (m_pXYWnd && m_pXYWnd->GetSafeHwnd()) {
3799 if (m_pXYWnd->IsWindowVisible()) {
3800 m_pXYWnd->ShowWindow(SW_HIDE);
3802 m_pXYWnd->ShowWindow(SW_SHOW);
3808 =======================================================================================================================
3809 =======================================================================================================================
3811 void CMainFrame::OnTogglez() {
3812 if (m_pZWnd && m_pZWnd->GetSafeHwnd()) {
3813 if (m_pZWnd->IsWindowVisible()) {
3814 m_pZWnd->ShowWindow(SW_HIDE);
3816 m_pZWnd->ShowWindow(SW_SHOW);
3822 =======================================================================================================================
3823 =======================================================================================================================
3825 void CMainFrame::OnToggleLock() {
3826 g_PrefsDlg.m_bTextureLock = !g_PrefsDlg.m_bTextureLock;
3828 CMenu *pMenu = GetMenu();
3830 pMenu->CheckMenuItem(ID_TOGGLE_LOCK, MF_BYCOMMAND | (g_PrefsDlg.m_bTextureLock) ? MF_CHECKED : MF_UNCHECKED);
3833 g_PrefsDlg.SavePrefs();
3838 =======================================================================================================================
3839 =======================================================================================================================
3841 void CMainFrame::OnEditMapinfo() {
3847 =======================================================================================================================
3848 =======================================================================================================================
3850 void CMainFrame::OnEditEntityinfo() {
3851 CEntityListDlg::ShowDialog();
3855 =======================================================================================================================
3856 =======================================================================================================================
3858 void CMainFrame::OnViewNextview() {
3859 if (m_pXYWnd->GetViewType() == XY) {
3860 m_pXYWnd->SetViewType(XZ);
3862 else if (m_pXYWnd->GetViewType() == XZ) {
3863 m_pXYWnd->SetViewType(YZ);
3866 m_pXYWnd->SetViewType(XY);
3869 m_pXYWnd->PositionView();
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;
3878 Sys_UpdateWindows(W_XY | W_CAMERA);
3882 =======================================================================================================================
3883 =======================================================================================================================
3885 void CMainFrame::OnHelpCommandlist() {
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);
3899 =======================================================================================================================
3900 =======================================================================================================================
3902 void CMainFrame::OnFileNewproject()
3907 =======================================================================================================================
3908 =======================================================================================================================
3910 void CMainFrame::UpdateStatusText() {
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]);
3919 =======================================================================================================================
3920 =======================================================================================================================
3922 void CMainFrame::SetStatusText(int nPane, const char *pText) {
3923 if (pText && nPane <= 5 && nPane >= 0) {
3924 m_strStatus[nPane] = pText;
3930 =======================================================================================================================
3931 =======================================================================================================================
3933 void CMainFrame::UpdateWindows(int nBits) {
3935 if (!g_bScreenUpdates) {
3939 if (nBits & (W_XY | W_XY_OVERLAY)) {
3941 m_pXYWnd->RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW);
3945 m_pXZWnd->RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW);
3949 m_pYZWnd->RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW);
3953 if (nBits & W_CAMERA || ((nBits & W_CAMERA_IFON) && m_bCamPreview)) {
3955 m_pCamWnd->RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW);
3959 if (nBits & (W_Z | W_Z_OVERLAY)) {
3961 m_pZWnd->RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW);
3965 if (nBits & W_TEXTURE) {
3966 g_Inspectors->texWnd.RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW);
3971 =======================================================================================================================
3972 =======================================================================================================================
3974 void WINAPI Sys_UpdateWindows(int nBits) {
3975 if (g_PrefsDlg.m_bQE4Painting) {
3976 g_nUpdateBits |= nBits;
3978 else if ( g_pParentWnd ) {
3979 g_pParentWnd->UpdateWindows(nBits);
3984 =======================================================================================================================
3985 =======================================================================================================================
3987 void CMainFrame::OnFlipClip() {
3989 m_pActiveXY->FlipClip();
3994 =======================================================================================================================
3995 =======================================================================================================================
3997 void CMainFrame::OnClipSelected() {
3998 if (m_pActiveXY && m_pActiveXY->ClipMode()) {
3999 Undo_Start("clip selected");
4000 Undo_AddBrushList(&selected_brushes);
4001 m_pActiveXY->Clip();
4002 Undo_EndBrushList(&selected_brushes);
4005 if (g_bPatchBendMode) {
4006 Patch_BendHandleENTER();
4007 } else if (g_bAxialMode) {
4010 //else if (g_bPatchBendMode) {
4011 // Patch_InsDelHandleENTER();
4017 =======================================================================================================================
4018 =======================================================================================================================
4020 void CMainFrame::OnSplitSelected() {
4022 Undo_Start("split selected");
4023 Undo_AddBrushList(&selected_brushes);
4024 m_pActiveXY->SplitClip();
4025 Undo_EndBrushList(&selected_brushes);
4031 =======================================================================================================================
4032 =======================================================================================================================
4034 CXYWnd *CMainFrame::ActiveXY() {
4039 =======================================================================================================================
4040 =======================================================================================================================
4042 void CMainFrame::OnToggleviewXz() {
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);
4049 m_pXZWnd->ShowWindow(SW_SHOW);
4052 g_PrefsDlg.m_bXZVis ^= 1;
4053 g_PrefsDlg.SavePrefs();
4058 =======================================================================================================================
4059 =======================================================================================================================
4061 void CMainFrame::OnToggleviewYz() {
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);
4067 m_pYZWnd->ShowWindow(SW_SHOW);
4070 g_PrefsDlg.m_bYZVis ^= 1;
4071 g_PrefsDlg.SavePrefs();
4076 =======================================================================================================================
4077 =======================================================================================================================
4080 void CMainFrame::OnToggleToolbar()
4082 ShowControlBar(&m_wndToolBar, !m_wndToolBar.IsWindowVisible(), false);
4085 void CMainFrame::OnToggleTextureBar()
4087 ShowControlBar(&m_wndTextureBar, !m_wndTextureBar.IsWindowVisible(), false);
4092 =======================================================================================================================
4093 =======================================================================================================================
4095 void CMainFrame::OnColorsBrush() {
4096 DoColor(COLOR_BRUSHES);
4097 Sys_UpdateWindows(W_ALL);
4101 =======================================================================================================================
4102 =======================================================================================================================
4104 void CMainFrame::OnColorsClipper() {
4105 DoColor(COLOR_CLIPPER);
4106 Sys_UpdateWindows(W_ALL);
4110 =======================================================================================================================
4111 =======================================================================================================================
4113 void CMainFrame::OnColorsGridtext() {
4114 DoColor(COLOR_GRIDTEXT);
4115 Sys_UpdateWindows(W_ALL);
4119 =======================================================================================================================
4120 =======================================================================================================================
4122 void CMainFrame::OnColorsSelectedbrush() {
4123 DoColor(COLOR_SELBRUSHES);
4124 Sys_UpdateWindows(W_ALL);
4128 =======================================================================================================================
4129 =======================================================================================================================
4131 void CMainFrame::OnColorsGridblock() {
4132 DoColor(COLOR_GRIDBLOCK);
4133 Sys_UpdateWindows(W_ALL);
4137 =======================================================================================================================
4138 =======================================================================================================================
4140 void CMainFrame::OnColorsViewname() {
4141 DoColor(COLOR_VIEWNAME);
4142 Sys_UpdateWindows(W_ALL);
4146 =======================================================================================================================
4147 =======================================================================================================================
4149 void CMainFrame::OnColorSetoriginal() {
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;
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;
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;
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;
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;
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;
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;
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;
4186 Sys_UpdateWindows(W_ALL);
4190 =======================================================================================================================
4191 =======================================================================================================================
4193 void CMainFrame::OnColorSetqer() {
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;
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;
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;
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;
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;
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;
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;
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;
4230 Sys_UpdateWindows(W_ALL);
4233 //FIXME: these just need to be read from a def file
4234 void CMainFrame::OnColorSetSuperMal() {
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;
4262 Sys_UpdateWindows(W_ALL);
4266 =======================================================================================================================
4267 =======================================================================================================================
4269 void CMainFrame::OnColorSetblack() {
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;
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;
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;
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;
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;
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;
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;
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;
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;
4309 Sys_UpdateWindows(W_ALL);
4312 void CMainFrame::OnColorSetMax() {
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;
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;
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;
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;
4348 Sys_UpdateWindows (W_ALL);
4353 =======================================================================================================================
4354 =======================================================================================================================
4356 void CMainFrame::OnSnaptogrid() {
4357 g_PrefsDlg.m_bNoClamp ^= 1;
4358 g_PrefsDlg.SavePrefs();
4360 CMenu *pMenu = GetMenu();
4362 pMenu->CheckMenuItem(ID_SNAPTOGRID, MF_BYCOMMAND | (!g_PrefsDlg.m_bNoClamp) ? MF_CHECKED : MF_UNCHECKED);
4367 =======================================================================================================================
4368 =======================================================================================================================
4370 void CMainFrame::OnSelectScale() {
4371 // if (ActiveXY()) ActiveXY()->UndoCopy();
4372 Undo_Start("scale");
4373 Undo_AddBrushList(&selected_brushes);
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);
4382 common->Printf("Warning.. Tried to scale by a zero value.");
4386 Undo_EndBrushList(&selected_brushes);
4391 =======================================================================================================================
4392 =======================================================================================================================
4394 void CMainFrame::OnSelectMouserotate() {
4396 if (ActiveXY()->ClipMode()) {
4400 if (ActiveXY()->RotateMode()) {
4401 ActiveXY()->SetRotateMode(false);
4402 m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SELECT_MOUSEROTATE, FALSE);
4403 Map_BuildBrushData();
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;
4414 m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SELECT_MOUSEROTATE, TRUE);
4416 else { // if MFC called, we need to set back to FALSE ourselves
4417 m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SELECT_MOUSEROTATE, FALSE);
4421 Sys_UpdateWindows(W_CAMERA | W_XY);
4425 =======================================================================================================================
4426 =======================================================================================================================
4428 void CMainFrame::OnEditCopybrush() {
4435 =======================================================================================================================
4436 =======================================================================================================================
4438 void CMainFrame::OnEditPastebrush() {
4440 ActiveXY()->Paste();
4445 =======================================================================================================================
4446 =======================================================================================================================
4448 void CMainFrame::OnEditUndo() {
4449 // if (ActiveXY()) ActiveXY()->Undo();
4454 =======================================================================================================================
4455 =======================================================================================================================
4457 void CMainFrame::OnEditRedo() {
4462 =======================================================================================================================
4463 =======================================================================================================================
4465 void CMainFrame::OnUpdateEditUndo(CCmdUI *pCmdUI) {
4467 * BOOL bEnable = false; if (ActiveXY()) bEnable = ActiveXY()->UndoAvailable();
4468 * pCmdUI->Enable(bEnable);
4470 pCmdUI->Enable(Undo_UndoAvailable());
4474 =======================================================================================================================
4475 =======================================================================================================================
4477 void CMainFrame::OnUpdateEditRedo(CCmdUI *pCmdUI) {
4478 pCmdUI->Enable(Undo_RedoAvailable());
4482 =======================================================================================================================
4483 =======================================================================================================================
4485 void CMainFrame::OnSelectionTextureDec() {
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;
4495 =======================================================================================================================
4496 =======================================================================================================================
4498 void CMainFrame::OnSelectionTextureFit() {
4499 Select_FitTexture( 1.0f, 1.0f );
4503 =======================================================================================================================
4504 =======================================================================================================================
4506 void CMainFrame::OnSelectionTextureInc() {
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;
4516 =======================================================================================================================
4517 =======================================================================================================================
4519 void CMainFrame::OnSelectionTextureRotateclock() {
4520 Select_RotateTexture(abs(g_PrefsDlg.m_nRotation));
4524 =======================================================================================================================
4525 =======================================================================================================================
4527 void CMainFrame::OnSelectionTextureRotatecounter() {
4528 Select_RotateTexture(-abs(g_PrefsDlg.m_nRotation));
4532 =======================================================================================================================
4533 =======================================================================================================================
4535 void CMainFrame::OnSelectionTextureScaledown() {
4536 Select_ScaleTexture(0, -g_qeglobals.d_savedinfo.m_nTextureTweak);
4540 =======================================================================================================================
4541 =======================================================================================================================
4543 void CMainFrame::OnSelectionTextureScaleup() {
4544 Select_ScaleTexture(0, g_qeglobals.d_savedinfo.m_nTextureTweak);
4548 =======================================================================================================================
4549 =======================================================================================================================
4551 void CMainFrame::OnSelectionTextureScaleLeft() {
4552 Select_ScaleTexture(g_qeglobals.d_savedinfo.m_nTextureTweak, 0);
4556 =======================================================================================================================
4557 =======================================================================================================================
4559 void CMainFrame::OnSelectionTextureScaleRight() {
4560 Select_ScaleTexture(g_qeglobals.d_savedinfo.m_nTextureTweak, 0);
4564 =======================================================================================================================
4565 =======================================================================================================================
4567 void CMainFrame::OnSelectionTextureShiftdown() {
4568 Select_ShiftTexture(0, -g_qeglobals.d_savedinfo.m_nTextureTweak, true);
4572 =======================================================================================================================
4573 =======================================================================================================================
4575 void CMainFrame::OnSelectionTextureShiftleft() {
4576 Select_ShiftTexture(-g_qeglobals.d_savedinfo.m_nTextureTweak, 0, true);
4580 =======================================================================================================================
4581 =======================================================================================================================
4583 void CMainFrame::OnSelectionTextureShiftright() {
4584 Select_ShiftTexture(g_qeglobals.d_savedinfo.m_nTextureTweak, 0, true);
4588 =======================================================================================================================
4589 =======================================================================================================================
4591 void CMainFrame::OnSelectionTextureShiftup() {
4592 Select_ShiftTexture(0, g_qeglobals.d_savedinfo.m_nTextureTweak, true);
4596 =======================================================================================================================
4597 =======================================================================================================================
4599 void CMainFrame::SetGridChecks(int id) {
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);
4616 =======================================================================================================================
4617 =======================================================================================================================
4619 void CMainFrame::OnGridNext() {
4620 if (g_qeglobals.d_gridsize >= MAX_GRID) {
4624 g_qeglobals.d_gridsize *= 2.0f;
4626 float minGrid = MIN_GRID;
4627 int id = ID_GRID_START;
4629 while (minGrid < g_qeglobals.d_gridsize && id < ID_GRID_END) {
4638 Sys_UpdateWindows(W_XY | W_Z);
4642 =======================================================================================================================
4643 =======================================================================================================================
4645 void CMainFrame::OnGridPrev() {
4646 if (g_qeglobals.d_gridsize <= MIN_GRID) {
4650 g_qeglobals.d_gridsize /= 2;
4652 float maxGrid = MAX_GRID;
4653 int id = ID_GRID_END;
4655 while (maxGrid > g_qeglobals.d_gridsize && id > ID_GRID_START) {
4664 Sys_UpdateWindows(W_XY | W_Z);
4668 =======================================================================================================================
4669 =======================================================================================================================
4671 void CMainFrame::SetGridStatus() {
4675 c1 = (g_PrefsDlg.m_bTextureLock) ? 'M' : ' ';
4676 c2 = (g_PrefsDlg.m_bRotateLock) ? 'R' : ' ';
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,
4687 SetStatusText(4, strStatus);
4691 =======================================================================================================================
4692 =======================================================================================================================
4694 void CMainFrame::SetTexValStatus() {
4696 // CString strStatus; strStatus.Format("T: %i C: %i", g_nTextureTweak,
4697 // g_nCubicScale); SetStatusText(5, strStatus.GetBuffer(0));
4703 =======================================================================================================================
4704 =======================================================================================================================
4706 void CMainFrame::OnTextureReplaceall() {
4707 CFindTextureDlg::show();
4711 =======================================================================================================================
4712 =======================================================================================================================
4714 void CMainFrame::OnScalelockx() {
4715 if (g_nScaleHow & SCALE_X) {
4716 m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SCALELOCKX, FALSE);
4719 m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SCALELOCKX);
4722 g_nScaleHow ^= SCALE_X;
4726 =======================================================================================================================
4727 =======================================================================================================================
4729 void CMainFrame::OnScalelocky() {
4730 if (g_nScaleHow & SCALE_Y) {
4731 m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SCALELOCKY, FALSE);
4734 m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SCALELOCKY);
4737 g_nScaleHow ^= SCALE_Y;
4741 =======================================================================================================================
4742 =======================================================================================================================
4744 void CMainFrame::OnScalelockz() {
4745 if (g_nScaleHow & SCALE_Z) {
4746 m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SCALELOCKZ, FALSE);
4749 m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SCALELOCKZ);
4752 g_nScaleHow ^= SCALE_Z;
4756 =======================================================================================================================
4757 =======================================================================================================================
4759 void CMainFrame::OnSelectMousescale() {
4761 if (ActiveXY()->ClipMode()) {
4765 if (ActiveXY()->RotateMode()) {
4766 // SetRotateMode(false) always works
4767 ActiveXY()->SetRotateMode(false);
4768 m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SELECT_MOUSESCALE, FALSE);
4771 if (ActiveXY()->ScaleMode()) {
4772 ActiveXY()->SetScaleMode(false);
4773 m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SELECT_MOUSESCALE, FALSE);
4776 ActiveXY()->SetScaleMode(true);
4777 m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SELECT_MOUSESCALE);
4783 =======================================================================================================================
4784 =======================================================================================================================
4786 void CMainFrame::OnFileImport() {
4790 =======================================================================================================================
4791 =======================================================================================================================
4793 void CMainFrame::OnFileProjectsettings() {
4794 DoProjectSettings();
4798 =======================================================================================================================
4799 =======================================================================================================================
4801 void CMainFrame::OnUpdateFileImport(CCmdUI *pCmdUI) {
4802 pCmdUI->Enable(FALSE);
4806 =======================================================================================================================
4807 =======================================================================================================================
4809 void CMainFrame::OnViewCubein() {
4810 g_PrefsDlg.m_nCubicScale--;
4811 if (g_PrefsDlg.m_nCubicScale < 1) {
4812 g_PrefsDlg.m_nCubicScale = 1;
4815 g_PrefsDlg.SavePrefs();
4816 Sys_UpdateWindows(W_CAMERA);
4821 =======================================================================================================================
4822 =======================================================================================================================
4824 void CMainFrame::OnViewCubeout() {
4825 g_PrefsDlg.m_nCubicScale++;
4826 if (g_PrefsDlg.m_nCubicScale > 99) {
4827 g_PrefsDlg.m_nCubicScale = 99;
4830 g_PrefsDlg.SavePrefs();
4831 Sys_UpdateWindows(W_CAMERA);
4836 =======================================================================================================================
4837 =======================================================================================================================
4839 void CMainFrame::OnViewCubicclipping() {
4840 g_PrefsDlg.m_bCubicClipping ^= 1;
4842 CMenu *pMenu = GetMenu();
4844 pMenu->CheckMenuItem
4846 ID_VIEW_CUBICCLIPPING,
4847 MF_BYCOMMAND | (g_PrefsDlg.m_bCubicClipping) ? MF_CHECKED : MF_UNCHECKED
4851 m_wndToolBar.GetToolBarCtrl().CheckButton(ID_VIEW_CUBICCLIPPING, (g_PrefsDlg.m_bCubicClipping) ? TRUE : FALSE);
4852 g_PrefsDlg.SavePrefs();
4853 Map_BuildBrushData();
4854 Sys_UpdateWindows(W_CAMERA);
4858 =======================================================================================================================
4859 =======================================================================================================================
4861 void CMainFrame::OnFileSaveregion() {
4866 =======================================================================================================================
4867 =======================================================================================================================
4869 void CMainFrame::OnUpdateFileSaveregion(CCmdUI *pCmdUI) {
4870 pCmdUI->Enable (static_cast<BOOL>(region_active));
4874 =======================================================================================================================
4875 =======================================================================================================================
4877 void CMainFrame::OnSelectionMovedown() {
4878 Undo_Start("move up");
4879 Undo_AddBrushList(&selected_brushes);
4882 vAmt[0] = vAmt[1] = 0.0f;
4883 vAmt[2] = -g_qeglobals.d_gridsize;
4885 Sys_UpdateWindows(W_CAMERA | W_XY | W_Z);
4887 Undo_EndBrushList(&selected_brushes);
4892 =======================================================================================================================
4893 =======================================================================================================================
4895 void CMainFrame::OnSelectionMoveup() {
4897 vAmt[0] = vAmt[1] = 0.0f;
4898 vAmt[2] = g_qeglobals.d_gridsize;
4900 Sys_UpdateWindows(W_CAMERA | W_XY | W_Z);
4904 =======================================================================================================================
4905 =======================================================================================================================
4907 void CMainFrame::OnToolbarMain() {
4911 =======================================================================================================================
4912 =======================================================================================================================
4914 void CMainFrame::OnToolbarTexture() {
4918 =======================================================================================================================
4919 =======================================================================================================================
4921 void CMainFrame::OnSelectionPrint() {
4922 for (brush_t * b = selected_brushes.next; b != &selected_brushes; b = b->next) {
4928 =======================================================================================================================
4929 =======================================================================================================================
4931 void CMainFrame::UpdateTextureBar() {
4932 if (m_wndTextureBar.GetSafeHwnd()) {
4933 m_wndTextureBar.GetSurfaceAttributes();
4937 bool g_bTABDown = false;
4938 bool g_bOriginalFlag;
4941 =======================================================================================================================
4942 =======================================================================================================================
4944 void CMainFrame::OnSelectionTogglesizepaint() {
4945 if (::GetAsyncKeyState('Q')) {
4948 g_bOriginalFlag = ( g_PrefsDlg.m_bSizePaint != FALSE );
4949 g_PrefsDlg.m_bSizePaint = !g_bOriginalFlag;
4950 Sys_UpdateWindows(W_XY);
4956 g_PrefsDlg.m_bSizePaint = g_bOriginalFlag;
4957 Sys_UpdateWindows(W_XY);
4963 =======================================================================================================================
4964 =======================================================================================================================
4966 void CMainFrame::OnBrushMakecone() {
4967 Undo_Start("make cone");
4968 Undo_AddBrushList(&selected_brushes);
4970 Undo_EndBrushList(&selected_brushes);
4975 =======================================================================================================================
4976 =======================================================================================================================
4978 void CMainFrame::OnTexturesLoad() {
4981 char *p = strPath.GetBuffer(MAX_PATH + 1);
4982 bi.hwndOwner = GetSafeHwnd();
4984 bi.pszDisplayName = p;
4985 bi.lpszTitle = "Load textures from path";
4991 LPITEMIDLIST pidlBrowse;
4992 pidlBrowse = SHBrowseForFolder(&bi);
4994 SHGetPathFromIDList(pidlBrowse, p);
4995 strPath.ReleaseBuffer();
4998 //Texture_ShowDirectory(strPath.GetBuffer(0));
5003 =======================================================================================================================
5004 =======================================================================================================================
5006 void CMainFrame::OnToggleRotatelock() {
5007 g_qeglobals.flatRotation = false;
5008 g_qeglobals.rotateAxis++;
5009 if (g_qeglobals.rotateAxis > 2) {
5010 g_qeglobals.rotateAxis = 0;
5012 Select_InitializeRotation();
5013 Sys_UpdateWindows(W_CAMERA | W_XY);
5017 =======================================================================================================================
5018 =======================================================================================================================
5020 void CMainFrame::OnCurveBevel() {
5021 // Curve_MakeCurvedBrush (false, false, false, false, false, true, true);
5025 =======================================================================================================================
5026 =======================================================================================================================
5028 void CMainFrame::OnCurveCylinder() {
5029 // Curve_MakeCurvedBrush (false, false, false, true, true, true, true);
5033 =======================================================================================================================
5034 =======================================================================================================================
5036 void CMainFrame::OnCurveEighthsphere() {
5037 // Curve_MakeCurvedBrush (false, true, false, true, true, false, false);
5041 =======================================================================================================================
5042 =======================================================================================================================
5044 void CMainFrame::OnCurveEndcap() {
5045 // Curve_MakeCurvedBrush (false, false, false, false, true, true, true);
5049 =======================================================================================================================
5050 =======================================================================================================================
5052 void CMainFrame::OnCurveHemisphere() {
5053 // Curve_MakeCurvedBrush (false, true, false, true, true, true, true);
5057 =======================================================================================================================
5058 =======================================================================================================================
5060 void CMainFrame::OnCurveInvertcurve() {
5065 =======================================================================================================================
5066 =======================================================================================================================
5068 void CMainFrame::OnCurveQuarter() {
5069 // Curve_MakeCurvedBrush (false, true, false, true, true, true, false);
5073 =======================================================================================================================
5074 =======================================================================================================================
5076 void CMainFrame::OnCurveSphere() {
5077 // Curve_MakeCurvedBrush (false, true, true, true, true, true, true);
5081 =======================================================================================================================
5082 =======================================================================================================================
5084 void CMainFrame::OnFileImportmap() {
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));
5092 =======================================================================================================================
5093 =======================================================================================================================
5095 void CMainFrame::OnFileExportmap() {
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));
5103 =======================================================================================================================
5104 =======================================================================================================================
5106 void CMainFrame::OnViewShowcurves() {
5107 if ((g_qeglobals.d_savedinfo.exclude ^= EXCLUDE_CURVES) & EXCLUDE_CURVES) {
5108 CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWCURVES, MF_BYCOMMAND | MF_UNCHECKED);
5111 CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWCURVES, MF_BYCOMMAND | MF_CHECKED);
5114 Sys_UpdateWindows(W_XY | W_CAMERA);
5118 =======================================================================================================================
5119 =======================================================================================================================
5121 void CMainFrame::OnSelectionSelectNudgedown() {
5122 NudgeSelection(3, g_qeglobals.d_savedinfo.m_nTextureTweak);
5126 =======================================================================================================================
5127 =======================================================================================================================
5129 void CMainFrame::OnSelectionSelectNudgeleft() {
5130 NudgeSelection(0, g_qeglobals.d_savedinfo.m_nTextureTweak);
5134 =======================================================================================================================
5135 =======================================================================================================================
5137 void CMainFrame::OnSelectionSelectNudgeright() {
5138 NudgeSelection(2, g_qeglobals.d_savedinfo.m_nTextureTweak);
5142 =======================================================================================================================
5143 =======================================================================================================================
5145 void CMainFrame::OnSelectionSelectNudgeup() {
5146 NudgeSelection(1, g_qeglobals.d_savedinfo.m_nTextureTweak);
5150 =======================================================================================================================
5151 =======================================================================================================================
5153 void CMainFrame::NudgeSelection(int nDirection, float fAmount) {
5154 if (ActiveXY()->RotateMode()) {
5156 if (ActiveXY()->GetViewType() == XY) {
5158 } else if (g_pParentWnd->ActiveXY()->GetViewType() == XZ) {
5163 if (nDirection == 2 || nDirection == 3) {
5167 float fDeg = -fAmount;
5169 g_pParentWnd->ActiveXY()->Rotation()[nAxis] += fAmount;
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]
5179 g_pParentWnd->SetStatusText(2, strStatus);
5180 Select_RotateAxis(nAxis, fDeg, false, true);
5181 Sys_UpdateWindows(W_ALL);
5183 else if (ActiveXY()->ScaleMode()) {
5184 if (nDirection == 0 || nDirection == 3) {
5189 v[0] = v[1] = v[2] = 1.0f;
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
5207 Sys_UpdateWindows(W_ALL);
5210 // 0 - left, 1 - up, 2 - right, 3 - down
5212 if (nDirection == 0) {
5213 nDim = ActiveXY()->GetViewType() == YZ ? 1 : 0;
5216 else if (nDirection == 1) {
5217 nDim = ActiveXY()->GetViewType() == XY ? 1 : 2;
5219 else if (nDirection == 2) {
5220 nDim = ActiveXY()->GetViewType() == YZ ? 1 : 0;
5223 nDim = ActiveXY()->GetViewType() == XY ? 1 : 2;
5227 Nudge(nDim, fAmount);
5232 =======================================================================================================================
5233 =======================================================================================================================
5235 BOOL CMainFrame::PreTranslateMessage(MSG *pMsg) {
5236 return CFrameWnd::PreTranslateMessage(pMsg);
5240 =======================================================================================================================
5241 =======================================================================================================================
5243 void CMainFrame::Nudge(int nDim, float fNudge) {
5245 vMove[0] = vMove[1] = vMove[2] = 0;
5246 vMove[nDim] = fNudge;
5247 Select_Move(vMove, true);
5248 Sys_UpdateWindows(W_ALL);
5252 =======================================================================================================================
5253 =======================================================================================================================
5255 void CMainFrame::OnTexturesLoadlist() {
5256 CDialogTextures dlg;
5261 =======================================================================================================================
5262 =======================================================================================================================
5264 void CMainFrame::OnSelectByBoundingBrush() {
5265 g_PrefsDlg.m_selectByBoundingBrush ^= 1;
5266 m_wndToolBar.GetToolBarCtrl().CheckButton
5268 ID_SELECT_BYBOUNDINGBRUSH,
5269 (g_PrefsDlg.m_selectByBoundingBrush) ? TRUE : FALSE
5274 =======================================================================================================================
5275 =======================================================================================================================
5277 void CMainFrame::OnSelectBrushesOnly() {
5278 g_PrefsDlg.m_selectOnlyBrushes ^= 1;
5279 m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SELECT_BRUSHESONLY, (g_PrefsDlg.m_selectOnlyBrushes) ? TRUE : FALSE);
5286 =======================================================================================================================
5287 =======================================================================================================================
5289 void CMainFrame::OnDynamicLighting() {
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);
5297 =======================================================================================================================
5298 =======================================================================================================================
5300 void CMainFrame::OnCurveSimplepatchmesh() {
5301 Undo_Start("make simpe patch mesh");
5302 Undo_AddBrushList(&selected_brushes);
5304 CPatchDensityDlg dlg;
5307 Undo_EndBrushList(&selected_brushes);
5312 =======================================================================================================================
5313 =======================================================================================================================
5315 void CMainFrame::OnPatchToggleBox() {
5316 g_bPatchShowBounds ^= 1;
5317 m_wndToolBar.GetToolBarCtrl().CheckButton(ID_PATCH_SHOWBOUNDINGBOX, (g_bPatchShowBounds) ? TRUE : FALSE);
5318 Sys_UpdateWindows(W_ALL);
5322 =======================================================================================================================
5323 =======================================================================================================================
5325 void CMainFrame::OnPatchWireframe() {
5326 g_bPatchWireFrame ^= 1;
5327 m_wndToolBar.GetToolBarCtrl().CheckButton(ID_PATCH_WIREFRAME, (g_bPatchWireFrame) ? TRUE : FALSE);
5328 Sys_UpdateWindows(W_ALL);
5332 =======================================================================================================================
5333 =======================================================================================================================
5335 void CMainFrame::OnCurvePatchcone() {
5336 Undo_Start("make curve cone");
5337 Undo_AddBrushList(&selected_brushes);
5338 Patch_BrushToMesh(true);
5339 Sys_UpdateWindows(W_ALL);
5340 Undo_EndBrushList(&selected_brushes);
5345 =======================================================================================================================
5346 =======================================================================================================================
5348 void CMainFrame::OnCurvePatchtube() {
5349 Undo_Start("make curve cylinder");
5350 Undo_AddBrushList(&selected_brushes);
5351 Patch_BrushToMesh(false);
5352 Sys_UpdateWindows(W_ALL);
5353 Undo_EndBrushList(&selected_brushes);
5358 =======================================================================================================================
5359 =======================================================================================================================
5361 void CMainFrame::OnPatchWeld() {
5363 m_wndToolBar.GetToolBarCtrl().CheckButton(ID_PATCH_WELD, (g_bPatchWeld) ? TRUE : FALSE);
5364 Sys_UpdateWindows(W_ALL);
5368 =======================================================================================================================
5369 =======================================================================================================================
5371 void CMainFrame::OnCurvePatchbevel() {
5372 Undo_Start("make bevel");
5373 Undo_AddBrushList(&selected_brushes);
5374 Patch_BrushToMesh(false, true, false);
5375 Sys_UpdateWindows(W_ALL);
5376 Undo_EndBrushList(&selected_brushes);
5381 =======================================================================================================================
5382 =======================================================================================================================
5384 void CMainFrame::OnCurvePatchendcap() {
5385 Undo_Start("make end cap");
5386 Undo_AddBrushList(&selected_brushes);
5387 Patch_BrushToMesh(false, false, true);
5388 Sys_UpdateWindows(W_ALL);
5389 Undo_EndBrushList(&selected_brushes);
5394 =======================================================================================================================
5395 =======================================================================================================================
5397 void CMainFrame::OnCurvePatchinvertedbevel() {
5398 // Patch_BrushToMesh(false, true, false, true); Sys_UpdateWindows (W_ALL);
5402 =======================================================================================================================
5403 =======================================================================================================================
5405 void CMainFrame::OnCurvePatchinvertedendcap() {
5406 // Patch_BrushToMesh(false, false, true, true); Sys_UpdateWindows (W_ALL);
5410 =======================================================================================================================
5411 =======================================================================================================================
5413 void CMainFrame::OnPatchDrilldown() {
5414 g_bPatchDrillDown ^= 1;
5415 m_wndToolBar.GetToolBarCtrl().CheckButton(ID_PATCH_DRILLDOWN, (g_bPatchDrillDown) ? TRUE : FALSE);
5416 Sys_UpdateWindows(W_ALL);
5420 =======================================================================================================================
5421 =======================================================================================================================
5423 void CMainFrame::OnCurveInsertcolumn() {
5424 Undo_Start("insert colum");
5425 Undo_AddBrushList(&selected_brushes);
5427 // Patch_AdjustSelectedRowCols(0, 2);
5428 Patch_AdjustSelected(true, true, true);
5429 Sys_UpdateWindows(W_ALL);
5430 Undo_EndBrushList(&selected_brushes);
5435 =======================================================================================================================
5436 =======================================================================================================================
5438 void CMainFrame::OnCurveInsertrow() {
5439 Undo_Start("insert row");
5440 Undo_AddBrushList(&selected_brushes);
5442 // Patch_AdjustSelectedRowCols(2, 0);
5443 Patch_AdjustSelected(true, false, true);
5444 Sys_UpdateWindows(W_ALL);
5445 Undo_EndBrushList(&selected_brushes);
5450 =======================================================================================================================
5451 =======================================================================================================================
5453 void CMainFrame::OnCurveDeletecolumn() {
5454 Undo_Start("delete column");
5455 Undo_AddBrushList(&selected_brushes);
5456 Patch_AdjustSelected(false, true, true);
5457 Sys_UpdateWindows(W_ALL);
5458 Undo_EndBrushList(&selected_brushes);
5463 =======================================================================================================================
5464 =======================================================================================================================
5466 void CMainFrame::OnCurveDeleterow() {
5467 Undo_Start("delete row");
5468 Undo_AddBrushList(&selected_brushes);
5469 Patch_AdjustSelected(false, false, true);
5470 Sys_UpdateWindows(W_ALL);
5471 Undo_EndBrushList(&selected_brushes);
5476 =======================================================================================================================
5477 =======================================================================================================================
5479 void CMainFrame::OnCurveInsertAddcolumn() {
5480 Undo_Start("add (2) columns");
5481 Undo_AddBrushList(&selected_brushes);
5482 Patch_AdjustSelected(true, true, true);
5483 Sys_UpdateWindows(W_ALL);
5484 Undo_EndBrushList(&selected_brushes);
5489 =======================================================================================================================
5490 =======================================================================================================================
5492 void CMainFrame::OnCurveInsertAddrow() {
5493 Undo_Start("add (2) rows");
5494 Undo_AddBrushList(&selected_brushes);
5495 Patch_AdjustSelected(true, false, true);
5496 Sys_UpdateWindows(W_ALL);
5497 Undo_EndBrushList(&selected_brushes);
5502 =======================================================================================================================
5503 =======================================================================================================================
5505 void CMainFrame::OnCurveInsertInsertcolumn() {
5506 Undo_Start("insert (2) columns");
5507 Undo_AddBrushList(&selected_brushes);
5508 Patch_AdjustSelected(true, true, false);
5509 Sys_UpdateWindows(W_ALL);
5510 Undo_EndBrushList(&selected_brushes);
5515 =======================================================================================================================
5516 =======================================================================================================================
5518 void CMainFrame::OnCurveInsertInsertrow() {
5519 Undo_Start("insert (2) rows");
5520 Undo_AddBrushList(&selected_brushes);
5521 Patch_AdjustSelected(true, false, false);
5522 Sys_UpdateWindows(W_ALL);
5523 Undo_EndBrushList(&selected_brushes);
5528 =======================================================================================================================
5529 =======================================================================================================================
5531 void CMainFrame::OnCurveNegative() {
5532 Patch_ToggleInverted();
5534 // Sys_UpdateWindows(W_ALL);
5538 =======================================================================================================================
5539 =======================================================================================================================
5541 void CMainFrame::OnCurveNegativeTextureX() {
5542 Select_FlipTexture(false);
5544 // Sys_UpdateWindows(W_ALL);
5548 =======================================================================================================================
5549 =======================================================================================================================
5551 void CMainFrame::OnCurveNegativeTextureY() {
5552 Select_FlipTexture(true);
5553 // Sys_UpdateWindows(W_ALL);
5557 =======================================================================================================================
5558 =======================================================================================================================
5560 void CMainFrame::OnCurveDeleteFirstcolumn() {
5561 Undo_Start("delete first (2) columns");
5562 Undo_AddBrushList(&selected_brushes);
5563 Patch_AdjustSelected(false, true, true);
5564 Sys_UpdateWindows(W_ALL);
5565 Undo_EndBrushList(&selected_brushes);
5570 =======================================================================================================================
5571 =======================================================================================================================
5573 void CMainFrame::OnCurveDeleteFirstrow() {
5574 Undo_Start("delete first (2) rows");
5575 Undo_AddBrushList(&selected_brushes);
5576 Patch_AdjustSelected(false, false, true);
5577 Sys_UpdateWindows(W_ALL);
5578 Undo_EndBrushList(&selected_brushes);
5583 =======================================================================================================================
5584 =======================================================================================================================
5586 void CMainFrame::OnCurveDeleteLastcolumn() {
5587 Undo_Start("delete last (2) columns");
5588 Undo_AddBrushList(&selected_brushes);
5589 Patch_AdjustSelected(false, true, false);
5590 Sys_UpdateWindows(W_ALL);
5591 Undo_EndBrushList(&selected_brushes);
5596 =======================================================================================================================
5597 =======================================================================================================================
5599 void CMainFrame::OnCurveDeleteLastrow() {
5600 Undo_Start("delete last (2) rows");
5601 Undo_AddBrushList(&selected_brushes);
5602 Patch_AdjustSelected(false, false, false);
5603 Sys_UpdateWindows(W_ALL);
5604 Undo_EndBrushList(&selected_brushes);
5609 =======================================================================================================================
5610 =======================================================================================================================
5612 void CMainFrame::OnPatchBend() {
5614 m_wndToolBar.GetToolBarCtrl().CheckButton(ID_PATCH_BEND, (g_bPatchBendMode) ? TRUE : FALSE);
5615 Sys_UpdateWindows(W_ALL);
5619 =======================================================================================================================
5620 =======================================================================================================================
5622 void CMainFrame::OnPatchInsdel() {
5623 Patch_InsDelToggle();
5624 m_wndToolBar.GetToolBarCtrl().CheckButton(ID_PATCH_INSDEL, (g_bPatchInsertMode) ? TRUE : FALSE);
5625 Sys_UpdateWindows(W_ALL);
5629 =======================================================================================================================
5630 =======================================================================================================================
5632 void CMainFrame::OnPatchEnter() {
5636 =======================================================================================================================
5637 =======================================================================================================================
5639 extern bool Sys_KeyDown(int key);
5640 void CMainFrame::OnPatchTab() {
5641 if (g_bPatchBendMode) {
5642 Patch_BendHandleTAB();
5644 else if (g_bPatchInsertMode) {
5645 Patch_InsDelHandleTAB();
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;
5653 if ( *ip >= selFace->face_winding->GetNumPoints() ) {
5657 Sys_UpdateWindows(W_CAMERA);
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
5663 brush_t *b = selected_brushes.next;
5665 if (b != &selected_brushes) {
5666 if ( idStr::Icmp(b->owner->eclass->name, "worldspawn") != 0 ) {
5670 for (b2 = e->brushes.onext; b2 != &e->brushes; b2 = b2->onext) {
5677 if (b2 == &e->brushes) {
5681 Select_Brush(b2, false);
5682 Sys_UpdateWindows(W_ALL);
5689 =======================================================================================================================
5690 =======================================================================================================================
5692 void CMainFrame::UpdatePatchToolbarButtons() {
5693 m_wndToolBar.GetToolBarCtrl().CheckButton(ID_PATCH_BEND, (g_bPatchBendMode) ? TRUE : FALSE);
5694 m_wndToolBar.GetToolBarCtrl().CheckButton(ID_PATCH_INSDEL, (g_bPatchInsertMode) ? TRUE : FALSE);
5698 =======================================================================================================================
5699 =======================================================================================================================
5701 void CMainFrame::OnCurvePatchdensetube() {
5702 Undo_Start("dense cylinder");
5703 Undo_AddBrushList(&selected_brushes);
5705 Patch_BrushToMesh(false);
5706 OnCurveInsertAddrow();
5707 OnCurveInsertInsertrow();
5708 Sys_UpdateWindows(W_ALL);
5710 Undo_EndBrushList(&selected_brushes);
5715 =======================================================================================================================
5716 =======================================================================================================================
5718 void CMainFrame::OnCurvePatchverydensetube() {
5719 Undo_Start("very dense cylinder");
5720 Undo_AddBrushList(&selected_brushes);
5722 Patch_BrushToMesh(false);
5723 OnCurveInsertAddrow();
5724 OnCurveInsertInsertrow();
5725 OnCurveInsertAddrow();
5726 OnCurveInsertInsertrow();
5727 Sys_UpdateWindows(W_ALL);
5729 Undo_EndBrushList(&selected_brushes);
5734 =======================================================================================================================
5735 =======================================================================================================================
5737 void CMainFrame::OnCurveCap() {
5739 Sys_UpdateWindows(W_ALL);
5743 =======================================================================================================================
5744 =======================================================================================================================
5746 void CMainFrame::OnCurveCapInvertedbevel() {
5747 Patch_CapCurrent(true);
5748 Sys_UpdateWindows(W_ALL);
5752 =======================================================================================================================
5753 =======================================================================================================================
5755 void CMainFrame::OnCurveCapInvertedendcap() {
5756 Patch_CapCurrent(false, true);
5757 Sys_UpdateWindows(W_ALL);
5761 =======================================================================================================================
5762 =======================================================================================================================
5764 void CMainFrame::OnCurveRedisperseCols() {
5765 Patch_DisperseColumns();
5766 Sys_UpdateWindows(W_ALL);
5770 =======================================================================================================================
5771 =======================================================================================================================
5773 void CMainFrame::OnCurveRedisperseRows() {
5774 Patch_DisperseRows();
5775 Sys_UpdateWindows(W_ALL);
5779 =======================================================================================================================
5780 =======================================================================================================================
5782 void CMainFrame::OnPatchNaturalize() {
5783 Patch_NaturalizeSelected();
5784 Sys_UpdateWindows(W_ALL);
5788 =======================================================================================================================
5789 =======================================================================================================================
5791 void CMainFrame::OnPatchNaturalizeAlt() {
5792 Patch_NaturalizeSelected(false, false, true);
5793 Sys_UpdateWindows(W_ALL);
5797 =======================================================================================================================
5798 =======================================================================================================================
5800 void CMainFrame::OnSnapToGrid() {
5801 Select_SnapToGrid();
5802 Sys_UpdateWindows(W_ALL);
5806 =======================================================================================================================
5807 =======================================================================================================================
5809 void CMainFrame::OnCurvePatchsquare() {
5810 Undo_Start("square cylinder");
5811 Undo_AddBrushList(&selected_brushes);
5813 Patch_BrushToMesh(false, false, false, true);
5814 Sys_UpdateWindows(W_ALL);
5816 Undo_EndBrushList(&selected_brushes);
5821 =======================================================================================================================
5822 =======================================================================================================================
5824 void CMainFrame::CheckTextureScale(int id) {
5825 CMenu *pMenu = GetMenu();
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);
5835 g_PrefsDlg.SavePrefs();
5837 //Texture_ResetPosition();
5838 Sys_UpdateWindows(W_TEXTURE);
5842 =======================================================================================================================
5843 =======================================================================================================================
5845 void CMainFrame::OnTexturesTexturewindowscale10() {
5846 g_PrefsDlg.m_nTextureScale = 10;
5847 CheckTextureScale(ID_TEXTURES_TEXTUREWINDOWSCALE_10);
5851 =======================================================================================================================
5852 =======================================================================================================================
5854 void CMainFrame::OnTexturesTexturewindowscale100() {
5855 g_PrefsDlg.m_nTextureScale = 100;
5856 CheckTextureScale(ID_TEXTURES_TEXTUREWINDOWSCALE_100);
5860 =======================================================================================================================
5861 =======================================================================================================================
5863 void CMainFrame::OnTexturesTexturewindowscale200() {
5864 g_PrefsDlg.m_nTextureScale = 200;
5865 CheckTextureScale(ID_TEXTURES_TEXTUREWINDOWSCALE_200);
5869 =======================================================================================================================
5870 =======================================================================================================================
5872 void CMainFrame::OnTexturesTexturewindowscale25() {
5873 g_PrefsDlg.m_nTextureScale = 25;
5874 CheckTextureScale(ID_TEXTURES_TEXTUREWINDOWSCALE_25);
5878 =======================================================================================================================
5879 =======================================================================================================================
5881 void CMainFrame::OnTexturesTexturewindowscale50() {
5882 g_PrefsDlg.m_nTextureScale = 50;
5883 CheckTextureScale(ID_TEXTURES_TEXTUREWINDOWSCALE_50);
5887 =======================================================================================================================
5888 =======================================================================================================================
5890 void CMainFrame::OnTexturesFlush() {
5893 Sys_UpdateWindows(W_ALL);
5897 =======================================================================================================================
5898 =======================================================================================================================
5900 void CMainFrame::OnCurveOverlayClear() {
5901 Patch_ClearOverlays();
5902 Sys_UpdateWindows(W_ALL);
5906 =======================================================================================================================
5907 =======================================================================================================================
5909 void CMainFrame::OnCurveOverlaySet() {
5910 Patch_SetOverlays();
5911 Sys_UpdateWindows(W_ALL);
5915 =======================================================================================================================
5916 =======================================================================================================================
5918 void CMainFrame::OnCurveThicken() {
5919 Undo_Start("curve thicken");
5920 Undo_AddBrushList(&selected_brushes);
5923 if ( dlg.DoModal() == IDOK ) {
5924 Patch_Thicken( dlg.m_nAmount, ( dlg.m_bSeams != FALSE ) );
5925 Sys_UpdateWindows(W_ALL);
5928 Undo_EndBrushList(&selected_brushes);
5933 =======================================================================================================================
5934 =======================================================================================================================
5936 void CMainFrame::OnCurveCyclecap() {
5937 Patch_NaturalizeSelected(true, true);
5938 Sys_UpdateWindows(W_ALL);
5941 void CMainFrame::OnCurveCyclecapAlt() {
5942 Patch_NaturalizeSelected(true, true, true);
5943 Sys_UpdateWindows(W_ALL);
5947 =======================================================================================================================
5948 =======================================================================================================================
5950 void CMainFrame::OnCurveMatrixTranspose() {
5952 Sys_UpdateWindows(W_ALL);
5956 =======================================================================================================================
5957 =======================================================================================================================
5959 void CMainFrame::OnTexturesReloadshaders() {
5961 declManager->Reload( false );
5962 Sys_UpdateWindows(W_ALL);
5966 =======================================================================================================================
5967 =======================================================================================================================
5969 void CMainFrame::SetEntityCheck() {
5970 CMenu *pMenu = GetMenu();
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);
5978 =======================================================================================================================
5979 =======================================================================================================================
5981 void CMainFrame::OnShowEntities() {
5982 HandlePopup(this, IDR_POPUP_ENTITY);
5986 =======================================================================================================================
5987 =======================================================================================================================
5989 void CMainFrame::OnViewEntitiesasSkinned() {
5990 g_PrefsDlg.m_nEntityShowState = ENTITY_SKINNED;
5992 g_PrefsDlg.SavePrefs();
5993 Sys_UpdateWindows(W_ALL);
5997 =======================================================================================================================
5998 =======================================================================================================================
6000 void CMainFrame::OnViewEntitiesasWireframe() {
6001 g_PrefsDlg.m_nEntityShowState = ENTITY_WIRE;
6003 g_PrefsDlg.SavePrefs();
6004 Sys_UpdateWindows(W_ALL);
6008 =======================================================================================================================
6009 =======================================================================================================================
6011 void CMainFrame::OnViewShowhint() {
6012 if ((g_qeglobals.d_savedinfo.exclude ^= EXCLUDE_HINT) & EXCLUDE_HINT) {
6013 CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWHINT, MF_BYCOMMAND | MF_UNCHECKED);
6016 CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWHINT, MF_BYCOMMAND | MF_CHECKED);
6019 Sys_UpdateWindows(W_XY | W_CAMERA);
6023 =======================================================================================================================
6024 =======================================================================================================================
6026 void CMainFrame::OnTexturesShowall() {
6030 void CMainFrame::OnTexturesHideall() {
6035 =======================================================================================================================
6036 =======================================================================================================================
6038 void CMainFrame::OnPatchInspector() {
6043 =======================================================================================================================
6044 =======================================================================================================================
6046 void CMainFrame::OnViewOpengllighting() {
6047 g_PrefsDlg.m_bGLLighting ^= 1;
6048 g_PrefsDlg.SavePrefs();
6051 ::GetMenu(GetSafeHwnd()),
6052 ID_VIEW_OPENGLLIGHTING,
6053 MF_BYCOMMAND | (g_PrefsDlg.m_bGLLighting) ? MF_CHECKED : MF_UNCHECKED
6055 Sys_UpdateWindows(W_XY | W_CAMERA);
6059 =======================================================================================================================
6060 =======================================================================================================================
6062 void CMainFrame::OnSelectAll() {
6067 =======================================================================================================================
6068 =======================================================================================================================
6070 void CMainFrame::OnViewShowcaulk() {
6071 if ((g_qeglobals.d_savedinfo.exclude ^= EXCLUDE_CAULK) & EXCLUDE_CAULK) {
6072 CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWCAULK, MF_BYCOMMAND | MF_UNCHECKED);
6075 CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWCAULK, MF_BYCOMMAND | MF_CHECKED);
6078 Sys_UpdateWindows(W_XY | W_CAMERA);
6082 =======================================================================================================================
6083 =======================================================================================================================
6085 void CMainFrame::OnCurveFreeze() {
6090 =======================================================================================================================
6091 =======================================================================================================================
6093 void CMainFrame::OnCurveUnFreeze() {
6094 Patch_UnFreeze(false);
6098 =======================================================================================================================
6099 =======================================================================================================================
6101 void CMainFrame::OnCurveUnFreezeAll() {
6102 Patch_UnFreeze(true);
6106 =======================================================================================================================
6107 =======================================================================================================================
6109 void CMainFrame::OnSelectReselect() {
6114 =======================================================================================================================
6115 =======================================================================================================================
6117 void CMainFrame::OnViewShowangles() {
6118 if ((g_qeglobals.d_savedinfo.exclude ^= EXCLUDE_ANGLES) & EXCLUDE_ANGLES) {
6119 CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWANGLES, MF_BYCOMMAND | MF_UNCHECKED);
6122 CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOWANGLES, MF_BYCOMMAND | MF_CHECKED);
6125 Sys_UpdateWindows(W_XY | W_CAMERA);
6129 =======================================================================================================================
6130 =======================================================================================================================
6132 void CMainFrame::OnEditSaveprefab() {
6138 OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
6139 "Prefab files (*.pfb)|*.pfb||",
6143 ::GetCurrentDirectory(1024, CurPath);
6145 dlgFile.m_ofn.lpstrInitialDir = CurPath;
6146 if (dlgFile.DoModal() == IDOK) {
6147 Map_SaveSelected(dlgFile.GetPathName().GetBuffer(0));
6152 =======================================================================================================================
6153 =======================================================================================================================
6155 void CMainFrame::OnEditLoadprefab() {
6161 OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
6162 "Prefab files (*.pfb)|*.pfb||",
6166 ::GetCurrentDirectory(1024, CurPath);
6167 dlgFile.m_ofn.lpstrInitialDir = CurPath;
6168 if (dlgFile.DoModal() == IDOK) {
6169 Map_ImportFile(dlgFile.GetPathName().GetBuffer(0));
6174 =======================================================================================================================
6175 =======================================================================================================================
6177 void CMainFrame::OnCurveMoreendcapsbevelsSquarebevel() {
6178 Undo_Start("square bevel");
6179 Undo_AddBrushList(&selected_brushes);
6181 Patch_BrushToMesh(false, true, false, true);
6182 Sys_UpdateWindows(W_ALL);
6184 Undo_EndBrushList(&selected_brushes);
6189 =======================================================================================================================
6190 =======================================================================================================================
6192 void CMainFrame::OnCurveMoreendcapsbevelsSquareendcap() {
6193 Undo_Start("square endcap");
6194 Undo_AddBrushList(&selected_brushes);
6196 Patch_BrushToMesh(false, false, true, true);
6197 Sys_UpdateWindows(W_ALL);
6199 Undo_EndBrushList(&selected_brushes);
6204 =======================================================================================================================
6205 =======================================================================================================================
6207 void CMainFrame::OnBrushPrimitivesSphere() {
6208 Undo_Start("make sphere");
6209 Undo_AddBrushList(&selected_brushes);
6211 DoSides(false, true);
6213 Undo_EndBrushList(&selected_brushes);
6217 extern bool g_bCrossHairs;
6220 =======================================================================================================================
6221 =======================================================================================================================
6223 void CMainFrame::OnViewCrosshair() {
6225 Sys_UpdateWindows(W_XY);
6229 =======================================================================================================================
6230 =======================================================================================================================
6232 void CMainFrame::OnViewHideshowHideselected() {
6237 void CMainFrame::OnViewHideshowHideNotselected() {
6243 =======================================================================================================================
6244 =======================================================================================================================
6246 void CMainFrame::OnViewHideshowShowhidden() {
6247 Select_ShowAllHidden();
6251 =======================================================================================================================
6252 =======================================================================================================================
6254 void CMainFrame::OnTexturesShadersShow() {
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);
6264 =======================================================================================================================
6265 =======================================================================================================================
6267 void CMainFrame::OnTexturesFlushUnused() {
6269 //Texture_FlushUnused();
6270 Sys_UpdateWindows(W_TEXTURE);
6274 =======================================================================================================================
6275 =======================================================================================================================
6277 void CMainFrame::OnSelectionInvert() {
6279 Sys_UpdateWindows(W_XY | W_Z | W_CAMERA);
6283 =======================================================================================================================
6284 =======================================================================================================================
6286 void CMainFrame::OnProjectedLight() {
6287 LightEditorInit( NULL );
6291 =======================================================================================================================
6292 =======================================================================================================================
6294 void CMainFrame::OnShowLighttextures() {
6295 g_bShowLightTextures ^= 1;
6296 m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SHOW_LIGHTTEXTURES, (g_bShowLightTextures) ? TRUE : FALSE);
6297 Sys_UpdateWindows(W_ALL);
6301 =======================================================================================================================
6302 =======================================================================================================================
6304 void CMainFrame::OnShowLightvolumes() {
6305 g_bShowLightVolumes ^= 1;
6306 m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SHOW_LIGHTVOLUMES, (g_bShowLightVolumes) ? TRUE : FALSE);
6307 Sys_UpdateWindows(W_ALL);
6311 =======================================================================================================================
6312 =======================================================================================================================
6314 void CMainFrame::OnActivate(UINT nState, CWnd *pWndOther, BOOL bMinimized) {
6315 CFrameWnd::OnActivate(nState, pWndOther, bMinimized);
6317 if ( nState != WA_INACTIVE ) {
6318 common->ActivateTool( true );
6319 if (::IsWindowVisible(win32.hWnd)) {
6320 ::ShowWindow(win32.hWnd, SW_HIDE);
6323 // start playing the editor sound world
6324 soundSystem->SetPlayingSoundWorld( g_qeglobals.sw );
6327 //com_editorActive = false;
6332 =======================================================================================================================
6333 =======================================================================================================================
6335 void CMainFrame::OnSplinesMode() {
6336 g_qeglobals.d_select_mode = sel_addpoint;
6337 g_splineList->clear();
6338 g_splineList->startEdit(true);
6339 showCameraInspector();
6340 Sys_UpdateWindows(W_ALL);
6344 =======================================================================================================================
6345 =======================================================================================================================
6347 void CMainFrame::OnSplinesLoad() {
6348 g_splineList->load("maps/test.camera");
6349 g_splineList->buildCamera();
6353 =======================================================================================================================
6354 =======================================================================================================================
6356 void CMainFrame::OnSplinesSave() {
6357 g_splineList->save("maps/test.camera");
6361 =======================================================================================================================
6362 =======================================================================================================================
6364 void CMainFrame::OnSplinesEdit() {
6365 showCameraInspector();
6366 Sys_UpdateWindows(W_ALL);
6369 extern void testCamSpeed();
6372 =======================================================================================================================
6373 =======================================================================================================================
6375 void CMainFrame::OnSplineTest() {
6376 long start = GetTickCount();
6377 g_splineList->startCamera(start);
6379 float cycle = g_splineList->getTotalTime();
6380 long msecs = cycle * 1000;
6381 long current = start;
6382 idVec3 lookat(0, 0, 0);
6385 while (current < start + msecs) {
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();
6394 g_splineList->setRunning(false);
6398 =======================================================================================================================
6399 =======================================================================================================================
6401 void CMainFrame::OnSplinesTargetPoints() {
6405 =======================================================================================================================
6406 =======================================================================================================================
6408 void CMainFrame::OnSplinesCameraPoints() {
6412 =======================================================================================================================
6413 =======================================================================================================================
6415 void CMainFrame::OnPopupNewcameraInterpolated() {
6416 g_qeglobals.d_select_mode = sel_addpoint;
6417 g_qeglobals.selectObject = g_splineList->startNewCamera(idCameraPosition::INTERPOLATED);
6422 =======================================================================================================================
6423 =======================================================================================================================
6425 void CMainFrame::OnPopupNewcameraSpline() {
6426 g_qeglobals.d_select_mode = sel_addpoint;
6427 g_qeglobals.selectObject = g_splineList->startNewCamera(idCameraPosition::SPLINE);
6432 =======================================================================================================================
6433 =======================================================================================================================
6435 void CMainFrame::OnPopupNewcameraFixed() {
6436 g_qeglobals.d_select_mode = sel_addpoint;
6437 g_qeglobals.selectObject = g_splineList->startNewCamera(idCameraPosition::FIXED);
6441 extern void Patch_AdjustSubdivisions(float hadj, float vadj);
6444 =======================================================================================================================
6445 =======================================================================================================================
6447 void CMainFrame::OnCurveIncreaseVert() {
6448 Patch_AdjustSubdivisions( 0.0f, -0.5f );
6452 =======================================================================================================================
6453 =======================================================================================================================
6455 void CMainFrame::OnCurveDecreaseVert() {
6456 Patch_AdjustSubdivisions( 0.0f, 0.5f );
6460 =======================================================================================================================
6461 =======================================================================================================================
6463 void CMainFrame::OnCurveIncreaseHorz() {
6464 Patch_AdjustSubdivisions( -0.5f, 0.0f );
6468 =======================================================================================================================
6469 =======================================================================================================================
6471 void CMainFrame::OnCurveDecreaseHorz() {
6472 Patch_AdjustSubdivisions( 0.5f, 0.0f );
6476 =======================================================================================================================
6477 =======================================================================================================================
6479 void CMainFrame::OnSelectionMoveonly() {
6481 m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SELECTION_MOVEONLY, (g_moveOnly) ? TRUE : FALSE);
6484 void CMainFrame::OnSelectBrushlight()
6486 // TODO: Add your command handler code here
6490 void CMainFrame::OnSelectionCombine()
6492 if (g_qeglobals.d_select_count < 2) {
6493 Sys_Status("Must have at least two things selected.", 0);
6498 entity_t *e1 = g_qeglobals.d_select_order[0]->owner;
6500 if (e1 == world_entity) {
6501 Sys_Status("First selection must not be world.", 0);
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;
6518 if (!GetMatrixForKey(e1, "rotation", mat)) {
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;
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);
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);
6540 if (b->modelHandle) {
6541 SetKeyValue(e1, "model", ValueForKey(b->owner, "model"));
6544 b->entityModel = true;
6547 Entity_UnlinkBrush(b);
6548 Entity_LinkBrush(e1, b);
6553 SetKeyValue(e1, "model", ValueForKey(e1, "name"));
6557 Select_Brush(g_qeglobals.d_select_order[0]);
6558 Sys_UpdateWindows(W_XY | W_CAMERA);
6561 extern void Patch_Weld(patchMesh_t *p, patchMesh_t *p2);
6562 void CMainFrame::OnPatchCombine() {
6563 patchMesh_t *p, *p2;
6565 for (brush_t *b = selected_brushes.next; b != &selected_brushes; b = b->next) {
6569 } else if (p2 == NULL) {
6578 void CMainFrame::OnShowDoom()
6580 int show = ::IsWindowVisible(win32.hWnd) ? SW_HIDE : SW_NORMAL;
6581 if (show == SW_NORMAL) {
6582 g_Inspectors->SetMode(W_TEXTURE);
6584 ::ShowWindow(win32.hWnd, show);
6587 void CMainFrame::OnViewRendermode()
6589 m_pCamWnd->ToggleRenderMode();
6590 CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_RENDERMODE, MF_BYCOMMAND | (m_pCamWnd->GetRenderMode()) ? MF_CHECKED : MF_UNCHECKED);
6591 Sys_UpdateWindows(W_ALL);
6594 void CMainFrame::OnViewRebuildrenderdata()
6596 m_pCamWnd->BuildRendererState();
6597 if (!m_pCamWnd->GetRenderMode()) {
6600 Sys_UpdateWindows(W_ALL);
6603 void CMainFrame::OnViewRealtimerebuild()
6605 m_pCamWnd->ToggleRebuildMode();
6606 CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_REALTIMEREBUILD, MF_BYCOMMAND | (m_pCamWnd->GetRebuildMode()) ? MF_CHECKED : MF_UNCHECKED);
6607 Sys_UpdateWindows(W_ALL);
6610 void CMainFrame::OnViewRenderentityoutlines()
6612 m_pCamWnd->ToggleEntityMode();
6613 CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_RENDERENTITYOUTLINES, MF_BYCOMMAND | (m_pCamWnd->GetEntityMode()) ? MF_CHECKED : MF_UNCHECKED);
6614 Sys_UpdateWindows(W_ALL);
6617 void CMainFrame::OnViewMaterialanimation()
6619 m_pCamWnd->ToggleAnimationMode();
6620 CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_MATERIALANIMATION, MF_BYCOMMAND | (m_pCamWnd->GetAnimationMode()) ? MF_CHECKED : MF_UNCHECKED);
6621 Sys_UpdateWindows(W_ALL);
6624 extern void Face_SetAxialScale_BrushPrimit(face_t *face, bool y);
6625 void CMainFrame::OnAxialTextureByWidth() {
6627 int faceCount = g_ptrSelectedFaces.GetSize();
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);
6634 Sys_UpdateWindows(W_CAMERA);
6639 void CMainFrame::OnAxialTextureByHeight() {
6641 int faceCount = g_ptrSelectedFaces.GetSize();
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);
6648 Sys_UpdateWindows(W_CAMERA);
6652 void CMainFrame::OnAxialTextureArbitrary() {
6654 g_bAxialMode = false;
6656 int faceCount = g_ptrSelectedFaces.GetSize();
6657 if (faceCount > 0) {
6660 g_bAxialMode = true;
6662 Sys_UpdateWindows(W_CAMERA);
6665 extern void Select_ToOBJ();
6666 void CMainFrame::OnSelectionExportToobj()
6671 extern void Select_ToCM();
6672 void CMainFrame::OnSelectionExportToCM()
6677 void CMainFrame::OnSelectionWireFrameOff() {
6678 Select_WireFrame( false );
6681 void CMainFrame::OnSelectionWireFrameOn() {
6682 Select_WireFrame( true );
6685 void CMainFrame::OnSelectionVisibleOn() {
6686 Select_ForceVisible( true );
6689 void CMainFrame::OnSelectionVisibleOff() {
6690 Select_ForceVisible( false );
6694 void CMainFrame::OnViewRenderselection()
6696 m_pCamWnd->ToggleSelectMode();
6697 CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_RENDERSELECTION, MF_BYCOMMAND | (m_pCamWnd->GetSelectMode()) ? MF_CHECKED : MF_UNCHECKED);
6698 Sys_UpdateWindows(W_CAMERA);
6701 void CMainFrame::OnSelectNomodels()
6703 g_PrefsDlg.m_selectNoModels ^= 1;
6704 m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SELECT_NOMODELS, (g_PrefsDlg.m_selectNoModels) ? TRUE : FALSE);
6707 void CMainFrame::OnViewShowShowvisportals()
6709 if ((g_qeglobals.d_savedinfo.exclude ^= EXCLUDE_VISPORTALS) & EXCLUDE_VISPORTALS) {
6710 CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOW_SHOWVISPORTALS, MF_BYCOMMAND | MF_UNCHECKED);
6713 CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOW_SHOWVISPORTALS, MF_BYCOMMAND | MF_CHECKED);
6716 Sys_UpdateWindows(W_XY | W_CAMERA);
6719 void CMainFrame::OnViewShowNoDraw()
6721 if ((g_qeglobals.d_savedinfo.exclude ^= EXCLUDE_NODRAW) & EXCLUDE_NODRAW) {
6722 CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOW_NODRAW, MF_BYCOMMAND | MF_UNCHECKED);
6725 CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_SHOW_NODRAW, MF_BYCOMMAND | MF_CHECKED);
6728 Sys_UpdateWindows(W_XY | W_CAMERA);
6733 void CMainFrame::OnViewRendersound()
6735 m_pCamWnd->ToggleSoundMode();
6736 CheckMenuItem(::GetMenu(GetSafeHwnd()), ID_VIEW_RENDERSOUND, MF_BYCOMMAND | (m_pCamWnd->GetSoundMode()) ? MF_CHECKED : MF_UNCHECKED);
6737 Sys_UpdateWindows(W_CAMERA);
6741 void CMainFrame::OnSoundShowsoundvolumes()
6743 g_qeglobals.d_savedinfo.showSoundAlways ^= 1;
6744 if (g_qeglobals.d_savedinfo.showSoundAlways) {
6745 g_qeglobals.d_savedinfo.showSoundWhenSelected = false;
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);
6752 void CMainFrame::OnNurbEditor() {
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);
6761 if (OpenClipboard()) {
6765 clip = ::GlobalAlloc(GMEM_DDESHARE, temp.Length()+1);
6766 buff = (char*)::GlobalLock(clip);
6768 ::GlobalUnlock(clip);
6769 ::SetClipboardData(CF_TEXT, clip);
6777 void CMainFrame::OnSoundShowselectedsoundvolumes()
6779 g_qeglobals.d_savedinfo.showSoundWhenSelected ^= 1;
6780 if (g_qeglobals.d_savedinfo.showSoundWhenSelected) {
6781 g_qeglobals.d_savedinfo.showSoundAlways = false;
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);
6788 void CMainFrame::OnSelectAlltargets()
6790 Select_AllTargets();
6794 void CMainFrame::OnSelectCompleteEntity()
6799 b = selected_brushes.next;
6800 if ( b == &selected_brushes )
6802 return; //no brushes selected
6806 if ( b->owner == world_entity )
6808 return; //don't select the world entity
6811 for (b = e->brushes.onext; b != &e->brushes; b = b->onext)
6813 Select_Brush ( b , false );
6815 Sys_UpdateWindows ( W_ALL );
6821 //---------------------------------------------------------------------------
6822 // OnPrecisionCursorCycle
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 //---------------------------------------------------------------------------
6830 void CMainFrame::OnPrecisionCursorCycle()
6832 m_pActiveXY->CyclePrecisionCrosshairMode();
6835 void CMainFrame::OnGenerateMaterialsList()
6838 idStr mtrName,mtrFileName;
6841 g_Inspectors->consoleWnd.ExecuteCommand ( "clear" );
6843 common->Printf ( "Generating list of active materials...\n" );
6845 for ( brush_t* b = active_brushes.next ; b != &active_brushes ; b=b->next ) {
6847 mtrName = b->pPatch->d_texture->GetName();
6848 if ( !mtrList.Find( mtrName) ) {
6849 mtrList.Insert ( mtrName );
6854 for ( face_t* f = b->brush_faces ; f != NULL ; f=f->next)
6856 mtrName = f->d_texture->GetName();
6857 if ( !mtrList.Find( mtrName) ) {
6858 mtrList.Insert ( mtrName );
6866 for ( int i = 0 ; i < mtrList.Num() ; i++ ) {
6867 common->Printf ( "%s\n" , mtrList[i].c_str());
6870 mtrFileName = currentmap;
6871 // mtrFileName.ExtractFileName( mtrFileName );
6872 mtrFileName = mtrFileName.StripPath();
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()) );
6883 =======================================================================================================================
6884 =======================================================================================================================
6888 void CMainFrame::OnSplinesAddPoints() {
6889 g_Inspectors->entityDlg.AddCurvePoints();
6892 void CMainFrame::OnSplinesEditPoints() {
6893 g_Inspectors->entityDlg.EditCurvePoints();
6896 void CMainFrame::OnSplinesDeletePoint() {
6897 g_Inspectors->entityDlg.DeleteCurvePoint();
6900 void CMainFrame::OnSplinesInsertPoint() {
6901 g_Inspectors->entityDlg.InsertCurvePoint();