mirror of
https://github.com/space-wizards/RobustToolbox.git
synced 2026-02-15 03:30:53 +01:00
* Fright night * Shitty bounds working * No more fixture leak * Optimise TryFindGridAt Should be O(1) now instead of the previous O(n) for number of fixtures * ambush * Merge stuffies * Merge to master * Fixes I guess * Fix client sync * Fix grid deserialization * Jank test * Fix deferral shitfuckery * Optimise and remove * Fixes * Just werk dam u * Optimisations * Bunch of fixes * FINALLY IT'S DONE * Fixes * Fix * Comment
63 lines
2.5 KiB
C#
63 lines
2.5 KiB
C#
using System.Threading.Tasks;
|
|
using NUnit.Framework;
|
|
using Robust.Shared.GameObjects;
|
|
using Robust.Shared.Map;
|
|
using Robust.Shared.Maths;
|
|
using Robust.Shared.Physics;
|
|
|
|
namespace Robust.UnitTesting.Shared.Map
|
|
{
|
|
/// <summary>
|
|
/// Tests whether grid fixtures are being generated correctly.
|
|
/// </summary>
|
|
[TestFixture]
|
|
public class GridFixtures_Tests : RobustIntegrationTest
|
|
{
|
|
[Test]
|
|
public async Task TestGridFixtures()
|
|
{
|
|
var server = StartServer();
|
|
await server.WaitIdleAsync();
|
|
|
|
var entManager = server.ResolveDependency<IEntityManager>();
|
|
var mapManager = server.ResolveDependency<IMapManager>();
|
|
|
|
await server.WaitAssertion(() =>
|
|
{
|
|
var mapId = mapManager.CreateMap();
|
|
var grid = mapManager.CreateGrid(mapId);
|
|
|
|
// Should be nothing if grid empty
|
|
Assert.That(entManager.ComponentManager.TryGetComponent(grid.GridEntityId, out PhysicsComponent gridBody));
|
|
Assert.That(gridBody.Fixtures.Count, Is.EqualTo(0));
|
|
Assert.That(gridBody.BodyType, Is.EqualTo(BodyType.Static));
|
|
|
|
// 1 fixture if we only ever update the 1 chunk
|
|
grid.SetTile(Vector2i.Zero, new Tile(1));
|
|
|
|
Assert.That(gridBody.Fixtures.Count, Is.EqualTo(1));
|
|
// Also should only be a single tile.
|
|
var bounds = gridBody.Fixtures[0].Shape.ComputeAABB(new Transform(Vector2.Zero, (float) Angle.Zero.Theta), 0);
|
|
// Poly probably has Box2D's radius added to it so won't be a unit square
|
|
Assert.That(MathHelper.CloseTo(Box2.Area(bounds), 1.0f, 0.1f));
|
|
|
|
// Now do 2 tiles (same chunk)
|
|
grid.SetTile(Vector2i.One, new Tile(1));
|
|
|
|
Assert.That(gridBody.Fixtures.Count, Is.EqualTo(2));
|
|
bounds = gridBody.Fixtures[0].Shape.ComputeAABB(new Transform(Vector2.Zero, (float) Angle.Zero.Theta), 0);
|
|
|
|
// Even if we add a new tile old fixture should stay the same if they don't connect.
|
|
Assert.That(MathHelper.CloseTo(Box2.Area(bounds), 1.0f, 0.1f));
|
|
|
|
// If we add a new chunk should be 3 now
|
|
grid.SetTile(new Vector2i(-1, -1), new Tile(1));
|
|
Assert.That(gridBody.Fixtures.Count, Is.EqualTo(3));
|
|
|
|
gridBody.LinearVelocity = Vector2.One;
|
|
Assert.That(gridBody.LinearVelocity.Length, Is.EqualTo(0f));
|
|
});
|
|
}
|
|
}
|
|
}
|