[3.x] Improved logic for KinematicBody collision recovery depth #53451
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Partial backport of #52953 to fix the same issues in 3.x, without the changes specific to the new CharacterBody node.
The main change is to make collision detection more flexible with different safe margin values.
Kinematic body motion changes in 2D and 3D physics servers:
-Recovery only for depth > min contact depth to help with collision detection consistency (rest info could be lost if recovery was more than min contact depth, which is the threshold for detecting rest info)
-Adaptive min contact depth based on margin, instead of physics space parameter (this is following up from #45259 (comment))
Tested in multiple use cases, no regression found in usual test cases from physics test projects and previous issues.
(similar regression tests as in #52953, but using 3.x projects)
Fixes #36432
Fixes #45259 (now still works when setting a lower safe margin in 2D)
Fixes #50287