Nui Engine
A game engine framework
Loading...
Searching...
No Matches
TransformComponent.h
1#pragma once
2#include "Core/Engine/Components/Common.h"
3
4#define NUI_NODISCARD_TRANSFROM_GETTER [[nodiscard("Cannot discard return value of Transform getter functions")]]
5
6namespace Nui::Components
7{
11 class Transform : public ComponentBase
12 {
13 public:
17 Transform();
18
25 Transform(Math::Vector3 position, Math::Quaternion rotation = Math::Quaternion::Identity, Math::Vector3 scale = Math::Vector3::One);
26
30 Transform(const Transform&) = default;
31
35 Transform(Transform&&) = default;
36
40 ~Transform() = default;
41
46 Transform& operator=(const Transform&) = default;
47
52 Transform& operator=(Transform&&) noexcept = default;
53
58 auto operator<=>(const Transform&) const = default;
59
64 NUI_NODISCARD_TRANSFROM_GETTER inline const Math::Quaternion& GetRotation() const { return m_rotation; }
65
70 NUI_NODISCARD_TRANSFROM_GETTER inline Math::Quaternion GetRotation() { return m_rotation; }
71
76 NUI_NODISCARD_TRANSFROM_GETTER inline const Math::Vector3& GetPosition() const { return m_position; }
77
82 NUI_NODISCARD_TRANSFROM_GETTER inline Math::Vector3 GetPosition() { return m_position; }
83
88 NUI_NODISCARD_TRANSFROM_GETTER inline const Math::Vector3& GetScale() const { return m_scale; }
89
94 NUI_NODISCARD_TRANSFROM_GETTER inline Math::Vector3 GetScale() { return m_scale; }
95
100 NUI_NODISCARD_TRANSFROM_GETTER inline Math::Matrix GetWorldMatrix() const { return m_worldMat; }
101
106 [[noreturn]] void SetRotation(const Math::Quaternion& rotation);
107
112 [[noreturn]] void SetPosition(const Math::Vector3& position);
113
118 [[noreturn]] void SetScale(const Math::Vector3& scale);
119
123 [[noreturn]] void RecalculateWorldMatrix();
124
125 private:
129 Math::Quaternion m_rotation;
130
134 Math::Vector3 m_position;
135
139 Math::Vector3 m_scale;
140
144 Math::Matrix m_worldMat;
145 };
146}
147
148#undef NUI_NODISCARD_TRANSFROM_GETTER
Base class for all components.
Definition Common.h:23
Transform component.
Definition TransformComponent.h:12
NUI_NODISCARD_TRANSFROM_GETTER Math::Matrix GetWorldMatrix() const
Getter for world matrix.
Definition TransformComponent.h:100
void SetRotation(const Math::Quaternion &rotation)
Setter for rotation.
Definition TransformComponent.cpp:19
Transform & operator=(const Transform &)=default
Copy assignment operator.
void SetScale(const Math::Vector3 &scale)
Setter for scale.
Definition TransformComponent.cpp:31
void SetPosition(const Math::Vector3 &position)
Setter for position.
Definition TransformComponent.cpp:25
Transform(const Transform &)=default
Copy constructor (defaulted)
~Transform()=default
Destructor (defaulted)
NUI_NODISCARD_TRANSFROM_GETTER Math::Vector3 GetScale()
Getter for scale.
Definition TransformComponent.h:94
NUI_NODISCARD_TRANSFROM_GETTER const Math::Quaternion & GetRotation() const
Const reference getter for rotation.
Definition TransformComponent.h:64
NUI_NODISCARD_TRANSFROM_GETTER Math::Quaternion GetRotation()
Getter for rotation.
Definition TransformComponent.h:70
NUI_NODISCARD_TRANSFROM_GETTER const Math::Vector3 & GetPosition() const
Const reference getter for position.
Definition TransformComponent.h:76
Transform & operator=(Transform &&) noexcept=default
Move assignment operator.
Transform(Transform &&)=default
Move constructor (defaulted)
NUI_NODISCARD_TRANSFROM_GETTER Math::Vector3 GetPosition()
Getter for position.
Definition TransformComponent.h:82
Transform()
Default constructor.
Definition TransformComponent.cpp:5
void RecalculateWorldMatrix()
Recalculates world matrix (used when transform is dirty)
Definition TransformComponent.cpp:37
NUI_NODISCARD_TRANSFROM_GETTER const Math::Vector3 & GetScale() const
Const reference getter for scale.
Definition TransformComponent.h:88