/// <summary> /// Checks hero collisions /// </summary> /// <param name="from">Start position</param> /// <param name="to">End position</param> /// <param name="width">Width</param> /// <param name="checkAlly">Check ally heroes</param> /// <returns>true if collision found</returns> public bool CheckHeroCollision(Vector2 from, Vector2 to, Spell s, bool checkAlly = false) { Geometry.Polygon poly = ClipperWrapper.DefineRectangle(from, to, s.Width); List <Obj_AI_Hero> listToCheck = checkAlly ? HeroManager.AllHeroes : HeroManager.Enemies; return(listToCheck.AsParallel().Any(p => ClipperWrapper.IsIntersects(ClipperWrapper.MakePaths(poly), ClipperWrapper.MakePaths(ClipperWrapper.DefineCircle(p.ServerPosition.To2D(), p.BoundingRadius))))); }
/// <summary> /// Checks minion collisions /// </summary> /// <param name="from">Start position</param> /// <param name="to">End position</param> /// <param name="width">Width</param> /// <returns>true if collision found</returns> public bool CheckMinionCollision(Vector2 from, Vector2 to, Spell s) { Geometry.Polygon poly = ClipperWrapper.DefineRectangle(from, to, s.Width); HitChance hc; return(MinionManager.GetMinions(from.Distance(to) + 100, MinionTypes.All, MinionTeam.NotAlly, MinionOrderTypes.None).AsParallel().Any(p => ClipperWrapper.IsIntersects(ClipperWrapper.MakePaths(ClipperWrapper.DefineCircle(Prediction.GetPrediction(p, s, p.GetWaypoints(), 0, 0, 0, out hc, p.ServerPosition), p.BoundingRadius)), ClipperWrapper.MakePaths(poly)))); }