Пример #1
0
        private Enemigo crearBarcoEnemigo(TgcSceneLoader loader, int index)
        {
            float   x0, z0;
            Enemigo pirata;

            sceneCanoa = loader.loadSceneFromFile(GuiController.Instance.ExamplesMediaDir
                                                  + "MeshCreator\\Meshes\\Vehiculos\\Canoa\\Canoa-TgcScene.xml");

            x0 = (Utiles.fAleatorio(100f, 2000f) * index) * Utiles.signoAleatorio();
            z0 = (Utiles.fAleatorio(100f, 2000f) * index) * Utiles.signoAleatorio();

            if (x0 > (LIMITEX_SBOX / 2))
            {
                x0 = (LIMITEX_SBOX / 2);
            }

            if (x0 < -(LIMITEX_SBOX / 2))
            {
                x0 = -(LIMITEX_SBOX / 2);
            }

            if (z0 > (LIMITEZ_SBOX / 2))
            {
                z0 = (LIMITEZ_SBOX / 2);
            }

            if (z0 < -(LIMITEZ_SBOX / 2))
            {
                z0 = -(LIMITEZ_SBOX / 2);
            }

            sceneCanoa.Meshes[0].Position = new Vector3(x0, barcoUser.getPosition().Y, z0);
            sceneCanoa.Meshes[0].Scale    = new Vector3(0.5f, 0.5f, 0.5f);

            //idEnemigos.Add(crearIDGraficoEnemigos(loader, sceneCanoa.Meshes[0].Position));
            pirata = new Enemigo();
            pirata.setBarco(sceneCanoa.Meshes[0]);
            pirata.setIDBarco(crearIDGraficoEnemigos(loader, sceneCanoa.Meshes[0].Position));

            return(pirata);// sceneCanoa.Meshes[0];
        }
Пример #2
0
        public static void render()
        {
            if (!(bool)Parametros.getModificador("lluvia"))
            {
                return;
            }

            Vector3 Posicion = GuiController.Instance.CurrentCamera.getPosition();
            Vector3 LookAt   = GuiController.Instance.CurrentCamera.getLookAt();

            Posicion.Y += Utiles.fAleatorio(50, 100);/* +(LookAt - Posicion).LengthSq() * 100;*/
            foreach (var Emisor in Emisores)
            {
                Posicion.X      = LookAt.X + Utiles.fAleatorio(-200, 200);
                Posicion.Z      = LookAt.Z + Utiles.fAleatorio(-200, 200);
                Emisor.Position = Posicion;
                Emisor.render();
            }

            if ((bool)Parametros.getModificador("rayo"))
            {
                // Relampago que pone la pantalla en blanco
                cargarRelampago();

                // Incrementa el contador de tiempo
                duracion += GuiController.Instance.ElapsedTime;
                if (duracion > duracionMaxima) //tiempo de duración aleatorio.
                {
                    // una vez terminado se activa el trueno, porque el sonido viaja más lento que la luz.
                    trueno();

                    // reseteo las variables
                    duracion = 0;
                }
            }
        }
Пример #3
0
        public static void cargar(Vector3 posBarco)
        {
            for (int i = 0; i < 100; i++)
            {
                ParticleEmitter Emisor = new ParticleEmitter(Utiles.getDirTextura("lluvia.png"), Utiles.iAleatorio(2000, 5000));
                float           Viento = Utiles.fAleatorio(50, 100);
                Emisor.Speed              = new Vector3(Viento, -Utiles.fAleatorio(50, 200), Viento);
                Emisor.Dispersion         = Utiles.iAleatorio(50, 100);
                Emisor.MinSizeParticle    = Utiles.fAleatorio(20, 30);
                Emisor.MaxSizeParticle    = Utiles.fAleatorio(30, 50);
                Emisor.CreationFrecuency  = Utiles.fAleatorio(0.5f, 1.0f);
                Emisor.ParticleTimeToLive = Utiles.fAleatorio(5, 10);
                Emisor.Distancia          = Utiles.fAleatorio(0.1f, 0.5f);
                Emisores.Add(Emisor);
            }

            sonidoTrueno1 = new TgcStaticSound();
            sonidoTrueno1.loadSound(Utiles.getDirSonido("Trueno01.wav"));
            sonidoTrueno2 = new TgcStaticSound();
            sonidoTrueno2.loadSound(Utiles.getDirSonido("Trueno02.wav"));

            posicion = posBarco;
            //cargarRelampago(posBarco);
        }
Пример #4
0
        /// <summary>
        /// Crear un emisor de particulas
        /// </summary>
        /// <param name="texturePath">textura a utilizar</param>
        /// <param name="particlesCount">cantidad maxima de particlas a generar</param>
        public ParticleEmitter(string texturePath, int particlesCount)
        {
            Device device = GuiController.Instance.D3dDevice;

            //valores default
            enabled            = true;
            playing            = true;
            random             = new Random(0);
            creationFrecuency  = 1.0f;
            particleTimeToLive = 5.0f;
            minSizeParticle    = 0.25f;
            maxSizeParticle    = 0.5f;
            dispersion         = 100;
            speed = new Vector3(1, 1, 1) * Utiles.fAleatorio(1, 10);
            particleVertexArray = new Particle.ParticleVertex[1];
            vertexDeclaration   = new VertexDeclaration(device, Particle.ParticleVertexElements);
            position            = new Vector3(0, 0, 0);

            this.particlesCount = particlesCount;
            this.particles      = new Particle[particlesCount];

            this.particlesAlive = new ColaDeParticulas(particlesCount);
            this.particlesDead  = new Stack <Particle>(particlesCount);

            //Creo todas las particulas. Inicialmente estan todas muertas.
            for (int i = 0; i < particlesCount; i++)
            {
                this.particles[i] = new Particle();
                this.particlesDead.Push(this.particles[i]);
            }

            //Cargo la textura que tendra cada particula
            this.texture = TgcTexture.createTexture(device, texturePath);

            Distancia = 1.0f;
        }