From 9a149da66e87b58c1ba08d7f6af1f1d3cd6ff0f6 Mon Sep 17 00:00:00 2001 From: Mikhail <99481254+DCFApixels@users.noreply.github.com> Date: Mon, 22 Apr 2024 17:09:06 +0800 Subject: [PATCH] fixes --- src/EcsAspect.cs | 6 ++---- src/EcsWorld.pools.cs | 9 +++++++-- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/EcsAspect.cs b/src/EcsAspect.cs index 3096081..2744a52 100644 --- a/src/EcsAspect.cs +++ b/src/EcsAspect.cs @@ -93,7 +93,6 @@ namespace DCFApixels.DragonECS { private EcsWorld _world; private EcsMask.Builder _maskBuilder; - private bool _isBuilt = false; public IncludeMarker Inc { get { return new IncludeMarker(this); } @@ -210,7 +209,6 @@ namespace DCFApixels.DragonECS private void Build(out EcsMask mask) { mask = _maskBuilder.Build(); - _isBuilt = true; } #region SupportReflectionHack @@ -499,7 +497,7 @@ namespace DCFApixels.DragonECS foreach (var incTypeID in _mask.inc) { var pool = world.GetPoolInstance(incTypeID); - if (pool.Has(entityID) == false) + if (pool != null && pool.Has(entityID) == false) { pool.AddRaw(entityID, null); } @@ -507,7 +505,7 @@ namespace DCFApixels.DragonECS foreach (var excTypeID in _mask.exc) { var pool = world.GetPoolInstance(excTypeID); - if (pool.Has(entityID)) + if (pool != null && pool.Has(entityID)) { pool.Del(entityID); } diff --git a/src/EcsWorld.pools.cs b/src/EcsWorld.pools.cs index b9372c1..dbe11b7 100644 --- a/src/EcsWorld.pools.cs +++ b/src/EcsWorld.pools.cs @@ -20,10 +20,15 @@ namespace DCFApixels.DragonECS #region Getters public IEcsPool GetPoolInstance(int componentTypeID) { + if (IsComponentTypeDeclared(componentTypeID)) + { + var resuult = _pools[componentTypeID]; #if DEBUG - if (_pools[componentTypeID].ComponentTypeID != componentTypeID) { Throw.UndefinedException(); } + if (resuult != _nullPool && resuult.ComponentTypeID != componentTypeID) { Throw.UndefinedException(); } #endif - return _pools[componentTypeID]; + return resuult; + } + return null; } [MethodImpl(MethodImplOptions.AggressiveInlining)]