feat(A.5 T2): TwoTierDiff record + LandblockStreamJob.Load.Kind
Adds TwoTierDiff — the five-list output of StreamingRegion.RecenterTo (ToLoadFar/Near, ToPromote, ToDemote, ToUnload) per spec §4.2. Used by T3–T6 (StreamingRegion) and T13 (StreamingController). Extends LandblockStreamJob.Load with a LandblockStreamJobKind parameter so the streaming worker can route far vs near vs promote jobs differently (spec §4.3). Patches the one call site in LandblockStreamer.EnqueueLoad with LoadNear as a placeholder that preserves today's full-load semantics until T11 activates the worker thread and T16 routes by tier. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
d67d16fcfc
commit
90a2027d14
3 changed files with 17 additions and 2 deletions
|
|
@ -10,7 +10,7 @@ namespace AcDream.App.Streaming;
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public abstract record LandblockStreamJob(uint LandblockId)
|
public abstract record LandblockStreamJob(uint LandblockId)
|
||||||
{
|
{
|
||||||
public sealed record Load(uint LandblockId) : LandblockStreamJob(LandblockId);
|
public sealed record Load(uint LandblockId, LandblockStreamJobKind Kind) : LandblockStreamJob(LandblockId);
|
||||||
public sealed record Unload(uint LandblockId) : LandblockStreamJob(LandblockId);
|
public sealed record Unload(uint LandblockId) : LandblockStreamJob(LandblockId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -88,7 +88,7 @@ public sealed class LandblockStreamer : IDisposable
|
||||||
// Synchronous mode: invoke the load delegate inline. The result lands
|
// Synchronous mode: invoke the load delegate inline. The result lands
|
||||||
// in the outbox and DrainCompletions picks it up later in the same
|
// in the outbox and DrainCompletions picks it up later in the same
|
||||||
// (or next) frame.
|
// (or next) frame.
|
||||||
HandleJob(new LandblockStreamJob.Load(landblockId));
|
HandleJob(new LandblockStreamJob.Load(landblockId, LandblockStreamJobKind.LoadNear));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void EnqueueUnload(uint landblockId)
|
public void EnqueueUnload(uint landblockId)
|
||||||
|
|
|
||||||
15
src/AcDream.App/Streaming/TwoTierDiff.cs
Normal file
15
src/AcDream.App/Streaming/TwoTierDiff.cs
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace AcDream.App.Streaming;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Output of <see cref="StreamingRegion.RecenterTo"/> for the two-tier model.
|
||||||
|
/// Five disjoint lists describe what changed since the previous Tick. Per
|
||||||
|
/// Phase A.5 spec §4.2.
|
||||||
|
/// </summary>
|
||||||
|
public readonly record struct TwoTierDiff(
|
||||||
|
IReadOnlyList<uint> ToLoadFar, // entered far window from null (terrain only)
|
||||||
|
IReadOnlyList<uint> ToLoadNear, // entered near window from null (terrain + entities — first-tick or teleport)
|
||||||
|
IReadOnlyList<uint> ToPromote, // entered near window from far-resident (entities only)
|
||||||
|
IReadOnlyList<uint> ToDemote, // exited near window past hysteresis (drop entities)
|
||||||
|
IReadOnlyList<uint> ToUnload); // exited far window past hysteresis (drop terrain)
|
||||||
Loading…
Add table
Add a link
Reference in a new issue