diff --git a/src/Builtin/Worlds.cs b/src/Builtin/Worlds.cs index 10bdcf6..fe3b8dc 100644 --- a/src/Builtin/Worlds.cs +++ b/src/Builtin/Worlds.cs @@ -1,10 +1,14 @@ -namespace DCFApixels.DragonECS +using System.Diagnostics; + +namespace DCFApixels.DragonECS { + [DebuggerTypeProxy(typeof(DebuggerProxy))] public sealed class EcsDefaultWorld : EcsWorld { public EcsDefaultWorld(EcsWorldConfig config, short worldID = -1) : base(config, worldID) { } public EcsDefaultWorld(IConfigContainer configs = null, short worldID = -1) : base(configs, worldID) { } } + [DebuggerTypeProxy(typeof(DebuggerProxy))] public sealed class EcsEventWorld : EcsWorld { public EcsEventWorld(EcsWorldConfig config, short worldID = -1) : base(config, worldID) { } diff --git a/src/EcsAspect.cs b/src/EcsAspect.cs index 589ae24..b41b9a3 100644 --- a/src/EcsAspect.cs +++ b/src/EcsAspect.cs @@ -16,7 +16,7 @@ namespace DCFApixels.DragonECS private static Stack _constructorBuildersStack = null; private static Stack GetBuildersStack() { - if(_constructorBuildersStack == null) + if (_constructorBuildersStack == null) { _constructorBuildersStack = new Stack(); } diff --git a/src/EcsWorld.cs b/src/EcsWorld.cs index b1900a1..5f45155 100644 --- a/src/EcsWorld.cs +++ b/src/EcsWorld.cs @@ -1,6 +1,7 @@ using DCFApixels.DragonECS.Internal; using System; using System.Collections.Generic; +using System.Diagnostics; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; @@ -23,6 +24,7 @@ namespace DCFApixels.DragonECS PoolRecycledComponentsCapacity = poolRecycledComponentsCapacity; } } + [DebuggerTypeProxy(typeof(DebuggerProxy))] public partial class EcsWorld : IEntityStorage { public readonly short id; @@ -544,6 +546,7 @@ namespace DCFApixels.DragonECS { _entityDispenser.Upsize(minSize); } + [MethodImpl(MethodImplOptions.NoInlining)] private int CalcEntityComponentMaskLastIndex() { int result = _pools.Length / COMPONENT_MASK_CHUNK_SIZE; @@ -554,7 +557,7 @@ namespace DCFApixels.DragonECS { Array.Resize(ref _entities, newSize); Array.Resize(ref _delEntBuffer, newSize); - _entityComponentMaskLength = CalcEntityComponentMaskLastIndex();//_pools.Length / COMPONENT_MASK_CHUNK_SIZE + 1; + _entityComponentMaskLength = CalcEntityComponentMaskLastIndex(); //_pools.Length / COMPONENT_MASK_CHUNK_SIZE + 1; Array.Resize(ref _entityComponentMasks, newSize * _entityComponentMaskLength); ArrayUtility.Fill(_entities, EntitySlot.Empty, _entitiesCapacity); @@ -734,6 +737,34 @@ namespace DCFApixels.DragonECS } } #endregion + + #region DebuggerProxy + private EcsSpan GetSpan_Debug() + { + return _entityDispenser.UsedToEcsSpan(id); + } + protected class DebuggerProxy + { + private EcsWorld _world; + public EntitySlotInfo[] Entities + { + get + { + EntitySlotInfo[] result = new EntitySlotInfo[_world.Count]; + int i = 0; + foreach (var e in _world.ToSpan()) + { + result[i++] = _world.GetEntitySlotInfoDebug(e); + } + return result; + } + } + public DebuggerProxy(EcsWorld world) + { + _world = world; + } + } + #endregion } public static class EcsWorldExtenssions