SceneEditor3D.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. //
  2. // Copyright (c) 2014-2015, THUNDERBEAST GAMES LLC All rights reserved
  3. // LICENSE: Atomic Game Engine Editor and Tools EULA
  4. // Please see LICENSE_ATOMIC_EDITOR_AND_TOOLS.md in repository root for
  5. // license information: https://github.com/AtomicGameEngine/AtomicGameEngine
  6. //
  7. #pragma once
  8. #include <TurboBadger/tb_widgets_common.h>
  9. #include "../ResourceEditor.h"
  10. #include "SceneView3D.h"
  11. #include "Gizmo3D.h"
  12. using namespace Atomic;
  13. using namespace tb;
  14. namespace Atomic
  15. {
  16. class Scene;
  17. class Node;
  18. class View3D;
  19. class Camera;
  20. class DebugRenderer;
  21. class Octree;
  22. }
  23. namespace ToolCore
  24. {
  25. class ProjectUserPrefs;
  26. }
  27. using namespace ToolCore;
  28. namespace AtomicEditor
  29. {
  30. class SceneSelection;
  31. class SceneEditHistory;
  32. class SceneEditor3D: public ResourceEditor
  33. {
  34. OBJECT(SceneEditor3D);
  35. public:
  36. SceneEditor3D(Context* context, const String& fullpath, UITabContainer* container);
  37. virtual ~SceneEditor3D();
  38. bool OnEvent(const TBWidgetEvent &ev);
  39. SceneSelection* GetSelection() { return selection_; }
  40. SceneView3D* GetSceneView3D() { return sceneView_; }
  41. void RegisterNode(Node* node);
  42. void RegisterNodes(const PODVector<Node*>& nodes);
  43. Scene* GetScene() { return scene_; }
  44. Gizmo3D* GetGizmo() { return gizmo3D_; }
  45. void SetFocus();
  46. virtual bool RequiresInspector() { return true; }
  47. void Close(bool navigateToAvailableResource = true);
  48. bool Save();
  49. void Undo();
  50. void Redo();
  51. void Copy();
  52. void Paste();
  53. ProjectUserPrefs* GetUserPrefs();
  54. private:
  55. void HandleUpdate(StringHash eventType, VariantMap& eventData);
  56. void HandlePlayStarted(StringHash eventType, VariantMap& eventData);
  57. void HandlePlayStopped(StringHash eventType, VariantMap& eventData);
  58. void HandleGizmoEditModeChanged(StringHash eventType, VariantMap& eventData);
  59. void HandleGizmoAxisModeChanged(StringHash eventType, VariantMap& eventData);
  60. void HandleUserPrefSaved(StringHash eventType, VariantMap& eventData);
  61. void HandleSceneEditSceneModified(StringHash eventType, VariantMap& eventData);
  62. void UpdateGizmoSnapSettings();
  63. SharedPtr<Scene> scene_;
  64. // TODO: multiple views
  65. SharedPtr<SceneView3D> sceneView_;
  66. SharedPtr<Gizmo3D> gizmo3D_;
  67. SharedPtr<SceneSelection> selection_;
  68. SharedPtr<SceneEditHistory> editHistory_;
  69. SharedPtr<Node> clipboardNode_;
  70. WeakPtr<ProjectUserPrefs> userPrefs_;
  71. };
  72. }