From b6ae601cff3dffbc287d242beb42bc62e606a8ae Mon Sep 17 00:00:00 2001 From: Mikhail <99481254+DCFApixels@users.noreply.github.com> Date: Wed, 4 Mar 2026 14:00:52 +0800 Subject: [PATCH] fix/improve static cleanup --- src/DebugUtils/TypeMeta.cs | 16 ++++++++-------- src/EcsAspect.cs | 9 ++++----- src/EcsStaticCleaner.cs | 18 ------------------ src/EcsWorld.cs | 4 ---- src/EcsWorld.static.cs | 10 +--------- src/Internal/EcsTypeCodeManager.cs | 5 ----- src/Utils/IConfigContainer.cs | 5 ----- 7 files changed, 13 insertions(+), 54 deletions(-) delete mode 100644 src/EcsStaticCleaner.cs diff --git a/src/DebugUtils/TypeMeta.cs b/src/DebugUtils/TypeMeta.cs index 1f8ad7b..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; } @@ -623,13 +631,5 @@ namespace DCFApixels.DragonECS #endregion } #endregion - - internal static void Clear() - { - lock (_lock) - { - _metaCache.Clear(); - } - } } } \ No newline at end of file diff --git a/src/EcsAspect.cs b/src/EcsAspect.cs index 15aeb18..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 @@ -467,11 +471,6 @@ namespace DCFApixels.DragonECS public delegate void OnBuildApectHandler(object aspect, EcsMask mask); public static event OnBuildApectHandler OnAfterInit = delegate { }; #endregion - - internal static void Clear() - { - _staticMaskCache.Clear(); - } } #region EcsAspect.Builder.Extensions diff --git a/src/EcsStaticCleaner.cs b/src/EcsStaticCleaner.cs deleted file mode 100644 index 6007943..0000000 --- a/src/EcsStaticCleaner.cs +++ /dev/null @@ -1,18 +0,0 @@ -using DCFApixels.DragonECS.Core.Internal; - -namespace DCFApixels.DragonECS -{ - public static class EcsStaticCleaner - { - public static void ResetAll() - { - TypeMeta.Clear(); - Injector.InjectionList.Clear(); - // MemoryAllocator.Clear(); - EcsTypeCodeManager.Clear(); - ConfigContainer.Clear(); - EcsAspect.Clear(); - EcsWorld.Clear(); - } - } -} \ No newline at end of file diff --git a/src/EcsWorld.cs b/src/EcsWorld.cs index 2ce52bb..c59d9cb 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 c9b94cf..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 @@ -346,10 +343,5 @@ namespace DCFApixels.DragonECS return FindPoolInstance(componentType); } #endregion - - internal static void Clear() - { - _allWorldComponentPools.Clear(); - } } } \ No newline at end of file diff --git a/src/Internal/EcsTypeCodeManager.cs b/src/Internal/EcsTypeCodeManager.cs index b2c2041..ea902a1 100644 --- a/src/Internal/EcsTypeCodeManager.cs +++ b/src/Internal/EcsTypeCodeManager.cs @@ -53,11 +53,6 @@ namespace DCFApixels.DragonECS.Core.Internal return null; } public static IEnumerable GetDeclaredTypes() { return _codes.Select(o => new TypeCodeInfo(o.Key, o.Value)); } - - internal static void Clear() - { - _codes.Clear(); - } } #if ENABLE_IL2CPP [Il2CppSetOption(Option.NullChecks, false)] diff --git a/src/Utils/IConfigContainer.cs b/src/Utils/IConfigContainer.cs index b5a6103..98192f0 100644 --- a/src/Utils/IConfigContainer.cs +++ b/src/Utils/IConfigContainer.cs @@ -102,11 +102,6 @@ namespace DCFApixels.DragonECS { return GetAllConfigs().GetEnumerator(); } - - internal static void Clear() - { - Empty._storage.Clear(); - } } public static class ConfigContainerExtensions {