From f6a9c2943aaf33d7987622f7817ea2a1d0b52fc9 Mon Sep 17 00:00:00 2001 From: T1ti <40864460+T1ti@users.noreply.github.com> Date: Mon, 28 Oct 2024 07:40:59 +0100 Subject: [PATCH] fix default rotation issue --- src/noggit/SceneObject.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/noggit/SceneObject.cpp b/src/noggit/SceneObject.cpp index 1c1ae60e..372c8461 100755 --- a/src/noggit/SceneObject.cpp +++ b/src/noggit/SceneObject.cpp @@ -52,7 +52,7 @@ bool SceneObject::isDuplicateOf(SceneObject const& other) void SceneObject::updateTransformMatrix() { - glm::mat4x4 matrix = glm::mat4x4(1); + glm::mat4x4 matrix = glm::mat4x4(1.0f); if (pos != glm::vec3(0.0f)) { @@ -66,9 +66,14 @@ void SceneObject::updateTransformMatrix() (glm::abs(dir.z) < 1e-6f || dir.z == -0.0f) ? 0.0f : dir.z ); - if (clamped_dir != glm::vec3(0.0f)) + // always need to recalc rotation because of the angles, maybe we can initialize matrix to -90 etc... + // if (clamped_dir != glm::vec3(0.0f)) { - matrix = matrix * glm::eulerAngleYZX(glm::radians(clamped_dir.y - math::degrees(90.0f)._), glm::radians(-clamped_dir.x), glm::radians(clamped_dir.z)); + matrix *= glm::eulerAngleYZX( + glm::radians(clamped_dir.y - math::degrees(90.0f)._), + glm::radians(-clamped_dir.x), + glm::radians(clamped_dir.z) + ); } if (scale != 1.0f) @@ -118,7 +123,6 @@ void SceneObject::derefTile(MapTile* tile) assert(tile); if (_tiles.empty()) { - assert(false); return; }