(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

View File

@@ -105,7 +105,7 @@ namespace Barotrauma
if (Vector2.DistanceSquared(bodyPos, levelWall.Body.Position) > 0.5f)
{
levelWall.Body.SetTransform(bodyPos, levelWall.Body.Rotation);
levelWall.Body.SetTransformIgnoreContacts(ref bodyPos, levelWall.Body.Rotation);
}
}
}

View File

@@ -42,10 +42,17 @@ namespace Barotrauma
bool displace = moveAmount.LengthSquared() > 100.0f * 100.0f;
foreach (Submarine sub in subsToMove)
{
sub.PhysicsBody.SetTransform(sub.PhysicsBody.SimPosition + ConvertUnits.ToSimUnits(moveAmount), 0.0f);
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))
@@ -55,7 +62,6 @@ namespace Barotrauma
if (Character.Controlled != null) Character.Controlled.CursorPosition += moveAmount;
}
}
}
}

View File

@@ -178,7 +178,7 @@ namespace Barotrauma
{
get
{
return (body == null) ? base.Position : ConvertUnits.ToDisplayUnits(SimPosition);
return (body == null) ? base.Position : body.Position;
}
}
@@ -186,7 +186,7 @@ namespace Barotrauma
{
get
{
return (body == null) ? base.SimPosition : body.SimPosition;
return (body == null) ? ConvertUnits.ToSimUnits(base.Position) : body.SimPosition;
}
}

View File

@@ -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;
targetRotation = null;
}