diff --git a/QSB/SectorSync/QSBSectorManager.cs b/QSB/SectorSync/QSBSectorManager.cs index e6c1e79f..0473462a 100644 --- a/QSB/SectorSync/QSBSectorManager.cs +++ b/QSB/SectorSync/QSBSectorManager.cs @@ -97,16 +97,20 @@ public class QSBSectorManager : WorldObjectManager foreach (var elevator in QSBWorldSync.GetUnityObjects()) { - radius = float.MinValue; - foreach (var collider in elevator.GetComponentsInChildren()) + var colliders = elevator.GetComponentsInChildren(); + await colliders.Select(x => + UniTask.WaitUntil(() => x.bounds.extents != Vector3.zero, cancellationToken: ct)); + + static float Size(Collider collider) { - await UniTask.WaitUntil(() => collider.bounds.extents != Vector3.zero, cancellationToken: ct); - radius = Mathf.Max(radius, collider.bounds.extents.magnitude); + var extents = collider.bounds.extents; + return Mathf.Max(extents.x, extents.y, extents.z); } - FakeSector.CreateOn(elevator.gameObject, - radius, - elevator.GetComponentInParent()); + var largestCollider = colliders.MaxBy(Size); + FakeSector.CreateOn(largestCollider.gameObject, + Size(largestCollider), + largestCollider.GetComponentInParent()); } } }