using System.Collections.Generic; using System.Numerics; using AcDream.Core.Physics; using AcDream.Core.World.Cells; using DatReaderWriter.Types; using Xunit; using DatEnvCell = DatReaderWriter.DBObjs.EnvCell; namespace AcDream.Core.Tests.Physics; public class CellGraphPopulationTests { [Fact] public void CacheCellStruct_PublishesLoadedCell_WhenPhysicsAndContainmentRootsAreNull() { var cache = new PhysicsDataCache(); var cellStruct = new CellStruct { VertexArray = new VertexArray { Vertices = new Dictionary() }, Polygons = new Dictionary(), CellBSP = new CellBSPTree { Root = null }, }; var dat = new DatEnvCell { Flags = (DatReaderWriter.Enums.EnvCellFlags)0, CellPortals = new List(), VisibleCells = new List(), }; cache.CacheCellStruct(0xA9B40174u, dat, cellStruct, Matrix4x4.Identity); CellPhysics loaded = Assert.IsType( cache.GetCellStruct(0xA9B40174u)); Assert.True(CollisionTraversal.HasCellContainment(cache, loaded)); Assert.True(CollisionTraversal.PointInsideCell( cache, loaded, new Vector3(10_000f, -10_000f, 500f))); Assert.NotNull(cache.CellGraph.GetVisible(0xA9B40174u)); Assert.IsType(cache.CellGraph.GetVisible(0xA9B40174u)); } }