diff --git a/DragonECS.csproj b/DragonECS.csproj index 69294c9..71a9d1d 100644 --- a/DragonECS.csproj +++ b/DragonECS.csproj @@ -10,7 +10,7 @@ DCFApixels.DragonECS DragonECS - 0.9.13 + 0.9.14 DCFApixels ECS Framework for Game Engines with C# and .Net Platform DCFApixels diff --git a/package.json b/package.json index 5c4328f..eccc952 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "displayName": "DragonECS", "description": "C# Entity Component System Framework", "unity": "2020.3", - "version": "0.9.13", + "version": "0.9.14", "repository": { "type": "git", "url": "https://github.com/DCFApixels/DragonECS.git" diff --git a/src/Consts.cs b/src/Consts.cs index 4377352..fb97ee7 100644 --- a/src/Consts.cs +++ b/src/Consts.cs @@ -89,7 +89,12 @@ namespace DCFApixels.DragonECS #else false; #endif - + public const bool ENABLE_DUMMY_SPAN = +#if ENABLE_DUMMY_SPAN + true; +#else + false; +#endif [Obsolete("DRAGONECS_ENABLE_DEBUG_SERVICE")] @@ -119,13 +124,6 @@ namespace DCFApixels.DragonECS true; #else false; -#endif - [Obsolete] - public const bool ENABLE_DUMMY_SPAN = -#if ENABLE_DUMMY_SPAN - true; -#else - false; #endif } } diff --git a/src/Internal/Allocators/AllocatorUtility.cs b/src/Internal/Allocators/AllocatorUtility.cs index 7f6a46a..27f608b 100644 --- a/src/Internal/Allocators/AllocatorUtility.cs +++ b/src/Internal/Allocators/AllocatorUtility.cs @@ -10,8 +10,16 @@ namespace DCFApixels.DragonECS.Core.Internal } public static unsafe void ClearAllocatedMemory(byte* ptr, int startByte, int lengthInBytes) { +#if ENABLE_DUMMY_SPAN + lengthInBytes += startByte; + for (int i = startByte; i < lengthInBytes; i++) + { + ptr[i] = 0; + } +#else Span memorySpan = new Span(ptr + startByte, lengthInBytes); memorySpan.Clear(); +#endif } } } diff --git a/src/Utils/Uncheked/EntitySlotInfo.cs b/src/Utils/Uncheked/EntitySlotInfo.cs index 942d666..65a8292 100644 --- a/src/Utils/Uncheked/EntitySlotInfo.cs +++ b/src/Utils/Uncheked/EntitySlotInfo.cs @@ -84,19 +84,17 @@ namespace DCFApixels.DragonECS.Core.Unchecked #endregion } - - internal class EntityDebuggerProxy { private List _componentsList = new List(); private EntitySlotInfo _info; - public long full { get { return _info.full; } } - public int id { get { return _info.id; } } - public short gen { get { return _info.gen; } } - public short worldID { get { return _info.worldID; } } - public EntitySlotInfo.StateFlag State { get { return _info.State; } } - public EcsWorld World { get { return _info.World; } } - public IEnumerable Components + public virtual long full { get { return _info.full; } } + public virtual int id { get { return _info.id; } } + public virtual short gen { get { return _info.gen; } } + public virtual short worldID { get { return _info.worldID; } } + public virtual EntitySlotInfo.StateFlag State { get { return _info.State; } } + public virtual EcsWorld World { get { return _info.World; } } + public virtual IEnumerable Components { get { @@ -129,6 +127,10 @@ namespace DCFApixels.DragonECS.Core.Unchecked { _info = info; } + public EntityDebuggerProxy(entlong info) + { + _info = (EntitySlotInfo)info; + } public EntityDebuggerProxy(int entityID, short gen, short worldID) { _info = new EntitySlotInfo(entityID, gen, worldID); diff --git a/src/entlong.cs b/src/entlong.cs index e657a42..d8f38b2 100644 --- a/src/entlong.cs +++ b/src/entlong.cs @@ -6,6 +6,7 @@ using DCFApixels.DragonECS.Core.Internal; using DCFApixels.DragonECS.Core.Unchecked; using System; +using System.Collections.Generic; using System.Diagnostics; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; @@ -47,7 +48,7 @@ namespace DCFApixels.DragonECS public bool IsAlive { [MethodImpl(MethodImplOptions.AggressiveInlining)] - get + get { return EcsWorld.TryGetWorld(_world, out EcsWorld world) && world.IsAlive(_id, _gen); } @@ -391,7 +392,14 @@ namespace DCFApixels.DragonECS internal class DebuggerProxy : EntityDebuggerProxy { - public DebuggerProxy(entlong entity) : base(entity._id, entity._gen, entity._world) { } + public override long full => base.full; + public override int id => base.id; + public override short gen => base.gen; + public override short worldID => base.worldID; + public override EntitySlotInfo.StateFlag State => base.State; + public override EcsWorld World => base.World; + public override IEnumerable Components { get => base.Components; set => base.Components = value; } + public DebuggerProxy(entlong entity) : base(entity) { } } #endregion }