fix(streaming): commit EnvCell landblocks atomically (#214)
Carry one complete cell payload with each streaming completion and publish visibility, physics, and render state on the render thread. Remove the obsolete post-readiness login reload that triggered a duplicate dungeon build. Co-Authored-By: Codex <noreply@openai.com>
This commit is contained in:
parent
85980fe13f
commit
b0c175afc0
26 changed files with 973 additions and 617 deletions
|
|
@ -42,9 +42,21 @@ public abstract record LandblockStreamResult(uint LandblockId)
|
|||
public sealed record Loaded(
|
||||
uint LandblockId,
|
||||
LandblockStreamTier Tier,
|
||||
LoadedLandblock Landblock,
|
||||
LandblockBuild Build,
|
||||
LandblockMeshData MeshData
|
||||
) : LandblockStreamResult(LandblockId);
|
||||
) : LandblockStreamResult(LandblockId)
|
||||
{
|
||||
public Loaded(
|
||||
uint landblockId,
|
||||
LandblockStreamTier tier,
|
||||
LoadedLandblock landblock,
|
||||
LandblockMeshData meshData)
|
||||
: this(landblockId, tier, new LandblockBuild(landblock), meshData)
|
||||
{
|
||||
}
|
||||
|
||||
public LoadedLandblock Landblock => Build.Landblock;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// A previously-Far-resident landblock was promoted to Near. The result
|
||||
|
|
@ -56,10 +68,19 @@ public abstract record LandblockStreamResult(uint LandblockId)
|
|||
/// </summary>
|
||||
public sealed record Promoted(
|
||||
uint LandblockId,
|
||||
LoadedLandblock Landblock,
|
||||
LandblockBuild Build,
|
||||
LandblockMeshData MeshData
|
||||
) : LandblockStreamResult(LandblockId)
|
||||
{
|
||||
public Promoted(
|
||||
uint landblockId,
|
||||
LoadedLandblock landblock,
|
||||
LandblockMeshData meshData)
|
||||
: this(landblockId, new LandblockBuild(landblock), meshData)
|
||||
{
|
||||
}
|
||||
|
||||
public LoadedLandblock Landblock => Build.Landblock;
|
||||
public IReadOnlyList<WorldEntity> Entities => Landblock.Entities;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue