Debug visualization of docking port colliders

This commit is contained in:
Joonas Rikkonen
2018-08-01 17:30:07 +03:00
parent 027cebafdd
commit 5ba3f9384a

View File

@@ -1,4 +1,7 @@
using Barotrauma.Networking;
using FarseerPhysics;
using FarseerPhysics.Collision;
using FarseerPhysics.Dynamics;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
@@ -58,6 +61,41 @@ namespace Barotrauma.Items.Components
rect.Width, (int)(rect.Height / 2 * dockingState)), Color.White);
}
}
if (bodies != null)
{
for (int i = 0; i < bodies.Length; i++)
{
var body = bodies[i];
if (body == null) continue;
body.FixtureList[0].GetAABB(out AABB aabb, 0);
Vector2 bodyDrawPos = ConvertUnits.ToDisplayUnits(new Vector2(aabb.LowerBound.X, aabb.UpperBound.Y));
if ((i == 1 || i == 3) && dockingTarget?.item?.Submarine != null) bodyDrawPos += dockingTarget.item.Submarine.Position;
if ((i == 0 || i == 2) && item.Submarine != null) bodyDrawPos += item.Submarine.Position;
bodyDrawPos.Y = -bodyDrawPos.Y;
GUI.DrawRectangle(spriteBatch,
bodyDrawPos,
ConvertUnits.ToDisplayUnits(aabb.Extents * 2),
Color.Gray, false, 0.0f, 4);
}
}
if (doorBody != null && doorBody.Enabled)
{
doorBody.FixtureList[0].GetAABB(out AABB aabb, 0);
Vector2 bodyDrawPos = ConvertUnits.ToDisplayUnits(new Vector2(aabb.LowerBound.X, aabb.UpperBound.Y));
if (item?.Submarine != null) bodyDrawPos += item.Submarine.Position;
bodyDrawPos.Y = -bodyDrawPos.Y;
GUI.DrawRectangle(spriteBatch,
bodyDrawPos,
ConvertUnits.ToDisplayUnits(aabb.Extents * 2),
Color.Gray, false, 0, 8);
}
}
}