53 lines
1.6 KiB
C#
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);
|
|
}
|