fix(editor): prefer closest handle

This commit is contained in:
maelstrom 2025-08-21 22:12:50 +02:00
parent 3e6e1fad5f
commit 5f57622466

View file

@ -45,6 +45,9 @@ CFrame partCFrameFromHandlePos(HandleFace face, Vector3 newPos) {
} }
std::optional<HandleFace> raycastHandle(Vector3 rayStart, Vector3 rayEnd) { std::optional<HandleFace> raycastHandle(Vector3 rayStart, Vector3 rayEnd) {
std::optional<HandleFace> closestFace = {};
float closestDistance = -1;
for (HandleFace face : HandleFace::Faces) { for (HandleFace face : HandleFace::Faces) {
CFrame cframe = getHandleCFrame(face); CFrame cframe = getHandleCFrame(face);
@ -53,11 +56,13 @@ std::optional<HandleFace> raycastHandle(Vector3 rayStart, Vector3 rayEnd) {
glm::vec3 hitPoint; glm::vec3 hitPoint;
bool hit = HitBoundingBox(minB, maxB, rayStart, (rayEnd - rayStart).Unit(), hitPoint); bool hit = HitBoundingBox(minB, maxB, rayStart, (rayEnd - rayStart).Unit(), hitPoint);
if (hit) float distance = ((Vector3)hitPoint - rayStart).Magnitude();
return face;
if (hit && (closestDistance == -1 || distance < closestDistance))
closestFace = face, closestDistance = distance;
} }
return std::nullopt; return closestFace;
} }
Vector3 handleSize(HandleFace face) { Vector3 handleSize(HandleFace face) {