123
This commit is contained in:
468
Editor/IEditorImpl.h
Normal file
468
Editor/IEditorImpl.h
Normal file
@@ -0,0 +1,468 @@
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Crytek Engine Source File.
|
||||
// Copyright (C), Crytek Studios, 2001.
|
||||
// -------------------------------------------------------------------------
|
||||
// File name: IEditorImpl.h
|
||||
// Version: v1.00
|
||||
// Created: 10/10/2001 by Timur.
|
||||
// Compilers: Visual C++ 6.0
|
||||
// Description: IEditor interface implementation.
|
||||
// -------------------------------------------------------------------------
|
||||
// History:
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef __IEditorImpl_h__
|
||||
#define __IEditorImpl_h__
|
||||
|
||||
#if _MSC_VER > 1000
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#include "IEditor.h"
|
||||
#include "MainFrm.h"
|
||||
|
||||
#define GET_PLUGIN_ID_FROM_MENU_ID(ID) (((ID) & 0x000000FF))
|
||||
#define GET_UI_ELEMENT_ID_FROM_MENU_ID(ID) ((((ID) & 0x0000FF00) >> 8))
|
||||
|
||||
class CObjectManager;
|
||||
class CUndoManager;
|
||||
class CGameEngine;
|
||||
class CEquipPackLib;
|
||||
class CSoundPresetMgr;
|
||||
class CEAXPresetMgr;
|
||||
|
||||
/*!
|
||||
* CEditorImpl implements IEditor interface.
|
||||
*/
|
||||
class CEditorImpl : public IEditor
|
||||
{
|
||||
public:
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
CEditorImpl();
|
||||
virtual ~CEditorImpl();
|
||||
|
||||
void SetGameEngine( CGameEngine *ge );
|
||||
|
||||
void DeleteThis() { delete this; };
|
||||
|
||||
CClassFactory* GetClassFactory();
|
||||
CCommandManager* GetCommandManager() { return m_pCommandManager; };
|
||||
|
||||
void SetDocument( CCryEditDoc *pDoc );
|
||||
//! Get active document
|
||||
CCryEditDoc* GetDocument();
|
||||
void SetModifiedFlag( bool modified = true );
|
||||
bool IsModified();
|
||||
bool SaveDocument();
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Generic
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
ISystem* GetSystem();
|
||||
IGame* GetGame();
|
||||
I3DEngine* Get3DEngine();
|
||||
IRenderer* GetRenderer();
|
||||
|
||||
|
||||
void WriteToConsole(const char * pszString) { CLogFile::WriteLine(pszString); };
|
||||
|
||||
// Change the message in the status bar
|
||||
void SetStatusText(const char * pszString)
|
||||
{
|
||||
if (AfxGetMainWnd())
|
||||
((CMainFrame *) (AfxGetMainWnd()))->SetStatusText(pszString);
|
||||
};
|
||||
|
||||
bool ShowConsole( bool show ) {
|
||||
if (AfxGetMainWnd())
|
||||
return ((CMainFrame *) (AfxGetMainWnd()))->ShowConsole(show);
|
||||
return false;
|
||||
}
|
||||
|
||||
void SetConsoleVar( const char *var,float value );
|
||||
float GetConsoleVar( const char *var );
|
||||
|
||||
// Query main window of the editor
|
||||
HWND GetEditorMainWnd()
|
||||
{
|
||||
if (AfxGetMainWnd())
|
||||
return AfxGetMainWnd()->m_hWnd;
|
||||
return 0;
|
||||
};
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Paths.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Returns the path of the editors Master CD folder
|
||||
const char * GetMasterCDFolder();
|
||||
CString GetRelativePath( const CString &fullPath );
|
||||
CString GetLevelFolder();
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
bool ExecuteConsoleApp( const CString &CommandLine, CString &OutputText );
|
||||
|
||||
//! Check if editor running in gaming mode.
|
||||
bool IsInGameMode();
|
||||
//! Set game mode of editor.
|
||||
void SetInGameMode( bool inGame );
|
||||
|
||||
bool IsInTestMode();
|
||||
|
||||
bool IsInPreviewMode();
|
||||
|
||||
//! Enables/Disable updates of editor.
|
||||
virtual void EnableUpdate( bool enable ) { m_bUpdates = enable; };
|
||||
|
||||
//! Enable/Disable accelerator table, (Enabled by default).
|
||||
virtual void EnableAcceleratos( bool bEnable );
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Game Engine.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
/** Retrieve pointer to game engine instance.
|
||||
*/
|
||||
CGameEngine* GetGameEngine() { return m_gameEngine; };
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
//! Display Settings.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
CDisplaySettings* GetDisplaySettings() { return m_displaySettings; };
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Objects management.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
CBaseObject* NewObject( const CString &typeName,const CString &file="" );
|
||||
void DeleteObject( CBaseObject *obj );
|
||||
CBaseObject* CloneObject( CBaseObject *obj );
|
||||
void StartObjectCreation( const CString &type,const CString &file="" );
|
||||
|
||||
IObjectManager* GetObjectManager();
|
||||
CSelectionGroup* GetSelection();
|
||||
int ClearSelection();
|
||||
CBaseObject* GetSelectedObject();
|
||||
void SelectObject( CBaseObject *obj );
|
||||
|
||||
void LockSelection( bool bLock );
|
||||
bool IsSelectionLocked();
|
||||
|
||||
void PickObject( IPickObjectCallback *callback,CRuntimeClass *targetClass=0,const char *statusText=0,bool bMultipick=false );
|
||||
void CancelPick();
|
||||
bool IsPicking();
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Get DataBase Managers.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
virtual CEntityPrototypeManager* GetEntityProtManager() { return m_entityManager; };
|
||||
virtual CMaterialManager* GetMaterialManager() { return m_materialManager; };
|
||||
virtual CParticleManager* GetParticleManager() { return m_particleManager; };
|
||||
virtual CMusicManager* GetMusicManager() { return m_pMusicManager; };
|
||||
virtual CPrefabManager* GetPrefabManager() { return m_pPrefabManager; };
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Icon manager.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
CIconManager* GetIconManager() { return m_iconManager; };
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Terrain related.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
float GetTerrainElevation( float x,float y );
|
||||
CHeightmap* GetHeightmap();
|
||||
CVegetationMap* GetVegetationMap();
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// AI
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
CAIManager* GetAI();
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Access to IMovieSystem.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
IMovieSystem* GetMovieSystem() {
|
||||
if (m_system)
|
||||
return m_system->GetIMovieSystem();
|
||||
return NULL; };
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// EquipPackLib
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
CEquipPackLib* GetEquipPackLib() { return m_pEquipPackLib; }
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Plugins
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
CPluginManager* GetPluginManager() { return m_pluginMan; };
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Sound/EAX-Presets
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
CSoundPresetMgr* GetSoundPresetMgr() { return m_pSoundPresetMgr; }
|
||||
CEAXPresetMgr* GetEAXPresetMgr() { return m_pEAXPresetMgr; }
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Views related methods.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
CViewManager* GetViewManager();
|
||||
|
||||
CViewport* GetActiveView();
|
||||
|
||||
void UpdateViews( int flags,BBox *updateRegion );
|
||||
void ResetViews();
|
||||
|
||||
void UpdateTrackView( bool bOnlyKeys=false );
|
||||
|
||||
// Current position marker
|
||||
Vec3d GetMarkerPosition() { return m_marker; };
|
||||
void SetMarkerPosition( const Vec3d &pos ) { m_marker = pos; };
|
||||
|
||||
void SetSelectedRegion( const BBox &box );
|
||||
void GetSelectedRegion( BBox &box );
|
||||
|
||||
// void MoveViewer( const Vec3d &dir );
|
||||
void SetViewerPos( const Vec3d &pos );
|
||||
void SetViewerAngles( const Vec3d &angles );
|
||||
Vec3d GetViewerPos();
|
||||
Vec3d GetViewerAngles();
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// UI Interface
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
bool AddMenuItem(uint8 iId, bool bIsSeparator, eMenuInsertLocation eParent, IUIEvent *pIHandler);
|
||||
bool AddToolbarItem(uint8 iId, IUIEvent *pIHandler);
|
||||
|
||||
bool CreateRootMenuItem(const char *pszName);
|
||||
|
||||
// Serializatation state
|
||||
void SetDataModified();
|
||||
|
||||
// Name of the current editor document
|
||||
const char * GetEditorDocumentName();
|
||||
|
||||
// Roll up bar interface
|
||||
|
||||
int SelectRollUpBar( int rollupBarId );
|
||||
|
||||
// Insert a new dialog page into the roll up bar
|
||||
int AddRollUpPage(int rollbarId,LPCTSTR pszCaption, class CDialog *pwndTemplate,
|
||||
bool bAutoDestroyTpl = true, int iIndex = -1);
|
||||
|
||||
// Remove a dialog page from the roll up bar
|
||||
void RemoveRollUpPage(int rollbarId,int iIndex);
|
||||
|
||||
// Expand one of the rollup pages
|
||||
void ExpandRollUpPage(int rollbarId,int iIndex, BOOL bExpand = true);
|
||||
|
||||
// Enable or disable one of the rollup pages
|
||||
void EnableRollUpPage(int rollbarId,int iIndex, BOOL bEnable = true);
|
||||
|
||||
// Get the window handle of the roll up page container. All CDialog classes
|
||||
// which are passed to InsertRollUpPage() need to have this handle as
|
||||
// the parent window
|
||||
HWND GetRollUpContainerWnd(int rollbarId);
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Editing modes.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
void SetEditMode( int editMode );
|
||||
int GetEditMode();
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Edit tools.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
virtual void SetEditTool( CEditTool *tool );
|
||||
//! Returns current edit tool.
|
||||
virtual CEditTool* GetEditTool();
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Transformation methods.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
void SetAxisConstrains( AxisConstrains axis );
|
||||
AxisConstrains GetAxisConstrains();
|
||||
|
||||
void SetTerrainAxisIgnoreObjects( bool bIgnore );
|
||||
bool IsTerrainAxisIgnoreObjects();
|
||||
|
||||
void SetReferenceCoordSys( RefCoordSys refCoords );
|
||||
RefCoordSys GetReferenceCoordSys();
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// XmlTemplates
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
XmlNodeRef FindTemplate( const CString &templateName );
|
||||
void AddTemplate( const CString &templateName,XmlNodeRef &tmpl );
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Standart Dialogs.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
CBaseLibraryDialog* OpenDataBaseLibrary( EDataBaseLibraries dbLib,CBaseLibraryItem *pItem=NULL );
|
||||
bool SelectColor( COLORREF &color,CWnd *parent=0 );
|
||||
|
||||
// Own methods.
|
||||
void Update();
|
||||
|
||||
Version GetFileVersion() { return m_fileVersion; };
|
||||
Version GetProductVersion() { return m_productVersion; };
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Installed Shaders enumerations.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
//! Get shader enumerator.
|
||||
virtual CShaderEnum* GetShaderEnum();
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Undo
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
virtual CUndoManager* GetUndoManager() { return m_undoManager; };
|
||||
//! Begin operataion requiering Undo.
|
||||
virtual void BeginUndo();
|
||||
virtual void RestoreUndo( bool undo );
|
||||
virtual void AcceptUndo( const CString &name );
|
||||
virtual void CancelUndo();
|
||||
virtual void SuperBeginUndo();
|
||||
virtual void SuperAcceptUndo( const CString &name );
|
||||
virtual void SuperCancelUndo();
|
||||
virtual void SuspendUndo();
|
||||
virtual void ResumeUndo();
|
||||
virtual void Undo();
|
||||
virtual void Redo();
|
||||
virtual bool IsUndoRecording();
|
||||
virtual void RecordUndo( IUndoObject *obj );
|
||||
virtual void FlushUndo();
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Animation related.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
//! Retrieve current animation context.
|
||||
CAnimationContext* GetAnimation();
|
||||
|
||||
CExternalToolsManager* GetExternalToolsManager() { return m_externalToolsManager; };
|
||||
|
||||
virtual CErrorReport* GetErrorReport() { return m_pErrorReport; }
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Listeners.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
//! Register document notifications listener.
|
||||
void RegisterDocListener( IDocListener *listener );
|
||||
//! Unregister document notifications listener.
|
||||
void UnregisterDocListener( IDocListener *listener );
|
||||
|
||||
protected:
|
||||
///int FindMenuItem(CMenu *pMenu, LPCTSTR pszMenuString);
|
||||
void DetectVersion();
|
||||
void RegisterTools();
|
||||
void SetMasterCDFolder();
|
||||
|
||||
CRollupCtrl *GetRollUpControl( int rollupId )
|
||||
{
|
||||
CMainFrame *wnd = (CMainFrame*)AfxGetMainWnd();
|
||||
if (wnd)
|
||||
return wnd->GetRollUpControl(rollupId);
|
||||
return 0;
|
||||
};
|
||||
|
||||
eEditMode m_currEditMode;
|
||||
eEditMode m_prevEditMode;
|
||||
|
||||
ISystem *m_system;
|
||||
|
||||
CClassFactory* m_classFactory;
|
||||
|
||||
//! Command manager.
|
||||
CCommandManager* m_pCommandManager;
|
||||
|
||||
//! Manager of objects.
|
||||
CObjectManager* m_objectMan;
|
||||
|
||||
//! Manager of plugins.
|
||||
CPluginManager* m_pluginMan;
|
||||
|
||||
//! Manager of viewport.
|
||||
CViewManager* m_viewMan;
|
||||
|
||||
CUndoManager* m_undoManager;
|
||||
|
||||
CSoundPresetMgr *m_pSoundPresetMgr;
|
||||
|
||||
CEAXPresetMgr *m_pEAXPresetMgr;
|
||||
|
||||
//! Current position marker.
|
||||
Vec3d m_marker;
|
||||
|
||||
//! Currently selected region.
|
||||
BBox m_selectedRegion;
|
||||
|
||||
//! Selected axis flags.
|
||||
AxisConstrains m_selectedAxis;
|
||||
RefCoordSys m_refCoordsSys;
|
||||
|
||||
// Axis constrains for all edit modes.
|
||||
AxisConstrains m_lastAxis[16];
|
||||
RefCoordSys m_lastCoordSys[16];
|
||||
|
||||
bool m_bUpdates;
|
||||
bool m_bTerrainAxisIgnoreObjects;
|
||||
|
||||
Vec3d m_viewerPos;
|
||||
Vec3d m_viewerAngles;
|
||||
|
||||
Version m_fileVersion;
|
||||
Version m_productVersion;
|
||||
|
||||
CXmlTemplateRegistry m_templateRegistry;
|
||||
|
||||
//! Current display settins.
|
||||
CDisplaySettings* m_displaySettings;
|
||||
|
||||
//! Current shader enumerator.
|
||||
CShaderEnum *m_shaderEnum;
|
||||
|
||||
//! Currently enabled Edit Tool.
|
||||
CEditTool* m_editTool;
|
||||
|
||||
class CIconManager *m_iconManager;
|
||||
|
||||
CString m_masterCDFolder;
|
||||
|
||||
//! True when selection is locked.
|
||||
bool m_bSelectionLocked;
|
||||
|
||||
CEditTool *m_pickTool;
|
||||
|
||||
CAIManager *m_AI;
|
||||
|
||||
CEquipPackLib *m_pEquipPackLib;
|
||||
|
||||
// IMovieSystem* m_movieSystem;
|
||||
|
||||
//! Pointer to game engine class.
|
||||
CGameEngine *m_gameEngine;
|
||||
|
||||
//! Animation context.
|
||||
CAnimationContext* m_animationContext;
|
||||
|
||||
//! External tools manager.
|
||||
CExternalToolsManager* m_externalToolsManager;
|
||||
|
||||
//! Entity prototype manager.
|
||||
CEntityPrototypeManager* m_entityManager;
|
||||
|
||||
//! Materials Manager.
|
||||
CMaterialManager* m_materialManager;
|
||||
|
||||
//! Particles manager.
|
||||
CParticleManager* m_particleManager;
|
||||
|
||||
//! Music Manager.
|
||||
CMusicManager* m_pMusicManager;
|
||||
|
||||
//! Prefabs Manager.
|
||||
CPrefabManager* m_pPrefabManager;
|
||||
|
||||
//! Global instance of error report class.
|
||||
CErrorReport *m_pErrorReport;
|
||||
};
|
||||
|
||||
#endif // __IEditorImpl_h__
|
||||
Reference in New Issue
Block a user