Shkyera Engine
Easy to use, game engine for Python
Loading...
Searching...
No Matches
GizmoSystem.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <glm/glm.hpp>
4
5#include <ECS/Registry.hpp>
7
8namespace shkyera {
9
11 public:
12 GizmoSystem(std::shared_ptr<Registry> registry);
14
15 void update();
16
17 private:
18 inline static const auto Red = glm::vec3{0.9, 0.1, 0.1};
19 inline static const auto Green = glm::vec3{0.1, 0.9, 0.3};
20 inline static const auto Blue = glm::vec3{0.1, 0.45, 0.95};
21 inline static const auto Grey = glm::vec3{0.8, 0.8, 0.8};
22
23 static constexpr float GizmoLineWidth = 0.02;
24 static constexpr float GizmoLineLength = 1.0;
25 static constexpr float GizmoHandleSize = 0.1;
26 static constexpr float GizmoScale = 0.07;
27
28 enum class Mode {
30 SCALE,
31 };
32
33 void handleInput();
34 void moveEntity();
35 void scaleEntity();
36
37 void selectEntity();
38 void styleOnHover();
40
41 bool isHoverMoved(std::optional<Entity> currentHover) const;
42 glm::vec3 getSelectedHandleDisplacement() const;
43 std::optional<glm::vec3> getMouseIntersectionWithHandle() const;
44
45 // Global Info
47 std::shared_ptr<Registry> _registry;
48 glm::vec3 _originalColor;
49 std::optional<Entity> _selectedHandle;
50 std::optional<Entity> _hoveredHandle;
51 std::optional<Entity> _controlledEntity;
52
53 // Translation Info
57
58 // Scale Info
61 glm::vec3 _originalScale;
62
63 // Rotatin Info
67};
68
69} // namespace shkyera
Definition GizmoSystem.hpp:10
glm::vec3 _originalOrientation
Definition GizmoSystem.hpp:66
static constexpr float GizmoLineLength
Definition GizmoSystem.hpp:24
glm::vec3 _originalHandlePosition
Definition GizmoSystem.hpp:55
static const auto Red
Definition GizmoSystem.hpp:18
static const auto Blue
Definition GizmoSystem.hpp:20
Entity _scaleGizmo
Definition GizmoSystem.hpp:59
void handleInput()
Definition GizmoSystem.cpp:181
glm::vec3 _originalPlaneIntersection
Definition GizmoSystem.hpp:65
glm::vec3 getSelectedHandleDisplacement() const
Definition GizmoSystem.cpp:344
std::optional< glm::vec3 > getMouseIntersectionWithHandle() const
Definition GizmoSystem.cpp:375
static const auto Grey
Definition GizmoSystem.hpp:21
glm::vec3 _originalDisplacement
Definition GizmoSystem.hpp:56
std::optional< Entity > _hoveredHandle
Definition GizmoSystem.hpp:50
Mode
Definition GizmoSystem.hpp:28
Entity _translationGizmo
Definition GizmoSystem.hpp:54
void moveEntity()
Definition GizmoSystem.cpp:276
Entity _rotationGizmo
Definition GizmoSystem.hpp:64
std::shared_ptr< Registry > _registry
Definition GizmoSystem.hpp:47
glm::vec3 _originalScale
Definition GizmoSystem.hpp:61
void selectEntity()
Definition GizmoSystem.cpp:230
bool isHoverMoved(std::optional< Entity > currentHover) const
Definition GizmoSystem.cpp:267
std::optional< Entity > _selectedHandle
Definition GizmoSystem.hpp:49
Entity _scaleUniformHandle
Definition GizmoSystem.hpp:60
Entity _scaleGizmoLineY
Definition GizmoSystem.hpp:60
static constexpr float GizmoHandleSize
Definition GizmoSystem.hpp:25
Mode _mode
Definition GizmoSystem.hpp:46
glm::vec3 _originalColor
Definition GizmoSystem.hpp:48
Entity _scaleGizmoLineZ
Definition GizmoSystem.hpp:60
void scaleEntity()
Definition GizmoSystem.cpp:296
static constexpr float GizmoLineWidth
Definition GizmoSystem.hpp:23
~GizmoSystem()
Definition GizmoSystem.cpp:161
static const auto Green
Definition GizmoSystem.hpp:19
void styleOnHover()
Definition GizmoSystem.cpp:239
void update()
Definition GizmoSystem.cpp:167
std::optional< Entity > _controlledEntity
Definition GizmoSystem.hpp:51
Entity _scaleGizmoLineX
Definition GizmoSystem.hpp:60
static constexpr float GizmoScale
Definition GizmoSystem.hpp:26
void adjustGizmoTransform()
Definition GizmoSystem.cpp:392
Definition RegistryViewer.hpp:51
Definition Asset.hpp:6
uint32_t Entity
Definition Entity.hpp:7
Definition Clock.hpp:9