HatchitGame
ht_transform.h
1 
15 #pragma once
16 
17 #include <ht_platform.h>
18 #include <ht_math.h>
19 #include <vector>
20 
21 namespace Hatchit {
22 
23  namespace Game {
24 
25  class HT_API Transform
26  {
27  friend class GameObject;
28  public:
29  Transform();
30  Transform(float posX, float posY, float posZ,
31  float rotX, float rotY, float rotZ,
32  float scaleX, float scaleY, float scaleZ);
33  Transform(Math::Vector3 position, Math::Vector3 rotation, Math::Vector3 scale);
34  Transform(const Transform& transform);
35 
40  Math::Matrix4* GetWorldMatrix();
41 
46  Math::Matrix4* GetLocalMatrix();
47 
51  void UpdateWorldMatrix();
52 
56  void SetDirty();
57 
62  void RotateX(float val);
63 
68  void RotateY(float val);
69 
74  void RotateZ(float val);
75 
80  void TranslateX(float val);
81 
86  void TranslateY(float val);
87 
92  void TranslateZ(float val);
93 
98  void Translate(Math::Vector3 val);
99 
104  Math::Vector3 GetPosition();
105 
110  Math::Vector3 GetWorldPosition();
111 
116  Math::Vector3 GetRotation();
117 
122  Math::Vector3 GetScale();
123 
128  Math::Vector3 GetForward();
133  Math::Vector3 GetUp();
134 
139  Math::Vector3 GetRight();
140 
145  Math::Vector3* GetRotationRef();
146 
151  void SetPosition(Math::Vector3 val);
152 
157  void SetRotation(Math::Vector3 val);
158 
163  void SetScale(Math::Vector3 val);
164 
169  void SetForward(Math::Vector3 val);
170 
175  float X() const;
176 
181  float Y() const;
182 
187  float Z() const;
188 
193  float RotX() const;
194 
199  float RotY() const;
200 
205  float RotZ() const;
206 
211  float ScaleX() const;
212 
217  float ScaleY() const;
218 
223  float ScaleZ() const;
224 
228  void DebugPrint();
229 
234  bool IsDirty();
235 
236  private:
237  Math::Vector3 m_position;
238  Math::Vector3 m_rotation;
239  Math::Vector3 m_scale;
240 
241  Math::Vector3 m_worldPosition;
242 
243 
244  Math::Vector3 m_forward;
245  Math::Vector3 m_up;
246  Math::Vector3 m_right;
247 
248  Math::Matrix4 m_world;
249  Math::Matrix4 m_local;
250 
251  bool m_localDirty;
252  bool m_worldDirty;
253  bool m_test;
254 
255  std::vector<Transform*> m_childTransforms;
256  Transform* m_parent;
257  };
258  };
259 
260 };
Definition: ht_transform.h:25
Hatchit Engine Copyright(c) 2015-2016 Third-Degree.
Definition: ht_glfwkeyboard.h:21
Definition: ht_gameobject.h:48