Transforming received in-sub mouse coordinates to outside coordinates if the character is outside and vice versa, HiddenSubPosition fix (can't use Level.Loaded to find the top of the level because the level isn't loaded yet)

This commit is contained in:
Regalis
2017-01-05 19:07:18 +02:00
parent 518eea746e
commit beac45458e
7 changed files with 86 additions and 49 deletions
+3 -17
View File
@@ -50,25 +50,11 @@ namespace Barotrauma
public static PosInfo TransformInToOutside(PosInfo posInfo)
{
Submarine closestSub = null;
foreach (Submarine sub in Submarine.Loaded)
{
Rectangle subBorders = sub.Borders;
subBorders.Location += sub.HiddenSubPosition.ToPoint() - new Point(0, sub.Borders.Height);
subBorders.Inflate(500.0f, 500.0f);
if (subBorders.Contains(ConvertUnits.ToDisplayUnits(posInfo.Position)))
{
closestSub = sub;
break;
}
}
if (closestSub == null) return posInfo;
var sub = Submarine.FindContaining(ConvertUnits.ToDisplayUnits(posInfo.Position));
if (sub == null) return posInfo;
return new PosInfo(
posInfo.Position + ConvertUnits.ToSimUnits(closestSub.Position),
posInfo.Position + ConvertUnits.ToSimUnits(sub.Position),
posInfo.Direction,
posInfo.ID,
posInfo.Timestamp);