Better log system

This commit is contained in:
Piotr 2020-09-27 12:20:46 +02:00
parent 4ab3fee655
commit d916cf3c18
11 changed files with 71 additions and 31 deletions

3
.gitignore vendored
View File

@ -2,4 +2,5 @@
**png
**jpg
**jpeg
imgui.ini
imgui.ini
log.log

24
Cargo.lock generated
View File

@ -153,6 +153,8 @@ dependencies = [
"imgui-inspect",
"imgui-inspect-derive",
"inline_tweak",
"log",
"simple-logging",
"tobj",
]
@ -790,6 +792,17 @@ dependencies = [
"syn",
]
[[package]]
name = "simple-logging"
version = "2.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b00d48e85675326bb182a2286ea7c1a0b264333ae10f27a937a72be08628b542"
dependencies = [
"lazy_static",
"log",
"thread-id",
]
[[package]]
name = "smallvec"
version = "1.4.2"
@ -822,6 +835,17 @@ dependencies = [
"winapi-util",
]
[[package]]
name = "thread-id"
version = "3.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c7fbf4c9d56b320106cd64fd024dadfa0be7cb4706725fc44a7d7ce952d820c1"
dependencies = [
"libc",
"redox_syscall",
"winapi",
]
[[package]]
name = "thread_local"
version = "1.0.1"

View File

@ -18,6 +18,8 @@ imgui-inspect-derive = "0.5.0"
tobj = "2.0.2"
human-panic = "1.0.3"
inline_tweak = "1.0.8"
log = "0.4.11"
simple-logging = "2.0.2"
image2 = { git = "https://github.com/Leinnan/image2-rs", branch="legacy", default-features = false, features=["io"] }
[profile.dev.package."*"]

View File

