AkaCore.AkaLib.Evade.SkillshotDetector.ObjMissileClientOnDelete C# (CSharp) Метод

ObjMissileClientOnDelete() приватный статический Метод

private static ObjMissileClientOnDelete ( GameObject sender, EventArgs args ) : void
sender GameObject
args System.EventArgs
Результат void
        private static void ObjMissileClientOnDelete(GameObject sender, EventArgs args)
        {
            if (!sender.IsValid<MissileClient>())
                {
                    return;
                }
                var missile = (MissileClient)sender;
                if (!missile.SpellCaster.IsValid<AIHeroClient>() || missile.SpellCaster.Team == ObjectManager.Player.Team)
                {
                    return;
                }
                var unit = (AIHeroClient)missile.SpellCaster;
                var spellName = missile.SData.Name;
                if (OnDeleteMissile != null)
                {
                    foreach (var skillshot in
                        DetectedSkillshots.Where(
                            i =>
                            i.SpellData.MissileSpellName == spellName && i.Unit.NetworkId == unit.NetworkId
                            && (missile.EndPosition.To2D() - missile.StartPosition.To2D()).AngleBetween(i.Direction) < 10
                            && i.SpellData.CanBeRemoved))
                    {
                        OnDeleteMissile(skillshot, missile);
                        break;
                    }
                }
                DetectedSkillshots.RemoveAll(
                    i =>
                    (i.SpellData.MissileSpellName == spellName || i.SpellData.ExtraMissileNames.Contains(spellName))
                    && i.Unit.NetworkId == unit.NetworkId
                    && (missile.EndPosition - missile.StartPosition).To2D().AngleBetween(i.Direction) < 10
                    && (i.SpellData.CanBeRemoved || i.SpellData.ForceRemove));
        }