diff --git a/src/Builtin/InjectSystem.cs b/src/Builtin/InjectSystem.cs index cc5c391..b9ab4e1 100644 --- a/src/Builtin/InjectSystem.cs +++ b/src/Builtin/InjectSystem.cs @@ -83,17 +83,17 @@ namespace DCFApixels.DragonECS { public abstract void Inject(object obj); } - internal class EcsBaseTypeInjectRunner : EcsBaseTypeInjectRunner + internal sealed class EcsBaseTypeInjectRunner : EcsBaseTypeInjectRunner { private IEcsInject _runner; public EcsBaseTypeInjectRunner(EcsPipeline pipeline) => _runner = pipeline.GetRunner>(); - public override void Inject(object obj) => _runner.Inject((T)obj); + public sealed override void Inject(object obj) => _runner.Inject((T)obj); } - internal class EcsObjectTypePreInjectRunner : EcsBaseTypeInjectRunner + internal sealed class EcsObjectTypePreInjectRunner : EcsBaseTypeInjectRunner { private IEcsPreInject _runner; public EcsObjectTypePreInjectRunner(EcsPipeline pipeline) => _runner = pipeline.GetRunner(); - public override void Inject(object obj) => _runner.PreInject(obj); + public sealed override void Inject(object obj) => _runner.PreInject(obj); } [MetaTags(MetaTags.HIDDEN)] diff --git a/src/Utils/ArrayUtility.cs b/src/Utils/ArrayUtility.cs index b70bcc5..7ad4540 100644 --- a/src/Utils/ArrayUtility.cs +++ b/src/Utils/ArrayUtility.cs @@ -20,13 +20,13 @@ namespace DCFApixels.DragonECS.Utils internal static unsafe class UnmanagedArrayUtility { [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static void* New(int capacity) where T : struct + public static T* New(int capacity) where T : unmanaged { - return Marshal.AllocHGlobal(Marshal.SizeOf(typeof(T)) * capacity).ToPointer(); + return (T*)Marshal.AllocHGlobal(Marshal.SizeOf() * capacity).ToPointer(); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static void* NewAndInit(int capacity) where T : struct + public static T* NewAndInit(int capacity) where T : unmanaged { int newSize = Marshal.SizeOf(typeof(T)) * capacity; byte* newPointer = (byte*)Marshal.AllocHGlobal(newSize).ToPointer(); @@ -34,7 +34,7 @@ namespace DCFApixels.DragonECS.Utils for (int i = 0; i < newSize; i++) *(newPointer + i) = 0; - return newPointer; + return (T*)newPointer; } [MethodImpl(MethodImplOptions.AggressiveInlining)] @@ -44,9 +44,9 @@ namespace DCFApixels.DragonECS.Utils } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static void* Resize(void* oldPointer, int newCount) where T : struct + public static T* Resize(void* oldPointer, int newCount) where T : unmanaged { - return (Marshal.ReAllocHGlobal( + return (T*)(Marshal.ReAllocHGlobal( new IntPtr(oldPointer), new IntPtr(Marshal.SizeOf(typeof(T)) * newCount))).ToPointer(); }