diff --git a/Barotrauma/BarotraumaClient/Source/Items/DockingPort.cs b/Barotrauma/BarotraumaClient/Source/Items/DockingPort.cs index f7de0dab8..fee47afdb 100644 --- a/Barotrauma/BarotraumaClient/Source/Items/DockingPort.cs +++ b/Barotrauma/BarotraumaClient/Source/Items/DockingPort.cs @@ -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); + } } }