public static void Procesar() { // si el barco toca la moneda, la muevo de lugar y le doy puntos if (DetectarColision(Moneda.BoundingBox, Barco.mesh.BoundingBox)) { Sonidos.Moneda(); Puntos++; Moneda.Position = new Vector3(Utiles.fAleatorio(-1000, 1000), 0, Utiles.fAleatorio(-1000, 1000)); GuiController.Instance.Logger.log("toco la moneda!\nnueva posicion:" + Moneda.Position); } Render(); }
public static void Cargar() { for (int i = 0; i < 50; i++) { ParticleEmitter Emisor = new ParticleEmitter(Utiles.TexturasDir("lluvia.png"), Utiles.iAleatorio(50, 100)); float Viento = Utiles.fAleatorio(50, 100); Emisor.Speed = new Vector3(Viento, -Utiles.fAleatorio(50, 100), Viento); Emisor.Dispersion = Utiles.iAleatorio(10, 100); Emisor.MinSizeParticle = Utiles.fAleatorio(5, 10); Emisor.MaxSizeParticle = Utiles.fAleatorio(10, 30); Emisor.CreationFrecuency = Utiles.fAleatorio(0.01f, 0.5f); Emisor.ParticleTimeToLive = Utiles.fAleatorio(5, 10); Emisor.Distancia = Utiles.fAleatorio(0.5f, 1); Emisores.Add(Emisor); } }
public static void Render() { if (!ParametrosDeConfiguracion.RenderLluvia) { 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(-100, 100); Posicion.Z = LookAt.Z + Utiles.fAleatorio(-100, 100); Emisor.Position = Posicion; Emisor.render(); } }
/// <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; }