Some extra checks to prevent character flinging

New netcode will solve all of these problems the right way.
This commit is contained in:
juanjp600
2016-10-11 19:40:35 -03:00
parent 9540972db4
commit 4caf00dd9d
+11
View File
@@ -2028,9 +2028,15 @@ namespace Barotrauma
AnimController.Teleport(pos - SimPosition, Vector2.Zero); AnimController.Teleport(pos - SimPosition, Vector2.Zero);
} }
if ((pos-SimPosition).Length()>600.0f)
{
AnimController.Teleport(pos - SimPosition, -AnimController.RefLimb.LinearVelocity);
}
if (inSub) if (inSub)
{ {
//AnimController.FindHull(ConvertUnits.ToDisplayUnits(pos) - Submarine.Loaded.WorldPosition); //AnimController.FindHull(ConvertUnits.ToDisplayUnits(pos) - Submarine.Loaded.WorldPosition);
Submarine prevSub = Submarine;
Hull newHull = Hull.FindHull(ConvertUnits.ToDisplayUnits(pos), AnimController.CurrentHull, false); Hull newHull = Hull.FindHull(ConvertUnits.ToDisplayUnits(pos), AnimController.CurrentHull, false);
if (newHull != null) if (newHull != null)
@@ -2038,6 +2044,11 @@ namespace Barotrauma
AnimController.CurrentHull = newHull; AnimController.CurrentHull = newHull;
Submarine = newHull.Submarine; Submarine = newHull.Submarine;
} }
if (prevSub != null && Submarine != null && prevSub!=Submarine)
{
AnimController.Teleport(pos - SimPosition, Vector2.Zero);
}
} }
else else
{ {