From 44a44d65abac27dc1234fef961acb18f0c4b2fe8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20=C5=A0toura=C4=8D?= <525032@mail.muni.cz> Date: Mon, 20 Mar 2023 21:23:55 +0100 Subject: [PATCH] math include fix, mouse left hold to look around --- src/gfx/src/frame_example.txt | 37 ++++++++++++++++++++++++++++++++ src/gfx/src/render.cpp | 5 ++++- src/studio/src/simulator.cpp | 11 +++++----- src/utils/include/utils/math.hpp | 4 ++-- 4 files changed, 49 insertions(+), 8 deletions(-) create mode 100644 src/gfx/src/frame_example.txt diff --git a/src/gfx/src/frame_example.txt b/src/gfx/src/frame_example.txt new file mode 100644 index 0000000..a01401e --- /dev/null +++ b/src/gfx/src/frame_example.txt @@ -0,0 +1,37 @@ +class Frame +{ +public:  + vec3 get_pos();  + quat get_rot()l;  + vec3 get_axis_x();  + vec3 get_axis_y();  + vec3 get_axis_z();  + mat3 get_rot_matrix();  + mat4 get_from_matrix();  + mat4 get_to_matrix();  + mat4 get_world_matrix();  + void set_pos(vec3 pos_) { pos = pos_; }  + void move(vec3 dpos) { pos += dpos; invalidate_wolrd_matrices(); }  + void set_rot(quat rot_) { rot = rot_; }  + void rotate(quat rot_) { rot *= rot_; }  + mat4& get_world_matrix() + {    + if (to_world == nullptr)      + to_world = vypocti;    + return *to_world;  + }  + + void invalidate_wolrd_matrices()  + {    + delete to_world;    + to_world = nullptr;   +  + // rekurzivne pro kazdeho potiomka totez.    + for (Frame* chuild : children)      + child->invalidate_wolrd_matrices();  + }  + + Frame* parent;  + std::vector<Frame*> children;  + glm::mat4* to_world; +}; \ No newline at end of file diff --git a/src/gfx/src/render.cpp b/src/gfx/src/render.cpp index 162bc7a..bc50e55 100644 --- a/src/gfx/src/render.cpp +++ b/src/gfx/src/render.cpp @@ -1,6 +1,7 @@ #include <studio/simulator.hpp> #include <osi/opengl.hpp> #include <osi/gui.hpp> +#include <utils/assumptions.hpp> #include <gfx/vao.hpp> #include <gfx/vbo.hpp> @@ -153,7 +154,9 @@ void gfx_draw(Shader &myShader, VAO &VAO, Camera camera) glEnable(GL_DEPTH_TEST); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - + + ASSUMPTION(glGetError() == GL_NO_ERROR); // !!!!!!!!!!!!!!!!!!!!!!! + VAO.Bind(); //glDrawArrays(GL_TRIANGLES, 0, 3); glDrawElements(GL_TRIANGLES, 36, GL_UNSIGNED_INT, 0); diff --git a/src/studio/src/simulator.cpp b/src/studio/src/simulator.cpp index c7b085c..88c642d 100644 --- a/src/studio/src/simulator.cpp +++ b/src/studio/src/simulator.cpp @@ -43,7 +43,7 @@ float vertices_cube[] = Simulator::Simulator() : osi::Simulator() , myVAO{VAO{}} - , myVBO{VBO{}} + , myVBO{VBO{}} // camera frame, object frame, camera, object , myEBO{EBO{}} , myShader{create_shader_program()} { @@ -91,18 +91,19 @@ void Simulator::present() void Simulator::process_input() { - if (! window().has_keyboard_focus()) + if (!window().has_keyboard_focus()) return; camera.setSpeed(timer().dt()); + // Issues not occuring anymore if (keyboard().down().contains("W")) camera.forward(); if (keyboard().down().contains("S")) camera.backward(); - if (keyboard().down().contains("A") && !keyboard().just_released().contains("A")) + if (keyboard().down().contains("A")) camera.left(); - if (keyboard().down().contains("D") && !keyboard().just_released().contains("D")) + if (keyboard().down().contains("D")) camera.right(); if (keyboard().down().contains("R")) camera.up(); @@ -121,7 +122,7 @@ void Simulator::process_mouse() float xoffset = 0; float yoffset = 0; - if (true /*mouse().down().contains("SDL_BUTTON_LMASK")*/ + if (mouse().down().contains("MouseLeft") && window().is_mouse_in_window()) { glm::i32vec2 offset = mouse().pos_delta(); diff --git a/src/utils/include/utils/math.hpp b/src/utils/include/utils/math.hpp index 91e5a56..b9477d9 100644 --- a/src/utils/include/utils/math.hpp +++ b/src/utils/include/utils/math.hpp @@ -1,5 +1,5 @@ -#ifndef UTILS_ASSUMPTIONS_HPP_INCLUDED -# define UTILS_ASSUMPTIONS_HPP_INCLUDED +#ifndef UTILS_MATH_HPP_INCLUDED +# define UTILS_MATH_HPP_INCLUDED # include <glm/glm.hpp> # include <glm/gtc/matrix_access.hpp> -- GitLab