Пример #1
0
 protected override void OnKeyDown(OpenTK.Input.KeyboardKeyEventArgs e)
 {
     if (e.Key == Key.H)
     {
         Utilitario.AjudaTeclado();
     }
     else if (e.Key == Key.Escape)
     {
         Exit();
     }
     else if (e.Key == Key.E)
     {
         Console.WriteLine("--- Objetos / Pontos: ");
         for (var i = 0; i < objetosLista.Count; i++)
         {
             Console.WriteLine(objetosLista[i]);
         }
     }
     else if (e.Key == Key.O)
     {
         bBoxDesenhar = !bBoxDesenhar;
     }
     else if (e.Key == Key.Enter)
     {
         if (objetoNovo != null)
         {
             objetoNovo.PontosRemoverUltimo();   // N3-Exe6: "truque" para deixar o rastro
             objetoSelecionado = objetoNovo;
             objetoNovo        = null;
         }
     }
     else if (e.Key == Key.Space)
     {
         if (objetoNovo == null)
         {
             objetoNovo = new Poligono(objetoId + 1, null);
             objetosLista.Add(objetoNovo);
             objetoNovo.PontosAdicionar(new Ponto4D(mouseX, mouseY));
             objetoNovo.PontosAdicionar(new Ponto4D(mouseX, mouseY));  // N3-Exe6: "troque" para deixar o rastro
         }
         else
         {
             objetoNovo.PontosAdicionar(new Ponto4D(mouseX, mouseY));
         }
     }
     else if (objetoSelecionado != null)
     {
         if (e.Key == Key.M)
         {
             Console.WriteLine(objetoSelecionado.Matriz);
         }
         else if (e.Key == Key.P)
         {
             Console.WriteLine(objetoSelecionado);
         }
         else if (e.Key == Key.I)
         {
             objetoSelecionado.AtribuirIdentidade();
         }
         //TODO: não está atualizando a BBox com as transformações geométricas
         else if (e.Key == Key.Left)
         {
             objetoSelecionado = this.personagem;
             Cubo cubo = this.personagem;
             cubo.updateImage(tankLeft);
             objetoSelecionado.TranslacaoXYZ(-10, 0, 0);
         }
         else if (e.Key == Key.Right)
         {
             objetoSelecionado = this.personagem;
             Cubo cubo = this.personagem;
             cubo.updateImage(tankRight);
             objetoSelecionado.TranslacaoXYZ(10, 0, 0);
         }
         else if (e.Key == Key.Up)
         {
             objetoSelecionado = this.personagem;
             Cubo cubo = this.personagem;
             cubo.updateImage(tankFront);
             objetoSelecionado.TranslacaoXYZ(0, 0, -10);
         }
         else if (e.Key == Key.Down)
         {
             objetoSelecionado = this.personagem;
             Cubo cubo = this.personagem;
             cubo.updateImage(tankBack);
             objetoSelecionado.TranslacaoXYZ(0, 0, 10);
         }
         else if (e.Key == Key.A)
         {
             objetoSelecionado = this.inimgo;
             Cubo cubo = this.inimgo;
             cubo.updateImage(tankInimigoLeft);
             objetoSelecionado.TranslacaoXYZ(-10, 0, 0);
         }
         else if (e.Key == Key.D)
         {
             objetoSelecionado = this.inimgo;
             Cubo cubo = this.inimgo;
             cubo.updateImage(tankInimigoRight);
             objetoSelecionado.TranslacaoXYZ(10, 0, 0);
         }
         else if (e.Key == Key.W)
         {
             objetoSelecionado = this.inimgo;
             Cubo cubo = this.inimgo;
             cubo.updateImage(tankInimigoFront);
             objetoSelecionado.TranslacaoXYZ(0, 0, -10);
         }
         else if (e.Key == Key.S)
         {
             objetoSelecionado = this.inimgo;
             Cubo cubo = this.inimgo;
             cubo.updateImage(tankInimigoBack);
             objetoSelecionado.TranslacaoXYZ(0, 0, 10);
         }
         else if (e.Key == Key.Number8)
         {
             objetoSelecionado.TranslacaoXYZ(0, 0, 10);
         }
         else if (e.Key == Key.Number9)
         {
             objetoSelecionado.TranslacaoXYZ(0, 0, -10);
         }
         else if (e.Key == Key.PageUp)
         {
             objetoSelecionado.EscalaXYZ(2, 2, 2);
         }
         else if (e.Key == Key.PageDown)
         {
             objetoSelecionado.EscalaXYZ(0.5, 0.5, 0.5);
         }
         else if (e.Key == Key.Home)
         {
             objetoSelecionado.EscalaXYZBBox(0.5, 0.5, 0.5);
         }
         else if (e.Key == Key.End)
         {
             objetoSelecionado.EscalaXYZBBox(2, 2, 2);
         }
         else if (e.Key == Key.Number1)
         {
             objetoSelecionado.Rotacao(10);
         }
         else if (e.Key == Key.Number2)
         {
             objetoSelecionado.Rotacao(-10);
         }
         else if (e.Key == Key.Number3)
         {
             objetoSelecionado.RotacaoZBBox(10);
         }
         else if (e.Key == Key.Number4)
         {
             objetoSelecionado.RotacaoZBBox(-10);
         }
         else if (e.Key == Key.Number0)
         {
             objetoSelecionado = null;
         }
         else if (e.Key == Key.X)
         {
             objetoSelecionado.TrocaEixoRotacao('x');
         }
         else if (e.Key == Key.Y)
         {
             objetoSelecionado.TrocaEixoRotacao('y');
         }
         else if (e.Key == Key.Z)
         {
             objetoSelecionado.TrocaEixoRotacao('z');
         }
         else
         {
             Console.WriteLine(" __ Tecla não implementada.");
         }
     }
     else
     {
         Console.WriteLine(" __ Tecla não implementada.");
     }
 }
