Fix GlobalTransform
updates for entities with non-physics children
#392
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.
Objective
#380 significantly sped up transform propagation by reducing unnecessary work with physics entity ancestor markers. However, it also seems to have caused a severe bug:
GlobalTransform
is not updated for rigid bodies that have children that all are not physics entities.The problem lies in
propagate_transforms_physics
, which only iterates through entities that are marked as ancestors of rigid bodies or colliders. Rigid bodies that have children but no physics entity descendants are just skipped.Solution
In
sync_simple_transforms_physics
, don't only iterate through rigid bodies with no children, but also through rigid bodies that have children but are not ancestors of other physics entities.