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);
}