acdream/tests/AcDream.App.Tests/RuntimeWorldTransitTestDriver.cs

53 lines
1.6 KiB
C#

using System.Numerics;
using AcDream.Core.Physics;
using AcDream.Runtime;
using AcDream.Runtime.World;
namespace AcDream.App.Tests;
internal static class RuntimeWorldTransitTestDriver
{
public static long BeginPortal(
RuntimeWorldTransitState transit,
uint destinationCell,
ushort sequence = 1)
{
AcceptPortalDestination(transit, destinationCell, sequence);
Assert.True(transit.TryBeginPortalReveal(
sequence,
destinationCell,
out long generation));
return generation;
}
public static void AcceptPortalDestination(
RuntimeWorldTransitState transit,
uint destinationCell,
ushort sequence = 1)
{
Assert.True(transit.TryQueueTeleportStart(sequence));
Assert.True(transit.ActivateQueuedTeleport());
Assert.True(transit.OfferTeleportDestination(
new RuntimeTeleportDestination(
EntityGuid: 0x50000001u,
InstanceSequence: 1,
PositionSequence: 1,
TeleportSequence: sequence,
ForcePositionSequence: 1,
Position: new Position(
destinationCell,
Vector3.Zero,
Quaternion.Identity)),
teleportTimestampAdvanced: true));
}
public static bool MaterializePortal(
RuntimeWorldTransitState transit,
long generation,
uint destinationCell,
ushort sequence = 1) =>
transit.AcknowledgePortalMaterialized(
generation,
sequence,
destinationCell);
}