668 lines
23 KiB
C++
668 lines
23 KiB
C++
#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_
|