From ed521a5b8a83565308038c718d03f0c291602d22 Mon Sep 17 00:00:00 2001 From: Mikhail <99481254+DCFApixels@users.noreply.github.com> Date: Thu, 3 Oct 2024 08:21:48 +0800 Subject: [PATCH] stash --- src/Executors/EcsJoinToSubGraphExecutor.cs | 39 ++++------------------ 1 file changed, 7 insertions(+), 32 deletions(-) diff --git a/src/Executors/EcsJoinToSubGraphExecutor.cs b/src/Executors/EcsJoinToSubGraphExecutor.cs index 3cc8068..2cbc9b2 100644 --- a/src/Executors/EcsJoinToSubGraphExecutor.cs +++ b/src/Executors/EcsJoinToSubGraphExecutor.cs @@ -6,28 +6,7 @@ using System.Runtime.CompilerServices; namespace DCFApixels.DragonECS { - public sealed class EcsJoinToSubGraphExecutor : EcsJoinToSubGraphExecutor - where TAspect : EcsAspect, new() - { - private TAspect _aspect; - - #region Properties - public TAspect Aspect - { - [MethodImpl(MethodImplOptions.AggressiveInlining)] - get { return _aspect; } - } - protected override EcsAspect AspectRaw - { - get - { - if (_aspect == null) { _aspect = World.GetAspect(); } - return _aspect; - } - } - #endregion - } - public abstract class EcsJoinToSubGraphExecutor : EcsQueryExecutor, IEcsWorldEventListener + public sealed class EcsJoinToSubGraphExecutor : EcsQueryExecutor, IEcsWorldEventListener { private EcsAspect _aspect; @@ -44,7 +23,6 @@ namespace DCFApixels.DragonECS private EcsProfilerMarker _executeMarker = new EcsProfilerMarker("JoinAttach"); #region Properties - protected abstract EcsAspect AspectRaw { get; } public sealed override long Version { [MethodImpl(MethodImplOptions.AggressiveInlining)] @@ -63,7 +41,6 @@ namespace DCFApixels.DragonECS _linkedList = new EntityLinkedList(World.Capacity); _baskets = new Basket[World.Capacity]; World.AddListener(this); - _aspect = AspectRaw; _graph = World.GetGraph(); } protected override void OnDestroy() @@ -110,8 +87,8 @@ namespace DCFApixels.DragonECS } else { - var iterator = _aspect.GetIteratorFor(span); - foreach (var relationEntityID in iterator) { AddStart(relationEntityID); } + var iterator = _aspect.Mask.GetIterator(); + foreach (var relationEntityID in iterator.Iterate(span)) { AddStart(relationEntityID); } } } if ((mode & EcsSubGraphMode.EndToStart) != 0) @@ -122,8 +99,8 @@ namespace DCFApixels.DragonECS } else { - var iterator = _aspect.GetIteratorFor(span); - foreach (var relationEntityID in iterator) { AddEnd(relationEntityID); } + var iterator = _aspect.Mask.GetIterator(); + foreach (var relationEntityID in iterator.Iterate(span)) { AddEnd(relationEntityID); } } } @@ -354,12 +331,11 @@ namespace DCFApixels.DragonECS { world.ReleaseDelEntityBufferAll(); } - var executor = world.GetExecutor>(); + world.GetQueryCache(out EcsJoinToSubGraphExecutor executor, out EmptyAspect _); return executor.ExecuteFor(span, mode); } #endregion - #region JoinToGraph public static EcsSubGraph JoinToSubGraph(this TCollection entities, out TAspect aspect, EcsSubGraphMode mode = EcsSubGraphMode.StartToEnd) where TAspect : EcsAspect, new() @@ -380,8 +356,7 @@ namespace DCFApixels.DragonECS { world.ReleaseDelEntityBufferAll(); } - var executor = world.GetExecutor>(); - aspect = executor.Aspect; + world.GetQueryCache(out EcsJoinToSubGraphExecutor executor, out aspect); return executor.ExecuteFor(span, mode); } #endregion