Change traversal to keep exact zero distance hits #3

Merged
Quaternions merged 1 commits from D3V-X3N0/roblox-bot-player:xeno-debug into master 2026-03-17 20:44:51 +00:00

View File

@@ -119,7 +119,8 @@ impl Bvh{
let clamped_point=start_point.min(aabb.max()).max(aabb.min());
Some((start_point-clamped_point).length_squared())
};
let (_,event_slice)=self.bvh.traverse(start_point,Fixed::ZERO,Fixed::MAX,intersect_leaf,intersect_aabb)?;
// traverse uses strict `start_time < t`, so use NEG_EPSILON to keep exact-zero-distance hits.
let (_,event_slice)=self.bvh.traverse(start_point,Fixed::NEG_EPSILON,Fixed::MAX,intersect_leaf,intersect_aabb)?;
// find time at the closest point
let (best_time,mut best_distance)=output_events[event_slice.slice.start..event_slice.slice.end].iter().map(|event|{