diff --git a/src/GameUtils/Math/Vector2Ext.cs b/src/GameUtils/Math/Vector2Ext.cs index 8c8dfee..a6a9e4c 100644 --- a/src/GameUtils/Math/Vector2Ext.cs +++ b/src/GameUtils/Math/Vector2Ext.cs @@ -152,8 +152,15 @@ public static IEnumerable Sort(this IEnumerable source, bool c /// public static IEnumerable Sort(this IEnumerable source, Vector2 center, bool clockwise = true) { + var values = source.ToArray(); + var keys = new float[values.Length]; var sortMultiplier = clockwise ? 1 : -1; - return source.OrderBy(v => MathF.Atan2(v.Y - center.Y, v.X - center.X) * sortMultiplier); + for (int i = 0; i < values.Length; i++) + { + keys[i] = MathF.Atan2(values[i].Y - center.Y, values[i].X - center.X) * sortMultiplier; + } + Array.Sort(keys, values); + return values; } ///