surf test was wrong

This commit is contained in:
Quaternions 2023-11-08 16:45:43 -08:00
parent 2d14e8ac8e
commit 4456ee29ec
2 changed files with 4 additions and 4 deletions

View File

@ -653,10 +653,10 @@ impl Planar64Vec3{
)) ))
} }
#[inline] #[inline]
pub fn slope_cmp(&self,slope:Planar64,up:Self)->bool{ pub fn walkable(&self,slope:Planar64,up:Self)->bool{
let y=self.dot(up); let y=self.dot(up);
let x=self.cross(up).length(); let x=self.cross(up).length();
y<x*slope x*slope<y
} }
#[inline] #[inline]
pub fn length(&self)->Planar64{ pub fn length(&self)->Planar64{

View File

@ -823,7 +823,7 @@ impl TouchingState{
self.constrain_acceleration(models,&mut acceleration); self.constrain_acceleration(models,&mut acceleration);
a=acceleration; a=acceleration;
}, },
None=>if style.surf_slope.map_or(true,|s|normal.slope_cmp(s,Planar64Vec3::Y)){ None=>if style.surf_slope.map_or(true,|s|normal.walkable(s,Planar64Vec3::Y)){
//check ground //check ground
let mut target_velocity=style.get_walk_target_velocity(camera,controls,next_mouse,time); let mut target_velocity=style.get_walk_target_velocity(camera,controls,next_mouse,time);
self.constrain_velocity(models,&mut target_velocity); self.constrain_velocity(models,&mut target_velocity);
@ -1343,7 +1343,7 @@ impl crate::instruction::InstructionConsumer<PhysicsInstruction> for PhysicsStat
self.move_state=MoveState::Ladder(walk_state); self.move_state=MoveState::Ladder(walk_state);
set_acceleration(&mut self.body,&mut self.touching,&self.models,a); set_acceleration(&mut self.body,&mut self.touching,&self.models,a);
} }
None=>if self.style.surf_slope.map_or(true,|s|self.models.mesh(model_id).face_nd(contact.face_id).0.slope_cmp(s,Planar64Vec3::Y)){ None=>if self.style.surf_slope.map_or(true,|s|self.models.mesh(model_id).face_nd(contact.face_id).0.walkable(s,Planar64Vec3::Y)){
//ground //ground
let gravity=self.touching.base_acceleration(&self.models,&self.style,&self.camera,self.controls,&self.next_mouse,self.time); let gravity=self.touching.base_acceleration(&self.models,&self.style,&self.camera,self.controls,&self.next_mouse,self.time);
let mut target_velocity=self.style.get_walk_target_velocity(&self.camera,self.controls,&self.next_mouse,self.time); let mut target_velocity=self.style.get_walk_target_velocity(&self.camera,self.controls,&self.next_mouse,self.time);