public IPosition GetPathToEnemy(IPosition current, IPosition enemy, float keepDistance, IBattlefield battlefield) { var desired = new Position() { }.Set(enemy.GetDirection(current, keepDistance)); return(GetPath(current, desired, battlefield)); }
public static IPosition CalculatePullPosition(this IPosition actor, IPosition target, float distance) { if (actor.IsEqualPosition(target)) { return(actor); } const float desiredDistanceAfterPull = 1; var distanceBetween = actor.GetDistanceAbs(target); var pullDistance = Math.Min(distanceBetween - desiredDistanceAfterPull, distance); return(target.GetDirection(actor, pullDistance).GetPosition()); }