refactor(runtime): own world reveal generation
This commit is contained in:
parent
4ab98b080e
commit
a6860d5563
26 changed files with 1294 additions and 502 deletions
|
|
@ -2,6 +2,7 @@ using AcDream.App.Streaming;
|
|||
using AcDream.App.World;
|
||||
using AcDream.Core.Net;
|
||||
using AcDream.Core.Net.Messages;
|
||||
using AcDream.Runtime.World;
|
||||
using AcDream.Core.World;
|
||||
|
||||
namespace AcDream.App.Tests.World;
|
||||
|
|
@ -80,6 +81,7 @@ public sealed class LiveEntityWorldOriginCoordinatorTests
|
|||
farRadius: 2);
|
||||
|
||||
private static WorldRevealCoordinator Reveal() => new(
|
||||
new RuntimeWorldTransitState(),
|
||||
(_, _) => true,
|
||||
_ => true,
|
||||
(_, _) => true,
|
||||
|
|
|
|||
|
|
@ -6,6 +6,8 @@ using AcDream.App.World;
|
|||
using AcDream.Content.Vfx;
|
||||
using AcDream.Core.Physics;
|
||||
using AcDream.Core.World;
|
||||
using AcDream.Runtime;
|
||||
using AcDream.Runtime.World;
|
||||
using DatReaderWriter;
|
||||
using DatReaderWriter.DBObjs;
|
||||
using DatReaderWriter.Options;
|
||||
|
|
@ -42,8 +44,9 @@ public sealed class RecallTeleportAnimationTests
|
|||
public void LiveFrame_WhileCellsAreBlocked_DrainsNetworkAndCommandsWithoutWorldTicks()
|
||||
{
|
||||
var calls = new List<string>();
|
||||
var availability = new WorldGenerationAvailabilityState();
|
||||
availability.Begin(1);
|
||||
var transit = new RuntimeWorldTransitState();
|
||||
var availability = new WorldGenerationAvailabilityState(transit);
|
||||
transit.BeginReveal(RuntimePortalKind.Portal, 0x11340021u);
|
||||
var frame = new RetailLiveFrameCoordinator(
|
||||
new TestLiveObjectFramePhase(_ => calls.Add("objects")),
|
||||
new GpuWorldState(availability: availability),
|
||||
|
|
@ -61,8 +64,9 @@ public sealed class RecallTeleportAnimationTests
|
|||
public void LiveFrame_WhileCellsAreBlocked_SynchronizesOnlyRenderProjection()
|
||||
{
|
||||
var calls = new List<string>();
|
||||
var availability = new WorldGenerationAvailabilityState();
|
||||
availability.Begin(1);
|
||||
var transit = new RuntimeWorldTransitState();
|
||||
var availability = new WorldGenerationAvailabilityState(transit);
|
||||
transit.BeginReveal(RuntimePortalKind.Portal, 0x11340021u);
|
||||
var frame = new RetailLiveFrameCoordinator(
|
||||
new TestLiveObjectFramePhase(_ => calls.Add("objects")),
|
||||
new GpuWorldState(availability: availability),
|
||||
|
|
|
|||
|
|
@ -3,6 +3,8 @@ using AcDream.App.Rendering;
|
|||
using AcDream.App.Streaming;
|
||||
using AcDream.App.Update;
|
||||
using AcDream.App.World;
|
||||
using AcDream.Runtime;
|
||||
using AcDream.Runtime.World;
|
||||
|
||||
namespace AcDream.App.Tests.World;
|
||||
|
||||
|
|
@ -137,8 +139,10 @@ public sealed class UpdateFrameOrchestratorTests
|
|||
{
|
||||
var calls = new List<string>();
|
||||
var observed = new FrameObservations();
|
||||
var availability = new WorldGenerationAvailabilityState();
|
||||
availability.Begin(7);
|
||||
var transit = new RuntimeWorldTransitState();
|
||||
var availability = new WorldGenerationAvailabilityState(transit);
|
||||
long generation =
|
||||
transit.BeginReveal(RuntimePortalKind.Portal, 0x11340021u);
|
||||
UpdateFrameOrchestrator frame = Create(
|
||||
calls,
|
||||
observed: observed,
|
||||
|
|
@ -146,7 +150,20 @@ public sealed class UpdateFrameOrchestratorTests
|
|||
|
||||
frame.Tick(new UpdateFrameInput(0.25));
|
||||
frame.Tick(new UpdateFrameInput(0.25));
|
||||
availability.End(7);
|
||||
Assert.True(transit.AcknowledgeDestinationReadiness(
|
||||
new RuntimeDestinationReadiness(
|
||||
generation,
|
||||
0x11340021u,
|
||||
IsIndoor: false,
|
||||
IsUnhydratable: false,
|
||||
RequiredRenderRadius: 1,
|
||||
IsRenderNeighborhoodReady: true,
|
||||
AreCompositeTexturesReady: true,
|
||||
IsCollisionReady: true)));
|
||||
Assert.True(transit.AcknowledgeMaterialized(
|
||||
generation,
|
||||
0x11340021u));
|
||||
transit.Complete(generation);
|
||||
frame.Tick(new UpdateFrameInput(0.25));
|
||||
|
||||
Assert.Equal([0.0, 0.0, 0.25], observed.PublishedTimes);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue