public Escenario(Barco barco) { { d3dDevice = GuiController.Instance.D3dDevice; //Asignar barco del usuario barcoUser = barco; crearSkyBoxNoche(); crearTerreno(); crearSonido(); cargarMeshes(); cargarShader(); cargarShadowMap(); Camara.initialize(); cargarPreview(); Lluvia.cargar(barcoUser.getPosition()); ContadorEnemigos.cargar(); animatedSprite = Utiles.crearExplosion(); crearQuadtree(); } }
public void render() { device = GuiController.Instance.D3dDevice; verificarConfiguracion(); Camara.update(barcoUser.getPosition()); Control panel3d = GuiController.Instance.Panel3d; aspectRatio = (float)panel3d.Width / (float)panel3d.Height; time += GuiController.Instance.ElapsedTime; if (timer_preview > 0) { timer_preview -= GuiController.Instance.ElapsedTime; if (timer_preview < 0) { timer_preview = 0; } } //animarBarcosEnemigos(); animarPosicionSol(); /*if (timer_preview > 0) * { * float an = -time * Geometry.DegreeToRadian(10.0f); * lookFrom.X = 1500f * (float)Math.Sin(an); * lookFrom.Z = 1500f * (float)Math.Cos(an); * }*/ // -------------------------------------------------------------------- device.EndScene(); if (g_pCubeMapAgua == null) { // solo la primera vez crea el env map del agua crearEnvMapAgua(); } // Parametros para el movimiento del oceano /*desplazamiento += GuiController.Instance.ElapsedTime; * piso.Effect.SetValue("desplazamiento", desplazamiento); * piso.Effect.SetValue("maxHeightSuperficial", (float)GuiController.Instance.Modifiers.getValue("maxHeightSuperficial")); * piso.Effect.SetValue("amplitud", (float)GuiController.Instance.Modifiers.getValue("amplitud")); * piso.Effect.SetValue("frecuencia", (float)GuiController.Instance.Modifiers.getValue("frecuencia")); * piso.Effect.SetValue("smallvalue", 1);*/ // Matrices de transformacion para pasar de world a clip space /*piso.Effect.SetValue("world", GuiController.Instance.D3dDevice.Transform.World); * piso.Effect.SetValue("view", GuiController.Instance.D3dDevice.Transform.View); * piso.Effect.SetValue("proj", GuiController.Instance.D3dDevice.Transform.Projection);*/ // Dimensiones del Oceano /*piso.Effect.SetValue("radio", RADIO); * piso.Effect.SetValue("largo", LARGO); * piso.Effect.SetValue("dev", DISTANCIA_ENTRE_VERTICES);*/ // Creo el env map del barco principal crearEnvMapShip(); //Genero el shadow map renderShadowMap(); // Restauro el estado de las transformaciones loadEstadoTransformaciones(); // dibujo la escena pp dicha: device.BeginScene(); dibujarVista(); g_pCubeMap.Dispose(); Lluvia.render(); //renderModelos(); if ((bool)Parametros.getModificador("boundingBox")) { barcoUser.getBarco().BoundingBox.setRenderColor(Color.Red); barcoUser.getBarco().BoundingBox.render(); foreach (Enemigo elemento in enemigos) { elemento.getBarco().BoundingBox.setRenderColor(Color.Red); elemento.getBarco().BoundingBox.render(); } } ContadorEnemigos.render(barcoUser.calcularColisiones(enemigos)); foreach (Enemigo elemento in enemigos) { if (elemento.getColision()) { Utiles.renderExplosion(animatedSprite, elemento.getBarco().Position); quadtree.removeMesh(elemento.getBarco()); quadtree.removeMesh(elemento.getIDBarco()); } } enemigos.RemoveAll(pirata => pirata.getColision() == true); }