mess with gui
This commit is contained in:
+23
-11
@@ -72,7 +72,7 @@ impl Default for GState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn draw_position(ui: &mut Ui, position: &mut Position) {
|
fn draw_position(ui: &mut Ui, position: &mut Position) {
|
||||||
ui.heading("Position");
|
ui.collapsing("Position", |ui| {
|
||||||
ui.add(egui::Slider::new(&mut position.pos.x, -100.0..=100.0).text("Position.x"));
|
ui.add(egui::Slider::new(&mut position.pos.x, -100.0..=100.0).text("Position.x"));
|
||||||
ui.add(egui::Slider::new(&mut position.pos.y, -100.0..=100.0).text("Position.y"));
|
ui.add(egui::Slider::new(&mut position.pos.y, -100.0..=100.0).text("Position.y"));
|
||||||
ui.add(egui::Slider::new(&mut position.pos.z, -100.0..=100.0).text("Position.z"));
|
ui.add(egui::Slider::new(&mut position.pos.z, -100.0..=100.0).text("Position.z"));
|
||||||
@@ -82,10 +82,11 @@ fn draw_position(ui: &mut Ui, position: &mut Position) {
|
|||||||
ui.add(egui::Slider::new(&mut position.scale.x, 0.0..=2.0).text("Scale.x"));
|
ui.add(egui::Slider::new(&mut position.scale.x, 0.0..=2.0).text("Scale.x"));
|
||||||
ui.add(egui::Slider::new(&mut position.scale.y, 0.0..=2.0).text("Scale.y"));
|
ui.add(egui::Slider::new(&mut position.scale.y, 0.0..=2.0).text("Scale.y"));
|
||||||
ui.add(egui::Slider::new(&mut position.scale.z, 0.0..=2.0).text("Scale.z"));
|
ui.add(egui::Slider::new(&mut position.scale.z, 0.0..=2.0).text("Scale.z"));
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
fn draw_material(ui: &mut Ui, material: &mut Material) {
|
fn draw_material(ui: &mut Ui, material: &mut Material) {
|
||||||
ui.heading("Material");
|
ui.collapsing("Material", |ui| {
|
||||||
ui.add(egui::Slider::new(&mut material.colour.x, 0.0..=1.0).text("Colour.r"));
|
ui.add(egui::Slider::new(&mut material.colour.x, 0.0..=1.0).text("Colour.r"));
|
||||||
ui.add(egui::Slider::new(&mut material.colour.y, 0.0..=1.0).text("Colour.g"));
|
ui.add(egui::Slider::new(&mut material.colour.y, 0.0..=1.0).text("Colour.g"));
|
||||||
ui.add(egui::Slider::new(&mut material.colour.z, 0.0..=1.0).text("Colour.b"));
|
ui.add(egui::Slider::new(&mut material.colour.z, 0.0..=1.0).text("Colour.b"));
|
||||||
@@ -97,7 +98,10 @@ fn draw_material(ui: &mut Ui, material: &mut Material) {
|
|||||||
ui.add(egui::Slider::new(&mut material.sheen, 0.0..=1.0).text("Sheen"));
|
ui.add(egui::Slider::new(&mut material.sheen, 0.0..=1.0).text("Sheen"));
|
||||||
ui.add(egui::Slider::new(&mut material.sheen_tint, 0.0..=1.0).text("Sheen tint"));
|
ui.add(egui::Slider::new(&mut material.sheen_tint, 0.0..=1.0).text("Sheen tint"));
|
||||||
ui.add(egui::Slider::new(&mut material.clear_coat, 0.0..=1.0).text("Clear Coat"));
|
ui.add(egui::Slider::new(&mut material.clear_coat, 0.0..=1.0).text("Clear Coat"));
|
||||||
ui.add(egui::Slider::new(&mut material.clear_coat_gloss, 0.0..=1.0).text("Clear Coat Gloss"));
|
ui.add(
|
||||||
|
egui::Slider::new(&mut material.clear_coat_gloss, 0.0..=1.0).text("Clear Coat Gloss"),
|
||||||
|
);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn gui_up(gui: &mut Gui, state: &mut GState) {
|
pub(crate) fn gui_up(gui: &mut Gui, state: &mut GState) {
|
||||||
@@ -127,12 +131,13 @@ pub(crate) fn gui_up(gui: &mut Gui, state: &mut GState) {
|
|||||||
ui.heading(format!("Meshes ({})", meshes_len));
|
ui.heading(format!("Meshes ({})", meshes_len));
|
||||||
let mut meshdel = vec![];
|
let mut meshdel = vec![];
|
||||||
for mesh in &mut state.meshes {
|
for mesh in &mut state.meshes {
|
||||||
ui.label(mesh.name.clone());
|
ui.collapsing(mesh.name.clone(), |ui| {
|
||||||
if meshes_len > 1 || csg_len > 0 {
|
if meshes_len > 1 || csg_len > 0 {
|
||||||
meshdel.push(ui.small_button("remove mesh").clicked());
|
meshdel.push(ui.small_button("remove mesh").clicked());
|
||||||
}
|
}
|
||||||
draw_position(ui, &mut mesh.position);
|
draw_position(ui, &mut mesh.position);
|
||||||
draw_material(ui, &mut mesh.material);
|
draw_material(ui, &mut mesh.material);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
for i in meshdel
|
for i in meshdel
|
||||||
.into_iter()
|
.into_iter()
|
||||||
@@ -145,7 +150,7 @@ pub(crate) fn gui_up(gui: &mut Gui, state: &mut GState) {
|
|||||||
let mut csgdel = vec![];
|
let mut csgdel = vec![];
|
||||||
for csg in &mut state.csg {
|
for csg in &mut state.csg {
|
||||||
let mut csg = csg.write().unwrap();
|
let mut csg = csg.write().unwrap();
|
||||||
ui.label(csg.name.clone());
|
ui.collapsing(csg.name.clone(), |ui| {
|
||||||
if meshes_len > 0 || csg_len > 1 {
|
if meshes_len > 0 || csg_len > 1 {
|
||||||
csgdel.push(ui.small_button("remove csg").clicked());
|
csgdel.push(ui.small_button("remove csg").clicked());
|
||||||
}
|
}
|
||||||
@@ -153,7 +158,9 @@ pub(crate) fn gui_up(gui: &mut Gui, state: &mut GState) {
|
|||||||
draw_material(ui, &mut csg.material);
|
draw_material(ui, &mut csg.material);
|
||||||
ui.horizontal(|ui| {
|
ui.horizontal(|ui| {
|
||||||
ui.label("Subdivision");
|
ui.label("Subdivision");
|
||||||
for x in MINUMUM_SUBDIVISION.ilog2()..=MAXIMUM_SUBDIVISION.ilog2() {
|
for x in
|
||||||
|
MINUMUM_SUBDIVISION.ilog2()..=MAXIMUM_SUBDIVISION.ilog2()
|
||||||
|
{
|
||||||
let subdivision = 1 << x;
|
let subdivision = 1 << x;
|
||||||
ui.selectable_value(
|
ui.selectable_value(
|
||||||
&mut csg.subdivision,
|
&mut csg.subdivision,
|
||||||
@@ -162,6 +169,7 @@ pub(crate) fn gui_up(gui: &mut Gui, state: &mut GState) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
for i in csgdel
|
for i in csgdel
|
||||||
.into_iter()
|
.into_iter()
|
||||||
@@ -178,8 +186,8 @@ pub(crate) fn gui_up(gui: &mut Gui, state: &mut GState) {
|
|||||||
}
|
}
|
||||||
ui.heading(format!("Lights ({})", state.lights.len()));
|
ui.heading(format!("Lights ({})", state.lights.len()));
|
||||||
let mut lightdel = vec![];
|
let mut lightdel = vec![];
|
||||||
for light in &mut state.lights {
|
for (i, light) in state.lights.iter_mut().enumerate() {
|
||||||
ui.label("Light");
|
ui.collapsing(format!("Light {i}"), |ui| {
|
||||||
lightdel.push(ui.small_button("remove light").clicked());
|
lightdel.push(ui.small_button("remove light").clicked());
|
||||||
ui.add(
|
ui.add(
|
||||||
egui::Slider::new(&mut light.pos.x, -100.0..=100.0)
|
egui::Slider::new(&mut light.pos.x, -100.0..=100.0)
|
||||||
@@ -194,14 +202,18 @@ pub(crate) fn gui_up(gui: &mut Gui, state: &mut GState) {
|
|||||||
.text("Position.z"),
|
.text("Position.z"),
|
||||||
);
|
);
|
||||||
ui.add(
|
ui.add(
|
||||||
egui::Slider::new(&mut light.colour.x, 0.0..=1.0).text("Colour.r"),
|
egui::Slider::new(&mut light.colour.x, 0.0..=1.0)
|
||||||
|
.text("Colour.r"),
|
||||||
);
|
);
|
||||||
ui.add(
|
ui.add(
|
||||||
egui::Slider::new(&mut light.colour.y, 0.0..=1.0).text("Colour.g"),
|
egui::Slider::new(&mut light.colour.y, 0.0..=1.0)
|
||||||
|
.text("Colour.g"),
|
||||||
);
|
);
|
||||||
ui.add(
|
ui.add(
|
||||||
egui::Slider::new(&mut light.colour.z, 0.0..=1.0).text("Colour.b"),
|
egui::Slider::new(&mut light.colour.z, 0.0..=1.0)
|
||||||
|
.text("Colour.b"),
|
||||||
);
|
);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
for i in lightdel
|
for i in lightdel
|
||||||
.into_iter()
|
.into_iter()
|
||||||
|
|||||||
@@ -134,7 +134,16 @@ pub(crate) fn load_obj(
|
|||||||
// index Uses the hash map to check that we're not duplicating unnecessarily
|
// index Uses the hash map to check that we're not duplicating unnecessarily
|
||||||
for g in &object.objects[0].groups {
|
for g in &object.objects[0].groups {
|
||||||
for p in &g.polys {
|
for p in &g.polys {
|
||||||
for v in &p.0 {
|
if p.0.len() < 3 {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
let mut verts = vec![];
|
||||||
|
for i in 2..p.0.len() {
|
||||||
|
verts.push(p.0[0]);
|
||||||
|
verts.push(p.0[i - 1]);
|
||||||
|
verts.push(p.0[i]);
|
||||||
|
}
|
||||||
|
for v in &verts {
|
||||||
//trace!("{:?}", v);
|
//trace!("{:?}", v);
|
||||||
let mapping = ((v.0) as u32, (v.2.unwrap_or(0)) as u32);
|
let mapping = ((v.0) as u32, (v.2.unwrap_or(0)) as u32);
|
||||||
if let Some(&exist) = temp_hash_map.get(&mapping) {
|
if let Some(&exist) = temp_hash_map.get(&mapping) {
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ use std::{
|
|||||||
};
|
};
|
||||||
|
|
||||||
use foldhash::{HashMap, HashMapExt};
|
use foldhash::{HashMap, HashMapExt};
|
||||||
use glam::{EulerRot, Mat4, Vec3};
|
use glam::Vec3;
|
||||||
use log::info;
|
use log::info;
|
||||||
use rand::{Rng, SeedableRng, rngs::SmallRng};
|
use rand::{Rng, SeedableRng, rngs::SmallRng};
|
||||||
use rspirv::{binary::Assemble, dr::Module};
|
use rspirv::{binary::Assemble, dr::Module};
|
||||||
@@ -139,7 +139,7 @@ pub fn thread_loop(recv: mpmc::Receiver<WorkItem>, send: mpsc::SyncSender<WorkCo
|
|||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
let csg = Arc::new(RwLock::new(CSG {
|
let csg = Arc::new(RwLock::new(CSG {
|
||||||
name: "example".to_string(),
|
name: format!("example {}", rand::random::<u8>()),
|
||||||
_seed: seed,
|
_seed: seed,
|
||||||
parts,
|
parts,
|
||||||
position: Default::default(),
|
position: Default::default(),
|
||||||
|
|||||||
Reference in New Issue
Block a user