IEditor.h 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #pragma once
  9. #include <AzCore/PlatformDef.h>
  10. #ifdef PLUGIN_EXPORTS
  11. #define PLUGIN_API AZ_DLL_EXPORT
  12. #else
  13. #define PLUGIN_API AZ_DLL_IMPORT
  14. #endif
  15. #include <ISystem.h>
  16. #include "Include/SandboxAPI.h"
  17. #include "Util/UndoUtil.h"
  18. #include <CryVersion.h>
  19. #include <AzCore/Component/EntityId.h>
  20. #include <AzCore/Debug/Budget.h>
  21. class QMenu;
  22. struct CRuntimeClass;
  23. struct QtViewPane;
  24. class QMainWindow;
  25. struct QMetaObject;
  26. class CCryEditDoc;
  27. class CAnimationContext;
  28. class CTrackViewSequenceManager;
  29. class CGameEngine;
  30. class CToolBoxManager;
  31. class CMusicManager;
  32. struct IEditorParticleManager;
  33. class CEAXPresetManager;
  34. class CErrorReport;
  35. class ICommandManager;
  36. class CEditorCommandManager;
  37. class CConsoleSynchronization;
  38. class CDialog;
  39. #if defined(AZ_PLATFORM_WINDOWS)
  40. class C3DConnexionDriver;
  41. #endif
  42. class CSettingsManager;
  43. class CDisplaySettings;
  44. class CLevelIndependentFileMan;
  45. class CSelectionTreeManager;
  46. struct SEditorSettings;
  47. class IAWSResourceManager;
  48. struct ISystem;
  49. struct IRenderer;
  50. struct AABB;
  51. struct IErrorReport; // Vladimir@conffx
  52. struct IFileUtil; // Vladimir@conffx
  53. struct IEditorLog; // Vladimir@conffx
  54. struct IEditorParticleUtils; // Leroy@conffx
  55. // Qt
  56. class QWidget;
  57. class QMimeData;
  58. class QString;
  59. class QColor;
  60. class QPixmap;
  61. #if !AZ_TRAIT_OS_PLATFORM_APPLE && !defined(AZ_PLATFORM_LINUX)
  62. typedef void* HANDLE;
  63. struct HWND__;
  64. typedef HWND__* HWND;
  65. #endif
  66. namespace Editor
  67. {
  68. class EditorQtApplication;
  69. }
  70. // Global editor notify events.
  71. enum EEditorNotifyEvent
  72. {
  73. // Global events.
  74. eNotify_OnInit = 10, // Sent after editor fully initialized.
  75. eNotify_OnQuit, // Sent before editor quits.
  76. eNotify_OnIdleUpdate, // Sent every frame while editor is idle.
  77. // Document events.
  78. eNotify_OnBeginNewScene, // Sent when the document is begin to be cleared.
  79. eNotify_OnEndNewScene, // Sent after the document have been cleared.
  80. eNotify_OnBeginSceneOpen, // Sent when document is about to be opened.
  81. eNotify_OnEndSceneOpen, // Sent after document have been opened.
  82. eNotify_OnBeginSceneSave, // Sent when document is about to be saved.
  83. eNotify_OnEndSceneSave, // Sent after document have been saved.
  84. eNotify_OnBeginLayerExport, // Sent when a layer is about to be exported.
  85. eNotify_OnEndLayerExport, // Sent after a layer have been exported.
  86. eNotify_OnCloseScene, // Send when the document is about to close.
  87. eNotify_OnSceneClosed, // Send when the document is closed.
  88. eNotify_OnBeginLoad, // Sent when the document is start to load.
  89. eNotify_OnEndLoad, // Sent when the document loading is finished
  90. // Editing events.
  91. eNotify_OnEditModeChange, // Sent when editing mode change (move,rotate,scale,....)
  92. eNotify_OnEditToolChange, // Sent when edit tool is changed (ObjectMode,TerrainModify,....)
  93. // Game related events.
  94. eNotify_OnBeginGameMode, // Sent when editor goes to game mode.
  95. eNotify_OnEndGameMode, // Sent when editor goes out of game mode.
  96. // AI/Physics simulation related events.
  97. eNotify_OnBeginSimulationMode, // Sent when simulation mode is started.
  98. eNotify_OnEndSimulationMode, // Sent when editor goes out of simulation mode.
  99. // UI events.
  100. eNotify_OnUpdateViewports, // Sent when editor needs to update data in the viewports.
  101. eNotify_OnReloadTrackView, // Sent when editor needs to update the track view.
  102. eNotify_OnSplashScreenCreated, // Sent when the editor splash screen was created.
  103. eNotify_OnSplashScreenDestroyed, // Sent when the editor splash screen was destroyed.
  104. eNotify_OnInvalidateControls, // Sent when editor needs to update some of the data that can be cached by controls like combo boxes.
  105. eNotify_OnStyleChanged, // Sent when UI color theme was changed
  106. // Object events.
  107. eNotify_OnSelectionChange, // Sent when object selection change.
  108. eNotify_OnPlaySequence, // Sent when editor start playing animation sequence.
  109. eNotify_OnStopSequence, // Sent when editor stop playing animation sequence.
  110. // Task specific events.
  111. eNotify_OnDataBaseUpdate, // DataBase Library was modified.
  112. eNotify_OnLayerImportBegin, //layer import was started
  113. eNotify_OnLayerImportEnd, //layer import completed
  114. eNotify_OnBeginSWNewScene, // Sent when SW document is begin to be cleared.
  115. eNotify_OnEndSWNewScene, // Sent after SW document have been cleared.
  116. eNotify_OnBeginSWMoveTo, // moveto operation was started
  117. eNotify_OnEndSWMoveTo, // moveto operation completed
  118. eNotify_OnSWLockUnlock, // Sent when commit, rollback or getting lock from segmented world
  119. eNotify_OnSWVegetationStatusChange, // When changed segmented world status of vegetation map
  120. eNotify_OnBeginUndoRedo,
  121. eNotify_OnEndUndoRedo,
  122. eNotify_CameraChanged, // When the active viewport camera was changed
  123. eNotify_OnTextureLayerChange, // Sent when texture layer was added, removed or moved
  124. eNotify_OnSplatmapImport, // Sent when splatmaps get imported
  125. eNotify_OnParticleUpdate, // A particle effect was modified.
  126. eNotify_OnAddAWSProfile, // An AWS profile was added
  127. eNotify_OnSwitchAWSProfile, // The AWS profile was switched
  128. eNotify_OnSwitchAWSDeployment, // The AWS deployment was switched
  129. eNotify_OnFirstAWSUse, // This should only be emitted once
  130. eNotify_OnRefCoordSysChange,
  131. // Entity selection events.
  132. eNotify_OnEntitiesSelected,
  133. eNotify_OnEntitiesDeselected,
  134. // More document events - added here in case enum values matter to any event consumers, metrics reporters, etc.
  135. eNotify_OnBeginCreate, // Sent when the document is starting to be created.
  136. eNotify_OnEndCreate, // Sent when the document creation is finished.
  137. };
  138. // UI event handler
  139. struct IUIEvent
  140. {
  141. virtual void OnClick(DWORD dwId) = 0;
  142. virtual bool IsEnabled(DWORD dwId) = 0;
  143. virtual bool IsChecked(DWORD dwId) = 0;
  144. virtual const char* GetUIElementName(DWORD dwId) = 0;
  145. };
  146. //! Add object that implements this interface to Load listeners of IEditor
  147. //! To receive notifications when new document is loaded.
  148. struct IDocListener
  149. {
  150. virtual ~IDocListener() = default;
  151. //! Called after new level is created.
  152. virtual void OnNewDocument() = 0;
  153. //! Called after level have been loaded.
  154. virtual void OnLoadDocument() = 0;
  155. //! Called when document is being closed.
  156. virtual void OnCloseDocument() = 0;
  157. };
  158. //! Derive from this class if you want to register for getting global editor notifications.
  159. struct IEditorNotifyListener
  160. {
  161. bool m_bIsRegistered;
  162. IEditorNotifyListener()
  163. : m_bIsRegistered(false)
  164. {
  165. }
  166. virtual ~IEditorNotifyListener()
  167. {
  168. if (m_bIsRegistered)
  169. {
  170. CryFatalError("Destroying registered IEditorNotifyListener");
  171. }
  172. }
  173. //! called by the editor to notify the listener about the specified event.
  174. virtual void OnEditorNotifyEvent(EEditorNotifyEvent event) = 0;
  175. };
  176. //! Axis constrains value.
  177. enum AxisConstrains
  178. {
  179. AXIS_NONE = 0,
  180. AXIS_X,
  181. AXIS_Y,
  182. AXIS_Z,
  183. AXIS_XY,
  184. AXIS_YZ,
  185. AXIS_XZ,
  186. AXIS_XYZ,
  187. //! Follow terrain constrain
  188. AXIS_TERRAIN,
  189. };
  190. // Insert locations for menu items
  191. enum EMenuInsertLocation
  192. {
  193. // Custom menu of the plugin
  194. eMenuPlugin,
  195. // Predefined editor menus
  196. eMenuEdit,
  197. eMenuFile,
  198. eMenuInsert,
  199. eMenuGenerators,
  200. eMenuScript,
  201. eMenuView,
  202. eMenuHelp
  203. };
  204. //! Mouse events that viewport can send
  205. enum EMouseEvent
  206. {
  207. eMouseMove,
  208. eMouseLDown,
  209. eMouseLUp,
  210. eMouseLDblClick,
  211. eMouseRDown,
  212. eMouseRUp,
  213. eMouseRDblClick,
  214. eMouseMDown,
  215. eMouseMUp,
  216. eMouseMDblClick,
  217. eMouseWheel,
  218. eMouseLeave,
  219. };
  220. //! Viewports update flags
  221. enum UpdateConentFlags
  222. {
  223. eUpdateHeightmap = 0x01,
  224. eUpdateStatObj = 0x02,
  225. eUpdateObjects = 0x04, //! Update objects in viewport.
  226. eRedrawViewports = 0x08 //! Just redraw viewports..
  227. };
  228. enum MouseCallbackFlags
  229. {
  230. MK_CALLBACK_FLAGS = 0x100
  231. };
  232. enum EEditorPathName
  233. {
  234. EDITOR_PATH_OBJECTS,
  235. EDITOR_PATH_TEXTURES,
  236. EDITOR_PATH_SOUNDS,
  237. EDITOR_PATH_MATERIALS,
  238. EDITOR_PATH_UI_ICONS,
  239. EDITOR_PATH_LAST
  240. };
  241. enum EModifiedModule
  242. {
  243. eModifiedNothing = 0x0,
  244. eModifiedTerrain = BIT(0),
  245. eModifiedBrushes = BIT(1),
  246. eModifiedEntities = BIT(2),
  247. eModifiedAll = -1
  248. };
  249. //! Interface provided by editor to reach status bar functionality.
  250. struct IMainStatusBar
  251. {
  252. virtual void SetStatusText(const QString& text) = 0;
  253. virtual QWidget* SetItem(QString indicatorName, QString text, QString tip, int iconId) = 0;
  254. virtual QWidget* SetItem(QString indicatorName, QString text, QString tip, const QPixmap& icon) = 0;
  255. virtual QWidget* GetItem(QString indicatorName) = 0;
  256. };
  257. // forward declaration
  258. struct IAnimSequence;
  259. class CTrackViewSequence;
  260. //! Interface to expose TrackViewSequenceManager functionality to SequenceComponent
  261. struct ITrackViewSequenceManager
  262. {
  263. virtual IAnimSequence* OnCreateSequenceObject(QString name, bool isLegacySequence = true, AZ::EntityId entityId = AZ::EntityId()) = 0;
  264. //! Notifies of the delete of a sequence entity OR legacy sequence object
  265. //! @param entityId The Sequence Component Entity Id OR the legacy sequence object Id packed in the lower 32-bits, as returned from IAnimSequence::GetSequenceEntityId()
  266. virtual void OnDeleteSequenceEntity(const AZ::EntityId& entityId) = 0;
  267. //! Get the first sequence with the given name. They may be more than one sequence with this name.
  268. //! Only intended for use with scripting or other cases where a user provides a name.
  269. virtual CTrackViewSequence* GetSequenceByName(QString name) const = 0;
  270. //! Get the sequence with the given EntityId. For legacy support, legacy sequences can be found by giving
  271. //! the sequence ID in the lower 32 bits of the EntityId.
  272. virtual CTrackViewSequence* GetSequenceByEntityId(const AZ::EntityId& entityId) const = 0;
  273. virtual void OnCreateSequenceComponent(AZStd::intrusive_ptr<IAnimSequence>& sequence) = 0;
  274. virtual void OnSequenceActivated(const AZ::EntityId& entityId) = 0;
  275. };
  276. //! Interface to expose TrackViewSequence functionality to SequenceComponent
  277. struct ITrackViewSequence
  278. {
  279. virtual void Load() = 0;
  280. };
  281. //! Interface to permit usage of editor functionality inside the plugin
  282. struct IEditor
  283. {
  284. virtual void DeleteThis() = 0;
  285. //! Access to Editor ISystem interface.
  286. virtual ISystem* GetSystem() = 0;
  287. //! Access to commands manager.
  288. virtual CEditorCommandManager* GetCommandManager() = 0;
  289. virtual ICommandManager* GetICommandManager() = 0;
  290. // Executes an Editor command.
  291. virtual void ExecuteCommand(const char* sCommand, ...) = 0;
  292. virtual void ExecuteCommand(const QString& sCommand) = 0;
  293. virtual void SetDocument(CCryEditDoc* pDoc) = 0;
  294. //! Get active document
  295. virtual CCryEditDoc* GetDocument() const = 0;
  296. //! Check if there is a level loaded
  297. virtual bool IsLevelLoaded() const = 0;
  298. //! Set document modified flag.
  299. virtual void SetModifiedFlag(bool modified = true) = 0;
  300. virtual void SetModifiedModule(EModifiedModule eModifiedModule, bool boSet = true) = 0;
  301. virtual bool IsLevelExported() const = 0;
  302. virtual bool SetLevelExported(bool boExported = true) = 0;
  303. //! Check if active document is modified.
  304. virtual bool IsModified() = 0;
  305. //! Save current document.
  306. virtual bool SaveDocument() = 0;
  307. //! Legacy version of WriteToConsole; don't use.
  308. virtual void WriteToConsole(const char* string) = 0;
  309. //! Write the passed string to the editors console
  310. virtual void WriteToConsole(const QString& string) = 0;
  311. //! Set value of console variable.
  312. virtual void SetConsoleVar(const char* var, float value) = 0;
  313. //! Get value of console variable.
  314. virtual float GetConsoleVar(const char* var) = 0;
  315. //! Shows or Hides console window.
  316. //! @return Previous visibility flag of console.
  317. virtual bool ShowConsole(bool show) = 0;
  318. // Get Main window status bar
  319. virtual IMainStatusBar* GetMainStatusBar() = 0;
  320. //! Change the message in the status bar
  321. virtual void SetStatusText(const QString& pszString) = 0;
  322. //! Query main window of the editor
  323. virtual QMainWindow* GetEditorMainWindow() const = 0;
  324. //! Returns the path of the editors Primary CD folder
  325. virtual QString GetPrimaryCDFolder() = 0;
  326. //! Get current level name (name only)
  327. virtual QString GetLevelName() = 0;
  328. //! Get path to folder of current level (Absolute, contains slash)
  329. virtual QString GetLevelFolder() = 0;
  330. //! Get path to folder of current level (absolute)
  331. virtual QString GetLevelDataFolder() = 0;
  332. //! Get path to folder of current level.
  333. virtual QString GetSearchPath(EEditorPathName path) = 0;
  334. //! This folder is supposed to store Sandbox user settings and state
  335. virtual QString GetResolvedUserFolder() = 0;
  336. //! Execute application and get console output.
  337. virtual bool ExecuteConsoleApp(
  338. const QString& CommandLine,
  339. QString& OutputText,
  340. bool bNoTimeOut = false,
  341. bool bShowWindow = false) = 0;
  342. //! Sets the document modified flag in the editor
  343. virtual void SetDataModified() = 0;
  344. //! Tells if editor startup is finished
  345. virtual bool IsInitialized() const = 0;
  346. //! Check if editor running in gaming mode.
  347. virtual bool IsInGameMode() = 0;
  348. //! Check if editor running in AI/Physics mode.
  349. virtual bool IsInSimulationMode() = 0;
  350. //! Set game mode of editor.
  351. virtual void SetInGameMode(bool inGame) = 0;
  352. //! Return true if Editor runs in the testing mode.
  353. virtual bool IsInTestMode() = 0;
  354. //! Return true if Editor runs in the preview mode.
  355. virtual bool IsInPreviewMode() = 0;
  356. //! Return true if Editor runs in the console only mode.
  357. virtual bool IsInConsolewMode() = 0;
  358. //! return true if editor is running the level load tests mode.
  359. virtual bool IsInLevelLoadTestMode() = 0;
  360. //! Enable/Disable updates of editor.
  361. virtual void EnableUpdate(bool enable) = 0;
  362. virtual SFileVersion GetFileVersion() = 0;
  363. virtual SFileVersion GetProductVersion() = 0;
  364. //! Retrieve pointer to game engine instance
  365. virtual CGameEngine* GetGameEngine() = 0;
  366. virtual CDisplaySettings* GetDisplaySettings() = 0;
  367. //! Create new object
  368. virtual CSettingsManager* GetSettingsManager() = 0;
  369. //! Get Music Manager.
  370. virtual CMusicManager* GetMusicManager() = 0;
  371. virtual float GetTerrainElevation(float x, float y) = 0;
  372. virtual Editor::EditorQtApplication* GetEditorQtApplication() = 0;
  373. virtual const QColor& GetColorByName(const QString& name) = 0;
  374. virtual struct IMovieSystem* GetMovieSystem() = 0;
  375. virtual class CPluginManager* GetPluginManager() = 0;
  376. virtual class CViewManager* GetViewManager() = 0;
  377. virtual class CViewport* GetActiveView() = 0;
  378. virtual void SetActiveView(CViewport* viewport) = 0;
  379. virtual struct IEditorFileMonitor* GetFileMonitor() = 0;
  380. //////////////////////////////////////////////////////////////////////////
  381. // Access for CLevelIndependentFileMan
  382. // Manager can be used to register as an module that is asked before editor quits / loads level / creates level
  383. // This gives the module the change to save changes or cancel the process
  384. //////////////////////////////////////////////////////////////////////////
  385. virtual class CLevelIndependentFileMan* GetLevelIndependentFileMan() = 0;
  386. //! Notify all views that data is changed.
  387. virtual void UpdateViews(int flags = 0xFFFFFFFF, const AABB* updateRegion = nullptr) = 0;
  388. virtual void ResetViews() = 0;
  389. //! Update information in track view dialog.
  390. virtual void ReloadTrackView() = 0;
  391. //! Set constrain on specified axis for objects construction and modifications.
  392. //! @param axis one of AxisConstrains enumerations.
  393. virtual void SetAxisConstraints(AxisConstrains axis) = 0;
  394. //! Get axis constrain for objects construction and modifications.
  395. virtual AxisConstrains GetAxisConstrains() = 0;
  396. //! If set, when axis terrain constrain is selected, snapping only to terrain.
  397. virtual void SetTerrainAxisIgnoreObjects(bool bIgnore) = 0;
  398. virtual bool IsTerrainAxisIgnoreObjects() = 0;
  399. //! Get current reference coordinate system used when constructing/modifying objects.
  400. virtual XmlNodeRef FindTemplate(const QString& templateName) = 0;
  401. virtual void AddTemplate(const QString& templateName, XmlNodeRef& tmpl) = 0;
  402. virtual const QtViewPane* OpenView(QString sViewClassName, bool reuseOpen = true) = 0;
  403. virtual QWidget* FindView(QString viewClassName) = 0;
  404. virtual bool SetViewFocus(const char* sViewClassName) = 0;
  405. //! Opens standard color selection dialog.
  406. //! Initialized with the color specified in color parameter.
  407. //! Returns true if selection is made and false if selection is canceled.
  408. virtual bool SelectColor(QColor& color, QWidget* parent = 0) = 0;
  409. //! Get shader enumerator.
  410. virtual class CUndoManager* GetUndoManager() = 0;
  411. //! Begin operation requiring undo
  412. //! Undo manager enters holding state.
  413. virtual void BeginUndo() = 0;
  414. //! Restore all undo objects registered since last BeginUndo call.
  415. //! @param bUndo if true all Undo object registered since BeginUpdate call up to this point will be undone.
  416. virtual void RestoreUndo(bool undo = true) = 0;
  417. //! Accept changes and registers an undo object with the undo manager.
  418. //! This will allow the user to undo the operation.
  419. virtual void AcceptUndo(const QString& name) = 0;
  420. //! Cancel changes and restore undo objects.
  421. virtual void CancelUndo() = 0;
  422. //! Normally this is NOT needed but in special cases this can be useful.
  423. //! This allows to group a set of Begin()/Accept() sequences to be undone in one operation.
  424. virtual void SuperBeginUndo() = 0;
  425. //! When a SuperBegin() used, this method is used to Accept.
  426. //! This leaves the undo database in its modified state and registers the IUndoObjects with the undo system.
  427. //! This will allow the user to undo the operation.
  428. virtual void SuperAcceptUndo(const QString& name) = 0;
  429. //! Cancel changes and restore undo objects.
  430. virtual void SuperCancelUndo() = 0;
  431. //! Suspend undo recording.
  432. virtual void SuspendUndo() = 0;
  433. //! Resume undo recording.
  434. virtual void ResumeUndo() = 0;
  435. // Undo last operation.
  436. virtual void Undo() = 0;
  437. //! Redo last undo.
  438. virtual void Redo() = 0;
  439. //! Check if undo information is recording now.
  440. virtual bool IsUndoRecording() = 0;
  441. //! Check if undo information is suspzended now.
  442. virtual bool IsUndoSuspended() = 0;
  443. //! Put new undo object, must be called between Begin and Accept/Cancel methods.
  444. virtual void RecordUndo(struct IUndoObject* obj) = 0;
  445. //! Completely flush all Undo and redo buffers.
  446. //! Must be done on level reloads or global Fetch operation.
  447. virtual bool FlushUndo(bool isShowMessage = false) = 0;
  448. //! Clear the last N number of steps in the undo stack
  449. virtual bool ClearLastUndoSteps(int steps) = 0;
  450. //! Clear all current Redo steps in the undo stack
  451. virtual bool ClearRedoStack() = 0;
  452. //! Retrieve current animation context.
  453. virtual CAnimationContext* GetAnimation() = 0;
  454. //! Retrieve sequence manager
  455. virtual CTrackViewSequenceManager* GetSequenceManager() = 0;
  456. virtual ITrackViewSequenceManager* GetSequenceManagerInterface() = 0;
  457. //! Returns external tools manager.
  458. virtual CToolBoxManager* GetToolBoxManager() = 0;
  459. //! Get global Error Report instance.
  460. virtual IErrorReport* GetErrorReport() = 0;
  461. virtual IErrorReport* GetLastLoadedLevelErrorReport() = 0;
  462. virtual void StartLevelErrorReportRecording() = 0;
  463. virtual void CommitLevelErrorReport() = 0;
  464. // Retrieve interface to FileUtil
  465. virtual IFileUtil* GetFileUtil() = 0;
  466. // Notify all listeners about the specified event.
  467. virtual void Notify(EEditorNotifyEvent event) = 0;
  468. // Notify all listeners about the specified event, except for one.
  469. virtual void NotifyExcept(EEditorNotifyEvent event, IEditorNotifyListener* listener) = 0;
  470. //! Register Editor notifications listener.
  471. virtual void RegisterNotifyListener(IEditorNotifyListener* listener) = 0;
  472. //! Unregister Editor notifications listener.
  473. virtual void UnregisterNotifyListener(IEditorNotifyListener* listener) = 0;
  474. virtual void ReduceMemory() = 0;
  475. virtual ESystemConfigPlatform GetEditorConfigPlatform() const = 0;
  476. virtual void ReloadTemplates() = 0;
  477. virtual void ShowStatusText(bool bEnable) = 0;
  478. virtual SSystemGlobalEnvironment* GetEnv() = 0;
  479. virtual SEditorSettings* GetEditorSettings() = 0;
  480. // unload all plugins
  481. virtual void UnloadPlugins() = 0;
  482. // reloads the plugins
  483. virtual void LoadPlugins() = 0;
  484. };
  485. //! Callback used by editor when initializing for info in UI dialogs
  486. struct IInitializeUIInfo
  487. {
  488. virtual void SetInfoText(const char* text) = 0;
  489. };
  490. AZ_DECLARE_BUDGET(Editor);