diff --git a/engine/physics/src/face_crawler.rs b/engine/physics/src/face_crawler.rs index 8b95f43..216ced0 100644 --- a/engine/physics/src/face_crawler.rs +++ b/engine/physics/src/face_crawler.rs @@ -34,11 +34,12 @@ impl<F:Copy,M:MeshQuery<Normal=Vector3<F>,Offset=Fixed<4,128>>+std::fmt::Debug> M::Face:Copy, M::Edge:Copy, M::Vert:Copy, - F:core::ops::Mul<Fixed<1,32>,Output=Fixed<4,128>>, + F:core::ops::Mul<Fixed<1,32>,Output=Fixed<4,128>>+std::fmt::Debug+std::fmt::Display, <F as core::ops::Mul<Fixed<1,32>>>::Output:core::iter::Sum, <M as MeshQuery>::Offset:core::ops::Sub<<F as std::ops::Mul<Fixed<1,32>>>::Output>, { fn next_transition(&self,body_time:GigaTime,mesh:&M,body:&Body,mut best_time:GigaTime)->Transition<M>{ + println!("next_transition fev={self:?}"); //conflicting derivative means it crosses in the wrong direction. //if the transition time is equal to an already tested transition, do not replace the current best. let mut best_transition=Transition::Miss; @@ -76,6 +77,7 @@ impl<F:Copy,M:MeshQuery<Normal=Vector3<F>,Offset=Fixed<4,128>>+std::fmt::Debug> //if none: }, &FEV::Edge(edge_id)=>{ + println!("test edge={edge_id:?}"); //test each face collision time, ignoring roots with zero or conflicting derivative let edge_n=mesh.edge_n(edge_id); let edge_verts=mesh.edge_verts(edge_id); @@ -85,6 +87,7 @@ impl<F:Copy,M:MeshQuery<Normal=Vector3<F>,Offset=Fixed<4,128>>+std::fmt::Debug> let face_n=mesh.face_nd(edge_face_id).0; //edge_n gets parity from the order of edge_faces let n=face_n.cross(edge_n)*((i as i64)*2-1); + println!("edge_face={edge_face_id:?} face_n={face_n:?} n={n:?}"); //WARNING yada yada d *2 //wrap for speed for dt in Fixed::<4,128>::zeroes2(n.dot(delta_pos).wrap_4(),n.dot(body.velocity).wrap_4()*2,n.dot(body.acceleration).wrap_4()){