From c63e19e87bfd91fe1886089beb4aed2f7365feb4 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Sat, 20 Jul 2024 21:56:19 +0300 Subject: [PATCH] fix wrong entity display position on slow movement --- src/objects/Entities.cpp | 2 ++ src/objects/Entities.hpp | 7 +++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/objects/Entities.cpp b/src/objects/Entities.cpp index a29e7d60..59905c3c 100644 --- a/src/objects/Entities.cpp +++ b/src/objects/Entities.cpp @@ -32,6 +32,8 @@ void Transform::refresh() { combined = glm::translate(combined, pos); combined = glm::scale(combined, size); combined = combined * glm::mat4(rot); + displayPos = pos; + displaySize = size; dirty = false; } diff --git a/src/objects/Entities.hpp b/src/objects/Entities.hpp index 7bc4c2e3..9adf6358 100644 --- a/src/objects/Entities.hpp +++ b/src/objects/Entities.hpp @@ -44,6 +44,9 @@ struct Transform { glm::mat4 combined; bool dirty = true; + glm::vec3 displayPos; + glm::vec3 displaySize; + void refresh(); inline void setRot(glm::mat3 m) { @@ -52,14 +55,14 @@ struct Transform { } inline void setSize(glm::vec3 v) { - if (glm::distance2(size, v) >= 0.0000001f) { + if (glm::distance2(displaySize, v) >= 0.00001f) { dirty = true; } size = v; } inline void setPos(glm::vec3 v) { - if (glm::distance2(pos, v) >= 0.00001f) { + if (glm::distance2(displayPos, v) >= 0.0001f) { dirty = true; } pos = v;