Exemplo n.º 1
0
 /// <summary>
 /// Crea una flecha en base a su punto de inicio y dirección
 /// </summary>
 /// <param name="start">Punto de inicio</param>
 /// <param name="direction">Dirección de la flecha</param>
 /// <returns>Flecha creada</returns>
 public static TgcArrow fromDirection(Vector3 start, Vector3 direction)
 {
     TgcArrow arrow = new TgcArrow();
     arrow.pStart = start;
     arrow.pEnd = start + direction;
     arrow.updateValues();
     return arrow;
 }
Exemplo n.º 2
0
 /// <summary>
 /// Crea una flecha en base a sus puntos extremos
 /// </summary>
 /// <param name="start">Punto de inicio</param>
 /// <param name="end">Punto de fin</param>
 /// <returns>Flecha creada</returns>
 public static TgcArrow fromExtremes(Vector3 start, Vector3 end)
 {
     TgcArrow arrow = new TgcArrow();
     arrow.pStart = start;
     arrow.pEnd = end;
     arrow.updateValues();
     return arrow;
 }
Exemplo n.º 3
0
        /// <summary>
        /// Crea una flecha en base a su punto de inicio y dirección
        /// </summary>
        /// <param name="start">Punto de inicio</param>
        /// <param name="direction">Dirección de la flecha</param>
        /// <returns>Flecha creada</returns>
        public static TgcArrow fromDirection(Vector3 start, Vector3 direction)
        {
            TgcArrow arrow = new TgcArrow();

            arrow.pStart = start;
            arrow.pEnd   = start + direction;
            arrow.updateValues();
            return(arrow);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Crea una flecha en base a sus puntos extremos
        /// </summary>
        /// <param name="start">Punto de inicio</param>
        /// <param name="end">Punto de fin</param>
        /// <returns>Flecha creada</returns>
        public static TgcArrow fromExtremes(Vector3 start, Vector3 end)
        {
            TgcArrow arrow = new TgcArrow();

            arrow.pStart = start;
            arrow.pEnd   = end;
            arrow.updateValues();
            return(arrow);
        }
Exemplo n.º 5
0
 /// <summary>
 /// Crea una flecha en base a sus puntos extremos, con el color y el grosor especificado
 /// </summary>
 /// <param name="start">Punto de inicio</param>
 /// <param name="end">Punto de fin</param>
 /// <param name="bodyColor">Color del cuerpo de la flecha</param>
 /// <param name="headColor">Color de la punta de la flecha</param>
 /// <param name="thickness">Grosor del cuerpo de la flecha</param>
 /// <param name="headSize">Tamaño de la punta de la flecha</param>
 /// <returns>Flecha creada</returns>
 public static TgcArrow fromExtremes(Vector3 start, Vector3 end, Color bodyColor, Color headColor, float thickness, Vector2 headSize)
 {
     TgcArrow arrow = new TgcArrow();
     arrow.pStart = start;
     arrow.pEnd = end;
     arrow.bodyColor = bodyColor;
     arrow.headColor = headColor;
     arrow.thickness = thickness;
     arrow.headSize = headSize;
     arrow.updateValues();
     return arrow;
 }
Exemplo n.º 6
0
        /// <summary>
        /// Crea una flecha en base a su punto de inicio y dirección, con el color y el grosor especificado
        /// </summary>
        /// <param name="start">Punto de inicio</param>
        /// <param name="direction">Dirección de la flecha</param>
        /// <param name="bodyColor">Color del cuerpo de la flecha</param>
        /// <param name="headColor">Color de la punta de la flecha</param>
        /// <param name="thickness">Grosor del cuerpo de la flecha</param>
        /// <param name="headSize">Tamaño de la punta de la flecha</param>
        /// <returns>Flecha creada</returns>
        public static TgcArrow fromDirection(Vector3 start, Vector3 direction, Color bodyColor, Color headColor, float thickness, Vector2 headSize)
        {
            TgcArrow arrow = new TgcArrow();

            arrow.pStart    = start;
            arrow.pEnd      = start + direction;
            arrow.bodyColor = bodyColor;
            arrow.headColor = headColor;
            arrow.thickness = thickness;
            arrow.headSize  = headSize;
            arrow.updateValues();
            return(arrow);
        }
 /// <summary>
 /// Renderiza el vector direccion del cono.
 /// </summary>
 public void renderDirection()
 {
     TgcArrow arrow = new TgcArrow();
     arrow.PStart = this.Position;
     arrow.PEnd = this.Position + this.Direccion;
     arrow.Thickness = 2f;
     arrow.HeadSize = new Vector2(0.5f, 0.5f);
     arrow.updateValues();
     arrow.render();
 }
Exemplo n.º 8
0
        public void renderConEfectos(float elapsedTime)
        {
            Device device = GuiController.Instance.D3dDevice;
            Control panel3d = GuiController.Instance.Panel3d;
            float aspectRatio = (float)panel3d.Width / (float)panel3d.Height;

            // dibujo la escena una textura
            effect.Technique = "DefaultTechnique";
            // guardo el Render target anterior y seteo la textura como render target
            Surface pOldRT = device.GetRenderTarget(0);
            Surface pSurf = g_pRenderTarget.GetSurfaceLevel(0);
            device.SetRenderTarget(0, pSurf);
            // hago lo mismo con el depthbuffer, necesito el que no tiene multisampling
            Surface pOldDS = device.DepthStencilSurface;
            device.DepthStencilSurface = g_pDepthStencil;
            device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.Black, 1.0f, 0);
            device.BeginScene();
            //Dibujamos todos los meshes del escenario
            renderScene(elapsedTime, "DefaultTechnique");
            //Render personames enemigos
            foreach (TgcSkeletalMesh m in enemigos)
                m.render();

            device.EndScene();
            pSurf.Dispose();

            // dibujo el glow map
            effect.Technique = "DefaultTechnique";
            pSurf = g_pGlowMap.GetSurfaceLevel(0);
            device.SetRenderTarget(0, pSurf);
            device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.Black, 1.0f, 0);
            device.BeginScene();

            //Dibujamos SOLO los meshes que tienen glow brillantes
            //Render personaje brillante
            //Render personames enemigos
            foreach (TgcSkeletalMesh m in enemigos)
                m.render();

            if (GuiController.Instance.D3dInput.keyDown(Microsoft.DirectX.DirectInput.Key.F))
               for (int i = 0; i < cant_balas; ++i)
            if (timer_firing[i] > 0)
            {
                TgcArrow bala = new TgcArrow();
                bala.PStart = pos_bala[i];
                bala.PEnd = pos_bala[i] + dir_bala[i] * 3;
                bala.Thickness = 0.05f;
                bala.HeadSize = new Vector2(0.01f,0.01f);
                bala.Effect = effect;
                bala.Technique = "DefaultTechnique";
                bala.updateValues();
                bala.render();
            }

            // El resto opacos
            renderScene(elapsedTime,"DibujarObjetosOscuros");

            device.EndScene();
            pSurf.Dispose();

            // Hago un blur sobre el glow map
            // 1er pasada: downfilter x 4
            // -----------------------------------------------------
            pSurf = g_pRenderTarget4.GetSurfaceLevel(0);
            device.SetRenderTarget(0, pSurf);
            device.BeginScene();
            effect.Technique = "DownFilter4";
            device.VertexFormat = CustomVertex.PositionTextured.Format;
            device.SetStreamSource(0, g_pVBV3D, 0);
            effect.SetValue("g_RenderTarget", g_pGlowMap);

            device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.Black, 1.0f, 0);
            effect.Begin(FX.None);
            effect.BeginPass(0);
            device.DrawPrimitives(PrimitiveType.TriangleStrip, 0, 2);
            effect.EndPass();
            effect.End();
            pSurf.Dispose();
            device.EndScene();
            device.DepthStencilSurface = pOldDS;

            // Pasadas de blur
            for (int P = 0; P < cant_pasadas; ++P)
            {
                // Gaussian blur Horizontal
                // -----------------------------------------------------
                pSurf = g_pRenderTarget4Aux.GetSurfaceLevel(0);
                device.SetRenderTarget(0, pSurf);
                // dibujo el quad pp dicho :
                device.BeginScene();
                effect.Technique = "GaussianBlurSeparable";
                device.VertexFormat = CustomVertex.PositionTextured.Format;
                device.SetStreamSource(0, g_pVBV3D, 0);
                effect.SetValue("g_RenderTarget", g_pRenderTarget4);

                device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.Black, 1.0f, 0);
                effect.Begin(FX.None);
                effect.BeginPass(0);
                device.DrawPrimitives(PrimitiveType.TriangleStrip, 0, 2);
                effect.EndPass();
                effect.End();
                pSurf.Dispose();
                device.EndScene();

                pSurf = g_pRenderTarget4.GetSurfaceLevel(0);
                device.SetRenderTarget(0, pSurf);
                pSurf.Dispose();

                //  Gaussian blur Vertical
                // -----------------------------------------------------
                device.BeginScene();
                effect.Technique = "GaussianBlurSeparable";
                device.VertexFormat = CustomVertex.PositionTextured.Format;
                device.SetStreamSource(0, g_pVBV3D, 0);
                effect.SetValue("g_RenderTarget", g_pRenderTarget4Aux);

                device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.Black, 1.0f, 0);
                effect.Begin(FX.None);
                effect.BeginPass(1);
                device.DrawPrimitives(PrimitiveType.TriangleStrip, 0, 2);
                effect.EndPass();
                effect.End();
                device.EndScene();

            }

            //  To Gray Scale
            // -----------------------------------------------------
            // Ultima pasada vertical va sobre la pantalla pp dicha
            device.SetRenderTarget(0, pOldRT);
            //pSurf = g_pRenderTarget4Aux.GetSurfaceLevel(0);
            //device.SetRenderTarget(0, pSurf);

            device.BeginScene();
            effect.Technique = "GrayScale";
            device.VertexFormat = CustomVertex.PositionTextured.Format;
            device.SetStreamSource(0, g_pVBV3D, 0);
            effect.SetValue("g_RenderTarget", g_pRenderTarget);
            effect.SetValue("g_GlowMap", g_pRenderTarget4Aux);
            device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.Black, 1.0f, 0);
            effect.Begin(FX.None);
            effect.BeginPass(0);
            device.DrawPrimitives(PrimitiveType.TriangleStrip, 0, 2);
            effect.EndPass();
            effect.End();

            GuiController.Instance.Text3d.drawText("FPS: " + HighResolutionTimer.Instance.FramesPerSecond, 0, 0, Color.Yellow);
            device.EndScene();
        }
