From a976b75fc783a69fc511c0020d1c2beffee2360f Mon Sep 17 00:00:00 2001 From: Mikhail <99481254+DCFApixels@users.noreply.github.com> Date: Thu, 28 Mar 2024 20:32:24 +0800 Subject: [PATCH 1/2] add EscWorld.isNullOrDetroyed --- src/EcsWorld.cs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/EcsWorld.cs b/src/EcsWorld.cs index 0bbff40..798e2a5 100644 --- a/src/EcsWorld.cs +++ b/src/EcsWorld.cs @@ -731,6 +731,14 @@ namespace DCFApixels.DragonECS #endregion } + public static class EcsWorldExtenssions + { + public static bool IsNullOrDetroyed(this EcsWorld self) + { + return self == null || self.IsDestroyed; + } + } + #region Callbacks Interface public interface IEcsWorldEventListener { From e46951f5a685e3d1d621265652edf824f8cf0982 Mon Sep 17 00:00:00 2001 From: Mikhail <99481254+DCFApixels@users.noreply.github.com> Date: Thu, 28 Mar 2024 20:33:02 +0800 Subject: [PATCH 2/2] update entlong add inline add unchecked methods --- src/entlong.cs | 70 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 69 insertions(+), 1 deletion(-) diff --git a/src/entlong.cs b/src/entlong.cs index b59df44..015b7e8 100644 --- a/src/entlong.cs +++ b/src/entlong.cs @@ -105,49 +105,72 @@ namespace DCFApixels.DragonECS #endregion #region TryGetters + [MethodImpl(MethodImplOptions.AggressiveInlining)] public bool TryGetID(out int id) { id = this.id; return IsAlive; } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public bool TryGetWorld(out EcsWorld world) { world = EcsWorld.GetWorld(this.world); return IsAlive; } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public bool TryGetWorldID(out short worldID) { worldID = world; return IsAlive; } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void Unpack(out int id, out EcsWorld world) { +#if (DEBUG && !DISABLE_DEBUG) || ENABLE_DRAGONECS_ASSERT_CHEKS + if (!IsAlive) { Throw.Ent_ThrowIsNotAlive(this); } +#endif world = EcsWorld.GetWorld(this.world); id = this.id; } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void Unpack(out int id, out short gen, out EcsWorld world) { +#if (DEBUG && !DISABLE_DEBUG) || ENABLE_DRAGONECS_ASSERT_CHEKS + if (!IsAlive) { Throw.Ent_ThrowIsNotAlive(this); } +#endif world = EcsWorld.GetWorld(this.world); gen = this.gen; id = this.id; } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void Unpack(out int id, out short worldID) { +#if (DEBUG && !DISABLE_DEBUG) || ENABLE_DRAGONECS_ASSERT_CHEKS + if (!IsAlive) { Throw.Ent_ThrowIsNotAlive(this); } +#endif worldID = world; id = this.id; } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void Unpack(out int id, out short gen, out short worldID) { +#if (DEBUG && !DISABLE_DEBUG) || ENABLE_DRAGONECS_ASSERT_CHEKS + if (!IsAlive) { Throw.Ent_ThrowIsNotAlive(this); } +#endif worldID = world; gen = this.gen; id = this.id; } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] public bool TryUnpack(out int id, out EcsWorld world) { world = EcsWorld.GetWorld(this.world); id = this.id; return IsAlive; } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public bool TryUnpack(out int id, out short gen, out EcsWorld world) { world = EcsWorld.GetWorld(this.world); @@ -155,12 +178,14 @@ namespace DCFApixels.DragonECS id = this.id; return IsAlive; } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public bool TryUnpack(out int id, out short worldID) { worldID = world; id = this.id; return IsAlive; } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public bool TryUnpack(out int id, out short gen, out short worldID) { worldID = world; @@ -168,6 +193,49 @@ namespace DCFApixels.DragonECS id = this.id; return IsAlive; } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int GetIDUnchecked() + { + return id; + } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public EcsWorld GetWorldUnchecked() + { + return EcsWorld.GetWorld(world); + } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public short GetWorldIDUnchecked() + { + return world; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void UnpackUnchecked(out int id, out EcsWorld world) + { + world = EcsWorld.GetWorld(this.world); + id = this.id; + } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void UnpackUnchecked(out int id, out short gen, out EcsWorld world) + { + world = EcsWorld.GetWorld(this.world); + gen = this.gen; + id = this.id; + } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void UnpackUnchecked(out int id, out short worldID) + { + worldID = world; + id = this.id; + } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void UnpackUnchecked(out int id, out short gen, out short worldID) + { + worldID = world; + gen = this.gen; + id = this.id; + } #endregion #region Operators @@ -333,4 +401,4 @@ namespace DCFApixels.DragonECS public enum EntState { Null, Dead, Alive, } } } -} +} \ No newline at end of file