fix(editor): attempt to fix dragging not snapping correctly

This commit is contained in:
maelstrom 2025-04-07 20:57:58 +02:00
parent 2be964acda
commit f88e4e2416

View file

@ -155,11 +155,12 @@ void MainGLWidget::handleObjectDrag(QMouseEvent* evt) {
localFrame = snapCFrame(localFrame); localFrame = snapCFrame(localFrame);
// Snap to studs // Snap to studs
Data::Vector3 draggingPartSize = draggingObject->lock()->size;
Data::Vector3 inverseSurfaceNormal = Data::Vector3::ONE - surfaceNormal.Abs(); 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) if (snappingFactor() > 0)
localFrame = localFrame.Rotation() + glm::round(glm::vec3(localFrame.Position() * inverseSurfaceNormal - inverseNormalPartSize) / snappingFactor()) * snappingFactor() + inverseNormalPartSize 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; Data::CFrame newFrame = targetFrame * localFrame;