Exemplo n.º 9
0
        public PantallaJuego(Auto autito)
        {
            /*En PantallaInicio le paso a Pantalla juego con qué auto jugar. Acá lo asigno a la pantalla, cargo el coso
            que capta el teclado, creo el Nivel1 y lo pongo en la lista de renderizables, para que sepa con qué
            escenario cargarse */

            this.auto = autito;
            auto.mesh.move(new Vector3(0, 0, -3100));
            auto.mesh.rotateY(-1.57f);

            this.entrada = GuiController.Instance.D3dInput;
            this.nivel = EjemploAlumno.getInstance().getNiveles(0);

            //Barrita de vida
            vida = new Imagen(GuiController.Instance.AlumnoEjemplosMediaDir + "LosBorbotones\\vidaPersonaje\\vida.jpg");
            barra = new Imagen(GuiController.Instance.AlumnoEjemplosMediaDir + "LosBorbotones\\vidaPersonaje\\fondobarra.png");
            barra2 = new Imagen(GuiController.Instance.AlumnoEjemplosMediaDir + "LosBorbotones\\vidaPersonaje\\fondobarra2.png");

            vida.setEscala(escalaInicial);
            barra.setEscala(new Vector2(6.81f, 1f));
            barra2.setEscala(new Vector2(6.81f, 1f));
            Vector2 posicionbarra = new Vector2(10, 5);

            vida.setPosicion(new Vector2(155f, 9.3f));

            //CUENTA REGRESIVA
            uno = new Imagen(GuiController.Instance.AlumnoEjemplosMediaDir + "LosBorbotones\\cuentaRegresiva\\1.png");
            uno.setCentrarYEscalar();
            dos = new Imagen(GuiController.Instance.AlumnoEjemplosMediaDir + "LosBorbotones\\cuentaRegresiva\\2.png");
            dos.setCentrarYEscalar();
            tres = new Imagen(GuiController.Instance.AlumnoEjemplosMediaDir + "LosBorbotones\\cuentaRegresiva\\3.png");
            tres.setCentrarYEscalar();

            //Instrucción de misión del juego
            misionMario = new Imagen(GuiController.Instance.AlumnoEjemplosMediaDir + "LosBorbotones\\Mision\\m_mario.png");
            misionMario.setCentrarYEscalar();
            misionLuigi = new Imagen(GuiController.Instance.AlumnoEjemplosMediaDir + "LosBorbotones\\Mision\\m_luigi.png");
            misionLuigi.setCentrarYEscalar();

            // CAMARA TERCERA PERSONA
            GuiController.Instance.ThirdPersonCamera.Enable = true;
            GuiController.Instance.ThirdPersonCamera.resetValues();
            Vector2 vectorCam = (Vector2)GuiController.Instance.Modifiers["AlturaCamara"];
            GuiController.Instance.ThirdPersonCamera.setCamera(auto.mesh.Position, vectorCam.X, vectorCam.Y);
            GuiController.Instance.ThirdPersonCamera.rotateY(auto.mesh.Rotation.Y);

            //CARGAR MÚSICA.
            Musica track = new Musica("ramones.mp3");
            this.musica = track;
            musica.playMusica();
            musica.setVolume(35);

            Shared.debugMode = false;

            //Puntos de juego
            puntos = new TgcText2d();
            puntos.Text = "0";
            puntos.Color = Color.DarkRed;
            puntos.Align = TgcText2d.TextAlign.RIGHT;
            puntos.Position = new Point(30, 30);
            puntos.Size = new Size(100, 50);
            puntos.changeFont(new System.Drawing.Font("TimesNewRoman", 25, FontStyle.Bold));

            //Reloxxxx
            this.horaInicio = DateTime.Now;
            this.tiempoRestante = new TgcText2d();
            this.tiempoRestante.Text = "65";
            this.tiempoRestante.Color = Color.Green;
            this.tiempoRestante.Align = TgcText2d.TextAlign.RIGHT;
            this.tiempoRestante.Position = new Point(300, 30);
            this.tiempoRestante.Size = new Size(100, 50);
            this.tiempoRestante.changeFont(new System.Drawing.Font("TimesNewRoman", 25, FontStyle.Bold));
            this.comienzoNivel = true;

            //FLECHA NORMAL colision
            collisionNormalArrow = new TgcArrow();
            collisionNormalArrow.BodyColor = Color.Blue;
            collisionNormalArrow.HeadColor = Color.Yellow;
            collisionNormalArrow.Thickness = 1.4f;
            collisionNormalArrow.HeadSize = new Vector2(10, 20);

            //FLECHA debug (la usamos para conocer posiciones donde querramos posicionar meshes)
            debugArrow = new TgcArrow();
            debugArrow.BodyColor = Color.Purple;
            debugArrow.HeadColor = Color.Yellow;
            debugArrow.Thickness = 3f;
            debugArrow.HeadSize = new Vector2(10, 20);
            debugArrow.PStart = new Vector3(0, 400f, 0);
            debugArrow.PEnd = new Vector3(0, 10f, 0);
            debugArrow.updateValues();

            //USER VARS
            GuiController.Instance.UserVars.addVar("DistMinima");
            GuiController.Instance.UserVars.addVar("Velocidad");
            GuiController.Instance.UserVars.addVar("Vida");
            GuiController.Instance.UserVars.addVar("AngCol");
            GuiController.Instance.UserVars.addVar("AngRot");
            GuiController.Instance.UserVars.addVar("NormalObstaculoX");
            GuiController.Instance.UserVars.addVar("NormalObstaculoZ");
        }
 public static void renderVector(Vector3 origin, Vector3 n, Color color)
 {
     //TODO ver donde meter este metodo
     if (n.Equals(Vector3.Empty)) return;
     TgcArrow arrow = new TgcArrow();
     //arrow.Enabled = true;
     arrow.PStart = origin;
     arrow.PEnd = n * 70 + arrow.PStart;
     arrow.Thickness = 3;
     arrow.HeadSize = new Vector2(6, 6);
     arrow.BodyColor = color;
     arrow.updateValues();
     arrow.render();
 }
Exemplo n.º 11
0
 /// <summary>
 /// Crea una flecha en base a su punto de inicio y dirección, con el color y el grosor especificado
 /// </summary>
 /// <param name="start">Punto de inicio</param>
 /// <param name="direction">Dirección de la flecha</param>
 /// <param name="bodyColor">Color del cuerpo de la flecha</param>
 /// <param name="headColor">Color de la punta de la flecha</param>
 /// <param name="thickness">Grosor del cuerpo de la flecha</param>
 /// <param name="headSize">Tamaño de la punta de la flecha</param>
 /// <returns>Flecha creada</returns>
 public static TgcArrow fromDirection(Vector3 start, Vector3 direction, Color bodyColor, Color headColor, float thickness, Vector2 headSize)
 {
     TgcArrow arrow = new TgcArrow();
     arrow.pStart = start;
     arrow.pEnd = start + direction;
     arrow.bodyColor = bodyColor;
     arrow.headColor = headColor;
     arrow.thickness = thickness;
     arrow.headSize = headSize;
     arrow.updateValues();
     return arrow;
 }