mirror of
https://github.com/kevinbentley/Descent3.git
synced 2025-01-22 19:55:23 +00:00
a4ab78192c
Join the license header with historical comments using a separator so IDEs can correctly parse the initial header. Also use .gitattributes to ensure all files are LF.
370 lines
10 KiB
C++
370 lines
10 KiB
C++
/*
|
|
* Descent 3
|
|
* Copyright (C) 2024 Parallax Software
|
|
*
|
|
* This program 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.
|
|
*
|
|
* This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
--- HISTORICAL COMMENTS FOLLOW ---
|
|
|
|
* $Logfile: /DescentIII/Main/editor/editorView.h $
|
|
* $Revision: 1.1.1.1 $
|
|
* $Date: 2003-08-26 03:57:37 $
|
|
* $Author: kevinb $
|
|
*
|
|
* CEditorView containss GrWnds and other editor views.
|
|
*
|
|
* $Log: not supported by cvs2svn $
|
|
*
|
|
* 48 10/14/99 4:21p Matt
|
|
* Added code to remove duplicate faces from a room.
|
|
*
|
|
* 47 10/07/99 3:12p Matt
|
|
* Added a function to flip the view 180 degrees.
|
|
*
|
|
* 46 9/07/99 12:10p Matt
|
|
* Added a function to propagate a texture to all adjacent coplanar faces
|
|
* in a room.
|
|
*
|
|
* 45 8/24/99 4:24p Matt
|
|
* Added a function to rotate a placed room by 45 degrees.
|
|
*
|
|
* 44 5/08/99 6:39p Matt
|
|
* Added a function to delete a face and all faces connected to it.
|
|
*
|
|
* 43 4/30/99 6:52p Matt
|
|
* Added a function to merge an object's geometry into a room.
|
|
*
|
|
* 42 4/28/99 12:51a Matt
|
|
* Added some funtions to edit face geometry.
|
|
*
|
|
* 41 4/19/99 12:10a Matt
|
|
* Added a menu item to delete a vertex from a face.
|
|
*
|
|
* 40 4/06/99 10:23a Matt
|
|
*
|
|
* 39 3/31/99 12:58p Matt
|
|
* Added snap-point-to-face
|
|
*
|
|
* 38 3/29/99 6:46p Matt
|
|
* Added menu item to fix/remove degenerate faces
|
|
*
|
|
* 37 3/23/99 5:12p Matt
|
|
* Added function to combine rooms.
|
|
*
|
|
* 36 3/01/99 10:39p Matt
|
|
* Added menu options to set & clear room center points
|
|
*
|
|
* 35 2/28/99 6:32p Matt
|
|
* Disable z-buffer button if OpenGL is being used in the editor.
|
|
*
|
|
* 34 1/15/99 10:50a Matt
|
|
* Added rename room to Room menu & added shortcut key
|
|
*
|
|
* 33 12/23/98 10:53a Matt
|
|
* Added functions to create a face
|
|
*
|
|
* 32 10/03/98 11:22p Matt
|
|
* Added system to seperately control outline mode for mine, terrain, sky,
|
|
* & objects
|
|
*
|
|
* 31 10/03/98 8:31p Matt
|
|
* Added Join Rooms Exact function.
|
|
*
|
|
* 30 9/09/98 4:07p Matt
|
|
* Added Smooth Bridge function
|
|
*
|
|
* 29 9/08/98 6:12p Matt
|
|
* Added code to check for and fix duplicate and unused points.
|
|
*
|
|
* 28 9/08/98 12:06p Jason
|
|
* added ReInit openGL button
|
|
*
|
|
* 27 9/07/98 10:58p Matt
|
|
* Added snap point to point.
|
|
*
|
|
* 26 9/04/98 3:34p Matt
|
|
* Added groovy vertex snap code
|
|
*
|
|
* 25 6/25/98 7:15p Matt
|
|
* Added a function to delete a pair of portals.
|
|
*
|
|
* 24 6/08/98 12:28p Matt
|
|
* Added a function to triangulate a face
|
|
*
|
|
* 23 5/22/98 4:47p Matt
|
|
* Added menu item to propagate a texture to all the faces in a room.
|
|
*
|
|
* 22 4/27/98 6:41p Matt
|
|
* Added code to join all adjacent faces between two rooms
|
|
*
|
|
* 21 2/16/98 1:27p Matt
|
|
* Added function to snap the placed room to a vertex/edge on the base
|
|
* room/face
|
|
*
|
|
* 20 2/11/98 12:39p Matt
|
|
* Implemented Delete Face menu item.
|
|
*
|
|
* 19 1/29/98 2:15p Samir
|
|
* Implemented ObjectListModeless and Toolbar button.
|
|
*
|
|
* 18 1/27/98 6:15p Samir
|
|
* Added Object toolbar button.
|
|
*
|
|
* 17 1/20/98 4:08p Matt
|
|
* Added function to swap current and marked room:face. Added some
|
|
* addition error checking to bridge function.
|
|
*
|
|
* 16 11/05/97 7:13p Matt
|
|
* Added join rooms function
|
|
*
|
|
* 15 10/03/97 3:37p Matt
|
|
* Added menu item to place a building on the terrain
|
|
*
|
|
* 14 9/24/97 3:22p Matt
|
|
* Added Drop Room function
|
|
*
|
|
* 13 9/17/97 11:21a Matt
|
|
* Ripped out segment code
|
|
*
|
|
* 12 9/16/97 4:09p Jason
|
|
* implemented software zbuffer
|
|
*
|
|
* 11 9/14/97 11:07p Matt
|
|
* Fixed up Room menu
|
|
*
|
|
* 10 8/21/97 6:00p Matt
|
|
* Added delete current room function
|
|
*
|
|
* 9 8/19/97 5:58p Samir
|
|
* OLE additions
|
|
*
|
|
* 8 8/19/97 10:54a Matt
|
|
* Added remove placed room option
|
|
*
|
|
* 7 8/18/97 6:59p Matt
|
|
* Implemented Place Room/Attach room system
|
|
*
|
|
* 6 8/04/97 12:52p Matt
|
|
* Added hooks for mark & bridge
|
|
*
|
|
* 5 8/01/97 6:10p Matt
|
|
* Added hooks for attach room
|
|
*
|
|
* 4 7/28/97 11:29a Samir
|
|
* Fixed editor->game goofiness. Isolated GrWnd creation and destruction
|
|
* to a couple of functions.
|
|
*
|
|
* 3 7/22/97 10:33a Matt
|
|
* Added functions for new room menu
|
|
*
|
|
* 18 6/30/97 1:29p Jason
|
|
* added netherspace stuff
|
|
*
|
|
* 17 6/03/97 4:55p Mark
|
|
*
|
|
* 16 5/27/97 3:30p Matt
|
|
* Added editor button to toggle lighting
|
|
*
|
|
* 15 4/03/97 1:17p Matt
|
|
* Took out support for toolbar movement mode toggle button, now that that
|
|
* function has been moved to the object keypad.
|
|
*
|
|
* 14 4/02/97 8:07p Matt
|
|
* Added variable & button to toggle object move state
|
|
*
|
|
* 13 3/07/97 4:18p Jason
|
|
* implemented terrain functionality in the editor
|
|
*
|
|
* 12 2/28/97 6:37p Matt
|
|
* Added variable & toggle button for box selection mode
|
|
*
|
|
* 11 2/11/97 1:42p Samir
|
|
* Moved file opening and closing to editorDoc where it should be.
|
|
*
|
|
* 10 2/10/97 5:40p Matt
|
|
* Code to handle several File menu options
|
|
*
|
|
* 9 2/07/97 7:41p Matt
|
|
* Hooked in next & prev segment & side funcs
|
|
*
|
|
* 8 1/23/97 4:09p Samir
|
|
* Added stuff for toggling wireframe, texture windows, tiling or
|
|
* cascading
|
|
*
|
|
* 7 1/21/97 12:51p Samir
|
|
* GrWnds created based on D3EditState info
|
|
*
|
|
* $NoKeywords: $
|
|
*/
|
|
|
|
|
|
// editorView.h : interface of the CEditorView class
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef C_EDITORVIEW_H
|
|
#define C_EDITORVIEW_H
|
|
|
|
#include "WireframeGrWnd.h"
|
|
#include "TextureGrWnd.h"
|
|
|
|
|
|
class CEditorView : public CView
|
|
{
|
|
protected: // create from serialization only
|
|
CEditorView();
|
|
DECLARE_DYNCREATE(CEditorView)
|
|
|
|
// Attributes
|
|
public:
|
|
int SafetyCheck();
|
|
CEditorDoc* GetDocument();
|
|
|
|
// Operations
|
|
public:
|
|
void ActivateView();
|
|
void DeactivateView();
|
|
bool SetupPopup(CMenu *popup);
|
|
|
|
// Overrides
|
|
// ClassWizard generated virtual function overrides
|
|
//{{AFX_VIRTUAL(CEditorView)
|
|
public:
|
|
virtual void OnDraw(CDC* pDC); // overridden to draw this view
|
|
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
|
|
virtual void OnInitialUpdate();
|
|
protected:
|
|
virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
|
|
virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
|
|
virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);
|
|
virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
|
|
//}}AFX_VIRTUAL
|
|
|
|
// Implementation
|
|
public:
|
|
virtual ~CEditorView();
|
|
#ifdef _DEBUG
|
|
virtual void AssertValid() const;
|
|
virtual void Dump(CDumpContext& dc) const;
|
|
#endif
|
|
|
|
protected:
|
|
|
|
// Generated message map functions
|
|
protected:
|
|
//{{AFX_MSG(CEditorView)
|
|
afx_msg void OnSize(UINT nType, int cx, int cy);
|
|
afx_msg void OnDestroy();
|
|
afx_msg void OnButtonOutline();
|
|
afx_msg void OnUpdateButtonOutline(CCmdUI* pCmdUI);
|
|
afx_msg void OnUpdateViewTexturemine(CCmdUI* pCmdUI);
|
|
afx_msg void OnViewTexturemine();
|
|
afx_msg void OnUpdateViewWireframemine(CCmdUI* pCmdUI);
|
|
afx_msg void OnViewWireframemine();
|
|
afx_msg void OnParentNotify(UINT message, LPARAM lParam);
|
|
afx_msg void OnWindowTile();
|
|
afx_msg void OnWindowCascade();
|
|
afx_msg void OnButtonWindowSelection();
|
|
afx_msg void OnUpdateButtonWindowSelection(CCmdUI* pCmdUI);
|
|
afx_msg void OnButtonLighting();
|
|
afx_msg void OnUpdateButtonLighting(CCmdUI* pCmdUI);
|
|
afx_msg BOOL OnHelpInfo(HELPINFO* pHelpInfo);
|
|
afx_msg void OnRoomAdd();
|
|
afx_msg void OnRoomGrabTexture();
|
|
afx_msg void OnRoomNextFace();
|
|
afx_msg void OnRoomPreviousFace();
|
|
afx_msg void OnRoomSelectByNumber();
|
|
afx_msg void OnRoomAttachRoom();
|
|
afx_msg void OnRoomBuildBridge();
|
|
afx_msg void OnRoomMark();
|
|
afx_msg void OnRoomPlaceRoom();
|
|
afx_msg void OnUpdateRoomAttachRoom(CCmdUI* pCmdUI);
|
|
afx_msg void OnRoomUnPlaceRoom();
|
|
afx_msg void OnUpdateRoomUnPlaceRoom(CCmdUI* pCmdUI);
|
|
afx_msg void OnCancelEditSrvr();
|
|
afx_msg void OnRoomDelete();
|
|
afx_msg void OnRoomSelectFaceByNumber();
|
|
afx_msg void OnRoomSaveCurrentRoom();
|
|
afx_msg void OnZbutton();
|
|
afx_msg void OnUpdateZbutton(CCmdUI* pCmdUI);
|
|
afx_msg void OnRoomDropRoom();
|
|
afx_msg void OnRoomPlaceTerrainRoom();
|
|
afx_msg void OnRoomJoinRooms();
|
|
afx_msg void OnRoomSwapMarkedAndCurrentRoomFace();
|
|
afx_msg void OnRoomDeleteFace();
|
|
afx_msg void OnRoomSnapPlacedRoom();
|
|
afx_msg void OnUpdateRoomSnapPlacedRoom(CCmdUI* pCmdUI);
|
|
afx_msg void OnRoomJoinAdjacentFaces();
|
|
afx_msg void OnRoomPropagateToAll();
|
|
afx_msg void OnRoomSplitFace();
|
|
afx_msg void OnRoomDeletePortal();
|
|
afx_msg void OnRoomSnapPointToEdge();
|
|
afx_msg void OnRoomUndoSnap();
|
|
afx_msg void OnUpdateRoomUndoSnap(CCmdUI* pCmdUI);
|
|
afx_msg void OnRoomSnapPointToPoint();
|
|
afx_msg void OnReinitOpengl();
|
|
afx_msg void OnUpdateReinitOpengl(CCmdUI* pCmdUI);
|
|
afx_msg void OnFileRemoveExtraPoints();
|
|
afx_msg void OnRoomBuildSmoothBridge();
|
|
afx_msg void OnRoomJoinRoomsExact();
|
|
afx_msg void OnRoomStartNewFace();
|
|
afx_msg void OnRoomFinishNewFace();
|
|
afx_msg void OnRoomAddVertToNewFace();
|
|
afx_msg void OnRoomRenameRoom();
|
|
afx_msg void OnRoomSetCenterFromViewer();
|
|
afx_msg void OnRoomClearCenterPoint();
|
|
afx_msg void OnUpdateRoomClearCenterPoint(CCmdUI* pCmdUI);
|
|
afx_msg void OnUpdateRoomSetCenterFromViewer(CCmdUI* pCmdUI);
|
|
afx_msg void OnRoomCombine();
|
|
afx_msg void OnFileFixDegenerateFaces();
|
|
afx_msg void OnRoomSnapPointToFace();
|
|
afx_msg void OnRoomLinkToNewExternal();
|
|
afx_msg void OnRoomDeleteVert();
|
|
afx_msg void OnRoomFaceAddVertToEdge();
|
|
afx_msg void OnRoomFaceMoveVertOnEdge();
|
|
afx_msg void OnRoomFaceSplitFace();
|
|
afx_msg void OnRoomFaceDeleteVertOnEdge();
|
|
afx_msg void OnRoomMergeObjectIntoRoom();
|
|
afx_msg void OnRoomDeleteConnectedFaces();
|
|
afx_msg void OnRoomRotatePlacedRoom45Degrees();
|
|
afx_msg void OnRoomPropagateToAdjacentCoplanarFaces();
|
|
afx_msg void OnViewFlip();
|
|
afx_msg void OnFileRemoveDuplicateFacesFromCurrentRoom();
|
|
//}}AFX_MSG
|
|
DECLARE_MESSAGE_MAP()
|
|
|
|
// afx_msg void OnFileSave();
|
|
// afx_msg void OnFileSaveAs();
|
|
|
|
|
|
private:
|
|
CWireframeGrWnd m_grwndWireframe;
|
|
CTextureGrWnd m_grwndTexture;
|
|
|
|
BOOL m_grwndCreated;
|
|
BOOL m_grwndActive;
|
|
|
|
private:
|
|
void KillChildViews();
|
|
void CreateChildViews();
|
|
};
|
|
|
|
#ifndef _DEBUG // debug version in editorView.cpp
|
|
inline CEditorDoc* CEditorView::GetDocument()
|
|
{ return (CEditorDoc*)m_pDocument; }
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
#endif
|