mirror of https://github.com/Leinnan/doppler.git
Multiple edit
This commit is contained in:
parent
5c82231b95
commit
6278aabb97
|
|
@ -13,30 +13,34 @@ pub struct ExampleClient {
|
||||||
shader: shader::Shader,
|
shader: shader::Shader,
|
||||||
show_object_info: bool,
|
show_object_info: bool,
|
||||||
show_camera_info: bool,
|
show_camera_info: bool,
|
||||||
|
object_info_id: i32,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ExampleClient {
|
impl ExampleClient {
|
||||||
pub fn create() -> ExampleClient {
|
pub fn create() -> ExampleClient {
|
||||||
let tree = ModelComponent {
|
let tree = ModelComponent {
|
||||||
transform: Transform{ position: vec3(10.0,0.0,26.0),
|
transform: Transform {
|
||||||
|
position: vec3(10.0, 0.0, 26.0),
|
||||||
scale: vec3(2.5, 2.5, 2.5),
|
scale: vec3(2.5, 2.5, 2.5),
|
||||||
..Transform::default()},
|
..Transform::default()
|
||||||
model: model::Model::new_ext("resources/objects/tree/tree_6_d.obj",
|
},
|
||||||
Some("tree_e.png")),
|
model: model::Model::new_ext("resources/objects/tree/tree_6_d.obj", Some("tree_e.png")),
|
||||||
};
|
};
|
||||||
let tree2 = ModelComponent {
|
let tree2 = ModelComponent {
|
||||||
transform: Transform{ position: vec3(-9.0,0.0,-15.0),
|
transform: Transform {
|
||||||
|
position: vec3(-9.0, 0.0, -15.0),
|
||||||
scale: vec3(2.5, 2.5, 2.5),
|
scale: vec3(2.5, 2.5, 2.5),
|
||||||
..Transform::default()},
|
..Transform::default()
|
||||||
model: model::Model::new_ext("resources/objects/tree/tree_6_c.obj",
|
},
|
||||||
Some("tree_e.png")),
|
model: model::Model::new_ext("resources/objects/tree/tree_6_c.obj", Some("tree_e.png")),
|
||||||
};
|
};
|
||||||
let tree3 = ModelComponent {
|
let tree3 = ModelComponent {
|
||||||
transform: Transform{ position: vec3(15.0,0.0,-7.0),
|
transform: Transform {
|
||||||
|
position: vec3(15.0, 0.0, -7.0),
|
||||||
scale: vec3(2.5, 2.5, 2.5),
|
scale: vec3(2.5, 2.5, 2.5),
|
||||||
..Transform::default()},
|
..Transform::default()
|
||||||
model: model::Model::new_ext("resources/objects/tree/tree_6_c.obj",
|
},
|
||||||
Some("tree_e.png")),
|
model: model::Model::new_ext("resources/objects/tree/tree_6_c.obj", Some("tree_e.png")),
|
||||||
};
|
};
|
||||||
let ground = ModelComponent {
|
let ground = ModelComponent {
|
||||||
transform: Transform {
|
transform: Transform {
|
||||||
|
|
@ -50,9 +54,10 @@ impl ExampleClient {
|
||||||
model: model::Model::new("resources/objects/robot/robot.obj"),
|
model: model::Model::new("resources/objects/robot/robot.obj"),
|
||||||
};
|
};
|
||||||
ExampleClient {
|
ExampleClient {
|
||||||
|
object_info_id: 0,
|
||||||
show_camera_info: true,
|
show_camera_info: true,
|
||||||
show_object_info: false,
|
show_object_info: false,
|
||||||
models: vec!(tree,tree2,tree3,ground, robot),
|
models: vec![tree, tree2, tree3, ground, robot],
|
||||||
camera: Camera {
|
camera: Camera {
|
||||||
position: Point3::new(0.0, 8.0, 13.0),
|
position: Point3::new(0.0, 8.0, 13.0),
|
||||||
front: vec3(0.0, -0.4, -1.0),
|
front: vec3(0.0, -0.4, -1.0),
|
||||||
|
|
@ -79,7 +84,7 @@ impl Client for ExampleClient {
|
||||||
Deg(self.camera.zoom),
|
Deg(self.camera.zoom),
|
||||||
consts::SCR_WIDTH as f32 / consts::SCR_HEIGHT as f32,
|
consts::SCR_WIDTH as f32 / consts::SCR_HEIGHT as f32,
|
||||||
0.1,
|
0.1,
|
||||||
100.0,
|
1000.0,
|
||||||
);
|
);
|
||||||
let view = self.camera.get_view_matrix();
|
let view = self.camera.get_view_matrix();
|
||||||
self.shader.set_mat4(c_str!("projection"), &projection);
|
self.shader.set_mat4(c_str!("projection"), &projection);
|
||||||
|
|
@ -132,26 +137,6 @@ impl Client for ExampleClient {
|
||||||
}
|
}
|
||||||
menu.end(ui);
|
menu.end(ui);
|
||||||
}
|
}
|
||||||
if let Some(menu) = ui.begin_menu(im_str!("Edit"), true) {
|
|
||||||
MenuItem::new(im_str!("Undo"))
|
|
||||||
.shortcut(im_str!("CTRL+Z"))
|
|
||||||
.build(ui);
|
|
||||||
MenuItem::new(im_str!("Redo"))
|
|
||||||
.shortcut(im_str!("CTRL+Y"))
|
|
||||||
.enabled(false)
|
|
||||||
.build(ui);
|
|
||||||
ui.separator();
|
|
||||||
MenuItem::new(im_str!("Cut"))
|
|
||||||
.shortcut(im_str!("CTRL+X"))
|
|
||||||
.build(ui);
|
|
||||||
MenuItem::new(im_str!("Copy"))
|
|
||||||
.shortcut(im_str!("CTRL+C"))
|
|
||||||
.build(ui);
|
|
||||||
MenuItem::new(im_str!("Paste"))
|
|
||||||
.shortcut(im_str!("CTRL+V"))
|
|
||||||
.build(ui);
|
|
||||||
menu.end(ui);
|
|
||||||
}
|
|
||||||
menu_bar.end(ui);
|
menu_bar.end(ui);
|
||||||
}
|
}
|
||||||
if self.show_camera_info {
|
if self.show_camera_info {
|
||||||
|
|
@ -172,12 +157,17 @@ impl Client for ExampleClient {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if self.show_object_info {
|
if self.show_object_info {
|
||||||
|
let mut id = self.object_info_id;
|
||||||
|
let max: i32 = self.models.len() as i32 - 1;
|
||||||
|
println!("max: {}", max);
|
||||||
let mut show_window = self.show_object_info;
|
let mut show_window = self.show_object_info;
|
||||||
Window::new(im_str!("Object info"))
|
Window::new(im_str!("Object info"))
|
||||||
.size([250.0, 250.0], Condition::FirstUseEver)
|
.size([250.0, 250.0], Condition::FirstUseEver)
|
||||||
.opened(&mut show_window)
|
.opened(&mut show_window)
|
||||||
.build(&ui, || {
|
.build(&ui, || {
|
||||||
let mut selected_mut = vec![&mut self.models[0].transform];
|
ui.drag_int(im_str!("id"), &mut id).min(0).max(max).build();
|
||||||
|
// id = if id < 0 { 0 } else if id > max { max } else { id };
|
||||||
|
let mut selected_mut = vec![&mut self.models[id as usize].transform];
|
||||||
<Transform as imgui_inspect::InspectRenderStruct<Transform>>::render_mut(
|
<Transform as imgui_inspect::InspectRenderStruct<Transform>>::render_mut(
|
||||||
&mut selected_mut,
|
&mut selected_mut,
|
||||||
"Object info",
|
"Object info",
|
||||||
|
|
@ -185,6 +175,7 @@ impl Client for ExampleClient {
|
||||||
&InspectArgsStruct::default(),
|
&InspectArgsStruct::default(),
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
self.object_info_id = id;
|
||||||
self.show_object_info = show_window;
|
self.show_object_info = show_window;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -65,7 +65,7 @@ impl Engine {
|
||||||
self.client.debug_draw(&ui);
|
self.client.debug_draw(&ui);
|
||||||
use imgui::*;
|
use imgui::*;
|
||||||
let fps = 1.0 / delta_time;
|
let fps = 1.0 / delta_time;
|
||||||
let size = [280.0, 110.0];
|
let size = [250.0, 110.0];
|
||||||
let offset = 20.0;
|
let offset = 20.0;
|
||||||
Window::new(im_str!("EngineInfo"))
|
Window::new(im_str!("EngineInfo"))
|
||||||
.size(size, Condition::Always)
|
.size(size, Condition::Always)
|
||||||
|
|
@ -80,7 +80,7 @@ impl Engine {
|
||||||
.no_inputs()
|
.no_inputs()
|
||||||
.save_settings(false)
|
.save_settings(false)
|
||||||
.build(&ui, || {
|
.build(&ui, || {
|
||||||
ui.text(im_str!("Hello Rust!"));
|
ui.text("Welcome in doppler world!");
|
||||||
ui.text(format!("FPS: {:.0}", fps));
|
ui.text(format!("FPS: {:.0}", fps));
|
||||||
ui.separator();
|
ui.separator();
|
||||||
ui.text(format!("Mouse position: ({:4.1},{:4.1})", last_x, last_y));
|
ui.text(format!("Mouse position: ({:4.1},{:4.1})", last_x, last_y));
|
||||||
|
|
|
||||||
|
|
@ -108,11 +108,7 @@ impl Model {
|
||||||
let texture = self.load_material_texture(&diffuse_path.unwrap(), "texture_diffuse");
|
let texture = self.load_material_texture(&diffuse_path.unwrap(), "texture_diffuse");
|
||||||
textures.push(texture);
|
textures.push(texture);
|
||||||
} else {
|
} else {
|
||||||
println!(
|
println!("There are no materials for: {}", path.display());
|
||||||
"There are no materials with id {} for: {}",
|
|
||||||
mesh.material_id.unwrap_or(404usize),
|
|
||||||
path.display()
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
self.meshes.push(Mesh::new(vertices, indices, textures));
|
self.meshes.push(Mesh::new(vertices, indices, textures));
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue