Exemplo n.º 1
0
        public static bool CollideWithArena(ref Vec a, bool verb)
        {
            double rimbalzo;

            if (a.r == 1)
            {
                rimbalzo = rules.ROBOT_ARENA_E;
            }
            else
            {
                rimbalzo = rules.BALL_ARENA_E;
            }

            Dan    dta   = a.DanToArena();
            double penet = a.r - dta.distance;

            if (penet <= 0)
            {
                return(false);
            }
            if (verb)
            {
                De("penet=" + penet);
            }

            a.DoAdd(dta.normal.Mul(penet));

            double vel = a.VelocityVec().Dot(dta.normal) - a.rcs;

            if (vel < 0)
            {
                Vec zs = dta.normal.Mul(-vel * (1 + rimbalzo));
                if (verb)
                {
                    De("vel added " + zs.x + " " + zs.y + " " + zs.z);
                }
                a.AddVelocity(zs);
                return(true);
            }
            return(false);
        }