refactor(runtime): acknowledge exact world host projections
This commit is contained in:
parent
73d0b54e38
commit
18d17d8bb1
17 changed files with 1677 additions and 72 deletions
|
|
@ -144,6 +144,39 @@ public sealed class WorldGenerationQuiescenceTests
|
|||
Assert.Equal(inventoryGuid, selection.SelectedObjectId);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ReentrantBeginDuringAudioResume_ReconcilesToNewestEdge()
|
||||
{
|
||||
var transit = new RuntimeWorldTransitState();
|
||||
var world = new GpuWorldState(
|
||||
availability: new WorldGenerationAvailabilityState(transit));
|
||||
var audio = new ReentrantAudioQuiescence();
|
||||
var quiescence = new WorldGenerationQuiescence(
|
||||
new SelectionState(),
|
||||
world,
|
||||
_ => null,
|
||||
audio);
|
||||
var edge = new WorldGenerationQuiescenceEdge(
|
||||
ShouldApply: true,
|
||||
ClearWorldSelection: false);
|
||||
quiescence.CommitBegin(edge);
|
||||
audio.OnResume = () =>
|
||||
{
|
||||
audio.OnResume = null;
|
||||
quiescence.CommitBegin(edge);
|
||||
};
|
||||
|
||||
quiescence.ObserveReleased();
|
||||
|
||||
Assert.Equal(2, audio.SuspendCalls);
|
||||
Assert.Equal(1, audio.ResumeCalls);
|
||||
|
||||
quiescence.ObserveReleased();
|
||||
|
||||
Assert.Equal(2, audio.SuspendCalls);
|
||||
Assert.Equal(2, audio.ResumeCalls);
|
||||
}
|
||||
|
||||
private static RuntimeDestinationReadiness Ready(
|
||||
long generation,
|
||||
uint destinationCell) =>
|
||||
|
|
@ -178,4 +211,19 @@ public sealed class WorldGenerationQuiescenceTests
|
|||
public void SuspendWorldAudio() => SuspendCalls++;
|
||||
public void ResumeWorldAudio() => ResumeCalls++;
|
||||
}
|
||||
|
||||
private sealed class ReentrantAudioQuiescence : IWorldAudioQuiescence
|
||||
{
|
||||
public int SuspendCalls { get; private set; }
|
||||
public int ResumeCalls { get; private set; }
|
||||
public Action? OnResume { get; set; }
|
||||
|
||||
public void SuspendWorldAudio() => SuspendCalls++;
|
||||
|
||||
public void ResumeWorldAudio()
|
||||
{
|
||||
ResumeCalls++;
|
||||
OnResume?.Invoke();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue