Exemple #1
0
        private void RemoveUntrusted(List <Tuple <BulletPathBlueprint, float> >[] rayClock)
        {
            List <Tuple <int, Tuple <BulletPathBlueprint, float> > > rems = new List <Tuple <int, Tuple <BulletPathBlueprint, float> > >();

            for (int ideg = 0; ideg < RESOLUTION; ideg++)
            {
                var ddeg = (ideg * 1f / RESOLUTION) * 360;

                foreach (var ray in rayClock[ideg])
                {
                    bool fault = false;
                    for (int ideg2 = 0; ideg2 < RESOLUTION; ideg2++)
                    {
                        var ddeg2 = (ideg2 * 1f / RESOLUTION) * 360;

                        if (ideg2 == ideg || FloatMath.Abs(FloatMath.DiffModulo(ddeg, ddeg2, 360)) > TRUSTANGLE)
                        {
                            continue;
                        }

                        if (rayClock[ideg2].All(r => r.Item1.TargetCannonID != ray.Item1.TargetCannonID))
                        {
                            fault = true;
                        }
                    }
                    if (fault)
                    {
                        rems.Add(Tuple.Create(ideg, ray));
                    }
                }
            }

            foreach (var rem in rems)
            {
                rayClock[rem.Item1].Remove(rem.Item2);
            }
        }