fix bvh iter

This commit is contained in:
Quaternions 2025-02-20 13:57:19 -08:00
parent 28ffc82ac0
commit 99301bb990

@ -154,7 +154,12 @@ impl<L> BvhNode<L>{
F:Fn(&L,&Ray)->Option<T>, F:Fn(&L,&Ray)->Option<T>,
{ {
match &self.content{ match &self.content{
RecursiveContent::Leaf(leaf)=>collector.collect(f(leaf,ray).map(|time|TimedInstruction{time:time.into(),instruction:leaf})), RecursiveContent::Leaf(leaf)=>if let Some(time)=f(leaf,ray){
let ins=TimedInstruction{time:time.into(),instruction:leaf};
if start_time.lt_ratio(ins.time)&&ins.time.lt_ratio(collector.time()){
collector.collect(Some(ins));
}
},
RecursiveContent::Branch(children)=>for child in children{ RecursiveContent::Branch(children)=>for child in children{
if child.aabb.contains(ray.origin){ if child.aabb.contains(ray.origin){
child.populate_nodes(collector,nodes,ray,start_time,f); child.populate_nodes(collector,nodes,ray,start_time,f);
@ -197,7 +202,12 @@ impl<L> BvhNode<L>{
break; break;
} }
match &node.content{ match &node.content{
RecursiveContent::Leaf(leaf)=>collector.collect(f(leaf,ray).map(|time|TimedInstruction{time:time.into(),instruction:leaf})), RecursiveContent::Leaf(leaf)=>if let Some(time)=f(leaf,ray){
let ins=TimedInstruction{time:time.into(),instruction:leaf};
if start_time.lt_ratio(ins.time)&&ins.time.lt_ratio(collector.time()){
collector.collect(Some(ins));
}
},
// break open the node and predict collisions with the child nodes // break open the node and predict collisions with the child nodes
RecursiveContent::Branch(children)=>for child in children{ RecursiveContent::Branch(children)=>for child in children{
// Am I an upcoming superstar? // Am I an upcoming superstar?