43 lines
1.6 KiB
C#
43 lines
1.6 KiB
C#
using System.Collections.Generic;
|
|
using System.Numerics;
|
|
using AcDream.Core.World.Cells;
|
|
using DatReaderWriter.Enums;
|
|
using DatReaderWriter.Types;
|
|
using Xunit;
|
|
using DatEnvCell = DatReaderWriter.DBObjs.EnvCell;
|
|
using DatCellPortal = DatReaderWriter.Types.CellPortal;
|
|
|
|
namespace AcDream.Core.Tests.World.Cells;
|
|
|
|
public class EnvCellFromDatTests
|
|
{
|
|
[Fact]
|
|
public void FromDat_DerivesSeenOutside_OtherPortalId_PrefixedStab_AndBoundsFallback()
|
|
{
|
|
var cellStruct = new CellStruct
|
|
{
|
|
VertexArray = new VertexArray { Vertices = new Dictionary<ushort, SWVertex>() }, // empty -> bounds fallback
|
|
Polygons = new Dictionary<ushort, Polygon>(),
|
|
}; // CellBSP defaults to null → ContainmentBsp will be null
|
|
var dat = new DatEnvCell
|
|
{
|
|
Flags = EnvCellFlags.SeenOutside,
|
|
CellPortals = new List<DatCellPortal>
|
|
{
|
|
new() { OtherCellId = 0x0105, PolygonId = 0, OtherPortalId = 7, Flags = (PortalFlags)0 },
|
|
},
|
|
VisibleCells = new List<ushort> { 0x0105, 0x0106 },
|
|
};
|
|
|
|
var env = EnvCell.FromDat(0xA9B40104u, dat, cellStruct, Matrix4x4.Identity);
|
|
|
|
Assert.True(env.SeenOutside);
|
|
Assert.Single(env.Portals);
|
|
Assert.Equal(0x0105u, env.Portals[0].OtherCellId);
|
|
Assert.Equal((ushort)7, env.Portals[0].OtherPortalId);
|
|
Assert.Equal(new[] { 0xA9B40105u, 0xA9B40106u }, env.StabList);
|
|
Assert.Equal(Vector3.Zero, env.LocalBoundsMin);
|
|
Assert.Equal(Vector3.Zero, env.LocalBoundsMax);
|
|
Assert.Null(env.ContainmentBsp);
|
|
}
|
|
}
|