public MainForm() { // Inicijalizacija komponenti InitializeComponent(); // Inicijalizacija OpenGL konteksta openglControl.InitializeContexts(); // Kreiranje OpenGL sveta try { m_world = new World(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "3D Models\\SpaceShip"), "space-ship.obj", openglControl.Width, openglControl.Height); // "3D Models\\SpaceShip"), "space-ship.obj" "3D Models\\"), "UFO.obj" } catch (Exception e) { MessageBox.Show("Neuspesno kreirana instanca OpenGL sveta. Poruka greške: " + e.Message, "GRESKA", MessageBoxButtons.OK, MessageBoxIcon.Error); this.Close(); } }
public MainForm() { // Inicijalizacija komponenti InitializeComponent(); // Inicijalizacija OpenGL konteksta openglControl.InitializeContexts(); // Kreiranje OpenGL sveta // TODO 2.0: ucitavam model balona preko AssimNet biblioteke u klasu AssimpScene try { // \\Balloon\\ "Balloon.3ds" m_world = new World(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "3D Models\\Balloon\\" + ((this.BALLON_TYPE == 0) ? "model\\OBJ\\" : "")), (this.BALLON_TYPE == 0) ? "Hot_Air_Balloon.obj" : "Balloon.3ds", openglControl.Width, openglControl.Height); m_world.Draw(); initNumerics(); timer1.Start(); } catch (Exception e) { MessageBox.Show("Neuspesno kreirana instanca OpenGL sveta. Poruka greške: " + e.Message, "GRESKA", MessageBoxButtons.OK, MessageBoxIcon.Error); this.Close(); } }
/// <summary> /// Rukovalac dogadjaja: obrada tastera nad formom /// </summary> //TODO 5.0: Rotacija sveta, ogranicenja, priblizavanje, udaljavanje. private void OpenGlControlKeyDown(object sender, KeyEventArgs e) { switch (e.KeyCode) { case Keys.F10: this.Close(); break; case Keys.S: if (m_world.RotationX > 0) m_world.RotationX -= 5.0f; break; case Keys.W: if (m_world.RotationX < 90) m_world.RotationX += 5.0f; /*System.Diagnostics.Debug.WriteLine("m_world.RotationX: " + m_world.RotationX);*/ break; case Keys.A: m_world.RotationY -= 5.0f; /*System.Diagnostics.Debug.WriteLine("m_world.RotationY: " + m_world.RotationY);*/ break; case Keys.D: m_world.RotationY += 5.0f; /*System.Diagnostics.Debug.WriteLine("m_world.RotationY: " + m_world.RotationY);*/ break; case Keys.Add: m_world.SceneDistance -= 700.0f; m_world.Resize(); break; case Keys.Subtract: m_world.SceneDistance += 700.0f; m_world.Resize(); break; case Keys.F7: System.Windows.Forms.Application.Exit(); break; case Keys.C: button2_Click(button2, null); break; // pokreni animaciju case Keys.F2: OpenFileDialog opfModel = new OpenFileDialog(); if (opfModel.ShowDialog() == DialogResult.OK) { try { World newWorld = new World(Directory.GetParent(opfModel.FileName).ToString(), Path.GetFileName(opfModel.FileName), openglControl.Width, openglControl.Height); m_world.Dispose(); m_world = newWorld; openglControl.Invalidate(); } catch (Exception exp) { MessageBox.Show("Neuspesno kreirana instanca OpenGL sveta:\n" + exp.Message, "GRESKA", MessageBoxButtons.OK, MessageBoxIcon.Error); } } break; } openglControl.Refresh(); }
public MainForm() { // Inicijalizacija komponenti InitializeComponent(); // Inicijalizacija OpenGL konteksta openglControl.InitializeContexts(); // Kreiranje OpenGL sveta try { m_world = new World(openglControl.Width, openglControl.Height); } catch (Exception e) { MessageBox.Show("Neuspesno kreirana instanca OpenGL sveta. Poruka greške: " + e.Message, "GRESKA", MessageBoxButtons.OK, MessageBoxIcon.Error); this.Close(); } // Sakrij i ogranici kursor na dimenzije opengl kontrole Cursor.Hide(); Cursor.Position = openglControl.PointToScreen(new Point(openglControl.Width / 2, openglControl.Height / 2)); Cursor.Clip = new Rectangle(openglControl.PointToScreen(new Point(0, 0)), openglControl.Size); // Sacuvaj pocetnu poziciju kurzora m_mousePosX = Cursor.Position.X; m_mousePosY = Cursor.Position.Y; }
/// <summary> /// Rukovalac dogadja izmene dimenzija OpenGL kontrole /// </summary> private void OpenGlControlResize(object sender, EventArgs e) { m_world = new World(openglControl.Width, openglControl.Height); m_world.Height = openglControl.Height; m_world.Width = openglControl.Width; m_world.Resize(); }
/// <summary> /// Rukovalac dogadjaja: obrada tastera nad formom /// </summary> private void OpenGlControlKeyDown(object sender, KeyEventArgs e) { switch (e.KeyCode) { case Keys.F5: this.Close(); break; case Keys.W: m_world.DeltaMove = MOVE_SPEED; break; case Keys.S: m_world.DeltaMove = -MOVE_SPEED; break; case Keys.A: m_world.DeltaStrafe = -STRAFE_SPEED; break; case Keys.D: m_world.DeltaStrafe = STRAFE_SPEED; break; case Keys.T: Console.WriteLine(m_world.RotationX); if (m_world.RotationX > -50.0f) { m_world.RotationX -= 5.0f; } break; case Keys.G: Console.WriteLine(m_world.RotationX); if (m_world.RotationX < 15.0f) { m_world.RotationX += 5.0f; } break; case Keys.H: m_world.RotationY -= 5.0f; break; case Keys.F: m_world.RotationY += 5.0f; break; case Keys.F2: OpenFileDialog opfModel = new OpenFileDialog(); if (opfModel.ShowDialog() == DialogResult.OK) { try { World newWorld = new World(openglControl.Width, openglControl.Height); m_world.Dispose(); m_world = newWorld; openglControl.Invalidate(); } catch (Exception exp) { MessageBox.Show("Neuspesno kreirana instanca OpenGL sveta:\n" + exp.Message, "GRESKA", MessageBoxButtons.OK, MessageBoxIcon.Error); } } break; case Keys.X: timerAnimacija.Enabled = true; openglTimer.Enabled = false; m_world.projektil_x = -5; m_world.ShipRotation_z = 0; m_world.ShipTranslate_y = 10.0f; break; case Keys.Subtract: Console.WriteLine(m_world.SceneDistance); if (m_world.SceneDistance - 20.0f >= 100.0f ) { m_world.SceneDistance -= 20.0f; m_world.Resize(); } break; case Keys.Add: if (m_world.SceneDistance + 20.0f <= 380.0f) { m_world.SceneDistance += 20.0f; m_world.Resize(); } break; case Keys.C: openglTimer.Enabled = false; timerAnimacija.Enabled = true; m_world.AnimacijaEnable = true; break; } openglControl.Refresh(); }