Files
DoomRTX/neo/engine/tools/radiant/MainFrm.h
T
2026-05-28 01:09:16 -07:00

681 lines
22 KiB
C++

/*
===========================================================================
IceTech GPL Source Code
Copyright (C) 2026 Justin Marshall
This file is part of the IceTech GPL Source Code (?IceTech Source Code?).
IceTech Source Code is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
IceTech Source Code is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with IceTech Source Code. If not, see <http://www.gnu.org/licenses/>.
In addition, the IceTech 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 IceTech Source Code. If not, please request a copy in writing from id Software at the address below.
If you have questions concerning this license or the applicable additional terms, you may contact in writing Justin Marshall, justinmarshall20@gmail.com
===========================================================================
*/
#if !defined(AFX_MAINFRM_H__330BBF0A_731C_11D1_B539_00AA00A410FC__INCLUDED_)
#define AFX_MAINFRM_H__330BBF0A_731C_11D1_B539_00AA00A410FC__INCLUDED_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
#include "XYWnd.h"
#include "NewTexWnd.h"
#include "ZWnd.h"
#include "CamWnd.h"
#include "TextureBar.h"
const int RAD_SHIFT = 0x01;
const int RAD_ALT = 0x02;
const int RAD_CONTROL = 0x04;
const int RAD_PRESS = 0x08;
struct SCommandInfo
{
char* m_strCommand;
unsigned int m_nKey;
unsigned int m_nModifiers;
unsigned int m_nCommand;
};
struct SKeyInfo
{
char* m_strName;
unsigned int m_nVKKey;
};
//=============================================================================
// CMainFrameLeftPaneWnd
//
// Left workspace stack:
// [ Camera ]
// [ splitter ]
// [ Inspector]
//
// The first layout pass uses a percentage instead of loading child window
// placement from radiant.ini / the registry. Dragging the splitter updates the
// percentage so the split remains proportional when the frame is resized.
//=============================================================================
class CMainFrameLeftPaneWnd : public CWnd
{
DECLARE_DYNAMIC(CMainFrameLeftPaneWnd)
public:
CMainFrameLeftPaneWnd();
virtual ~CMainFrameLeftPaneWnd();
BOOL Create(CWnd *pParent, UINT nID);
void SetEmbeddedWindows(CWnd *pCameraWnd, CWnd *pInspectorWnd);
void LayoutChildren();
void RecalcLayout();
protected:
CWnd *m_pCameraWnd;
CWnd *m_pInspectorWnd;
int m_nCameraPercent;
int m_nCameraHeight;
int m_nSplitterHeight;
bool m_bInLayout;
bool m_bTrackingSplitter;
int m_nDragStartY;
int m_nDragStartCameraHeight;
CRect m_rcSplitter;
void AttachChild(CWnd *pWnd);
bool IsWindowUsable(CWnd *pWnd) const;
int ClampCameraHeight(int cameraHeight, const CRect &client) const;
bool HitTestSplitter(const CPoint &point) const;
void DrawSplitter(CDC *pDC);
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg void OnPaint();
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg BOOL OnSetCursor(CWnd *pWnd, UINT nHitTest, UINT message);
afx_msg BOOL OnEraseBkgnd(CDC *pDC);
DECLARE_MESSAGE_MAP()
};
//=============================================================================
// CMainFrameLayoutWnd
//
// Main workspace split:
// [ Camera/Inspector stack ] [ splitter ] [ XYDock: XY tab | Game tab ]
//
// XYDock already owns the Z/XY splitter. This wrapper supplies the missing
// MainFrm-level split and gives startup proportions like the reference image.
//=============================================================================
class CMainFrameLayoutWnd : public CWnd
{
DECLARE_DYNAMIC(CMainFrameLayoutWnd)
public:
CMainFrameLayoutWnd();
virtual ~CMainFrameLayoutWnd();
BOOL Create(CWnd *pParent, UINT nID = AFX_IDW_PANE_FIRST);
void SetEmbeddedWindows(CWnd *pCameraWnd, CWnd *pInspectorWnd, CWnd *pXYDockWnd);
CWnd *GetLeftPaneWnd();
void LayoutChildren();
void RecalcLayout();
protected:
CMainFrameLeftPaneWnd m_wndLeftPane;
CWnd *m_pXYDockWnd;
int m_nLeftPercent;
int m_nLeftWidth;
int m_nSplitterWidth;
bool m_bInLayout;
bool m_bTrackingSplitter;
int m_nDragStartX;
int m_nDragStartLeftWidth;
CRect m_rcSplitter;
void AttachChild(CWnd *pWnd);
bool IsWindowUsable(CWnd *pWnd) const;
int ClampLeftWidth(int leftWidth, const CRect &client) const;
bool HitTestSplitter(const CPoint &point) const;
void DrawSplitter(CDC *pDC);
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg void OnPaint();
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg BOOL OnSetCursor(CWnd *pWnd, UINT nHitTest, UINT message);
afx_msg BOOL OnEraseBkgnd(CDC *pDC);
DECLARE_MESSAGE_MAP()
};
class CMainFrame : public CFrameWnd
{
DECLARE_DYNAMIC(CMainFrame)
public:
CMainFrame();
void HandleKey(UINT nChar, UINT nRepCnt, UINT nFlags, bool bDown = true)
{
if (bDown)
OnKeyDown(nChar, nRepCnt, nFlags);
else
OnKeyUp(nChar, nRepCnt, nFlags);
};
// Attributes
public:
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CMainFrame)
public:
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
virtual BOOL PreTranslateMessage(MSG* pMsg);
protected:
virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
virtual LRESULT DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam);
virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
virtual BOOL OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext);
//}}AFX_VIRTUAL
// Implementation
public:
void UpdatePatchToolbarButtons();
void NudgeSelection(int nDirection, float fAmount);
void UpdateTextureBar();
void SetButtonMenuStates();
void SetTexValStatus();
void SetGridStatus();
void RoutineProcessing();
CXYWnd* ActiveXY();
void UpdateWindows(int nBits);
void SetStatusText(int nPane, const char* pText);
void UpdateStatusText();
void SetWindowStyle(int nStyle);
bool GetNurbMode() {
return nurbMode;
}
idCurve_NURBS<idVec2> *GetNurb() {
return &nurb;
}
void OnPrecisionCursorCycle();
virtual ~CMainFrame();
CXYWnd* GetXYWnd() {return m_pXYWnd;};
CXYWnd* GetXZWnd() {return m_pXZWnd;};
CXYWnd* GetYZWnd() {return m_pYZWnd;};
CCamWnd* GetCamera() {return m_pCamWnd;};
CZWnd* GetZWnd() {return m_pZWnd;};
CXYDockWnd* GetXYDockWnd() { return m_pXYDockWnd; };
CMenu* GetMenu() const;
void RecalcMainLayout();
void RecalcXYDockLayout();
void AttachDoomWindowToGameTab();
bool IsDockedGameInputActive() const;
BOOL ForwardDockedGameKey(UINT message, WPARAM wParam, LPARAM lParam);
void ApplyActiveTabInputMode();
void SetActiveXY(CXYWnd* p)
{
if (m_pActiveXY)
m_pActiveXY->SetActive(false);
m_pActiveXY = p;
if (m_pActiveXY)
m_pActiveXY->SetActive(true);
};
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
protected: // control bar embedded members
CStatusBar m_wndStatusBar;
CToolBar m_wndToolBar;
//CTextureBar m_wndTextureBar;
CMainFrameLayoutWnd m_wndMainLayout;
CSplitterWnd m_wndSplit;
CSplitterWnd m_wndSplit2;
CSplitterWnd m_wndSplit3;
CXYWnd* m_pXYWnd;
CXYWnd* m_pYZWnd;
CXYWnd* m_pXZWnd;
CCamWnd* m_pCamWnd;
CZWnd* m_pZWnd;
CXYDockWnd* m_pXYDockWnd;
HMENU m_hMovedMenu;
CString m_strStatus[15];
CXYWnd* m_pActiveXY;
bool m_bCamPreview;
bool busy;
bool nurbMode;
idCurve_NURBS<idVec2> nurb;
// Generated message map functions
protected:
bool m_bDoLoop;
void CreateQEChildren();
BOOL CreateEmbeddedMainToolBar(UINT nID);
void MoveFrameMenuIntoXYWnd();
void RemoveDoomMenuItems(HMENU hMenu);
void RemoveDoomToolbarButton();
void LoadCommandMap();
void SaveCommandMap();
void ShowMenuItemKeyBindings(CMenu *pMenu);
void SetEntityCheck();
void SetGridChecks(int nID);
public:
void Nudge(int nDim, float fNudge);
void SetBusy(bool b) {
busy = b;
}
// these are public so i can easily reflect messages
// from child windows..
//{{AFX_MSG(CMainFrame)
afx_msg void OnBSPStatus(UINT wParam, long lParam);
afx_msg void OnBSPDone(UINT wParam, long lParam);
afx_msg void OnParentNotify(UINT message, LPARAM lParam);
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnTimer(UINT_PTR nIDEvent);
afx_msg void OnDestroy();
afx_msg void OnClose();
afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg void ToggleCamera();
afx_msg void OnFileClose();
afx_msg void OnFileExit();
afx_msg void OnFileLoadproject();
afx_msg void OnFileNew();
afx_msg void OnFileOpen();
afx_msg void OnFilePointfile();
afx_msg void OnFilePrint();
afx_msg void OnFilePrintPreview();
afx_msg void OnFileSave();
afx_msg void OnFileSaveas();
afx_msg void OnFileSaveCopy();
afx_msg void OnViewShowModels();
afx_msg void OnView100();
afx_msg void OnViewCenter();
afx_msg void OnViewConsole();
afx_msg void OnViewDownfloor();
afx_msg void OnViewEntity();
afx_msg void OnViewMediaBrowser();
afx_msg void OnViewFront();
afx_msg void OnViewShowblocks();
afx_msg void OnViewShowclip();
afx_msg void OnViewShowTriggers();
afx_msg void OnViewShowcoordinates();
afx_msg void OnViewShowent();
afx_msg void OnViewShowlights();
afx_msg void OnViewShownames();
afx_msg void OnViewShowpath();
afx_msg void OnViewShowCombatNodes();
afx_msg void OnViewShowwater();
afx_msg void OnViewShowworld();
afx_msg void OnViewTexture();
afx_msg void OnViewUpfloor();
afx_msg void OnViewXy();
afx_msg void OnViewZ100();
afx_msg void OnViewZoomin();
afx_msg void OnViewZoomout();
afx_msg void OnViewZzoomin();
afx_msg void OnViewZzoomout();
afx_msg void OnViewSide();
afx_msg void OnTexturesShowinuse();
afx_msg void OnTexturesInspector();
afx_msg void OnMiscFindbrush();
afx_msg void OnMiscGamma();
afx_msg void OnMiscNextleakspot();
afx_msg void OnMiscPreviousleakspot();
afx_msg void OnMiscPrintxy();
afx_msg void OnMiscSelectentitycolor();
afx_msg void OnMiscFindOrReplaceEntity();
afx_msg void OnMiscFindNextEntity();
afx_msg void OnMiscSetViewPos();
afx_msg void OnTexturebk();
afx_msg void OnColorsMajor();
afx_msg void OnColorsMinor();
afx_msg void OnColorsXybk();
afx_msg void OnBrush3sided();
afx_msg void OnBrush4sided();
afx_msg void OnBrush5sided();
afx_msg void OnBrush6sided();
afx_msg void OnBrush7sided();
afx_msg void OnBrush8sided();
afx_msg void OnBrush9sided();
afx_msg void OnBrushArbitrarysided();
afx_msg void OnBrushFlipx();
afx_msg void OnBrushFlipy();
afx_msg void OnBrushFlipz();
afx_msg void OnBrushRotatex();
afx_msg void OnBrushRotatey();
afx_msg void OnBrushRotatez();
afx_msg void OnRegionOff();
afx_msg void OnRegionSetbrush();
afx_msg void OnRegionSetselection();
afx_msg void OnRegionSettallbrush();
afx_msg void OnRegionSetxy();
afx_msg void OnSelectionArbitraryrotation();
afx_msg void OnSelectionClone();
afx_msg void OnSelectionConnect();
afx_msg void OnSelectionCsgsubtract();
afx_msg void OnSelectionCsgmerge();
afx_msg void OnSelectionDelete();
afx_msg void OnSelectionDeselect();
afx_msg void OnSelectionDragedges();
afx_msg void OnSelectionDragvertecies();
afx_msg void OnSelectionCenterOrigin();
afx_msg void OnSelectionMakehollow();
afx_msg void OnSelectionSelectcompletetall();
afx_msg void OnSelectionSelectinside();
afx_msg void OnSelectionSelectpartialtall();
afx_msg void OnSelectionSelecttouching();
afx_msg void OnSelectionUngroupentity();
afx_msg void OnSelectionWireFrameOn();
afx_msg void OnSelectionWireFrameOff();
afx_msg void OnSelectionVisibleOn();
afx_msg void OnSelectionVisibleOff();
afx_msg void OnAutocaulk();
afx_msg void OnUpdateAutocaulk(CCmdUI* pCmdUI);
afx_msg void OnTexturesPopup();
afx_msg void OnSplinesPopup();
afx_msg void OnSplinesEditPoints();
afx_msg void OnSplinesAddPoints();
afx_msg void OnSplinesDeletePoint();
afx_msg void OnSplinesInsertPoint();
afx_msg void OnPopupSelection();
afx_msg void OnViewChange();
afx_msg void OnViewCameraupdate();
afx_msg void OnUpdateViewCameraupdate(CCmdUI* pCmdUI);
afx_msg void OnSizing(UINT fwSide, LPRECT pRect);
afx_msg void OnHelpAbout();
afx_msg void OnViewClipper();
afx_msg void OnCameraAngledown();
afx_msg void OnCameraAngleup();
afx_msg void OnCameraBack();
afx_msg void OnCameraDown();
afx_msg void OnCameraForward();
afx_msg void OnCameraLeft();
afx_msg void OnCameraRight();
afx_msg void OnCameraStrafeleft();
afx_msg void OnCameraStraferight();
afx_msg void OnCameraUp();
afx_msg void OnGridToggle();
afx_msg void OnPrefs();
afx_msg void OnToggleToolbar();
afx_msg void OnToggleTextureBar();
afx_msg void OnTogglecamera();
afx_msg void OnToggleview();
afx_msg void OnTogglez();
afx_msg void OnToggleLock();
afx_msg void OnEditMapinfo();
afx_msg void OnEditEntityinfo();
afx_msg void OnViewNextview();
afx_msg void OnHelpCommandlist();
afx_msg void OnFileNewproject();
afx_msg void OnFlipClip();
afx_msg void OnClipSelected();
afx_msg void OnSplitSelected();
afx_msg void OnToggleviewXz();
afx_msg void OnToggleviewYz();
afx_msg void OnColorsBrush();
afx_msg void OnColorsClipper();
afx_msg void OnColorsGridtext();
afx_msg void OnColorsSelectedbrush();
afx_msg void OnColorsGridblock();
afx_msg void OnColorsViewname();
afx_msg void OnColorSetoriginal();
afx_msg void OnColorSetqer();
afx_msg void OnColorSetblack();
afx_msg void OnColorSetSuperMal();
afx_msg void OnColorSetMax();
afx_msg void OnSnaptogrid();
afx_msg void OnSelectScale();
afx_msg void OnSelectMouserotate();
afx_msg void OnEditCopybrush();
afx_msg void OnEditPastebrush();
afx_msg void OnEditUndo();
afx_msg void OnEditRedo();
afx_msg void OnUpdateEditUndo(CCmdUI* pCmdUI);
afx_msg void OnUpdateEditRedo(CCmdUI* pCmdUI);
afx_msg void OnSelectionInvert();
afx_msg void OnSelectionTextureDec();
afx_msg void OnSelectionTextureFit();
afx_msg void OnSelectionTextureInc();
afx_msg void OnSelectionTextureRotateclock();
afx_msg void OnSelectionTextureRotatecounter();
afx_msg void OnSelectionTextureScaledown();
afx_msg void OnSelectionTextureScaleup();
afx_msg void OnSelectionTextureShiftdown();
afx_msg void OnSelectionTextureShiftleft();
afx_msg void OnSelectionTextureShiftright();
afx_msg void OnSelectionTextureShiftup();
afx_msg void OnGridNext();
afx_msg void OnGridPrev();
afx_msg void OnSelectionTextureScaleLeft();
afx_msg void OnSelectionTextureScaleRight();
afx_msg void OnTextureReplaceall();
afx_msg void OnScalelockx();
afx_msg void OnScalelocky();
afx_msg void OnScalelockz();
afx_msg void OnSelectMousescale();
afx_msg void OnViewCubicclipping();
afx_msg void OnFileImport();
afx_msg void OnFileProjectsettings();
afx_msg void OnUpdateFileImport(CCmdUI* pCmdUI);
afx_msg void OnViewCubein();
afx_msg void OnViewCubeout();
afx_msg void OnFileSaveregion();
afx_msg void OnUpdateFileSaveregion(CCmdUI* pCmdUI);
afx_msg void OnSelectionMovedown();
afx_msg void OnSelectionMoveup();
afx_msg void OnToolbarMain();
afx_msg void OnToolbarTexture();
afx_msg void OnSelectionPrint();
afx_msg void OnSelectionTogglesizepaint();
afx_msg void OnBrushMakecone();
afx_msg void OnTexturesLoad();
afx_msg void OnToggleRotatelock();
afx_msg void OnCurveBevel();
afx_msg void OnCurveIncreaseVert();
afx_msg void OnCurveDecreaseVert();
afx_msg void OnCurveIncreaseHorz();
afx_msg void OnCurveDecreaseHorz();
afx_msg void OnCurveCylinder();
afx_msg void OnCurveEighthsphere();
afx_msg void OnCurveEndcap();
afx_msg void OnCurveHemisphere();
afx_msg void OnCurveInvertcurve();
afx_msg void OnCurveQuarter();
afx_msg void OnCurveSphere();
afx_msg void OnFileImportmap();
afx_msg void OnFileExportmap();
afx_msg void OnEditLoadprefab();
afx_msg void OnViewShowcurves();
afx_msg void OnSelectionSelectNudgedown();
afx_msg void OnSelectionSelectNudgeleft();
afx_msg void OnSelectionSelectNudgeright();
afx_msg void OnSelectionSelectNudgeup();
afx_msg void OnSysKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
afx_msg void OnTexturesLoadlist();
afx_msg void OnDontselectcurve();
afx_msg void OnDynamicLighting();
afx_msg void OnCurveSimplepatchmesh();
afx_msg void OnPatchToggleBox();
afx_msg void OnPatchWireframe();
afx_msg void OnCurvePatchcone();
afx_msg void OnCurvePatchtube();
afx_msg void OnPatchWeld();
afx_msg void OnCurvePatchbevel();
afx_msg void OnCurvePatchendcap();
afx_msg void OnCurvePatchinvertedbevel();
afx_msg void OnCurvePatchinvertedendcap();
afx_msg void OnPatchDrilldown();
afx_msg void OnCurveInsertcolumn();
afx_msg void OnCurveInsertrow();
afx_msg void OnCurveDeletecolumn();
afx_msg void OnCurveDeleterow();
afx_msg void OnCurveInsertAddcolumn();
afx_msg void OnCurveInsertAddrow();
afx_msg void OnCurveInsertInsertcolumn();
afx_msg void OnCurveInsertInsertrow();
afx_msg void OnCurveNegative();
afx_msg void OnCurveNegativeTextureX();
afx_msg void OnCurveNegativeTextureY();
afx_msg void OnCurveDeleteFirstcolumn();
afx_msg void OnCurveDeleteFirstrow();
afx_msg void OnCurveDeleteLastcolumn();
afx_msg void OnCurveDeleteLastrow();
afx_msg void OnPatchBend();
afx_msg void OnPatchInsdel();
afx_msg void OnPatchEnter();
afx_msg void OnPatchTab();
afx_msg void OnCurvePatchdensetube();
afx_msg void OnCurvePatchverydensetube();
afx_msg void OnCurveCap();
afx_msg void OnCurveCapInvertedbevel();
afx_msg void OnCurveCapInvertedendcap();
afx_msg void OnCurveRedisperseCols();
afx_msg void OnCurveRedisperseRows();
afx_msg void OnPatchNaturalize();
afx_msg void OnPatchNaturalizeAlt();
afx_msg void OnSnapToGrid();
afx_msg void OnCurvePatchsquare();
afx_msg void OnTexturesTexturewindowscale10();
afx_msg void OnTexturesTexturewindowscale100();
afx_msg void OnTexturesTexturewindowscale200();
afx_msg void OnTexturesTexturewindowscale25();
afx_msg void OnTexturesTexturewindowscale50();
afx_msg void OnTexturesFlush();
afx_msg void OnCurveOverlayClear();
afx_msg void OnCurveOverlaySet();
afx_msg void OnCurveThicken();
afx_msg void OnCurveCyclecap();
afx_msg void OnCurveCyclecapAlt();
afx_msg void OnCurveMatrixTranspose();
afx_msg void OnTexturesReloadshaders();
afx_msg void OnShowEntities();
afx_msg void OnViewEntitiesasBoundingbox();
afx_msg void OnViewEntitiesasSelectedskinned();
afx_msg void OnViewEntitiesasSelectedwireframe();
afx_msg void OnViewEntitiesasSkinned();
afx_msg void OnViewEntitiesasSkinnedandboxed();
afx_msg void OnViewEntitiesasWireframe();
afx_msg void OnViewShowhint();
afx_msg void OnUpdateTexturesShowinuse(CCmdUI* pCmdUI);
afx_msg void OnTexturesShowall();
afx_msg void OnTexturesHideall();
afx_msg void OnPatchInspector();
afx_msg void OnViewOpengllighting();
afx_msg void OnSelectAll();
afx_msg void OnViewShowcaulk();
afx_msg void OnCurveFreeze();
afx_msg void OnCurveUnFreeze();
afx_msg void OnCurveUnFreezeAll();
afx_msg void OnSelectReselect();
afx_msg void OnViewShowangles();
afx_msg void OnEditSaveprefab();
afx_msg void OnCurveMoreendcapsbevelsSquarebevel();
afx_msg void OnCurveMoreendcapsbevelsSquareendcap();
afx_msg void OnBrushPrimitivesSphere();
afx_msg void OnViewCrosshair();
afx_msg void OnViewHideshowHideselected();
afx_msg void OnViewHideshowHideNotselected();
afx_msg void OnViewHideshowShowhidden();
afx_msg void OnTexturesShadersShow();
afx_msg void OnTexturesFlushUnused();
afx_msg void OnViewGroups();
afx_msg void OnDropGroupAddtoWorld();
afx_msg void OnDropGroupName();
afx_msg void OnDropGroupNewgroup();
afx_msg void OnDropGroupRemove();
afx_msg void OnProjectedLight();
afx_msg void OnShowLighttextures();
afx_msg void OnShowLightvolumes();
afx_msg void OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized);
afx_msg void OnSplinesMode();
afx_msg void OnSplinesLoad();
afx_msg void OnSplinesSave();
afx_msg void OnSplinesEdit();
afx_msg void OnSplineTest();
afx_msg void OnSplinesTarget();
afx_msg void OnSplinesTargetPoints();
afx_msg void OnSplinesCameraPoints();
afx_msg void OnPopupNewcameraInterpolated();
afx_msg void OnPopupNewcameraSpline();
afx_msg void OnPopupNewcameraFixed();
afx_msg void OnSelectionMoveonly();
afx_msg void OnSelectBrushesOnly();
afx_msg void OnSelectByBoundingBrush();
afx_msg void OnSelectBrushlight();
afx_msg void OnSelectionCombine();
afx_msg void OnPatchCombine();
afx_msg void OnShowDoom();
afx_msg void OnViewRendermode();
afx_msg void OnViewRebuildrenderdata();
afx_msg void OnViewRealtimerebuild();
afx_msg void OnViewRenderentityoutlines();
afx_msg void OnViewMaterialanimation();
afx_msg void OnAxialTextureByWidth();
afx_msg void OnAxialTextureByHeight();
afx_msg void OnAxialTextureArbitrary();
afx_msg void OnSelectionExportToobj();
afx_msg void OnSelectionExportToCM();
afx_msg void OnViewRenderselection();
afx_msg void OnSelectNomodels();
afx_msg void OnViewShowShowvisportals();
afx_msg void OnViewShowNoDraw();
afx_msg void OnViewRendersound();
afx_msg void OnSoundShowsoundvolumes();
afx_msg void OnSoundShowselectedsoundvolumes();
afx_msg void OnNurbEditor();
afx_msg void OnSelectCompleteEntity();
afx_msg void OnGenerateMaterialsList();
afx_msg void OnToolsAutomaticCityBuilder();
afx_msg void OnMru(unsigned int nID);
afx_msg void OnViewNearest(unsigned int nID);
afx_msg void OnTextureWad(unsigned int nID);
afx_msg void OnBspCommand(unsigned int nID);
afx_msg void OnGrid1(unsigned int nID);
afx_msg void OnDisplayChange(WPARAM wp, LPARAM lp);
afx_msg void OnSelectAlltargets();
//}}AFX_MSG
void CheckTextureScale(int id);
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_MAINFRM_H__330BBF0A_731C_11D1_B539_00AA00A410FC__INCLUDED_)