CameraBuddy.Spectate.Situation.Minions.GetMinionBlockedPoint C# (CSharp) Method

GetMinionBlockedPoint() public static method

public static GetMinionBlockedPoint ( this enemyHero, float extraDistance ) : System.Vector3
enemyHero this
extraDistance float
return System.Vector3
        public static Vector3 GetMinionBlockedPoint(this AIHeroClient enemyHero, float extraDistance)
        {
            var minions = enemyHero.Team == Player.EnemyTeam ? Ally.AllMinions.Where(x => x.Position.InWhatRegion() == Player.RegionIn).ToList() : Enemy.GetNearbyMinions(); // Hero is enemy team, so return my minions, else return enemy minions.
            Vector3 safePoint;
            if (minions.Count > 0)
            {
                float totalX = minions.Select(x => x.Position.X).Sum();
                float totalY = minions.Select(y => y.Position.Y).Sum();
                float averageX = totalX/minions.Count;
                float averageY = totalY/minions.Count;
                var newPoint = new Vector2(averageX, averageY).To3D(); // Point within minions 

                var heroPos = enemyHero.Position;
                safePoint = heroPos.Extend(newPoint, newPoint.Distance(heroPos) + extraDistance).To3D();
            }
            else
            {
                safePoint =  Player.Posistion;
                //TODO: safe distance from enemy, or put that in new function?
            }
            return safePoint;
        }
    }