using System.Numerics; using AcDream.Core.World; using Xunit; namespace AcDream.Core.Tests.World; public class WorldEntityAabbTests { [Fact] public void Aabb_DefaultRadius_PositionPlusMinus5() { var entity = new WorldEntity { Id = 1, SourceGfxObjOrSetupId = 0, Position = new Vector3(10, 20, 30), Rotation = System.Numerics.Quaternion.Identity, MeshRefs = System.Array.Empty(), }; entity.RefreshAabb(); Assert.Equal(new Vector3(5, 15, 25), entity.AabbMin); Assert.Equal(new Vector3(15, 25, 35), entity.AabbMax); } [Fact] public void Aabb_DirtyFlag_SetByMutator_ClearedByRefresh() { var entity = new WorldEntity { Id = 1, SourceGfxObjOrSetupId = 0, Position = new Vector3(10, 20, 30), Rotation = System.Numerics.Quaternion.Identity, MeshRefs = System.Array.Empty(), }; entity.RefreshAabb(); Assert.False(entity.AabbDirty); entity.SetPosition(new Vector3(100, 200, 300)); Assert.True(entity.AabbDirty); entity.RefreshAabb(); Assert.False(entity.AabbDirty); Assert.Equal(new Vector3(95, 195, 295), entity.AabbMin); } }