From ba07e8e009cbfe2bf53880d228c471c616d5d210 Mon Sep 17 00:00:00 2001 From: miku-666 <74728189+NessieHax@users.noreply.github.com> Date: Wed, 16 Oct 2024 18:32:24 +0200 Subject: [PATCH] BoundingBox - Fix exception when empty enumerable was passed --- PCK-Studio/Rendering/BoundingBox.cs | 2 +- PCK-Studio/Rendering/CubeMeshCollection.cs | 3 +-- PCK-Studio/Rendering/SkinRenderer.cs | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/PCK-Studio/Rendering/BoundingBox.cs b/PCK-Studio/Rendering/BoundingBox.cs index 1ed7a458..4a2957ba 100644 --- a/PCK-Studio/Rendering/BoundingBox.cs +++ b/PCK-Studio/Rendering/BoundingBox.cs @@ -71,7 +71,7 @@ namespace PckStudio.Rendering public static BoundingBox GetEnclosingBoundingBox(IEnumerable boundingBoxes) { - return boundingBoxes.Aggregate((a, b) => new BoundingBox(OpenTK.Vector3.ComponentMin(a.Start, b.Start), OpenTK.Vector3.ComponentMax(a.End, b.End))); + return boundingBoxes.DefaultIfEmpty().Aggregate((a, b) => new BoundingBox(OpenTK.Vector3.ComponentMin(a.Start, b.Start), OpenTK.Vector3.ComponentMax(a.End, b.End))); } } } diff --git a/PCK-Studio/Rendering/CubeMeshCollection.cs b/PCK-Studio/Rendering/CubeMeshCollection.cs index e0603983..d164bc8a 100644 --- a/PCK-Studio/Rendering/CubeMeshCollection.cs +++ b/PCK-Studio/Rendering/CubeMeshCollection.cs @@ -171,8 +171,7 @@ namespace PckStudio.Rendering { IEnumerable boundingBoxes = cubes .Where(c => c.Visible) - .Select(c => c.GetBounds(Transform * transform)) - .DefaultIfEmpty(); + .Select(c => c.GetBounds(Transform * transform)); return BoundingBox.GetEnclosingBoundingBox(boundingBoxes); } diff --git a/PCK-Studio/Rendering/SkinRenderer.cs b/PCK-Studio/Rendering/SkinRenderer.cs index d38cb195..0c6234e8 100644 --- a/PCK-Studio/Rendering/SkinRenderer.cs +++ b/PCK-Studio/Rendering/SkinRenderer.cs @@ -1059,7 +1059,7 @@ namespace PckStudio.Rendering } yield break; } - return SelectedIndices.Length >= 1 ? BoundingBox.GetEnclosingBoundingBox(GetBoundingBoxesFromSelectedIndices(SelectedIndices)) : BoundingBox.Empty; + return BoundingBox.GetEnclosingBoundingBox(GetBoundingBoxesFromSelectedIndices(SelectedIndices)); } private void RenderBodyPart(ShaderProgram shader, Matrix4 partsMatrix, Matrix4 globalMatrix, params string[] partNames)