diff --git a/src/DebugUtils/TypeMeta.cs b/src/DebugUtils/TypeMeta.cs index 7c3d8c9..0422993 100644 --- a/src/DebugUtils/TypeMeta.cs +++ b/src/DebugUtils/TypeMeta.cs @@ -370,6 +370,14 @@ namespace DCFApixels.DragonECS #endregion #region Other + public static void ClearCache() + { + lock (_lock) + { + _metaCache.Clear(); + _metaCache.Add(typeof(void), NullTypeMeta); + } + } ITypeMeta ITypeMeta.BaseMeta { get { return null; } diff --git a/src/EcsAspect.cs b/src/EcsAspect.cs index 75a3be2..0a2afc9 100644 --- a/src/EcsAspect.cs +++ b/src/EcsAspect.cs @@ -411,6 +411,10 @@ namespace DCFApixels.DragonECS #endregion #region Other + public static void ClearCache() + { + _staticMaskCache.Clear(); + } EcsMask IComponentMask.ToMask(EcsWorld world) { return _mask; } #endregion diff --git a/src/EcsWorld.cs b/src/EcsWorld.cs index ef35fd8..b68ca3d 100644 --- a/src/EcsWorld.cs +++ b/src/EcsWorld.cs @@ -175,10 +175,6 @@ namespace DCFApixels.DragonECS // тут сложно однозначно посчитать, так как нужно еще место под аспекты и запросы int controllersCount = config.PoolsCapacity * 4; _worldComponentPools = new StructList(controllersCount); - if (controllersCount < _allWorldComponentPools.Capacity) - { - _allWorldComponentPools.Capacity = controllersCount; - } if (worldID < 0 || (worldID == NULL_WORLD_ID && nullWorld == false)) { diff --git a/src/EcsWorld.static.cs b/src/EcsWorld.static.cs index 033321a..91699e1 100644 --- a/src/EcsWorld.static.cs +++ b/src/EcsWorld.static.cs @@ -147,10 +147,7 @@ namespace DCFApixels.DragonECS private static short _recycledItemsCount; private static readonly IEcsWorldComponent _interface = EcsWorldComponentHandler.instance; private static readonly Abstract _controller = new Abstract(); - static WorldComponentPool() - { - _allWorldComponentPools.Add(_controller); - } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public static ref T GetItem(int itemIndex) {// ts diff --git a/src/Injections/Injector.cs b/src/Injections/Injector.cs index df558b0..c68c965 100644 --- a/src/Injections/Injector.cs +++ b/src/Injections/Injector.cs @@ -357,6 +357,12 @@ namespace DCFApixels.DragonECS instance.Inject(_injectedData); } } + + internal static void Clear() + { + _Empty_Internal._injections.Clear(); + _Empty_Internal._nodes.Clear(); + } } #endregion }