9cefab24e0
This change makes test_body_motion more reliable when the kinematic body recovers from being stuck. - When recovery occurs, the rest information is generated, in order to make sure collision results from test_move, move_and_collide and move_and_slide are consistent and return a collision in case of overlap. - The new calculation for recovery vector makes sure the recovery is never more than the overlap depth between shapes. This can help with cases where the kinematic body overlaps with several shapes. Recovery is made iteratively, without forcing a full overlap at each step. This helps with getting proper rest information when recovery occurs. - One Way Collision: When attempting motion, contact direction is checked against motion before skipping in order to solve cases where kinematic bodies can sink into one-way collision shapes. Rest info now sets max contact depth in order to properly handle one-way collision. - Low speed motion is now handled in the rest info, by never setting min_allowed_depth lower than motion length. Separation is always applied with full margin, otherwise contact is lost when low speed motion occurs right after higher speed motion. - Similar changes are applied to 3D in order to make 2D and 3D consistent. |
||
---|---|---|
.. | ||
joints | ||
area_pair_sw.cpp | ||
area_pair_sw.h | ||
area_sw.cpp | ||
area_sw.h | ||
body_pair_sw.cpp | ||
body_pair_sw.h | ||
body_sw.cpp | ||
body_sw.h | ||
broad_phase_basic.cpp | ||
broad_phase_basic.h | ||
broad_phase_bvh.cpp | ||
broad_phase_bvh.h | ||
broad_phase_octree.cpp | ||
broad_phase_octree.h | ||
broad_phase_sw.cpp | ||
broad_phase_sw.h | ||
collision_object_sw.cpp | ||
collision_object_sw.h | ||
collision_solver_sat.cpp | ||
collision_solver_sat.h | ||
collision_solver_sw.cpp | ||
collision_solver_sw.h | ||
constraint_sw.h | ||
gjk_epa.cpp | ||
gjk_epa.h | ||
joints_sw.h | ||
physics_server_sw.cpp | ||
physics_server_sw.h | ||
SCsub | ||
shape_sw.cpp | ||
shape_sw.h | ||
space_sw.cpp | ||
space_sw.h | ||
step_sw.cpp | ||
step_sw.h |