Fix fruit positions getting mangled when exploded from the plate #29403
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.
Fixes #29319
This is an incorrect use of
DrawablePool<>
.We have two caught fruit
[ a, b ]
and they're released back to the pool. Almost immediately afterwards they're re-retrieved from the pool as now[ b, a ]
respectively becauseDrawablePool
internally is aStack<>
. This means theDrawPosition
would get mangled by the time the second hitobject is supposed to "copy" its position from the original object.In-fact, for this particular test, the second object will always have x-position=0 if this occurs, which is why the assertion works.
The effects of this are actually larger than the issue makes it sound, as it affects all objects in the plate. It's why the objects look like they're collapsing towards the centre:
2024-08-13.18-39-03.mp4
Compared to after this fix:
2024-08-13.18-41-34.mp4