public void OrientNonMappedOnNearestMapped(Objective[] objectives) { foreach (var objective in objectives) { if (_distanceData.ContainsKey(objective)) continue; var nearestObjective = objectives.Where(obj => _distanceData.ContainsKey(obj)).OrderBy(obj => obj.Position.Distance(objective.Position)).FirstOrDefault(); if (nearestObjective != null) SetDistanceTo(objective, _distanceData[nearestObjective] + nearestObjective.Position.Distance(objective.Position)); } }
public void SetDistanceTo(Objective otherObjective, float distance) { _distanceData.Add(otherObjective, distance); }
public float GetRangedDistanceTo(Objective otherObjective) { return GetMeleeDistanceTo(otherObjective) - RangedRange * 2f; }
public float GetMeleeDistanceTo(Objective otherObjective) { if (_distanceData.ContainsKey(otherObjective)) return _distanceData[otherObjective]; return otherObjective._distanceData.ContainsKey(this) ? otherObjective._distanceData[this] : Position.Distance(otherObjective.Position); }
public float GetRangedDistanceTo(Objective otherObjective) { return(GetMeleeDistanceTo(otherObjective) - RangedRange * 2f); }