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());
        }