From 218b14d4bbab067f23d5b6d7ef9f5a941d50a4db Mon Sep 17 00:00:00 2001 From: Regalis Date: Thu, 21 Jan 2016 17:38:31 +0200 Subject: [PATCH] Climbing walls with diving suit equipped, fixed weird animations when climbing with an item in hand --- .../Animation/HumanoidAnimController.cs | 19 ++++++++++-------- Subsurface/Source/Map/Levels/Level.cs | 19 ------------------ Subsurface_Solution.v12.suo | Bin 856576 -> 829440 bytes 3 files changed, 11 insertions(+), 27 deletions(-) diff --git a/Subsurface/Source/Characters/Animation/HumanoidAnimController.cs b/Subsurface/Source/Characters/Animation/HumanoidAnimController.cs index 94758b1aa..0809000d4 100644 --- a/Subsurface/Source/Characters/Animation/HumanoidAnimController.cs +++ b/Subsurface/Source/Characters/Animation/HumanoidAnimController.cs @@ -631,10 +631,10 @@ namespace Barotrauma IgnorePlatforms = true; Vector2 tempTargetMovement = TargetMovement; - if (TargetMovement.Y != 0.0f) - { - tempTargetMovement.Y = Math.Max(Math.Abs(TargetMovement.Y), 0.6f) * Math.Sign(TargetMovement.Y); - } + //if (TargetMovement.Y != 0.0f) + //{ + // tempTargetMovement.Y = Math.Max(Math.Abs(TargetMovement.Y), 0.6f) * Math.Sign(TargetMovement.Y); + //} movement = MathUtils.SmoothStep(movement, tempTargetMovement, 0.3f); Vector2 footPos, handPos; @@ -703,7 +703,8 @@ namespace Barotrauma float movementFactor = (handPos.Y / stepHeight) * (float)Math.PI; movementFactor = 0.8f + (float)Math.Abs(Math.Sin(movementFactor)); - Vector2 climbForce = new Vector2(0.0f, movement.Y + 0.4f) * movementFactor; + Vector2 climbForce = new Vector2(0.0f, movement.Y + 0.6f) * movementFactor; + if (climbForce.Y > 0.5f) climbForce.Y = Math.Max(climbForce.Y, 1.3f); torso.body.ApplyForce(climbForce * 40.0f * torso.Mass); head.body.SmoothRotate(0.0f); @@ -722,7 +723,7 @@ namespace Barotrauma if (Math.Abs(torso.LinearVelocity.Y) > 5.0f || TargetMovement.X != 0.0f || (TargetMovement.Y < 0.0f && ConvertUnits.ToSimUnits(trigger.Height) + handPos.Y < HeadPosition * 1.5f) || - (TargetMovement.Y > 0.0f && handPos.Y > 0.3f)) + (TargetMovement.Y > 0.0f && handPos.Y > 0.1f)) { Anim = Animation.None; character.SelectedConstruction = null; @@ -825,7 +826,7 @@ namespace Barotrauma Vector2 itemPos = aim ? aimPos : holdPos; float itemAngle; - if (stunTimer <= 0.0f && aim && itemPos != Vector2.Zero) + if (Anim != Animation.Climbing && stunTimer <= 0.0f && aim && itemPos != Vector2.Zero) { Vector2 mousePos = ConvertUnits.ToSimUnits(character.CursorPosition); @@ -858,7 +859,7 @@ namespace Barotrauma Vector2 shoulderPos = limbJoints[2].WorldAnchorA; Vector2 transformedHoldPos = shoulderPos; - if (itemPos == Vector2.Zero) + if (itemPos == Vector2.Zero || Anim == Animation.Climbing) { if (character.SelectedItems[1] == item) @@ -900,6 +901,8 @@ namespace Barotrauma //item.SetTransform(MathUtils.SmoothStep(item.body.SimPosition, transformedHoldPos + bodyVelocity, 0.5f), itemAngle); + if (Anim == Animation.Climbing) return; + for (int i = 0; i < 2; i++) { if (character.SelectedItems[i] != item) continue; diff --git a/Subsurface/Source/Map/Levels/Level.cs b/Subsurface/Source/Map/Levels/Level.cs index 4a737e3d7..ef3f58c60 100644 --- a/Subsurface/Source/Map/Levels/Level.cs +++ b/Subsurface/Source/Map/Levels/Level.cs @@ -910,25 +910,6 @@ namespace Barotrauma renderer.DrawBackground(spriteBatch, cam, backgroundSpriteManager); } - - public void DebugCheckPos() - { - - Vector2 avgPos = Vector2.Zero; - foreach (VoronoiCell cell in cells) - { - if (cell.body == null) continue; - - - System.Diagnostics.Debug.WriteLine(cell.body.Position); - avgPos += cell.body.Position; - } - - System.Diagnostics.Debug.WriteLine("avgpos: " + avgPos / cells.Count); - - //System.Diagnostics.Debug.WriteLine("pos: " + Position); - } - public List GetCells(Vector2 pos, int searchDepth = 2) { int gridPosX = (int)Math.Floor(pos.X / GridCellWidth); diff --git a/Subsurface_Solution.v12.suo b/Subsurface_Solution.v12.suo index dc20b0e4575888c3559d824d9b07674ad1c45383..79c467196ba695a6aefea7d42f73b95066c17e45 100644 GIT binary patch delta 12120 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
  • 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 ECzfEU-v9sr