From 3246e2c5212ef733c62a2fe0a1c240b4ca7a384d Mon Sep 17 00:00:00 2001 From: Regalis Date: Wed, 5 Apr 2017 17:53:31 +0300 Subject: [PATCH] Limb physics aren't disabled when a character is frozen (only collider physics) -> frozen characters can still take damage from weapons --- .../Source/Characters/Animation/Ragdoll.cs | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/Subsurface/Source/Characters/Animation/Ragdoll.cs b/Subsurface/Source/Characters/Animation/Ragdoll.cs index e7307f5d3..4d7d0ccd2 100644 --- a/Subsurface/Source/Characters/Animation/Ragdoll.cs +++ b/Subsurface/Source/Characters/Animation/Ragdoll.cs @@ -8,8 +8,6 @@ using FarseerPhysics.Dynamics.Contacts; using FarseerPhysics.Dynamics.Joints; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; -using Barotrauma.Networking; -using Lidgren.Network; namespace Barotrauma { @@ -31,10 +29,10 @@ namespace Barotrauma frozen = value; - foreach (Limb l in Limbs) + /*foreach (Limb l in Limbs) { l.body.PhysEnabled = !frozen; - } + }*/ Collider.PhysEnabled = !frozen; } } @@ -99,7 +97,8 @@ namespace Barotrauma set { if (value == colliderIndex) return; - if (value >= collider.Count) return; + if (value >= collider.Count || value < 0) return; + if (collider[colliderIndex].height f.CollisionCategories.HasFlag(Physics.CollisionWall))) return; } - collider[value].LinearVelocity = collider[colliderIndex].LinearVelocity; - collider[value].AngularVelocity = collider[colliderIndex].AngularVelocity; + + Vector2 pos = collider[colliderIndex].SimPosition; pos.Y -= collider[colliderIndex].height * 0.5f; pos.Y += collider[value].height * 0.5f; collider[value].SetTransform(pos, collider[colliderIndex].Rotation); + + collider[value].LinearVelocity = collider[colliderIndex].LinearVelocity; + collider[value].AngularVelocity = collider[colliderIndex].AngularVelocity; + collider[value].Submarine = collider[colliderIndex].Submarine; collider[value].PhysEnabled = !frozen; collider[value].Enabled = !simplePhysicsEnabled; - collider[value].Submarine = collider[colliderIndex].Submarine; + collider[colliderIndex].PhysEnabled = false; colliderIndex = value; }