diff --git a/src/BitmapSkin.js b/src/BitmapSkin.js index 3279756..0deb8af 100644 --- a/src/BitmapSkin.js +++ b/src/BitmapSkin.js @@ -55,9 +55,10 @@ class BitmapSkin extends Skin { * Set the contents of this skin to a snapshot of the provided bitmap data. * @param {ImageData|HTMLImageElement|HTMLCanvasElement|HTMLVideoElement} bitmapData - new contents for this skin. * @param {int} [costumeResolution=1] - The resolution to use for this bitmap. - * @param {bool} [calculateRotationCenter=false] - Set the rotation center to the bitmap center + * @param {number[]=} rotationCenter - Optional rotation center for the bitmap. If not supplied, it will be + * calculated from the bounding box */ - setBitmap (bitmapData, costumeResolution, calculateRotationCenter) { + setBitmap (bitmapData, costumeResolution, rotationCenter) { const gl = this._renderer.gl; if (this._texture) { @@ -79,7 +80,8 @@ class BitmapSkin extends Skin { this._costumeResolution = costumeResolution || 1; this._textureSize = BitmapSkin._getBitmapSize(bitmapData); - if (calculateRotationCenter) this.setRotationCenter.apply(this, this.calculateRotationCenter()); + if (typeof rotationCenter === 'undefined') rotationCenter = this.calculateRotationCenter(); + this.setRotationCenter.apply(this, rotationCenter); this.emit(Skin.Events.WasAltered); } diff --git a/src/RenderWebGL.js b/src/RenderWebGL.js index bc38295..36db209 100644 --- a/src/RenderWebGL.js +++ b/src/RenderWebGL.js @@ -140,11 +140,12 @@ class RenderWebGL { * Use `createBitmapSkin` or `createSVGSkin` instead. * @param {!string} skinUrl The URL of the skin. * @param {!int} [costumeResolution] Optional: resolution for the skin. Ignored unless creating a new Bitmap skin. - * @param {!boolean} [calculateRotationCenter] Optional: set the rotation center of the skin to the box center + * @param {number[]=} rotationCenter Optional: rotation center of the skin. If not supplied, the center of the skin + * will be used. * @returns {!int} The ID of the Skin. * @deprecated */ - createSkinFromURL (skinUrl, costumeResolution, calculateRotationCenter) { + createSkinFromURL (skinUrl, costumeResolution, rotationCenter) { if (this._skinUrlMap.hasOwnProperty(skinUrl)) { const existingId = this._skinUrlMap[skinUrl]; @@ -180,7 +181,7 @@ class RenderWebGL { url: skinUrl }, (err, response, body) => { if (!err) { - newSkin.setSVG(body, calculateRotationCenter); + newSkin.setSVG(body, rotationCenter); } }); } else { @@ -188,7 +189,7 @@ class RenderWebGL { const img = new Image(); img.crossOrigin = 'anonymous'; img.onload = () => { - newSkin.setBitmap(img, costumeResolution, calculateRotationCenter); + newSkin.setBitmap(img, costumeResolution, rotationCenter); }; img.src = skinUrl; } @@ -679,13 +680,8 @@ class RenderWebGL { } // TODO: remove this after fully deprecating URL-based skin paths if ('skin' in properties) { - const {skin, costumeResolution} = properties; - const skinId = this.createSkinFromURL( - skin, - costumeResolution, - // If no rotationCenter, calculate one - !('rotationCenter' in properties) - ); + const {skin, costumeResolution, rotationCenter} = properties; + const skinId = this.createSkinFromURL(skin, costumeResolution, rotationCenter); drawable.skin = this._allSkins[skinId]; } if ('skinId' in properties) { diff --git a/src/SVGSkin.js b/src/SVGSkin.js index 8272c36..3ef4cd6 100644 --- a/src/SVGSkin.js +++ b/src/SVGSkin.js @@ -53,9 +53,10 @@ class SVGSkin extends Skin { /** * Set the contents of this skin to a snapshot of the provided SVG data. * @param {string} svgData - new SVG to use. - * @param {bool} [calculateRotationCenter=false] set the rotation center to the SVG center + * @param {number[]=} rotationCenter - Optional rotation center for the SVG. If not supplied, it will be + * calculated from the bounding box */ - setSVG (svgData, calculateRotationCenter) { + setSVG (svgData, rotationCenter) { this._svgRenderer.fromString(svgData, () => { const gl = this._renderer.gl; if (this._texture) { @@ -72,7 +73,8 @@ class SVGSkin extends Skin { this._texture = twgl.createTexture(gl, textureOptions); } - if (calculateRotationCenter) this.setRotationCenter.apply(this, this.calculateRotationCenter()); + if (typeof rotationCenter === 'undefined') rotationCenter = this.calculateRotationCenter(); + this.setRotationCenter.apply(this, rotationCenter); this.emit(Skin.Events.WasAltered); }); }