Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix test_body_motion recovery and rest info #46148

Merged
merged 1 commit into from
Feb 18, 2021

Commits on Feb 18, 2021

  1. Fix test_body_motion recovery

    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.
    pouleyKetchoupp committed Feb 18, 2021
    Configuration menu
    Copy the full SHA
    cff7a69 View commit details
    Browse the repository at this point in the history