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