From f88e4e241695710fde30796cfae2f068079d8989 Mon Sep 17 00:00:00 2001 From: maelstrom Date: Mon, 7 Apr 2025 20:57:58 +0200 Subject: [PATCH] fix(editor): attempt to fix dragging not snapping correctly --- editor/mainglwidget.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/editor/mainglwidget.cpp b/editor/mainglwidget.cpp index 450355d..5f69650 100644 --- a/editor/mainglwidget.cpp +++ b/editor/mainglwidget.cpp @@ -155,11 +155,12 @@ void MainGLWidget::handleObjectDrag(QMouseEvent* evt) { localFrame = snapCFrame(localFrame); // Snap to studs + Data::Vector3 draggingPartSize = draggingObject->lock()->size; Data::Vector3 inverseSurfaceNormal = Data::Vector3::ONE - surfaceNormal.Abs(); - glm::vec3 inverseNormalPartSize = (Data::Vector3)(partSize + 1.f) * inverseSurfaceNormal / 2.f; + glm::vec3 inverseNormalPartSize = (Data::Vector3)(partSize + glm::vec3(localFrame.Rotation() * draggingPartSize)) * inverseSurfaceNormal / 2.f; if (snappingFactor() > 0) localFrame = localFrame.Rotation() + glm::round(glm::vec3(localFrame.Position() * inverseSurfaceNormal - inverseNormalPartSize) / snappingFactor()) * snappingFactor() + inverseNormalPartSize - + localFrame.Position() * surfaceNormal.Abs(); + + localFrame.Position() * surfaceNormal.Abs(); Data::CFrame newFrame = targetFrame * localFrame;