From 856682b28e5e9425286f822d6d9a64fca7d51efe Mon Sep 17 00:00:00 2001 From: Mikhail <99481254+DCFApixels@users.noreply.github.com> Date: Mon, 16 Mar 2026 22:57:16 +0800 Subject: [PATCH] fixes --- src/EcsMask.cs | 4 ++-- src/Internal/ArraySortUtility.cs | 32 ++++++++++++++++++++++++++++++++ src/Internal/ArrayUtility.cs | 25 ------------------------- 3 files changed, 34 insertions(+), 27 deletions(-) diff --git a/src/EcsMask.cs b/src/EcsMask.cs index f5653b2..5fc3554 100644 --- a/src/EcsMask.cs +++ b/src/EcsMask.cs @@ -1086,7 +1086,7 @@ namespace DCFApixels.DragonECS.Core.Internal [Il2CppSetOption(Option.NullChecks, false)] [Il2CppSetOption(Option.ArrayBoundsChecks, false)] #endif - internal readonly struct IncCountComparer : IStructComparer + internal readonly struct IncCountComparer : IComparer { public readonly EcsWorld.PoolSlot[] counts; [MethodImpl(MethodImplOptions.AggressiveInlining)] @@ -1105,7 +1105,7 @@ namespace DCFApixels.DragonECS.Core.Internal [Il2CppSetOption(Option.NullChecks, false)] [Il2CppSetOption(Option.ArrayBoundsChecks, false)] #endif - internal readonly struct ExcCountComparer : IStructComparer + internal readonly struct ExcCountComparer : IComparer { public readonly EcsWorld.PoolSlot[] counts; [MethodImpl(MethodImplOptions.AggressiveInlining)] diff --git a/src/Internal/ArraySortUtility.cs b/src/Internal/ArraySortUtility.cs index 9b5529f..4a8afbe 100644 --- a/src/Internal/ArraySortUtility.cs +++ b/src/Internal/ArraySortUtility.cs @@ -12,6 +12,38 @@ using Unity.IL2CPP.CompilerServices; namespace DCFApixels.DragonECS.Core.Internal { +#if ENABLE_IL2CPP + [Il2CppSetOption(Option.NullChecks, false)] + [Il2CppSetOption(Option.ArrayBoundsChecks, false)] +#endif + internal static class ArraySortUtility + { + internal static StructComparison ToStruct(this Comparison self) + { + return new StructComparison(self); + } + public static void Sort(Span span, Comparison comparison) + { + var c = comparison.ToStruct(); + ArraySortUtility>.Sort(span, ref c); + } + } +#if ENABLE_IL2CPP + [Il2CppSetOption(Option.NullChecks, false)] + [Il2CppSetOption(Option.ArrayBoundsChecks, false)] +#endif + internal readonly struct StructComparison : IComparer + { + public readonly Comparison Comparison; + public StructComparison(Comparison comparison) + { + Comparison = comparison; + } + public int Compare(T x, T y) + { + return Comparison(x, y); + } + } // a > b = return > 0 // int Compare(T a, T b); diff --git a/src/Internal/ArrayUtility.cs b/src/Internal/ArrayUtility.cs index 8457514..536feb8 100644 --- a/src/Internal/ArrayUtility.cs +++ b/src/Internal/ArrayUtility.cs @@ -281,29 +281,4 @@ namespace DCFApixels.DragonECS.Core.Internal return $"{name}({range.Count()}) {{{string.Join(", ", range.Select(o => o.ToString()))}}})"; } } - - internal static class SpanUtility - { - internal static StructComparison ToStruct(this Comparison self) - { - return new StructComparison(self); - } - public static void Sort(Span span, Comparison comparison) - { - var c = comparison.ToStruct(); - ArraySortUtility>.Sort(span, ref c); - } - } - internal readonly struct StructComparison : IComparer - { - public readonly Comparison Comparison; - public StructComparison(Comparison comparison) - { - Comparison = comparison; - } - public int Compare(T x, T y) - { - return Comparison(x, y); - } - } } \ No newline at end of file