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]; }
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; } } }
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); }
/// <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; }