Skip to content

Commit

Permalink
Merge pull request #1038 from paulkaplan/skin-size
Browse files Browse the repository at this point in the history
Attach the costume size to the costume when loaded and modified
  • Loading branch information
paulkaplan committed Apr 11, 2018
2 parents 2478f2f + 89eb1ce commit 64c2d1f
Show file tree
Hide file tree
Showing 5 changed files with 6 additions and 3 deletions.
2 changes: 1 addition & 1 deletion src/blocks/scratch3_looks.js
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ class Scratch3LooksBlocks {
*/
_positionBubble (target) {
const bubbleState = this._getBubbleState(target);
const [bubbleWidth, bubbleHeight] = this.runtime.renderer.getSkinSize(bubbleState.drawableId);
const [bubbleWidth, bubbleHeight] = this.runtime.renderer.getCurrentSkinSize(bubbleState.drawableId);
const targetBounds = target.getBoundsForBubble();
const stageBounds = this.runtime.getTargetForStage().getBounds();
if (bubbleState.onSpriteRight && bubbleWidth + targetBounds.right > stageBounds.right &&
Expand Down
2 changes: 2 additions & 0 deletions src/import/load-costume.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ const loadCostumeFromAsset = function (costume, costumeAsset, runtime) {
];
if (costumeAsset.assetType === AssetType.ImageVector) {
costume.skinId = runtime.renderer.createSVGSkin(costumeAsset.decodeText(), rotationCenter);
costume.size = runtime.renderer.getSkinSize(costume.skinId);
return costume;
}

Expand All @@ -50,6 +51,7 @@ const loadCostumeFromAsset = function (costume, costumeAsset, runtime) {
imageElement.src = costumeAsset.encodeDataURI();
}).then(imageElement => {
costume.skinId = runtime.renderer.createBitmapSkin(imageElement, costume.bitmapResolution, rotationCenter);
costume.size = runtime.renderer.getSkinSize(costume.skinId);
return costume;
});
};
Expand Down
2 changes: 1 addition & 1 deletion src/sprites/rendered-target.js
Original file line number Diff line number Diff line change
Expand Up @@ -355,7 +355,7 @@ class RenderedTarget extends Target {
if (this.renderer) {
// Clamp to scales relative to costume and stage size.
// See original ScratchSprite.as:setSize.
const costumeSize = this.renderer.getSkinSize(this.drawableID);
const costumeSize = this.renderer.getCurrentSkinSize(this.drawableID);
const origW = costumeSize[0];
const origH = costumeSize[1];
const minScale = Math.min(1, Math.max(5 / origW, 5 / origH));
Expand Down
1 change: 1 addition & 0 deletions src/virtual-machine.js
Original file line number Diff line number Diff line change
Expand Up @@ -561,6 +561,7 @@ class VirtualMachine extends EventEmitter {
costume.rotationCenterX = rotationCenterX;
costume.rotationCenterY = rotationCenterY;
this.runtime.renderer.updateSVGSkin(costume.skinId, svg, [rotationCenterX, rotationCenterY]);
costume.size = this.runtime.renderer.getSkinSize(costume.skinId);
}
const storage = this.runtime.storage;
costume.assetId = storage.builtinHelper.cache(
Expand Down
2 changes: 1 addition & 1 deletion test/fixtures/fake-renderer.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ FakeRenderer.prototype.updateDrawableProperties = function (d, p) { // eslint-di
return true;
};

FakeRenderer.prototype.getSkinSize = function (d) { // eslint-disable-line no-unused-vars
FakeRenderer.prototype.getCurrentSkinSize = function (d) { // eslint-disable-line no-unused-vars
return [0, 0];
};

Expand Down

0 comments on commit 64c2d1f

Please sign in to comment.