(480a052a8) Minor physics optimization: use SetTransformIgnoreContacts when correcting physicsbody positions

This commit is contained in:
Joonas Rikkonen
2019-04-23 11:15:32 +03:00
parent da3e325ffc
commit 9c5d25a2da
4 changed files with 13 additions and 7 deletions
@@ -105,7 +105,7 @@ namespace Barotrauma
if (Vector2.DistanceSquared(bodyPos, levelWall.Body.Position) > 0.5f) if (Vector2.DistanceSquared(bodyPos, levelWall.Body.Position) > 0.5f)
{ {
levelWall.Body.SetTransform(bodyPos, levelWall.Body.Rotation); levelWall.Body.SetTransformIgnoreContacts(ref bodyPos, levelWall.Body.Rotation);
} }
} }
} }
@@ -42,10 +42,17 @@ namespace Barotrauma
bool displace = moveAmount.LengthSquared() > 100.0f * 100.0f; bool displace = moveAmount.LengthSquared() > 100.0f * 100.0f;
foreach (Submarine sub in subsToMove) foreach (Submarine sub in subsToMove)
{ {
sub.PhysicsBody.SetTransform(sub.PhysicsBody.SimPosition + ConvertUnits.ToSimUnits(moveAmount), 0.0f);
sub.PhysicsBody.LinearVelocity = newVelocity; sub.PhysicsBody.LinearVelocity = newVelocity;
if (displace) sub.SubBody.DisplaceCharacters(moveAmount); if (displace)
{
sub.PhysicsBody.SetTransform(sub.PhysicsBody.SimPosition + ConvertUnits.ToSimUnits(moveAmount), 0.0f);
sub.SubBody.DisplaceCharacters(moveAmount);
}
else
{
sub.PhysicsBody.SetTransformIgnoreContacts(sub.PhysicsBody.SimPosition + ConvertUnits.ToSimUnits(moveAmount), 0.0f);
}
} }
if (closestSub != null && subsToMove.Contains(closestSub)) if (closestSub != null && subsToMove.Contains(closestSub))
@@ -55,7 +62,6 @@ namespace Barotrauma
if (Character.Controlled != null) Character.Controlled.CursorPosition += moveAmount; if (Character.Controlled != null) Character.Controlled.CursorPosition += moveAmount;
} }
} }
} }
} }
@@ -178,7 +178,7 @@ namespace Barotrauma
{ {
get get
{ {
return (body == null) ? base.Position : ConvertUnits.ToDisplayUnits(SimPosition); return (body == null) ? base.Position : body.Position;
} }
} }
@@ -186,7 +186,7 @@ namespace Barotrauma
{ {
get get
{ {
return (body == null) ? base.SimPosition : body.SimPosition; return (body == null) ? ConvertUnits.ToSimUnits(base.Position) : body.SimPosition;
} }
} }
@@ -732,7 +732,7 @@ namespace Barotrauma
} }
} }
SetTransform((Vector2)targetPosition, targetRotation == null ? body.Rotation : (float)targetRotation); SetTransformIgnoreContacts((Vector2)targetPosition, targetRotation == null ? body.Rotation : (float)targetRotation);
targetPosition = null; targetPosition = null;
targetRotation = null; targetRotation = null;
} }