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
|
|
@ -1,5 +1,6 @@
|
|||
using System.Threading.Tasks;
|
||||
using AcDream.App.Streaming;
|
||||
using AcDream.App.Rendering.Wb;
|
||||
using AcDream.Core.World;
|
||||
using DatReaderWriter.DBObjs;
|
||||
using Xunit;
|
||||
|
|
@ -109,6 +110,35 @@ public class LandblockStreamerTests
|
|||
Assert.Equal(1, meshBuildCalls);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Load_CarriesTheExactCompletedCellTransactionToTheConsumer()
|
||||
{
|
||||
var landblock = new LoadedLandblock(
|
||||
0x8C04FFFFu,
|
||||
new LandBlock(),
|
||||
System.Array.Empty<WorldEntity>());
|
||||
var cellBuild = new EnvCellLandblockBuild(
|
||||
landblock.LandblockId,
|
||||
System.Array.Empty<AcDream.App.Rendering.LoadedCell>(),
|
||||
System.Array.Empty<EnvCellShellPlacement>());
|
||||
var build = new LandblockBuild(landblock, cellBuild);
|
||||
var mesh = new AcDream.Core.Terrain.LandblockMeshData(
|
||||
System.Array.Empty<AcDream.Core.Terrain.TerrainVertex>(),
|
||||
System.Array.Empty<uint>());
|
||||
|
||||
using var streamer = new LandblockStreamer(
|
||||
loadLandblock: (_, _) => build,
|
||||
buildMeshOrNull: (_, _) => mesh);
|
||||
streamer.Start();
|
||||
streamer.EnqueueLoad(landblock.LandblockId, LandblockStreamJobKind.LoadNear);
|
||||
|
||||
var loaded = Assert.IsType<LandblockStreamResult.Loaded>(
|
||||
await DrainFirstAsync(streamer));
|
||||
|
||||
Assert.Same(build, loaded.Build);
|
||||
Assert.Same(cellBuild, loaded.Build.EnvCells);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task PromoteToNear_OvertakesAndSupersedesQueuedFarLoadForSameLandblock()
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue