Advertisement
Guest User

Transform.h

a guest
Feb 4th, 2014
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.62 KB | None | 0 0
  1. #pragma once
  2.  
  3. #include "Common.h"
  4.  
  5. struct Transform
  6. {
  7. public:
  8.     void Translate(float x, float y, float z);
  9.     void Translate(const glm::vec3 &dir);
  10.     void SetPosition(const glm::vec3 &pos);
  11.     void Rotate(float x, float y, float z);
  12.     void SetRotation(const glm::vec3 &rot);
  13.     const glm::vec3& GetPosition();
  14.     const glm::vec3& GetRotation();
  15.     void LookAt(glm::vec3 targetPosition);
  16.  
  17.     glm::vec3 Up() const;
  18.     glm::vec3 Right() const;
  19.     glm::vec3 Forward() const;
  20.  
  21.     glm::mat4 GetOrientation() const;
  22.  
  23.     void NormalizeAngles();
  24. private:
  25.     glm::vec3 m_Position, m_Rotation;
  26. };
  27.  
  28. inline void Transform::SetPosition(const glm::vec3 &pos)
  29. {
  30.     m_Position = pos;
  31. }
  32.  
  33. inline void Transform::Translate(float x, float y, float z)
  34. {
  35.     m_Position += glm::vec3(x,y,z);
  36. }
  37.  
  38. inline void Transform::Translate(const glm::vec3 &dir)
  39. {
  40.     m_Position += dir;
  41. }
  42. inline void Transform::SetRotation(const glm::vec3 &rot)
  43. {
  44.     m_Rotation = rot;
  45. }
  46.  
  47. inline void Transform::Rotate(float x, float y, float z)
  48. {
  49.     m_Rotation += glm::vec3(x,y,z);
  50. }
  51.  
  52. inline const glm::vec3& Transform::GetPosition()
  53. {
  54.     return m_Position;
  55. }
  56.  
  57. inline glm::vec3 Transform::Forward() const {
  58.     glm::vec4 forward = glm::inverse(GetOrientation()) * glm::vec4(0,0,-1,1);
  59.     return glm::vec3(forward);
  60. }
  61.  
  62. inline glm::vec3 Transform::Right() const {
  63.     glm::vec4 right = glm::inverse(GetOrientation()) * glm::vec4(1,0,0,1);
  64.     return glm::vec3(right);
  65. }
  66.  
  67. inline glm::vec3 Transform::Up() const {
  68.     glm::vec4 up = glm::inverse(GetOrientation()) * glm::vec4(0,1,0,1);
  69.     return glm::vec3(up);
  70. }
  71.  
  72. inline const glm::vec3& Transform::GetRotation()
  73. {
  74.     return m_Rotation;
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement