diff --git a/Nuake/src/Core/Maths.cpp b/Nuake/src/Core/Maths.cpp index 22a9df50..e0889bce 100644 --- a/Nuake/src/Core/Maths.cpp +++ b/Nuake/src/Core/Maths.cpp @@ -6,3 +6,8 @@ Quat Nuake::QuatFromEuler(float x, float y, float z) { return Quat(Vector3(Rad(z), Rad(y), Rad(x))); } + +Vector3 Nuake::QuatToDirection(const Quat& quat) +{ + return glm::rotate(glm::inverse(quat), glm::vec3(1.0, 0.0, 0.0)); +} \ No newline at end of file diff --git a/Nuake/src/Core/Maths.h b/Nuake/src/Core/Maths.h index 448633cf..6612d894 100644 --- a/Nuake/src/Core/Maths.h +++ b/Nuake/src/Core/Maths.h @@ -18,5 +18,7 @@ namespace Nuake using Matrix4 = glm::mat4; using Matrix3 = glm::mat3; #define Rad(degrees) glm::radians(degrees) + Quat QuatFromEuler(float x, float y, float z); + Vector3 QuatToDirection(const Quat& quat); } diff --git a/Nuake/src/Scene/Scene.cpp b/Nuake/src/Scene/Scene.cpp index 05c60bfe..4172cbcf 100644 --- a/Nuake/src/Scene/Scene.cpp +++ b/Nuake/src/Scene/Scene.cpp @@ -16,6 +16,7 @@ #include #include "Engine.h" +#include "src/Core/Maths.h" #include "src/Core/FileSystem.h" #include "src/Scene/Components/Components.h" #include "src/Scene/Components/BoxCollider.h" @@ -141,10 +142,13 @@ namespace Nuake { { auto [transform, camera, parent] = view.get(e); cam = camera.CameraInstance; - cam->Translation = transform.GetGlobalPosition(); - cam->SetDirection(glm::rotate(glm::inverse(transform.GetGlobalRotation()), glm::vec3(1.0, 0.0, 0.0))); - camTransform = transform.GetGlobalTransform(); + cam->Translation = transform.GetGlobalPosition(); + + const Vector3& forward = QuatToDirection(transform.GetGlobalRotation()); + cam->SetDirection(forward); + + camTransform = transform.GetGlobalTransform(); break; } }