Пример #2
0
 protected override void OnKeyDown(OpenTK.Input.KeyboardKeyEventArgs e)
 {
     if (e.Key == Key.H)
     {
         Utilitario.AjudaTeclado();
     }
     else if (e.Key == Key.Escape)
     {
         Exit();
     }
     else if (e.Key == Key.E)
     {
         Console.WriteLine("--- Objetos / Pontos: ");
         for (var i = 0; i < objetosLista.Count; i++)
         {
             Console.WriteLine(objetosLista[i]);
         }
     }
     else if (e.Key == Key.O)
     {
         bBoxDesenhar = !bBoxDesenhar;
     }
     else if (e.Key == Key.Enter)
     {
         if (objetoNovo != null)
         {
             objetoNovo.PontosRemoverUltimo(); // N3-Exe6: "truque" para deixar o rastro
             objetoSelecionado = objetoNovo;
             objetoNovo        = null;
         }
     }
     else if (e.Key == Key.Left)
     {
         this.AtRotateX(-1 / 2);
         this.AtRotateY(1);
     }
     else if (e.Key == Key.Right)
     {
         this.AtRotateX(1 / 2);
         this.AtRotateY(-1);
     }
     else if (e.Key == Key.Up)
     {
         this.EyeRotate(1);
     }
     else if (e.Key == Key.Down)
     {
         this.EyeRotate(-1);
     }
     else if (objetoSelecionado != null)
     {
         if (e.Key == Key.Space)
         {
             objetoSelecionado.Matriz = objetoSelecionado.Matriz.MultiplicarMatriz(this.movimentos[i]);
             j++;
             if (j >= this.qtMovimentos[i])
             {
                 i++;
                 j = 0;
                 if (i >= this.movimentos.Count)
                 {
                     i = 0;
                 }
             }
         }
         else if (e.Key == Key.M)
         {
             Console.WriteLine(objetoSelecionado.Matriz);
         }
         else if (e.Key == Key.P)
         {
             Console.WriteLine(objetoSelecionado);
         }
         else if (e.Key == Key.I)
         {
             objetoSelecionado.AtribuirIdentidade();
             this.i = 0;
             this.j = 0;
         }
         else if (e.Key == Key.Number8)
         {
             objetoSelecionado.TranslacaoXYZ(0, 0, 10);
         }
         else if (e.Key == Key.Number9)
         {
             objetoSelecionado.TranslacaoXYZ(0, 0, -10);
         }
         else if (e.Key == Key.PageUp)
         {
             objetoSelecionado.EscalaXYZ(2, 2, 2);
         }
         else if (e.Key == Key.PageDown)
         {
             objetoSelecionado.EscalaXYZ(0.5, 0.5, 0.5);
         }
         else if (e.Key == Key.Home)
         {
             objetoSelecionado.EscalaXYZBBox(0.5, 0.5, 0.5);
         }
         else if (e.Key == Key.End)
         {
             objetoSelecionado.EscalaXYZBBox(2, 2, 2);
         }
         else if (e.Key == Key.Number1)
         {
             objetoSelecionado.Rotacao(10);
         }
         else if (e.Key == Key.Number2)
         {
             objetoSelecionado.Rotacao(-10);
         }
         else if (e.Key == Key.Number3)
         {
             objetoSelecionado.RotacaoZBBox(10);
         }
         else if (e.Key == Key.Number4)
         {
             objetoSelecionado.RotacaoZBBox(-10);
         }
         else if (e.Key == Key.Number0)
         {
             objetoSelecionado = null;
         }
         else if (e.Key == Key.X)
         {
             objetoSelecionado.TrocaEixoRotacao('x');
         }
         else if (e.Key == Key.Y)
         {
             objetoSelecionado.TrocaEixoRotacao('y');
         }
         else if (e.Key == Key.Z)
         {
             objetoSelecionado.TrocaEixoRotacao('z');
         }
         else
         {
             Console.WriteLine(" __ Tecla não implementada.");
         }
     }
     else
     {
         Console.WriteLine(" __ Tecla não implementada.");
     }
 }