Elevate Engine 1
Loading...
Searching...
No Matches
EditorLayer.h
Go to the documentation of this file.
1#pragma once
2
3#ifdef EE_EDITOR_BUILD
4
9
16
17#include <memory>
18
19#ifdef EE_USES_WWISE
21#endif // #ifdef EE_USES_WWISE
22
23namespace Elevate
24{
25 class Shader;
26 class GameObject;
27 class Scene;
28 class EditorCamera;
29 class Texture;
30}
31
32namespace Elevate::Editor
33{
34 class EditorLayer : public Layer, public CommandManager
35 {
36 public:
37 EditorLayer();
38
39 void InitUI()
40 {
41 CreateWidget<HierarchyPanel>();
42 CreateWidget<ScenePanel>();
43 CreateWidget<AnalyserPanel>();
44 CreateWidget<AssetBrowserPanel>();
45 CreateWidget<StatisticsPanel>();
46
47#ifdef EE_USES_WWISE
48 CreateWidget<WwiseBrowserWidget>();
49#endif // #ifdef EE_USES_WWISE
50 }
51
52 virtual void OnAttach() override;
53 //virtual void OnDetach() {}
54 virtual void OnUpdate() override;
55 virtual void OnRender() override;
56 virtual void OnImGuiRender() override;
57 virtual void OnEvent(Event& event) override;
58
59 EditorCamera* GetCamera();
60 inline std::weak_ptr<Scene> GetScene() { return m_EditorScene; }
61 inline std::weak_ptr<GameObject> GetSelectedObject() { return m_SelectedObject; }
62 void SelectObject(std::shared_ptr<GameObject> newSelection);
63
64 inline static EditorLayer& Get() { return *s_Instance; }
65
66 template <typename T>
67 inline static void CreateWidget()
68 {
69 bool isValid = std::is_base_of_v<EditorWidget, T>;
70 EE_ASSERT(isValid, "An attemp to add a non widget element to the widget stack was detected.");
71 Get().m_widgets.push_back(std::make_unique<T>());
72 }
73 private:
74 std::vector<std::unique_ptr<EditorWidget>> m_widgets;
75 std::shared_ptr<Texture> m_playTexture;
76 std::shared_ptr<Texture> m_pauseTexture;
77 std::shared_ptr<Texture> m_stopTexture;
78 std::shared_ptr<Texture> m_coloredStopTexture;
79
80 std::shared_ptr<GameObject> m_CameraObject;
81
82 std::weak_ptr<GameObject> m_SelectedObject;
83
84 // Editor Scene
85 std::shared_ptr<Scene> m_EditorScene;
86
87 // Grid
88 std::shared_ptr<Shader> m_GridShader;
89 std::shared_ptr<GameObject> m_GridObject;
90
91 static EditorLayer* s_Instance;
92 };
93}
94
95#endif // EE_EDITOR_BUILD
#define EE_ASSERT(x,...)
Definition Assert.h:29