IEditor.h 21 KB

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