Client debug info draw

This commit is contained in:
Piotr Siuszko 2020-09-24 17:22:16 +02:00
parent d778df90c3
commit eea2935e4e
5 changed files with 59 additions and 6 deletions

View File

@ -1,6 +1,6 @@
use crate::gaia::camera::*;
use crate::gaia::{consts,macros};
use crate::gaia::{consts};
use crate::gaia::*;
use imgui_glfw_rs::glfw;
use crate::gaia::components::{Transform,ModelComponent};
@ -81,6 +81,23 @@ impl Client for ExampleClient {
.enable_mouse_movement(window.get_key(Key::LeftControl) != Action::Press);
}
fn debug_draw(&mut self, ui: &imgui_glfw_rs::imgui::Ui) {
use imgui_glfw_rs::imgui;
use imgui::*;
use imgui_inspect::InspectArgsStruct;
Window::new(im_str!("Object info"))
.size([250.0, 250.0], Condition::FirstUseEver)
.build(&ui, || {
let mut selected_mut = vec![&mut self.model.transform];
<Transform as imgui_inspect::InspectRenderStruct<Transform>>::render_mut(
&mut selected_mut,
"Example Struct - Writable",
&ui,
&InspectArgsStruct::default(),
);
});
}
fn on_mouse_scroll(&mut self, yoffset: f32){
self.camera.process_mouse_scroll(yoffset as f32);
}

View File

@ -8,4 +8,5 @@ pub trait Client {
fn on_mouse_move(&mut self, x: f32, y: f32);
// fn draw<T>(&mut self, engine: &mut Engine<T>) where T: Client;
unsafe fn draw(&mut self);
fn debug_draw(&mut self, ui: &imgui_glfw_rs::imgui::Ui);
}

View File

@ -1,12 +1,49 @@
use crate::gaia::*;
use crate::gaia::macros;
use imgui_inspect::InspectArgsDefault;
use imgui_inspect::InspectRenderDefault;
use cgmath::{perspective, vec3, Deg, Matrix4, Point3, Rad, Vector3};
use crate::gaia::model::Model;
use crate::gaia::shader::Shader;
use imgui_glfw_rs::imgui;
use imgui_inspect::*;
use imgui_inspect_derive::Inspect;
use imgui_inspect::InspectArgsStruct;
struct cgmathVec3f32;
impl InspectRenderDefault<Vector3<f32>> for cgmathVec3f32 {
fn render(data: &[&Vector3<f32>], label: &'static str, ui: &imgui::Ui, args: &InspectArgsDefault) {
ui.text(label);
ui.text(format!("{:?}", data));
}
fn render_mut(data: &mut [&mut Vector3<f32>], label: &'static str, ui: &imgui::Ui, args: &InspectArgsDefault) -> bool {
use imgui::*;
ui.text(label);
let mut change = false;
for el in data.iter_mut() {
change |= ui.input_float(im_str!("x"), &mut el.x)
.step(0.01)
.step_fast(1.0)
.build();
change |= ui.input_float(im_str!("y"), &mut el.y)
.step(0.01)
.step_fast(1.0)
.build();
change |= ui.input_float(im_str!("z"), &mut el.z)
.step(0.01)
.step_fast(1.0)
.build();
}
change
}
}
#[derive(Inspect, Clone)]
pub struct Transform {
#[inspect(proxy_type = "cgmathVec3f32")]
pub position: Vector3<f32>,
#[inspect(proxy_type = "cgmathVec3f32")]
pub scale: Vector3<f32>,
#[inspect(proxy_type = "cgmathVec3f32")]
pub rotation: Vector3<f32>,
}

View File

@ -64,6 +64,7 @@ impl Engine {
let ui = self.imgui_glfw.frame(&mut self.window, &mut self.imgui);
{
self.client.debug_draw(&ui);
use imgui::*;
let fps = 1.0 / delta_time;
let mut info = self.bg_info;

View File

@ -1,9 +1,6 @@
use std::os::raw::c_void;
use std::path::Path;
use std::sync::mpsc::Receiver;
use gl;
use image;
use image::DynamicImage::*;
use image::GenericImage;