fix default rotation issue

This commit is contained in:
T1ti
2024-10-28 07:40:59 +01:00
parent df5374d443
commit f6a9c2943a

View File

@@ -52,7 +52,7 @@ bool SceneObject::isDuplicateOf(SceneObject const& other)
void SceneObject::updateTransformMatrix() void SceneObject::updateTransformMatrix()
{ {
glm::mat4x4 matrix = glm::mat4x4(1); glm::mat4x4 matrix = glm::mat4x4(1.0f);
if (pos != glm::vec3(0.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 (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) if (scale != 1.0f)
@@ -118,7 +123,6 @@ void SceneObject::derefTile(MapTile* tile)
assert(tile); assert(tile);
if (_tiles.empty()) if (_tiles.empty())
{ {
assert(false);
return; return;
} }