(773ace2cd) Fixed RagdollParams/AnimationParams GetDefaultPath failing if there are multiple installed content packages that define characters with the same name. TODO: take custom ragdoll/anim paths into account when calculating content package hashes

This commit is contained in:
Joonas Rikkonen
2019-05-16 06:40:57 +03:00
parent 2b95c55070
commit f01747e822
22 changed files with 207 additions and 921 deletions
@@ -53,9 +53,13 @@ namespace Barotrauma
(currentPath.NextNode != null && currentPath.NextNode.Ladders != null));
/// <summary>
/// Returns true if any node in the path is in stairs
/// Returns true if the previous, current or the next node is in stairs.
/// </summary>
public bool InStairs => currentPath != null && currentPath.Nodes.Any(n => n.Stairs != null);
public bool InStairs =>
currentPath != null && (
currentPath.PrevNode != null && currentPath.PrevNode.Stairs != null ||
currentPath.CurrentNode != null && currentPath.CurrentNode.Stairs != null ||
currentPath.NextNode != null && currentPath.NextNode.Stairs != null);
public bool IsNextNodeLadder
{
@@ -300,9 +304,7 @@ namespace Barotrauma
float horizontalDistance = Math.Abs(collider.SimPosition.X - currentPath.CurrentNode.SimPosition.X);
bool isAboveFeet = currentPath.CurrentNode.SimPosition.Y > colliderBottom.Y;
bool isNotTooHigh = currentPath.CurrentNode.SimPosition.Y < colliderBottom.Y + characterHeight;
float margin = MathHelper.Lerp(1, 10, MathHelper.Clamp(Math.Abs(velocity.X) / 10, 0, 1));
float targetDistance = collider.radius * margin;
if (horizontalDistance < targetDistance && isAboveFeet && isNotTooHigh)
if (currentPath.CurrentNode != null && currentPath.CurrentNode.Stairs != null)
{
float multiplierX = MathHelper.Lerp(1, 10, MathHelper.Clamp(Math.Abs(velocity.X) / 10, 0, 1));
float multiplierY = MathHelper.Lerp(1, 10, MathHelper.Clamp(Math.Abs(velocity.Y) / 10, 0, 1));