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.
This pull request fixes issue #328 by implementing the following changes:
_integrate_forces
to a StaticBody3D driven by_physics_process
process_priority
to -100 so its physics processing is performed before anything elseThe problem with the old implementation is that
_integrate_forces
is not actually performed in the physics processing phase, and so ignores any priority rules. This means that we cannot enforce the body to move first, and then ensure the poke updates in the same frame with the updated body.Unfortunately with Godot 4 removing KinematicBody, and CharacterBody3D being too tied to character movement; the move_and_slide functionality had to be implemented in gdscript.
This implementation uses StaticBody3D rather than directly using the PhysicsDirectSpaceState3D/PhysicsServer3D because only PhysicsBody3D objects get the logic to "de-collide" objects in C++, and implementing the loops in gdscript would be crippling.