Fix case for bodies which begin as dynamic. #13
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 fixes an issue where the physics system does not properly handle the case where a new body is added that is initially set to DYNAMIC. Dynamic bodies are currently always synced out of the physics engine on every tick, however this means that if a body starts out as dynamic, its initial transform is never written to the physics engine (so it ends up just getting an identity transform in the physics engine.)
To fix this, bodies now explicitly track the first three sync passes in a counter, and if a body is dynamic and its first and second syncs are seen while its dynamic, then the worker waits for the initial transform to be written by the host process, syncs it to physics, and then proceeds as usual.
Also addresses a potential bug where the matrix offset in the buffer was not being used when resetting dynamic objects.