123
This commit is contained in:
668
Editor/IEditor.h
Normal file
668
Editor/IEditor.h
Normal file
@@ -0,0 +1,668 @@
|
||||
#if !defined(AFX_PLUGIN_H__434E7C19_6FG4425_599FA_86ECA760280C__INCLUDED_)
|
||||
#define AFX_PLUGIN_H__434E7C19_6FG4425_599FA_86ECA760280C__INCLUDED_
|
||||
|
||||
#if _MSC_VER > 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER > 1000
|
||||
|
||||
#ifdef PLUGIN_EXPORTS
|
||||
#define PLUGIN_API __declspec(dllexport)
|
||||
#else
|
||||
#define PLUGIN_API __declspec(dllimport)
|
||||
#endif
|
||||
|
||||
// forward declarations.
|
||||
class CBaseObject;
|
||||
class CCryEditDoc;
|
||||
class CSelectionGroup;
|
||||
class CEditTool;
|
||||
class CAnimationContext;
|
||||
class CGameEngine;
|
||||
class CIconManager;
|
||||
class CExternalToolsManager;
|
||||
class CClassFactory;
|
||||
class CEntityPrototypeManager;
|
||||
class CMaterialManager;
|
||||
class CMusicManager;
|
||||
class CMaterail;
|
||||
class CEntityPrototype;
|
||||
class CParticleManager;
|
||||
class CPrefabManager;
|
||||
class CErrorReport;
|
||||
class CBaseLibraryItem;
|
||||
class CBaseLibraryDialog;
|
||||
class CCommandManager;
|
||||
|
||||
#define SUPPORTED_MODEL_FILTER "Geometry Files (*.cgf)|*.cgf;*.ccgf;*.cga|All Files (*.*)|*.*||"
|
||||
#define SUPPORTED_IMAGES_FILTER "All Image Files|*.bmp;*.jpg;*.gif;*.pgm;*.raw|All files|*.*||"
|
||||
#define SUPPORTED_IMAGES_FILTER_SAVE "BMP Files|*.bmp|JPEG Files|*.jpg|PGM Files|*.pgm|RAW Files|*.raw|All files|*.*||"
|
||||
#define SUPPOTED_SOUND_FILTER "Sounds Files|*.wav;*.mp3|Wave Files (*.wav)|*.wav|MP3 Files (*.mp3)|*.mp3|All Files|*.*||"
|
||||
|
||||
// UI event handler
|
||||
struct IUIEvent
|
||||
{
|
||||
virtual void OnClick(DWORD dwId) = 0;
|
||||
virtual bool IsEnabled(DWORD dwId) = 0;
|
||||
virtual bool IsChecked(DWORD dwId) = 0;
|
||||
virtual const char * GetUIElementName(DWORD dwId) = 0;
|
||||
};
|
||||
|
||||
/** Add object that implements this interface to Load listeners of IEditor
|
||||
To recieve notifications when new document is loaded.
|
||||
*/
|
||||
struct IDocListener
|
||||
{
|
||||
/** Called after new level is created.
|
||||
*/
|
||||
virtual void OnNewDocument() = 0;
|
||||
/** Called after level have been loaded.
|
||||
*/
|
||||
virtual void OnLoadDocument() = 0;
|
||||
/** Called when document is being closed.
|
||||
*/
|
||||
virtual void OnCloseDocument() = 0;
|
||||
/** Called when mission changes.
|
||||
*/
|
||||
virtual void OnMissionChange() = 0;
|
||||
};
|
||||
|
||||
class CDialog;
|
||||
|
||||
#define ROLLUP_OBJECTS 0
|
||||
#define ROLLUP_TERRAIN 1
|
||||
#define ROLLUP_DISPLAY 2
|
||||
#define ROLLUP_LAYERS 3
|
||||
|
||||
//! Axis constrains value.
|
||||
enum AxisConstrains
|
||||
{
|
||||
AXIS_X = 1,
|
||||
AXIS_Y,
|
||||
AXIS_Z,
|
||||
AXIS_XY,
|
||||
AXIS_YZ,
|
||||
AXIS_XZ,
|
||||
//! Follow terrain constrain.
|
||||
AXIS_TERRAIN,
|
||||
};
|
||||
|
||||
//! Reference coordinate system values.
|
||||
enum RefCoordSys
|
||||
{
|
||||
COORDS_VIEW = 0,
|
||||
COORDS_LOCAL,
|
||||
COORDS_WORLD,
|
||||
};
|
||||
|
||||
// Insert locations for menu items
|
||||
enum eMenuInsertLocation
|
||||
{
|
||||
// Custom menu of the plugin
|
||||
eMenuPlugin,
|
||||
|
||||
// Pre-defined editor menus
|
||||
eMenuEdit,
|
||||
eMenuFile,
|
||||
eMenuInsert,
|
||||
eMenuGenerators,
|
||||
eMenuScript,
|
||||
eMenuView,
|
||||
eMenuHelp
|
||||
};
|
||||
|
||||
enum eEditMode
|
||||
{
|
||||
eEditModeSelect,
|
||||
eEditModeSelectArea,
|
||||
eEditModeMove,
|
||||
eEditModeRotate,
|
||||
eEditModeScale,
|
||||
eEditModeTool,
|
||||
};
|
||||
|
||||
//! Mouse events that viewport can send.
|
||||
enum EMouseEvent
|
||||
{
|
||||
eMouseMove,
|
||||
eMouseLDown,
|
||||
eMouseLUp,
|
||||
eMouseLDblClick,
|
||||
eMouseRDown,
|
||||
eMouseRUp,
|
||||
eMouseRDblClick,
|
||||
eMouseMDown,
|
||||
eMouseMUp,
|
||||
eMouseMDblClick,
|
||||
};
|
||||
|
||||
/** Viewports update flags.
|
||||
*/
|
||||
enum UpdateConentFlags
|
||||
{
|
||||
eUpdateHeightmap = 0x01,
|
||||
eUpdateStatObj = 0x02,
|
||||
eUpdateObjects = 0x04 //! Update objects in viewport.
|
||||
};
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
enum MouseCallbackFlags
|
||||
{
|
||||
MK_CALLBACK_FLAGS = 0x100
|
||||
};
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Ids of standart database libraries.
|
||||
enum EDataBaseLibraries
|
||||
{
|
||||
EDB_ARCHETYPE_LIBRARY = 0,
|
||||
EDB_PREFAB_LIBRARY = 1,
|
||||
EDB_MATERIAL_LIBRARY = 2,
|
||||
EDB_EFFECTS_LIBRARY = 3,
|
||||
EDB_MUSIC_LIBRARY = 4,
|
||||
};
|
||||
|
||||
//! Callback class passed to PickObject.
|
||||
struct IPickObjectCallback
|
||||
{
|
||||
//! Called when object picked.
|
||||
virtual void OnPick( CBaseObject *picked ) = 0;
|
||||
//! Called when pick mode cancelled.
|
||||
virtual void OnCancelPick() = 0;
|
||||
|
||||
//! Return true if specified object is pickable.
|
||||
virtual bool OnPickFilter( CBaseObject *filterObject ) { return true; };
|
||||
};
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
/*! Class provided by editor for various registration functions.
|
||||
*/
|
||||
struct CRegistrationContext
|
||||
{
|
||||
CCommandManager *pCommandManager;
|
||||
CClassFactory *pClassFactory;
|
||||
};
|
||||
|
||||
|
||||
// Interface to permit usage of editor functionality inside the plugin
|
||||
struct IEditor
|
||||
{
|
||||
virtual void DeleteThis() = 0;
|
||||
|
||||
//! Access to Editor ISystem interface.
|
||||
virtual ISystem* GetSystem() = 0;
|
||||
virtual IGame* GetGame() = 0;
|
||||
virtual I3DEngine* Get3DEngine() = 0;
|
||||
virtual IRenderer* GetRenderer() = 0;
|
||||
|
||||
//! Access to class factory.
|
||||
virtual CClassFactory* GetClassFactory() = 0;
|
||||
|
||||
//! Access to commands manager.
|
||||
virtual CCommandManager* GetCommandManager() = 0;
|
||||
|
||||
virtual void SetDocument( CCryEditDoc *pDoc ) = 0;
|
||||
//! Get active document
|
||||
virtual CCryEditDoc* GetDocument() = 0;
|
||||
//! Set document modified flag.
|
||||
virtual void SetModifiedFlag( bool modified = true ) = 0;
|
||||
//! Check if active document is modified.
|
||||
virtual bool IsModified() = 0;
|
||||
|
||||
//! Save current document.
|
||||
virtual bool SaveDocument() = 0;
|
||||
|
||||
// Write the passed string to the editors console
|
||||
virtual void WriteToConsole(const char * pszString) = 0;
|
||||
|
||||
//! Set value of console variable.
|
||||
virtual void SetConsoleVar( const char *var,float value ) = 0;
|
||||
|
||||
//! Get value of console variable.
|
||||
virtual float GetConsoleVar( const char *var ) = 0;
|
||||
|
||||
//! Shows or Hides console window.
|
||||
//! @return Previous visibility flag of console.
|
||||
virtual bool ShowConsole( bool show ) = 0;
|
||||
|
||||
// Change the message in the status bar
|
||||
virtual void SetStatusText(const char * pszString) = 0;
|
||||
|
||||
// Query main window of the editor
|
||||
virtual HWND GetEditorMainWnd() = 0;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Paths.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Returns the path of the editors Master CD folder
|
||||
virtual const char * GetMasterCDFolder() = 0;
|
||||
//! Extract from full path, path relative to MasterCD folder.
|
||||
virtual CString GetRelativePath( const CString &fullPath ) = 0;
|
||||
//! Get path to folder of current level.
|
||||
virtual CString GetLevelFolder() = 0;
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//! Execute application and get console output.
|
||||
virtual bool ExecuteConsoleApp( const CString &CommandLine, CString &OutputText ) = 0;
|
||||
|
||||
// Sets the document modified flag in the editor
|
||||
virtual void SetDataModified() = 0;
|
||||
|
||||
// Return the path of the document currently loaded into the editor
|
||||
virtual const char * GetEditorDocumentName() = 0;
|
||||
|
||||
//! Check if editor running in gaming mode.
|
||||
virtual bool IsInGameMode() = 0;
|
||||
//! Set game mode of editor.
|
||||
virtual void SetInGameMode( bool inGame ) = 0;
|
||||
|
||||
//! Return true if Editor runs in the testing mode.
|
||||
virtual bool IsInTestMode() = 0;
|
||||
|
||||
//! Return true if Editor runs in the preview mode.
|
||||
virtual bool IsInPreviewMode() = 0;
|
||||
|
||||
//! Enable/Disable updates of editor.
|
||||
virtual void EnableUpdate( bool enable ) = 0;
|
||||
|
||||
//! Enable/Disable accelerator table, (Enabled by default).
|
||||
virtual void EnableAcceleratos( bool bEnable ) = 0;
|
||||
|
||||
virtual Version GetFileVersion() = 0;
|
||||
virtual Version GetProductVersion() = 0;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Game Engine.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
/** Retrieve pointer to game engine instance.
|
||||
*/
|
||||
virtual CGameEngine* GetGameEngine() = 0;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
//! Display Settings.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
virtual class CDisplaySettings* GetDisplaySettings() = 0;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Object related methods.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
//! Create new object.
|
||||
virtual CBaseObject* NewObject( const CString &type,const CString &file="" ) = 0;
|
||||
//! Delete object.
|
||||
virtual void DeleteObject( CBaseObject *obj ) = 0;
|
||||
//! Clone object.
|
||||
virtual CBaseObject* CloneObject( CBaseObject *obj ) = 0;
|
||||
//! Starts creation of new object.
|
||||
virtual void StartObjectCreation( const CString &type,const CString &file="" ) = 0;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Objects selection
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
//! Get curent Selection group.
|
||||
virtual CSelectionGroup* GetSelection() = 0;
|
||||
virtual CBaseObject* GetSelectedObject() = 0;
|
||||
virtual int ClearSelection() = 0;
|
||||
//! Select object.
|
||||
virtual void SelectObject( CBaseObject *obj ) = 0;
|
||||
|
||||
//! Lock current objects selection.
|
||||
//! While selection locked, other objects cannot be selected or unselected.
|
||||
virtual void LockSelection( bool bLock ) = 0;
|
||||
//! Check if selection is curently locked.
|
||||
virtual bool IsSelectionLocked() = 0;
|
||||
|
||||
//! Get access to object manager.
|
||||
virtual struct IObjectManager* GetObjectManager() = 0;
|
||||
|
||||
//! Set pick object mode.
|
||||
//! When object picked callback will be called, with OnPick.
|
||||
//! If pick operation is canceled Cancel will be called.
|
||||
//! @param targetClass specifies objects of which class are supposed to be picked.
|
||||
//! @param Multipick if true pick tool will pick multiple object.
|
||||
virtual void PickObject( IPickObjectCallback *callback,CRuntimeClass *targetClass=0,const char *statusText=0,bool bMultipick=false ) = 0;
|
||||
//! Cancel current pick operation.
|
||||
virtual void CancelPick() = 0;
|
||||
//! Return true if editor now in object picking mode.
|
||||
virtual bool IsPicking() = 0;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Access to various DataBase managers.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
//! Get Entity prototype manager.
|
||||
virtual CEntityPrototypeManager* GetEntityProtManager() = 0;
|
||||
//! Get Manager of Materials.
|
||||
virtual CMaterialManager* GetMaterialManager() = 0;
|
||||
//! Returns IconManager.
|
||||
virtual CIconManager* GetIconManager() = 0;
|
||||
//! Returns Particle manager.
|
||||
virtual CParticleManager* GetParticleManager() = 0;
|
||||
//! Get Music Manager.
|
||||
virtual CMusicManager* GetMusicManager() = 0;
|
||||
//! Get Prefabs Manager.
|
||||
virtual CPrefabManager* GetPrefabManager() = 0;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Terrain related.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
virtual float GetTerrainElevation( float x,float y ) = 0;
|
||||
virtual class CHeightmap* GetHeightmap() = 0;
|
||||
virtual class CVegetationMap* GetVegetationMap() = 0;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// AI Related.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
virtual class CAIManager* GetAI() = 0;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Access to IMovieSystem.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
//! Movie system.
|
||||
virtual struct IMovieSystem* GetMovieSystem() = 0;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Access to CEquipPackLib.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
//! CEquipPackLib.
|
||||
virtual class CEquipPackLib* GetEquipPackLib() = 0;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Plugins related methods.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
//! Get access to plugin manager.
|
||||
virtual class CPluginManager* GetPluginManager() = 0;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Sound/EAX-Presets related methods.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
//! Get access to SoundPresets manager.
|
||||
virtual class CSoundPresetMgr* GetSoundPresetMgr() = 0;
|
||||
|
||||
//! Get access to EAXPresets manager.
|
||||
virtual class CEAXPresetMgr* GetEAXPresetMgr() = 0;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Views related methods.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
virtual class CViewManager* GetViewManager() = 0;
|
||||
|
||||
virtual class CViewport* GetActiveView() = 0;
|
||||
|
||||
//! Notify all views that data is changed.
|
||||
virtual void UpdateViews( int flags=0xFFFFFFFF,BBox *updateRegion=NULL ) = 0;
|
||||
virtual void ResetViews() = 0;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
//! Update information in track view dialog.
|
||||
virtual void UpdateTrackView( bool bOnlyKeys=false ) = 0;
|
||||
|
||||
//! Current position marker
|
||||
virtual Vec3d GetMarkerPosition() = 0;
|
||||
//! Set current position marker.
|
||||
virtual void SetMarkerPosition( const Vec3d &pos ) = 0;
|
||||
|
||||
//! Set current selected region.
|
||||
virtual void SetSelectedRegion( const BBox &box ) = 0;
|
||||
//! Get currently selected region.
|
||||
virtual void GetSelectedRegion( BBox &box ) = 0;
|
||||
|
||||
//! Moves current viewer position.
|
||||
// virtual void MoveViewer( const Vec3d &dir ) = 0;
|
||||
//! Set current viewer position.
|
||||
virtual void SetViewerPos( const Vec3d &pos ) = 0;
|
||||
//! Set current viewer direction angles.
|
||||
virtual void SetViewerAngles( const Vec3d &angles ) = 0;
|
||||
|
||||
virtual Vec3d GetViewerPos() = 0;
|
||||
//! Set current viewer direction angles.
|
||||
virtual Vec3d GetViewerAngles() = 0;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// UI creation function
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Needs to be called ONCE before anything else is inserted into the plugin menu.
|
||||
// Only supposed to be called inside of IPlugin::CreateUIElements()
|
||||
virtual bool CreateRootMenuItem(const char *pszName) = 0;
|
||||
|
||||
// Creates a new menu item in the specified parent menu. You need to call
|
||||
// CreateRootMenuItem() before you can use eMenuPlugin as eParent.
|
||||
// Only supposed to be called inside of IPlugin::CreateUIElements()
|
||||
virtual bool AddMenuItem(uint8 iId, bool bIsSeparator,
|
||||
eMenuInsertLocation eParent, IUIEvent *pIHandler) = 0;
|
||||
|
||||
// Select Current rollup bar.
|
||||
virtual int SelectRollUpBar( int rollupBarId ) = 0;
|
||||
|
||||
// Insert a new MFC CDialog based page into the roll up bar
|
||||
virtual int AddRollUpPage( int rollbarId,LPCTSTR pszCaption, CDialog *pwndTemplate=0,
|
||||
bool bAutoDestroyTpl = true, int iIndex = -1) = 0;
|
||||
|
||||
// Remove a dialog page from the roll up bar
|
||||
virtual void RemoveRollUpPage(int rollbarId,int iIndex) = 0;
|
||||
|
||||
// Expand one of the rollup pages
|
||||
virtual void ExpandRollUpPage(int rollbarId,int iIndex, BOOL bExpand = true) = 0;
|
||||
|
||||
// Enable or disable one of the rollup pages
|
||||
virtual void EnableRollUpPage(int rollbarId,int iIndex, BOOL bEnable = true) = 0;
|
||||
|
||||
// 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
|
||||
virtual HWND GetRollUpContainerWnd(int rollbarId) = 0;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
virtual void SetEditMode( int editMode ) = 0;
|
||||
virtual int GetEditMode() = 0;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Edit tools.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
//! Assign current edit tool, destroy previously used edit too.
|
||||
virtual void SetEditTool( CEditTool *tool ) = 0;
|
||||
//! Returns current edit tool.
|
||||
virtual CEditTool* GetEditTool() = 0;
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Transformation methods.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//! Set constrain on specified axis for objects construction and modifications.
|
||||
//! @param axis one of AxisConstrains enumerations.
|
||||
virtual void SetAxisConstrains( AxisConstrains axis ) = 0;
|
||||
//! Get axis constrain for objects construction and modifications.
|
||||
virtual AxisConstrains GetAxisConstrains() = 0;
|
||||
|
||||
//! If set, when axis terrain constrain is selected, snapping only to terrain.
|
||||
virtual void SetTerrainAxisIgnoreObjects( bool bIgnore ) = 0;
|
||||
virtual bool IsTerrainAxisIgnoreObjects() = 0;
|
||||
|
||||
//! Set current reference coordinate system used when constructing/modifing objects.
|
||||
virtual void SetReferenceCoordSys( RefCoordSys refCoords ) = 0;
|
||||
//! Get current reference coordinate system used when constructing/modifing objects.
|
||||
virtual RefCoordSys GetReferenceCoordSys() = 0;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// XmlTemplates
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
virtual XmlNodeRef FindTemplate( const CString &templateName ) = 0;
|
||||
virtual void AddTemplate( const CString &templateName,XmlNodeRef &tmpl ) = 0;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Standart Dialogs.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
//! Open database library and select specified item.
|
||||
//! If parameter is NULL current selection in material library does not change.
|
||||
virtual CBaseLibraryDialog* OpenDataBaseLibrary( EDataBaseLibraries dbLib,CBaseLibraryItem *pItem=NULL ) = 0;
|
||||
|
||||
//! Opens standart color selection dialog.
|
||||
//! Initialized with the color specified in color parameter.
|
||||
//! Returns true if selection is made and false if selection is canceled.
|
||||
virtual bool SelectColor( COLORREF &color,CWnd *parent=0 ) = 0;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Installed Shaders enumerations.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
//! Get shader enumerator.
|
||||
virtual class CShaderEnum* GetShaderEnum() = 0;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Undo
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
virtual class CUndoManager* GetUndoManager() = 0;
|
||||
|
||||
//! Begin opretaion requiering Undo.
|
||||
//! Undo manager enters holding state.
|
||||
virtual void BeginUndo() = 0;
|
||||
//! Restore all undo objects registered since last BeginUndo call.
|
||||
//! @param bUndo if true all Undo object registered since BeginUpdate call up to this point will be undone.
|
||||
virtual void RestoreUndo( bool undo=true ) = 0;
|
||||
//! Accept changes and registers an undo object with the undo manager.
|
||||
//! This will allow the user to undo the operation.
|
||||
virtual void AcceptUndo( const CString &name ) = 0;
|
||||
//! Cancel changes and restore undo objects.
|
||||
virtual void CancelUndo() = 0;
|
||||
|
||||
//! Normally this is NOT needed but in special cases this can be useful.
|
||||
//! This allows to group a set of Begin()/Accept() sequences to be undone in one operation.
|
||||
virtual void SuperBeginUndo() = 0;
|
||||
//! When a SuperBegin() used, this method is used to Accept.
|
||||
//! This leaves the undo database in its modified state and registers the IUndoObjects with the undo system.
|
||||
//! This will allow the user to undo the operation.
|
||||
virtual void SuperAcceptUndo( const CString &name ) = 0;
|
||||
//! Cancel changes and restore undo objects.
|
||||
virtual void SuperCancelUndo() = 0;
|
||||
|
||||
//! Suspend undo recording.
|
||||
virtual void SuspendUndo() = 0;
|
||||
//! Resume undo recording.
|
||||
virtual void ResumeUndo() = 0;
|
||||
// Undo last operation.
|
||||
virtual void Undo() = 0;
|
||||
//! Redo last undo.
|
||||
virtual void Redo() = 0;
|
||||
//! Check if undo information is recording now.
|
||||
virtual bool IsUndoRecording() = 0;
|
||||
//! Put new undo object, must be called between Begin and Accept/Cancel methods.
|
||||
virtual void RecordUndo( struct IUndoObject *obj ) = 0;
|
||||
//! Completly flush all Undo and redo buffers.
|
||||
//! Must be done on level reloads or global Fetch operation.
|
||||
virtual void FlushUndo() = 0;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Animation related.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
//! Retrieve current animation context.
|
||||
virtual CAnimationContext* GetAnimation() = 0;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Return External tools manager.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
//! Returns external tools manager.
|
||||
virtual CExternalToolsManager* GetExternalToolsManager() = 0;
|
||||
|
||||
//! Get global Error Report instance.
|
||||
virtual CErrorReport* GetErrorReport() = 0;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Listeners.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
//! Register document notifications listener.
|
||||
virtual void RegisterDocListener( IDocListener *listener ) = 0;
|
||||
//! Unregister document notifications listener.
|
||||
virtual void UnregisterDocListener( IDocListener *listener ) = 0;
|
||||
};
|
||||
|
||||
// Interface for instanciating the plugin from the editor
|
||||
struct IPlugin
|
||||
{
|
||||
virtual void Release() = 0;
|
||||
|
||||
//! Show a modal about dialog / message box for the plugin
|
||||
virtual void ShowAbout() = 0;
|
||||
|
||||
//! Return the GUID of the plugin
|
||||
virtual const char * GetPluginGUID() = 0;
|
||||
virtual DWORD GetPluginVersion() = 0;
|
||||
|
||||
//! Return the human readable name of the plugin
|
||||
virtual const char * GetPluginName() = 0;
|
||||
|
||||
//! Asks if the plugin can exit now. This might involve asking the user if he wants to save
|
||||
//! data. The plugin is only supposed to ask for unsaved data which is not serialize into
|
||||
//! the editor project file. When data is modified which is saved into the project file, the
|
||||
//! plugin should call IEditor::SetDataModified() to make the editor ask
|
||||
virtual bool CanExitNow() = 0;
|
||||
|
||||
//! The plugin should write / read its data to the passed stream. The data is saved to or loaded
|
||||
//! from the editor project file. This function is called during the usual save / load process of
|
||||
//! the editor's project file
|
||||
virtual void Serialize(FILE *hFile, bool bIsStoring) = 0;
|
||||
|
||||
//! Resets all content of the plugin, f.e. after the user created a new document
|
||||
virtual void ResetContent() = 0;
|
||||
|
||||
//! Create all user interface elements. Calls to IEditor's UI element creation functios are
|
||||
//! only valid during this function
|
||||
virtual bool CreateUIElements() = 0;
|
||||
|
||||
//! Give the plugin the opportunity to exoport all its data to the game. This function is
|
||||
//! guaranteed to be called after the editor has finished its own exporting process
|
||||
virtual bool ExportDataToGame(const char * pszGamePath) = 0;
|
||||
};
|
||||
|
||||
//! For use only inside editor executable.
|
||||
extern IEditor* GetIEditor();
|
||||
|
||||
//! Undo utility class.
|
||||
class CUndo
|
||||
{
|
||||
public:
|
||||
CUndo( const char *description )
|
||||
{
|
||||
GetIEditor()->BeginUndo();
|
||||
m_description = description;
|
||||
};
|
||||
~CUndo()
|
||||
{
|
||||
GetIEditor()->AcceptUndo(m_description);
|
||||
};
|
||||
|
||||
/** Check if undo is recording.
|
||||
*/
|
||||
static bool IsRecording() { return GetIEditor()->IsUndoRecording(); };
|
||||
/** Record specified object.
|
||||
*/
|
||||
static void Record( IUndoObject *undo ) { return GetIEditor()->RecordUndo( undo ); };
|
||||
private:
|
||||
CString m_description;
|
||||
};
|
||||
|
||||
/** CUndoSuspend is a utility undo class.
|
||||
Define instance of this class in block of code where you want to suspend undo operations.
|
||||
*/
|
||||
class CUndoSuspend
|
||||
{
|
||||
public:
|
||||
CUndoSuspend() { GetIEditor()->SuspendUndo(); };
|
||||
~CUndoSuspend() { GetIEditor()->ResumeUndo(); };
|
||||
};
|
||||
|
||||
// Initialization structure
|
||||
struct PLUGIN_INIT_PARAM
|
||||
{
|
||||
IEditor * pIEditorInterface;
|
||||
struct IGame * pIGameInterface;
|
||||
};
|
||||
|
||||
// Function pointer to be queried from the loaded DLL
|
||||
typedef IPlugin * (* pfnCreatePluginInstance) (PLUGIN_INIT_PARAM *pInitParam);
|
||||
|
||||
// Factory API
|
||||
extern "C"
|
||||
{
|
||||
PLUGIN_API IPlugin* CreatePluginInstance(PLUGIN_INIT_PARAM *pInitParam);
|
||||
}
|
||||
|
||||
#endif // AFX_PLUGIN_H__434E7C19_6FG4425_599FA_86ECA760280C__INCLUDED_
|
||||
Reference in New Issue
Block a user