From fcc0d1ae97f2997c7a43845a9f6bf7f4c303bfd8 Mon Sep 17 00:00:00 2001 From: Mikhail <99481254+DCFApixels@users.noreply.github.com> Date: Sat, 24 Feb 2024 03:02:22 +0800 Subject: [PATCH] polising hybrid pool --- src/Pools/EcsHybridPool.cs | 51 ++++++++++++++++++++++++-------------- 1 file changed, 32 insertions(+), 19 deletions(-) diff --git a/src/Pools/EcsHybridPool.cs b/src/Pools/EcsHybridPool.cs index 0314a2f..693b344 100644 --- a/src/Pools/EcsHybridPool.cs +++ b/src/Pools/EcsHybridPool.cs @@ -1,3 +1,4 @@ +using DCFApixels.DragonECS; using DCFApixels.DragonECS.Internal; using System; using System.Collections; @@ -17,7 +18,7 @@ namespace DCFApixels.DragonECS } /// Pool for IEcsHybridComponent components public sealed class EcsHybridPool : IEcsPoolImplementation, IEcsHybridPool, IEcsHybridPoolInternal, IEnumerable //IEnumerable - IntelliSense hack - where T : IEcsHybridComponent + where T : class, IEcsHybridComponent { private EcsWorld _source; private int _componentTypeID; @@ -36,11 +37,26 @@ namespace DCFApixels.DragonECS private EcsWorld.PoolsMediator _mediator; #region Properites - public int Count => _itemsCount; - public int Capacity => _items.Length; - public int ComponentID => _componentTypeID; - public Type ComponentType => typeof(T); - public EcsWorld World => _source; + public int Count + { + get { return _itemsCount; } + } + public int Capacity + { + get { return _items.Length; } + } + public int ComponentID + { + get { return _componentTypeID; } + } + public Type ComponentType + { + get { return typeof(T); } + } + public EcsWorld World + { + get { return _source; } + } #endregion #region Methods @@ -243,28 +259,28 @@ namespace DCFApixels.DragonECS public static bool IsNullOrNotAlive(this IEcsHybridComponent self) => self == null || self.IsAlive; [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static EcsHybridPool GetPool(this EcsWorld self) where T : IEcsHybridComponent + public static EcsHybridPool GetPool(this EcsWorld self) where T : class, IEcsHybridComponent { return self.GetPool>(); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static EcsHybridPool GetPoolUnchecked(this EcsWorld self) where T : IEcsHybridComponent + public static EcsHybridPool GetPoolUnchecked(this EcsWorld self) where T : class, IEcsHybridComponent { return self.GetPoolUnchecked>(); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static EcsHybridPool Include(this EcsAspect.Builder self) where T : IEcsHybridComponent + public static EcsHybridPool Include(this EcsAspect.Builder self) where T : class, IEcsHybridComponent { return self.Include>(); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static EcsHybridPool Exclude(this EcsAspect.Builder self) where T : IEcsHybridComponent + public static EcsHybridPool Exclude(this EcsAspect.Builder self) where T : class, IEcsHybridComponent { return self.Exclude>(); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static EcsHybridPool Optional(this EcsAspect.Builder self) where T : IEcsHybridComponent + public static EcsHybridPool Optional(this EcsAspect.Builder self) where T : class, IEcsHybridComponent { return self.Optional>(); } @@ -272,28 +288,28 @@ namespace DCFApixels.DragonECS //------------------------------------------------- [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static EcsHybridPool GetHybridPool(this EcsWorld self) where T : IEcsHybridComponent + public static EcsHybridPool GetHybridPool(this EcsWorld self) where T : class, IEcsHybridComponent { return self.GetPool>(); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static EcsHybridPool GetHybridPoolUnchecked(this EcsWorld self) where T : IEcsHybridComponent + public static EcsHybridPool GetHybridPoolUnchecked(this EcsWorld self) where T : class, IEcsHybridComponent { return self.GetPoolUnchecked>(); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static EcsHybridPool IncludeHybrid(this EcsAspect.Builder self) where T : IEcsHybridComponent + public static EcsHybridPool IncludeHybrid(this EcsAspect.Builder self) where T : class, IEcsHybridComponent { return self.Include>(); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static EcsHybridPool ExcludeHybrid(this EcsAspect.Builder self) where T : IEcsHybridComponent + public static EcsHybridPool ExcludeHybrid(this EcsAspect.Builder self) where T : class, IEcsHybridComponent { return self.Exclude>(); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static EcsHybridPool OptionalHybrid(this EcsAspect.Builder self) where T : IEcsHybridComponent + public static EcsHybridPool OptionalHybrid(this EcsAspect.Builder self) where T : class, IEcsHybridComponent { return self.Optional>(); } @@ -372,9 +388,6 @@ namespace DCFApixels.DragonECS } private IEcsHybridPoolInternal CreateHybridPool(Type componentType) { - //var x = (IEcsHybridPoolInternal)getHybridPoolMethod.MakeGenericMethod(componentType).Invoke(null, _sourceForReflection); - //Debug.Log("_" + x.ComponentID + "_" +x.ComponentType.Name); - //return x; return (IEcsHybridPoolInternal)getHybridPoolMethod.MakeGenericMethod(componentType).Invoke(null, _sourceForReflection); }