Fixed far-away AI characters staying disabled when switching control to them + minor optimization

This commit is contained in:
Joonas Rikkonen
2017-07-11 20:01:49 +03:00
parent 935b1ff837
commit af1a681da0
3 changed files with 8 additions and 6 deletions
@@ -1288,22 +1288,22 @@ namespace Barotrauma
if (GameMain.Server != null)
{
//disable AI characters that are far away from all clients and the host's character
//disable AI characters that are far away from all clients and the host's character and not controlled by anyone
c.Enabled =
c == controlled ||
CharacterList.Any(c2 =>
(c2.IsRemotePlayer || c2 == GameMain.Server.Character) &&
Vector2.Distance(c2.WorldPosition, c.WorldPosition) < NetConfig.CharacterIgnoreDistance);
Vector2.DistanceSquared(c2.WorldPosition, c.WorldPosition) < NetConfig.CharacterIgnoreDistanceSqr);
}
else if (Submarine.MainSub != null)
{
//disable AI characters that are far away from the sub and the controlled character
c.Enabled = Vector2.Distance(Submarine.MainSub.WorldPosition, c.WorldPosition) < NetConfig.CharacterIgnoreDistance ||
(controlled != null && Vector2.Distance(controlled.WorldPosition, c.WorldPosition) < NetConfig.CharacterIgnoreDistance);
c.Enabled = Vector2.DistanceSquared(Submarine.MainSub.WorldPosition, c.WorldPosition) < NetConfig.CharacterIgnoreDistanceSqr ||
(controlled != null && Vector2.DistanceSquared(controlled.WorldPosition, c.WorldPosition) < NetConfig.CharacterIgnoreDistanceSqr);
}
}
}
for (int i = 0; i < CharacterList.Count; i++)
{
CharacterList[i].Update(deltaTime, cam);