예제 #1
0
        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();
            }
        }
예제 #2
0
        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);
        }