feat(editor): push part above snapped-to surface

This commit is contained in:
maelstrom 2025-03-31 01:59:08 +02:00
parent 1095a8c33b
commit 4a50ed159b

View file

@ -138,13 +138,14 @@ void MainGLWidget::handleObjectDrag(QMouseEvent* evt) {
if (!rayHit) return; if (!rayHit) return;
Data::Vector3 vec = rayHit->worldPoint; Data::Vector3 vec = rayHit->worldPoint;
Data::CFrame targetFrame = partFromBody(rayHit->body)->cframe; Data::CFrame targetFrame = partFromBody(rayHit->body)->cframe.Rotation();
Data::CFrame localFrame = targetFrame.Inverse() * draggingObject->lock()->cframe; Data::CFrame localFrame = (targetFrame.Inverse() * draggingObject->lock()->cframe).Rotation();
// Snap axis // Snap axis
Data::CFrame newFrame = targetFrame * snapCFrame(localFrame); localFrame = snapCFrame(localFrame);
draggingObject->lock()->cframe = newFrame.Rotation() + vec; localFrame = localFrame;
Data::CFrame newFrame = targetFrame * localFrame;
draggingObject->lock()->cframe = newFrame + vec + localFrame.Rotation() * ((localFrame.Inverse().Rotation() * rayHit->worldNormal) * draggingObject->lock()->size / 2);
syncPartPhysics(draggingObject->lock()); syncPartPhysics(draggingObject->lock());
} }