(480a052a8) Minor physics optimization: use SetTransformIgnoreContacts when correcting physicsbody positions
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user