feat(runtime): seal dormant SetPosition evaluations
This commit is contained in:
parent
22651c823d
commit
99f867f053
16 changed files with 2298 additions and 62 deletions
|
|
@ -25,6 +25,14 @@ public sealed class CellArray : ICollection<uint>, IReadOnlyCollection<uint>
|
|||
private readonly List<uint> _order = new();
|
||||
private readonly HashSet<uint> _seen = new();
|
||||
|
||||
/// <summary>
|
||||
/// Optional append-only union target used by one retained SetPosition
|
||||
/// transaction. Clearing this CELLARRAY must not clear the target: retail
|
||||
/// can rebuild the working array repeatedly while every probed cell still
|
||||
/// contributes to the transaction's collision-world authority footprint.
|
||||
/// </summary>
|
||||
internal CellArray? UnionTarget { get; set; }
|
||||
|
||||
public int Count => _order.Count;
|
||||
public bool IsReadOnly => false;
|
||||
|
||||
|
|
@ -34,6 +42,11 @@ public sealed class CellArray : ICollection<uint>, IReadOnlyCollection<uint>
|
|||
/// <summary>Append <paramref name="id"/> iff not already present (retail add_cell dedup).</summary>
|
||||
public void Add(uint id)
|
||||
{
|
||||
if (UnionTarget is { } target
|
||||
&& !ReferenceEquals(target, this))
|
||||
{
|
||||
target.Add(id);
|
||||
}
|
||||
if (_seen.Add(id))
|
||||
_order.Add(id);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue