Exemple #1
0
        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();
        }
Exemple #4
0
        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;
        }
Exemple #5
0
        /// <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();
        }
Exemple #6
0
        /// <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();
        }