From f30d1984638ce9959005734edb42fd03f043b34b Mon Sep 17 00:00:00 2001 From: Piotr Date: Wed, 23 Sep 2020 00:07:43 +0200 Subject: [PATCH] Refactor --- src/gaia/bg_info.rs | 22 +++++++++++++++++++ src/{ => gaia}/camera.rs | 4 ++++ src/{ => gaia}/consts.rs | 0 src/{ => gaia}/macros.rs | 2 -- src/{ => gaia}/mesh.rs | 0 src/gaia/mod.rs | 9 ++++++++ src/{ => gaia}/model.rs | 2 +- src/{ => gaia}/shader.rs | 10 +++++++++ src/{engine.rs => gaia/utils.rs} | 0 src/main.rs | 37 ++++++-------------------------- 10 files changed, 53 insertions(+), 33 deletions(-) create mode 100644 src/gaia/bg_info.rs rename src/{ => gaia}/camera.rs (97%) rename src/{ => gaia}/consts.rs (100%) rename src/{ => gaia}/macros.rs (97%) rename src/{ => gaia}/mesh.rs (100%) create mode 100644 src/gaia/mod.rs rename src/{ => gaia}/model.rs (99%) rename src/{ => gaia}/shader.rs (96%) rename src/{engine.rs => gaia/utils.rs} (100%) diff --git a/src/gaia/bg_info.rs b/src/gaia/bg_info.rs new file mode 100644 index 0000000..9f17d84 --- /dev/null +++ b/src/gaia/bg_info.rs @@ -0,0 +1,22 @@ +use imgui_glfw_rs::imgui; +use imgui_inspect_derive::Inspect; + +#[derive(Inspect)] +pub struct BgInfo { + #[inspect_slider(min_value = 0.0, max_value = 1.0)] + pub r : f32, + #[inspect_slider(min_value = 0.0, max_value = 1.0)] + pub g: f32, + #[inspect_slider(min_value = 0.0, max_value = 1.0)] + pub b: f32, +} + +impl Default for BgInfo { + fn default() -> Self { + BgInfo{ + r: 0.1, + g: 0.2, + b: 0.4 + } + } +} \ No newline at end of file diff --git a/src/camera.rs b/src/gaia/camera.rs similarity index 97% rename from src/camera.rs rename to src/gaia/camera.rs index eda0749..bb00ab4 100644 --- a/src/camera.rs +++ b/src/gaia/camera.rs @@ -138,4 +138,8 @@ impl Camera { self.Right = self.Front.cross(self.WorldUp).normalize(); // Normalize the vectors, because their length gets closer to 0 the more you look up or down which results in slower movement. self.Up = self.Right.cross(self.Front).normalize(); } + + pub fn enable_mouse_movement(&mut self, enable: bool) { + self.MouseSensitivity = if enable { SENSITIVTY } else { 0.0 }; + } } diff --git a/src/consts.rs b/src/gaia/consts.rs similarity index 100% rename from src/consts.rs rename to src/gaia/consts.rs diff --git a/src/macros.rs b/src/gaia/macros.rs similarity index 97% rename from src/macros.rs rename to src/gaia/macros.rs index 6a8ac30..1959e16 100644 --- a/src/macros.rs +++ b/src/gaia/macros.rs @@ -1,5 +1,3 @@ -#![macro_use] - /// Macro to get c strings from literals without runtime overhead /// Literal must not contain any interior nul bytes! macro_rules! c_str { diff --git a/src/mesh.rs b/src/gaia/mesh.rs similarity index 100% rename from src/mesh.rs rename to src/gaia/mesh.rs diff --git a/src/gaia/mod.rs b/src/gaia/mod.rs new file mode 100644 index 0000000..5440bc8 --- /dev/null +++ b/src/gaia/mod.rs @@ -0,0 +1,9 @@ +pub mod camera; +pub mod consts; +pub mod utils; +#[macro_use] +pub mod macros; +pub mod shader; +pub mod model; +pub mod mesh; +pub mod bg_info; \ No newline at end of file diff --git a/src/model.rs b/src/gaia/model.rs similarity index 99% rename from src/model.rs rename to src/gaia/model.rs index 2516cfa..343c762 100644 --- a/src/model.rs +++ b/src/gaia/model.rs @@ -13,7 +13,7 @@ use tobj; use crate::mesh::{ Mesh, Texture, Vertex }; use crate::shader::Shader; -use crate::engine::*; +use crate::utils::*; // #[derive(Default)] pub struct Model { diff --git a/src/shader.rs b/src/gaia/shader.rs similarity index 96% rename from src/shader.rs rename to src/gaia/shader.rs index b60f493..5577f90 100644 --- a/src/shader.rs +++ b/src/gaia/shader.rs @@ -10,11 +10,21 @@ use gl::types::*; use cgmath::prelude::*; use cgmath::{Matrix, Matrix4, Vector3}; +use crate::gaia::consts; pub struct Shader { pub ID: u32, } +impl Default for Shader { + fn default() -> Self { + let vShaderCode = CString::new(consts::VERTEX_SHADER_SRC.as_bytes()).unwrap(); + let fShaderCode = CString::new(consts::FRAGMENT_SHADER_SRC.as_bytes()).unwrap(); + + Shader::new(vShaderCode, fShaderCode) + } +} + /// NOTE: mixture of `shader_s.h` and `shader_m.h` (the latter just contains /// a few more setters for uniforms) #[allow(dead_code)] diff --git a/src/engine.rs b/src/gaia/utils.rs similarity index 100% rename from src/engine.rs rename to src/gaia/utils.rs diff --git a/src/main.rs b/src/main.rs index 1854359..c04778d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -5,44 +5,20 @@ extern crate image; use imgui_glfw_rs::glfw; // Use the reexported imgui crate to avoid version conflicts. use imgui_glfw_rs::imgui; -use imgui_inspect_derive::Inspect; -use imgui_inspect::InspectArgsStruct; -use imgui_inspect::InspectArgsSlider; use imgui_glfw_rs::ImguiGLFW; -use self::camera::*; +use imgui_inspect::InspectArgsStruct; use self::gl::types::*; use imgui_glfw_rs::glfw::{Action, Context, Key}; use cgmath::prelude::*; use cgmath::{perspective, vec3, Deg, Matrix4, Point3, Rad, Vector3}; use human_panic::setup_panic; -mod camera; -mod consts; -mod engine; -mod macros; -mod shader; -mod model; -mod mesh; -#[derive(Inspect)] -pub struct BgInfo { - #[inspect_slider(min_value = 0.0, max_value = 1.0)] - pub r : f32, - #[inspect_slider(min_value = 0.0, max_value = 1.0)] - pub g: f32, - #[inspect_slider(min_value = 0.0, max_value = 1.0)] - pub b: f32, -} - -impl Default for BgInfo { - fn default() -> Self { - BgInfo{ - r: 0.1, - g: 0.2, - b: 0.4 - } - } -} +#[macro_use] +mod gaia; +use crate::gaia::camera::*; +use crate::gaia::*; +use crate::gaia::bg_info::BgInfo; pub fn main() { setup_panic!(); @@ -275,4 +251,5 @@ pub fn process_input(window: &mut glfw::Window, delta_time: f32, camera: &mut Ca if window.get_key(Key::D) == Action::Press { camera.process_keyboard(Camera_Movement::RIGHT, delta_time); } + camera.enable_mouse_movement(window.get_key(Key::LeftControl) != Action::Press); }