From 1cb39f7fd5bdcbb00bb0cb79706b8f6bd6f9d10e Mon Sep 17 00:00:00 2001 From: juanjp600 Date: Fri, 15 Dec 2017 18:11:00 -0300 Subject: [PATCH] Fixed some inconsistencies and oddities in physics-handling code I'm not sure if this fixes or breaks anything, but it's worth a shot. --- Barotrauma/BarotraumaClient/Source/Items/Item.cs | 2 +- .../Source/Characters/Animation/FishAnimController.cs | 4 ++-- .../Source/Characters/Animation/HumanoidAnimController.cs | 4 ++-- .../Source/Characters/Animation/Ragdoll.cs | 7 +++++++ Barotrauma/BarotraumaShared/Source/Items/Item.cs | 2 +- Barotrauma/BarotraumaShared/Source/Map/Structure.cs | 1 + Barotrauma/BarotraumaShared/Source/Map/Submarine.cs | 4 ++-- 7 files changed, 16 insertions(+), 8 deletions(-) diff --git a/Barotrauma/BarotraumaClient/Source/Items/Item.cs b/Barotrauma/BarotraumaClient/Source/Items/Item.cs index 00657a557..3b57c72d0 100644 --- a/Barotrauma/BarotraumaClient/Source/Items/Item.cs +++ b/Barotrauma/BarotraumaClient/Source/Items/Item.cs @@ -470,7 +470,7 @@ namespace Barotrauma } else { - body.FarseerBody.Enabled = false; + body.Enabled = false; } if ((newPosition - SimPosition).Length() > body.LinearVelocity.Length() * 2.0f) diff --git a/Barotrauma/BarotraumaShared/Source/Characters/Animation/FishAnimController.cs b/Barotrauma/BarotraumaShared/Source/Characters/Animation/FishAnimController.cs index af427b259..0d67b09f8 100644 --- a/Barotrauma/BarotraumaShared/Source/Characters/Animation/FishAnimController.cs +++ b/Barotrauma/BarotraumaShared/Source/Characters/Animation/FishAnimController.cs @@ -78,7 +78,7 @@ namespace Barotrauma } //re-enable collider - if (!Collider.FarseerBody.Enabled) + if (!Collider.Enabled) { var lowestLimb = FindLowestLimb(); @@ -87,7 +87,7 @@ namespace Barotrauma Math.Max(lowestLimb.SimPosition.Y + (Collider.radius + Collider.height / 2), Collider.SimPosition.Y)), 0.0f); - Collider.FarseerBody.Enabled = true; + Collider.Enabled = true; } ResetPullJoints(); diff --git a/Barotrauma/BarotraumaShared/Source/Characters/Animation/HumanoidAnimController.cs b/Barotrauma/BarotraumaShared/Source/Characters/Animation/HumanoidAnimController.cs index f6962526c..d064e3771 100644 --- a/Barotrauma/BarotraumaShared/Source/Characters/Animation/HumanoidAnimController.cs +++ b/Barotrauma/BarotraumaShared/Source/Characters/Animation/HumanoidAnimController.cs @@ -104,7 +104,7 @@ namespace Barotrauma //re-enable collider - if (!Collider.FarseerBody.Enabled) + if (!Collider.Enabled) { var lowestLimb = FindLowestLimb(); @@ -114,7 +114,7 @@ namespace Barotrauma Collider.Rotation); Collider.FarseerBody.ResetDynamics(); - Collider.FarseerBody.Enabled = true; + Collider.Enabled = true; } if (swimming) diff --git a/Barotrauma/BarotraumaShared/Source/Characters/Animation/Ragdoll.cs b/Barotrauma/BarotraumaShared/Source/Characters/Animation/Ragdoll.cs index a0dbe6343..39f1f240a 100644 --- a/Barotrauma/BarotraumaShared/Source/Characters/Animation/Ragdoll.cs +++ b/Barotrauma/BarotraumaShared/Source/Characters/Animation/Ragdoll.cs @@ -1469,5 +1469,12 @@ namespace Barotrauma list.Remove(this); } + public static void RemoveAll() + { + for (int i = list.Count - 1; i >= 0; i--) + { + list[i].Remove(); + } + } } } diff --git a/Barotrauma/BarotraumaShared/Source/Items/Item.cs b/Barotrauma/BarotraumaShared/Source/Items/Item.cs index d6c4d2aad..027689244 100644 --- a/Barotrauma/BarotraumaShared/Source/Items/Item.cs +++ b/Barotrauma/BarotraumaShared/Source/Items/Item.cs @@ -1605,7 +1605,7 @@ namespace Barotrauma msg.Write(body.FarseerBody.Awake); if (body.FarseerBody.Awake) { - body.FarseerBody.Enabled = true; + body.Enabled = true; msg.WriteRangedSingle(MathHelper.Clamp(body.LinearVelocity.X, -MaxVel, MaxVel), -MaxVel, MaxVel, 12); msg.WriteRangedSingle(MathHelper.Clamp(body.LinearVelocity.Y, -MaxVel, MaxVel), -MaxVel, MaxVel, 12); } diff --git a/Barotrauma/BarotraumaShared/Source/Map/Structure.cs b/Barotrauma/BarotraumaShared/Source/Map/Structure.cs index a9f7f8330..c25556639 100644 --- a/Barotrauma/BarotraumaShared/Source/Map/Structure.cs +++ b/Barotrauma/BarotraumaShared/Source/Map/Structure.cs @@ -835,6 +835,7 @@ namespace Barotrauma { StairDirection = StairDirection == Direction.Left ? Direction.Right : Direction.Left; bodies.ForEach(b => GameMain.World.RemoveBody(b)); + bodies.Clear(); CreateStairBodies(); } diff --git a/Barotrauma/BarotraumaShared/Source/Map/Submarine.cs b/Barotrauma/BarotraumaShared/Source/Map/Submarine.cs index 854adb3be..c44d7b514 100644 --- a/Barotrauma/BarotraumaShared/Source/Map/Submarine.cs +++ b/Barotrauma/BarotraumaShared/Source/Map/Submarine.cs @@ -1208,9 +1208,9 @@ namespace Barotrauma Item.ItemList.Clear(); } - PhysicsBody.RemoveAll(); + Ragdoll.RemoveAll(); - Ragdoll.list.Clear(); + PhysicsBody.RemoveAll(); GameMain.World.Clear();