Clean up debug crap from last commit
This commit is contained in:
parent
5e3fd7885b
commit
4a59fe1e9b
48
src/main.rs
48
src/main.rs
@ -55,25 +55,14 @@ fn test_rule(_v: Vec<Mesh>) -> Vec<RuleStep> {
|
|||||||
// could end up having a lot of identical geometry that need not be
|
// could end up having a lot of identical geometry that need not be
|
||||||
// duplicated until it is transformed into the global space
|
// duplicated until it is transformed into the global space
|
||||||
|
|
||||||
// Bigger TODO: my vague semantics are producing duplicated geometry
|
fn rule_to_mesh(rule: &Rule, iters_left: u32) -> Mesh {
|
||||||
// What is the meaning of an initial 'xform' here?
|
|
||||||
|
|
||||||
use std::convert::TryInto; // DEBUG
|
|
||||||
fn rule_to_mesh_rec(rule: &Rule, iter_num: u32) -> Mesh {
|
|
||||||
|
|
||||||
let max_iters: u32 = 4;
|
|
||||||
let mut mesh = MeshBuilder::new().with_indices(vec![]).with_positions(vec![]).build().unwrap();
|
let mut mesh = MeshBuilder::new().with_indices(vec![]).with_positions(vec![]).build().unwrap();
|
||||||
|
|
||||||
if iter_num >= max_iters {
|
if iters_left <= 0 {
|
||||||
return mesh;
|
return mesh;
|
||||||
}
|
}
|
||||||
|
|
||||||
// DEBUG
|
|
||||||
let s = " ".repeat(iter_num.try_into().unwrap());
|
|
||||||
|
|
||||||
println!("{}rule_to_mesh(iter_num={})", s, iter_num);
|
|
||||||
//print_matrix(&xform);
|
|
||||||
|
|
||||||
match rule {
|
match rule {
|
||||||
Rule::Recurse(func) => {
|
Rule::Recurse(func) => {
|
||||||
for step in func(vec![]) {
|
for step in func(vec![]) {
|
||||||
@ -81,42 +70,20 @@ fn rule_to_mesh_rec(rule: &Rule, iter_num: u32) -> Mesh {
|
|||||||
let subxform: Mat4 = step.xform;
|
let subxform: Mat4 = step.xform;
|
||||||
let geom: Mesh = step.geom;
|
let geom: Mesh = step.geom;
|
||||||
|
|
||||||
println!("{}geom has {} faces, {} verts",
|
|
||||||
s, geom.no_faces(), geom.no_vertices());
|
|
||||||
|
|
||||||
mesh.append(&geom);
|
mesh.append(&geom);
|
||||||
println!("{}post-append(1): mesh has {} faces, {} verts",
|
|
||||||
s, mesh.no_faces(), mesh.no_vertices());
|
|
||||||
|
|
||||||
println!("{}recursing, subxform: ", s);
|
let mut submesh: Mesh = rule_to_mesh(&subrule, iters_left - 1);
|
||||||
print_matrix(&subxform);
|
|
||||||
|
|
||||||
let mut submesh: Mesh = rule_to_mesh_rec(&subrule, iter_num + 1);
|
|
||||||
submesh.apply_transformation(subxform);
|
submesh.apply_transformation(subxform);
|
||||||
|
|
||||||
println!("{}returning", s);
|
|
||||||
|
|
||||||
println!("{}submesh has {} faces, {} verts",
|
|
||||||
s, submesh.no_faces(), submesh.no_vertices());
|
|
||||||
|
|
||||||
mesh.append(&submesh);
|
mesh.append(&submesh);
|
||||||
println!("{}post-append(2): mesh has {} faces, {} verts",
|
|
||||||
s, mesh.no_faces(), mesh.no_vertices());
|
|
||||||
}
|
}
|
||||||
mesh
|
|
||||||
}
|
}
|
||||||
Rule::EmptyRule => {
|
Rule::EmptyRule => {
|
||||||
|
// do nothing
|
||||||
|
}
|
||||||
|
}
|
||||||
mesh
|
mesh
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn rule_to_mesh(rule: &Rule) -> Mesh {
|
|
||||||
// TODO: The 'identity()' here is causing the duplicated geometry
|
|
||||||
// - but I should not have to copy the transform from the rule
|
|
||||||
// here. Clean this up.
|
|
||||||
rule_to_mesh_rec(rule, 0)
|
|
||||||
}
|
|
||||||
|
|
||||||
// This isn't kosher:
|
// This isn't kosher:
|
||||||
//type Rule = fn (Vec<Mesh>) -> (Mesh, Vec<(Mesh, Box<Rule>)>);
|
//type Rule = fn (Vec<Mesh>) -> (Mesh, Vec<(Mesh, Box<Rule>)>);
|
||||||
@ -198,6 +165,7 @@ fn main() {
|
|||||||
|
|
||||||
let r = Rule::Recurse(test_rule);
|
let r = Rule::Recurse(test_rule);
|
||||||
|
|
||||||
let cubemesh: Mesh = rule_to_mesh(&r);
|
let max_iters = 5;
|
||||||
|
let cubemesh: Mesh = rule_to_mesh(&r, max_iters);
|
||||||
std::fs::write("cubemesh.obj", cubemesh.parse_as_obj()).unwrap();
|
std::fs::write("cubemesh.obj", cubemesh.parse_as_obj()).unwrap();
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user