diff --git a/src/gfx/src/frame_example.txt b/src/gfx/src/frame_example.txt new file mode 100644 index 0000000000000000000000000000000000000000..a01401e730ed3a7f93129ac58bf879aa5b9a7ccb --- /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 162bc7ac55b0d477522b423822d3ec0a9866dbe5..bc50e55321465671d5eb9b02cd52a929b49ecee1 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 c7b085cd865f65c8d733f7919cd014e654255565..88c642d794ebf995c8cd9663ace9b689491be0d3 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 91e5a56557f5bfd40a2758a85e9f613961c25077..b9477d970412d7f92de2ab5e2c49be737290c8b3 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>