From e51ed0c7c5b45b3f11fab035ea5c40eb0bc52d84 Mon Sep 17 00:00:00 2001 From: maelstrom Date: Tue, 10 Jun 2025 21:05:25 +0200 Subject: [PATCH] fix(rendering): selection box around models --- core/src/partassembly.h | 1 + core/src/rendering/renderer.cpp | 9 ++++----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/core/src/partassembly.h b/core/src/partassembly.h index 5f899a7..8071a64 100644 --- a/core/src/partassembly.h +++ b/core/src/partassembly.h @@ -23,6 +23,7 @@ public: inline CFrame assemblyOrigin() { return _assemblyOrigin; }; inline Vector3 bounds() { return _bounds; }; inline Vector3 size() { return _size; }; + inline bool multipleSelected() { return parts.size() > 1; } // Transforms the assembly such that newOrigin is now this assembly's new assemblyOrigin void SetOrigin(CFrame newOrigin); diff --git a/core/src/rendering/renderer.cpp b/core/src/rendering/renderer.cpp index c0561e9..07ddcb6 100644 --- a/core/src/rendering/renderer.cpp +++ b/core/src/rendering/renderer.cpp @@ -475,11 +475,10 @@ void renderOutlines() { } // Render AABB of selected parts - if (count <= 1) return; - - glm::vec3 outlineSize, outlinePos; - outlineSize = (max - min); - outlinePos = (max + min) / 2.f; + PartAssembly selectionAssembly = PartAssembly::FromSelection(); + if (!selectionAssembly.multipleSelected()) return; + glm::vec3 outlineSize = selectionAssembly.bounds(); + glm::vec3 outlinePos = selectionAssembly.assemblyOrigin().Position(); glm::mat4 model = glm::translate(glm::mat4(1.0f), outlinePos); model = glm::scale(model, outlineSize + glm::vec3(0.1));