AEEditor.h 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. // Copyright (c) 2014-2015, THUNDERBEAST GAMES LLC All rights reserved
  2. // Please see LICENSE.md in repository root for license information
  3. // https://github.com/AtomicGameEngine/AtomicGameEngine
  4. #pragma once
  5. #include <Atomic/Core/Object.h>
  6. #include "AETypes.h"
  7. using namespace Atomic;
  8. namespace Atomic
  9. {
  10. class Javascript;
  11. }
  12. namespace AtomicEditor
  13. {
  14. class Project;
  15. class MainFrame;
  16. class AEJavascript;
  17. class AEPlayer;
  18. class AEPreferences;
  19. class ResourceOps;
  20. #ifdef USE_SPIDERMONKEY
  21. class JSSpiderMonkeyVM;
  22. #endif
  23. class Editor : public Object
  24. {
  25. OBJECT(Editor);
  26. #ifdef USE_SPIDERMONKEY
  27. SharedPtr<JSSpiderMonkeyVM> spidermonkey_;
  28. #endif
  29. public:
  30. /// Construct.
  31. Editor(Context* context);
  32. /// Destruct.
  33. ~Editor();
  34. void LoadProject(const String& fullpath);
  35. void SaveProject();
  36. void CloseProject();
  37. bool IsProjectLoaded() { return project_.NotNull(); }
  38. void EditResource(const String& fullpath);
  39. MainFrame* GetMainFrame();
  40. Project* GetProject();
  41. AEJavascript* GetAEJavascript();
  42. AEPreferences* GetPreferences();
  43. void PostModalError(const String& title, const String& message);
  44. void PostModalInfo(const String& title, const String& message);
  45. bool IsPlayingProject() { return !player_.Null(); }
  46. void RequestPlatformChange(AEEditorPlatform platform);
  47. AEEditorPlatform GetCurrentPlatform() { return currentPlatform_; }
  48. /// Called from UI code such as MainFrame quit menu, caught in post update
  49. void RequestExit() { requestExit_ = true; }
  50. private:
  51. void HandlePostUpdate(StringHash eventType, VariantMap& eventData);
  52. void HandlePlayerError(StringHash eventType, VariantMap& eventData);
  53. void HandlePlayRequest(StringHash eventType, VariantMap& eventData);
  54. void HandlePlayStarted(StringHash eventType, VariantMap& eventData);
  55. void HandlePlayStop(StringHash eventType, VariantMap& eventData);
  56. void HandlePlayStopped(StringHash eventType, VariantMap& eventData);
  57. void HandleExitRequested(StringHash eventType, VariantMap& eventData);
  58. SharedPtr<AEPlayer> player_;
  59. SharedPtr<Project> project_;
  60. SharedPtr<MainFrame> mainframe_;
  61. SharedPtr<Javascript> javascript_;
  62. SharedPtr<AEJavascript> aejavascript_;
  63. SharedPtr<AEPreferences> aepreferences_;
  64. WeakPtr<ResourceOps> resourceCreator_;
  65. AEEditorPlatform currentPlatform_;
  66. bool requestExit_;
  67. };
  68. /// Register Javascript library objects.
  69. void RegisterEditorLibrary(Context* context);
  70. }