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