Esempio n. 1
0
        public void Update()
        {
            collisionWorld.PerformDiscreteCollisionDetection();
            int numManifolds = collisionWorld.Dispatcher.NumManifolds;

            for (int i = 0; i < numManifolds; i++)
            {
                PersistentManifold contactManifold = collisionWorld.Dispatcher.GetManifoldByIndexInternal(i);
                CollisionObject    obA             = contactManifold.Body0;
                CollisionObject    obB             = contactManifold.Body1;
                int misilId  = obB.UserIndex;
                int objetoId = obA.UserIndex;
                if (objetoId == ID_XWING && EsMisilEnemigo(misilId) &&
                    !Xwing.ESTADO_BARREL.BARRELROLL.Equals(VariablesGlobales.xwing.getEstadoBarrel()) &&
                    !listaIdMisilesQueColisionaronConXwing.Contains(misilId))
                {
                    XwingCollision(contactManifold, misilId);
                }
                if (EsTorreta(objetoId) && EsMisilXWing(misilId) &&
                    !(listaColisionesTorretaMisil.Contains(new Colision(objetoId, misilId))))
                {
                    TorretaCollision(contactManifold, misilId, objetoId);
                }
                if (EsObstaculo(objetoId) && EsMisilXWing(misilId) &&
                    !(listaColisionesObstaculoMisil.Contains(new Colision(objetoId, misilId))))
                {
                    ObstaculoCollision(contactManifold, misilId, objetoId);
                }
                if (objetoId == ID_XWING && (misilId == ID_PARED_OBSTACULO || EsTorreta(misilId)))
                {
                    VariablesGlobales.xwing.ChocarPared();
                }
                collisionWorld.Dispatcher.ClearManifold(contactManifold);
            }
        }