mirror of
https://github.com/DCFApixels/DragonECS-Graphs.git
synced 2025-09-17 19:24:36 +08:00
Update EcsJoinToSubGraphExecutor.cs
This commit is contained in:
parent
ed521a5b8a
commit
6a0a28a199
@ -8,8 +8,6 @@ namespace DCFApixels.DragonECS
|
|||||||
{
|
{
|
||||||
public sealed class EcsJoinToSubGraphExecutor : EcsQueryExecutor, IEcsWorldEventListener
|
public sealed class EcsJoinToSubGraphExecutor : EcsQueryExecutor, IEcsWorldEventListener
|
||||||
{
|
{
|
||||||
private EcsAspect _aspect;
|
|
||||||
|
|
||||||
private EntityLinkedList _linkedList;
|
private EntityLinkedList _linkedList;
|
||||||
private Basket[] _baskets;
|
private Basket[] _baskets;
|
||||||
private int[] _startEntities;
|
private int[] _startEntities;
|
||||||
@ -22,6 +20,8 @@ namespace DCFApixels.DragonECS
|
|||||||
private int _targetWorldCapacity = -1;
|
private int _targetWorldCapacity = -1;
|
||||||
private EcsProfilerMarker _executeMarker = new EcsProfilerMarker("JoinAttach");
|
private EcsProfilerMarker _executeMarker = new EcsProfilerMarker("JoinAttach");
|
||||||
|
|
||||||
|
private EcsMaskIterator _iterator;
|
||||||
|
|
||||||
#region Properties
|
#region Properties
|
||||||
public sealed override long Version
|
public sealed override long Version
|
||||||
{
|
{
|
||||||
@ -42,6 +42,7 @@ namespace DCFApixels.DragonECS
|
|||||||
_baskets = new Basket[World.Capacity];
|
_baskets = new Basket[World.Capacity];
|
||||||
World.AddListener(this);
|
World.AddListener(this);
|
||||||
_graph = World.GetGraph();
|
_graph = World.GetGraph();
|
||||||
|
_iterator = Mask.GetIterator();
|
||||||
}
|
}
|
||||||
protected override void OnDestroy()
|
protected override void OnDestroy()
|
||||||
{
|
{
|
||||||
@ -81,26 +82,24 @@ namespace DCFApixels.DragonECS
|
|||||||
|
|
||||||
if ((mode & EcsSubGraphMode.StartToEnd) != 0)
|
if ((mode & EcsSubGraphMode.StartToEnd) != 0)
|
||||||
{
|
{
|
||||||
if (_aspect.Mask.IsEmpty)
|
if (Mask.IsEmpty)
|
||||||
{
|
{
|
||||||
foreach (var relationEntityID in span) { AddStart(relationEntityID); }
|
foreach (var relationEntityID in span) { AddStart(relationEntityID); }
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var iterator = _aspect.Mask.GetIterator();
|
foreach (var relationEntityID in _iterator.Iterate(span)) { AddStart(relationEntityID); }
|
||||||
foreach (var relationEntityID in iterator.Iterate(span)) { AddStart(relationEntityID); }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((mode & EcsSubGraphMode.EndToStart) != 0)
|
if ((mode & EcsSubGraphMode.EndToStart) != 0)
|
||||||
{
|
{
|
||||||
if (_aspect.Mask.IsEmpty)
|
if (Mask.IsEmpty)
|
||||||
{
|
{
|
||||||
foreach (var relationEntityID in span) { AddEnd(relationEntityID); }
|
foreach (var relationEntityID in span) { AddEnd(relationEntityID); }
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var iterator = _aspect.Mask.GetIterator();
|
foreach (var relationEntityID in _iterator.Iterate(span)) { AddEnd(relationEntityID); }
|
||||||
foreach (var relationEntityID in iterator.Iterate(span)) { AddEnd(relationEntityID); }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user