forked from TheCherno/Hazel
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathEditorLayer.h
98 lines (71 loc) · 2.13 KB
/
EditorLayer.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#pragma once
#include "Hazel.h"
#include "Panels/SceneHierarchyPanel.h"
#include "Panels/ContentBrowserPanel.h"
#include "Hazel/Renderer/EditorCamera.h"
namespace Hazel {
class EditorLayer : public Layer
{
public:
EditorLayer();
virtual ~EditorLayer() = default;
virtual void OnAttach() override;
virtual void OnDetach() override;
void OnUpdate(Timestep ts) override;
virtual void OnImGuiRender() override;
void OnEvent(Event& e) override;
private:
bool OnKeyPressed(KeyPressedEvent& e);
bool OnMouseButtonPressed(MouseButtonPressedEvent& e);
void OnOverlayRender();
void NewProject();
bool OpenProject();
void OpenProject(const std::filesystem::path& path);
void SaveProject();
void NewScene();
void OpenScene();
void OpenScene(const std::filesystem::path& path);
void SaveScene();
void SaveSceneAs();
void SerializeScene(Ref<Scene> scene, const std::filesystem::path& path);
void OnScenePlay();
void OnSceneSimulate();
void OnSceneStop();
void OnScenePause();
void OnDuplicateEntity();
// UI Panels
void UI_Toolbar();
private:
Hazel::OrthographicCameraController m_CameraController;
// Temp
Ref<VertexArray> m_SquareVA;
Ref<Shader> m_FlatColorShader;
Ref<Framebuffer> m_Framebuffer;
Ref<Scene> m_ActiveScene;
Ref<Scene> m_EditorScene;
std::filesystem::path m_EditorScenePath;
Entity m_SquareEntity;
Entity m_CameraEntity;
Entity m_SecondCamera;
Entity m_HoveredEntity;
bool m_PrimaryCamera = true;
EditorCamera m_EditorCamera;
Ref<Texture2D> m_CheckerboardTexture;
bool m_ViewportFocused = false, m_ViewportHovered = false;
glm::vec2 m_ViewportSize = { 0.0f, 0.0f };
glm::vec2 m_ViewportBounds[2];
glm::vec4 m_SquareColor = { 0.2f, 0.3f, 0.8f, 1.0f };
int m_GizmoType = -1;
bool m_ShowPhysicsColliders = false;
enum class SceneState
{
Edit = 0, Play = 1, Simulate = 2
};
SceneState m_SceneState = SceneState::Edit;
// Panels
SceneHierarchyPanel m_SceneHierarchyPanel;
Scope<ContentBrowserPanel> m_ContentBrowserPanel;
// Editor resources
Ref<Texture2D> m_IconPlay, m_IconPause, m_IconStep, m_IconSimulate, m_IconStop;
};
}