diff --git a/lib/src/bvh.rs b/lib/src/bvh.rs index 14a0ec9..7d8cc54 100644 --- a/lib/src/bvh.rs +++ b/lib/src/bvh.rs @@ -40,6 +40,7 @@ impl Bvh{ let len=index-last_index; let count=len.div_ceil(MAX_SLICE_LEN); let slice_len=MAX_SLICE_LEN; + println!("push_slices index={index} len={len} count={count} slice_len={slice_len}"); bvh_nodes.reserve(count); // 0123456789 // split into groups of MAX_SLICE_LEN=4 @@ -53,6 +54,7 @@ impl Bvh{ let event=&output_events[slice.end]; aabb.grow(vec3::try_from_f32_array([event.event.position.x,event.event.position.y,event.event.position.z]).unwrap()); } + println!("EventSlice slice={slice:?} {}",if inclusive{"inclusive"}else{"exclusive"}); bvh_nodes.push((EventSlice{slice,inclusive},aabb)); }; // push fixed-size groups @@ -87,6 +89,7 @@ impl Bvh{ (start_point-p).length_squared() }).min()?; let mut prev_event=&output_events[event_slice.slice.start]; + let start_time=bot.playback_time(crate::time::from_float(prev_event.time).unwrap()); let mut f=|event:&'a v0::Timed|{ let p0=vec3::try_from_f32_array([prev_event.event.position.x,prev_event.event.position.y,prev_event.event.position.z]).unwrap(); let p1=vec3::try_from_f32_array([event.event.position.x,event.event.position.y,event.event.position.z]).unwrap(); @@ -111,7 +114,10 @@ impl Bvh{ } if event_slice.inclusive{ f(&output_events[event_slice.slice.end]); + }else{ } + let end_time=bot.playback_time(crate::time::from_float(prev_event.time).unwrap()); + println!("intersect_leaf {:?} {} start_time={} end_time={}",event_slice.slice,if event_slice.inclusive{"inclusive"}else{"exclusive"},start_time,end_time); Some(best_distance) }; let intersect_aabb=|aabb:&Aabb|{