(2cf47ee24) Cherry pick some steering fixes from the human-ai branch: fix ladder usage while swimming.
This commit is contained in:
@@ -218,13 +218,13 @@ namespace Barotrauma
|
|||||||
}
|
}
|
||||||
else if (character.Submarine != currentPath.CurrentNode.Submarine)
|
else if (character.Submarine != currentPath.CurrentNode.Submarine)
|
||||||
{
|
{
|
||||||
pos -= FarseerPhysics.ConvertUnits.ToSimUnits(currentPath.CurrentNode.Submarine.Position-character.Submarine.Position);
|
pos -= FarseerPhysics.ConvertUnits.ToSimUnits(currentPath.CurrentNode.Submarine.Position - character.Submarine.Position);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//only humanoids can climb ladders
|
//only humanoids can climb ladders
|
||||||
if (character.AnimController is HumanoidAnimController && IsNextLadderSameAsCurrent)
|
if (!character.AnimController.InWater && character.AnimController is HumanoidAnimController && IsNextLadderSameAsCurrent)
|
||||||
{
|
{
|
||||||
if (character.SelectedConstruction != currentPath.CurrentNode.Ladders.Item &&
|
if (character.SelectedConstruction != currentPath.CurrentNode.Ladders.Item &&
|
||||||
currentPath.CurrentNode.Ladders.Item.IsInsideTrigger(character.WorldPosition))
|
currentPath.CurrentNode.Ladders.Item.IsInsideTrigger(character.WorldPosition))
|
||||||
@@ -234,7 +234,7 @@ namespace Barotrauma
|
|||||||
}
|
}
|
||||||
|
|
||||||
var collider = character.AnimController.Collider;
|
var collider = character.AnimController.Collider;
|
||||||
if (character.IsClimbing)
|
if (character.IsClimbing && !character.AnimController.InWater)
|
||||||
{
|
{
|
||||||
Vector2 diff = currentPath.CurrentNode.SimPosition - pos;
|
Vector2 diff = currentPath.CurrentNode.SimPosition - pos;
|
||||||
bool nextLadderSameAsCurrent = IsNextLadderSameAsCurrent;
|
bool nextLadderSameAsCurrent = IsNextLadderSameAsCurrent;
|
||||||
@@ -278,6 +278,12 @@ namespace Barotrauma
|
|||||||
}
|
}
|
||||||
else if (character.AnimController.InWater)
|
else if (character.AnimController.InWater)
|
||||||
{
|
{
|
||||||
|
// If the character is underwater, we don't need the ladders anymore
|
||||||
|
if (character.IsClimbing)
|
||||||
|
{
|
||||||
|
character.AnimController.Anim = AnimController.Animation.None;
|
||||||
|
character.SelectedConstruction = null;
|
||||||
|
}
|
||||||
if (Vector2.DistanceSquared(pos, currentPath.CurrentNode.SimPosition) < MathUtils.Pow(collider.radius * 3, 2))
|
if (Vector2.DistanceSquared(pos, currentPath.CurrentNode.SimPosition) < MathUtils.Pow(collider.radius * 3, 2))
|
||||||
{
|
{
|
||||||
currentPath.SkipToNextNode();
|
currentPath.SkipToNextNode();
|
||||||
|
|||||||
Reference in New Issue
Block a user