GetHardAABB (#2514)

This commit is contained in:
metalgearsloth
2022-02-07 02:10:02 +11:00
committed by GitHub
parent 8fcba93ada
commit 025fdcd0b3
@@ -1,3 +1,4 @@
using System;
using Robust.Shared.Maths;
using Robust.Shared.Physics;
@@ -38,4 +39,31 @@ public partial class SharedPhysicsSystem
return bounds;
}
public Box2 GetHardAABB(PhysicsComponent body, TransformComponent? xform = null, FixturesComponent? fixtures = null)
{
if (!Resolve(body.Owner, ref xform, ref fixtures))
{
throw new InvalidOperationException();
}
var (worldPos, worldRot) = xform.GetWorldPositionRotation();
var transform = new Transform(worldPos, (float) worldRot.Theta);
var bounds = new Box2(transform.Position, transform.Position);
foreach (var fixture in fixtures.Fixtures.Values)
{
if (!fixture.Hard) continue;
for (var i = 0; i < fixture.Shape.ChildCount; i++)
{
var boundy = fixture.Shape.ComputeAABB(transform, i);
bounds = bounds.Union(boundy);
}
}
return bounds;
}
}