From e0878096f455d117f3397c6637ea685c12923c6e Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Tue, 27 Dec 2022 14:33:04 +1100 Subject: [PATCH] Add AttachToGridOrMap test (#3625) Closes https://github.com/space-wizards/RobustToolbox/issues/3624 --- .../GameObjects/TransformComponent_Tests.cs | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/Robust.UnitTesting/Shared/GameObjects/TransformComponent_Tests.cs b/Robust.UnitTesting/Shared/GameObjects/TransformComponent_Tests.cs index 9dfa14c8a..3ea2c3d20 100644 --- a/Robust.UnitTesting/Shared/GameObjects/TransformComponent_Tests.cs +++ b/Robust.UnitTesting/Shared/GameObjects/TransformComponent_Tests.cs @@ -43,5 +43,32 @@ namespace Robust.UnitTesting.Shared.GameObjects Assert.That(invWorldMatrix, Is.EqualTo(xform2.InvWorldMatrix)); } + + /// + /// Asserts that when AttachToGridOrMap is called the entity remains in the same position. + /// + [Test] + public void AttachToGridOrMap() + { + var server = RobustServerSimulation.NewSimulation().InitializeInstance(); + + var entManager = server.Resolve(); + var mapManager = server.Resolve(); + + var mapId = mapManager.CreateMap(); + var grid = mapManager.CreateGrid(mapId); + grid.SetTile(new Vector2i(0, 0), new Tile(1)); + var gridXform = entManager.GetComponent(grid.Owner); + gridXform.LocalPosition = new Vector2(0f, 100f); + + var ent1 = entManager.SpawnEntity(null, new EntityCoordinates(grid.Owner, Vector2.One * grid.TileSize / 2)); + var ent2 = entManager.SpawnEntity(null, new EntityCoordinates(ent1, Vector2.Zero)); + + var xform2 = entManager.GetComponent(ent2); + Assert.That(xform2.WorldPosition, Is.EqualTo(new Vector2(0.5f, 100.5f))); + + xform2.AttachToGridOrMap(); + Assert.That(xform2.LocalPosition, Is.EqualTo(Vector2.One * grid.TileSize / 2)); + } } }