Compatibility fix for bitmap position off stage #409
Merged
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.
Resolves
Fixes some of the factors in #403 and depends on #408
Proposed Changes
Add a method for identifying skin type and if the drawable is a bitmap, always use
getAABB
for its bounding box when calculating its fenced position at the edge of the stage.Reason for Changes
In Scratch 2, we used
getRect
to get the aabb, whose implementation seems closer todrawable.getAABB
thandrawable.getBounds
.drawable.getAABB
seems closer because Flash'sgetRect
doesn't take into account any strokes on the shape, anddrawable.getBounds
uses hull points, which would take stroke into account. If the skin is a bitmap, we make sure we always usedrawable.getAABB
instead ofdrawable.getFastBounds
, which might use eitherdrawable.getBounds
ordrawable.getAABB
.All this being said, this fix doesn't work for SVG skins, so we're sticking with our previous tactic for getting the aabb for any non-bitmap skins.
Test Coverage
I updated sprite-goes-off-stage.sb2 to include more bitmap sprite examples to test.