@ -27,9 +27,6 @@ impl ExampleClient {
pub fn create(_window: &glfw::Window) -> ExampleClient {
let sky = unsafe { Sky::new() };
ExampleClient {
object_info_id: 0,
show_camera_info: true,
show_object_info: false,
models: vec![],
camera: Camera {
position: Point3::new(0.0, 8.0, 13.0),
@ -42,6 +39,9 @@ impl ExampleClient {
},
lighting_system: LightingSystem::default(),
sky: sky,
object_info_id: 0,
show_camera_info: false,
show_object_info: false,
show_light_info: false,
light_info_id: 0,
}
@ -52,7 +52,7 @@ impl Client for ExampleClient {
fn load_assets(&mut self, cache: &mut AssetsCache) {
let ground = ModelComponent {
transform: Transform {
scale: vec3(0.5, 0.5, 0.5),
scale: 0.56,
..Transform::default()
},
model: cache.get_model("resources/objects/ground/ground.obj"),
@ -64,7 +64,7 @@ impl Client for ExampleClient {
let tree = ModelComponent {
transform: Transform {
position: vec3(10.0, 0.0, 26.0),
scale: vec3(2.5, 2.5, 2.5),
scale: 2.5,
..Transform::default()
},
model: cache.get_model_ext("resources/objects/tree/tree_6_d.obj", Some("tree_e.png")),
@ -72,7 +72,7 @@ impl Client for ExampleClient {
let tree2 = ModelComponent {
transform: Transform {
position: vec3(-9.0, 0.0, -15.0),
scale: vec3(2.5, 2.5, 2.5),
scale: 2.5,
..Transform::default()
},
model: cache.get_model_ext("resources/objects/tree/tree_6_c.obj", Some("tree_e.png")),
@ -80,7 +80,7 @@ impl Client for ExampleClient {
let tree3 = ModelComponent {
transform: Transform {
position: vec3(15.0, 0.0, -7.0),
scale: vec3(2.5, 2.5, 2.5),
scale: 2.5,
..Transform::default()
},
model: cache.get_model_ext("resources/objects/tree/tree_6_c.obj", Some("tree_e.png")),
@ -151,14 +151,14 @@ impl Client for ExampleClient {
{
self.show_light_info = !self.show_light_info;
}
if MenuItem::new(im_str!("Show camera info"))
.selected(self.show_camera_info)
.build(ui)
{
self.show_camera_info = !self.show_camera_info;
}
menu.end(ui);
}
if MenuItem::new(im_str!("Toggle Camera Info"))
.selected(self.show_camera_info)
.build(ui)
{
self.show_camera_info = !self.show_camera_info;
}
menu_bar.end(ui);
}
if self.show_camera_info {

View File

@ -3,6 +3,7 @@ use crate::gaia::model::Model;
use crate::gaia::utils::load_texture_from_dir;
use std::collections::HashMap;
use std::path::Path;
use log::{info, trace, warn};
#[derive(Default)]
pub struct AssetsCache {
@ -15,7 +16,7 @@ impl AssetsCache {
match self.models.get(path) {
Some(model) => model.clone(),
None => {
println!("Loading model: {}", path);
info!("Loading model: {}", path);
let model = Model::new(path, self);
self.models.insert(path.to_string(), model.clone());
model
@ -27,7 +28,7 @@ impl AssetsCache {
match self.models.get(path) {
Some(model) => model.clone(),
None => {
println!("Loading model: {}", path);
info!("Loading model: {}", path);
let model = Model::new_ext(path, diff_texture, self);
self.models.insert(path.to_string(), model.clone());
model
@ -40,7 +41,6 @@ impl AssetsCache {
Some(texture) => texture.clone(),
None => {
let directory: String = dir.into();
println!("Loading texture: {}", path);
let texture = Texture {
id: unsafe { load_texture_from_dir(path, &directory) },
type_: type_name.into(),

View File

@ -7,20 +7,19 @@ use imgui_inspect_derive::Inspect;
#[derive(Inspect, Clone, Copy, Debug)]
pub struct Transform {
#[inspect(proxy_type = "CgmathVec3f32")]
pub scale: Vector3<f32>,
#[inspect(proxy_type = "CgmathVec3f32")]
pub position: Vector3<f32>,
#[inspect(proxy_type = "CgmathVec3f32")]
pub rotation: Vector3<f32>,
pub scale: f32,
}
impl Default for Transform {
fn default() -> Transform {
Transform {
position: vec3(0.0, 0.0, 0.0),
scale: vec3(1.0, 1.0, 1.0),
rotation: vec3(0.0, 0.0, 0.0),
scale: 1.0,
}
}
}
@ -28,7 +27,7 @@ impl Default for Transform {
impl Transform {
pub fn get_matrix(&self) -> Matrix4<f32> {
let mut m = Matrix4::<f32>::from_translation(self.position);
m = m * Matrix4::from_nonuniform_scale(self.scale.x, self.scale.y, self.scale.z);
m = m * Matrix4::from_scale(self.scale);
m = m * Matrix4::<f32>::from_angle_x(Rad(self.rotation.x.to_radians()));
m = m * Matrix4::<f32>::from_angle_y(Rad(self.rotation.y.to_radians()));
m = m * Matrix4::<f32>::from_angle_z(Rad(self.rotation.z.to_radians()));

View File

@ -10,6 +10,7 @@ use imgui_glfw_rs::glfw;
use imgui_glfw_rs::glfw::{Action, Context, Key};
use imgui_glfw_rs::imgui;
use imgui_glfw_rs::ImguiGLFW;
use log::{info, trace, warn};
pub struct Engine {
pub camera: Camera,
@ -270,7 +271,6 @@ impl Default for Engine {
let client = ExampleClient::create(&window);
let (scr_width, scr_height) = window.get_framebuffer_size();
let fb = unsafe { FramebufferSystem::generate(scr_width, scr_height) };
println!("{:?}", fb);
Engine {
bg_info: BgInfo::default(),

View File

@ -3,6 +3,7 @@ use gl::types::*;
use std::mem;
use std::os::raw::c_void;
use std::ptr;
use log::{info, trace, warn};
#[derive(Debug)]
pub struct FramebufferSystem {
@ -48,6 +49,7 @@ impl FramebufferSystem {
gl::DrawArrays(gl::TRIANGLES, 0, 6);
}
pub unsafe fn generate(scr_width: i32, scr_height: i32) -> Self {
info!("Generating new framebuffer with dimensions {}x{}",scr_width,scr_height);
let screenShader = Shader::from_file(
"resources/shaders/framebuffers_screen.vs",
"resources/shaders/framebuffers_screen.fs",
@ -136,10 +138,12 @@ impl FramebufferSystem {
); // now actually attach it
// now that we actually created the framebuffer and added all attachments we want to check if it is actually complete now
if gl::CheckFramebufferStatus(gl::FRAMEBUFFER) != gl::FRAMEBUFFER_COMPLETE {
println!("ERROR::FRAMEBUFFER:: Framebuffer is not complete!");
warn!("ERROR::FRAMEBUFFER:: Framebuffer is not complete!");
}
gl::BindFramebuffer(gl::FRAMEBUFFER, 0);
info!("New framebuffer generated");
FramebufferSystem {
texture_color_buffer: textureColorbuffer,
shader: screenShader,

View File

@ -8,6 +8,7 @@ use crate::gaia::utils::*;
use cgmath::{vec2, vec3};
use std::path::Path;
use tobj;
use log::{info, trace, warn};
#[derive(Clone)]
pub struct Model {
@ -50,7 +51,7 @@ impl Model {
// loads a model from file and stores the resulting meshes in the meshes vector.
fn load_model(&mut self, path: &str, diffuse_path: Option<&str>, cache: &mut AssetsCache) {
let path = Path::new(path);
println!("Started loading model from path: {}", path.display());
// println!("Started loading model from path: {}", path.display());
// retrieve the directory path of the filepath
self.directory = path
@ -114,7 +115,7 @@ impl Model {
}
// NOTE: no height maps
} else if diffuse_path.is_some() {
println!("Loading {}", &diffuse_path.unwrap());
// println!("Loading {}", &diffuse_path.unwrap());
let texture = cache.get_material_texture(
&self.directory,
&diffuse_path.unwrap(),
@ -122,11 +123,11 @@ impl Model {
);
textures.push(texture);
} else {
println!("There are no materials for: {}", path.display());
warn!("There are no materials for: {}", path.display());
}
self.meshes.push(Mesh::new(vertices, indices, textures));
}
println!("Finished loading model from path: {}", path.display());
info!("Finished loading model");
}
}

View File

@ -2,11 +2,12 @@ use gl;
use image2::image::Image;
use image2::{io, ImagePtr, Rgb, Rgba};
use std::os::raw::c_void;
use log::{info, trace, warn};
pub unsafe fn load_texture(path: &str, file_format: &str) -> u32 {
println!(
"[stb]Loading texture from path: {} with format {}",
path, file_format
info!(
"Loading texture: {}",
path
);
let mut id = 0;

View File

@ -2,14 +2,22 @@
extern crate gl;
extern crate imgui_glfw_rs;
use human_panic::setup_panic;
extern crate log;
extern crate simple_logging;
#[macro_use]
mod gaia;
mod example_client;
use log::LevelFilter;
use log::{info, trace, warn};
use human_panic::setup_panic;
use crate::gaia::engine::Engine;
pub fn main() {
setup_panic!();
simple_logging::log_to_file("log.log", LevelFilter::Info);
info!("Starting engine!");
let mut engine = Engine::default();
engine.run();