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