ngx-spine
Version:
[](https://travis-ci.org/PoiScript/ngx-spine)
110 lines • 9.89 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/******************************************************************************
* Spine Runtimes License Agreement
* Last updated May 1, 2019. Replaces all prior versions.
*
* Copyright (c) 2013-2019, Esoteric Software LLC
*
* Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license
*
* Otherwise, it is permitted to integrate the Spine Runtimes into software
* or otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice.
*
* THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY EXPRESS
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
* NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS
* INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/
import { PowOut, MathUtils } from "../Utils";
export class SwirlEffect {
/**
* @param {?} radius
*/
constructor(radius) {
this.centerX = 0;
this.centerY = 0;
this.radius = 0;
this.angle = 0;
this.worldX = 0;
this.worldY = 0;
this.radius = radius;
}
/**
* @param {?} skeleton
* @return {?}
*/
begin(skeleton) {
this.worldX = skeleton.x + this.centerX;
this.worldY = skeleton.y + this.centerY;
}
/**
* @param {?} position
* @param {?} uv
* @param {?} light
* @param {?} dark
* @return {?}
*/
transform(position, uv, light, dark) {
/** @type {?} */
let radAngle = this.angle * MathUtils.degreesToRadians;
/** @type {?} */
let x = position.x - this.worldX;
/** @type {?} */
let y = position.y - this.worldY;
/** @type {?} */
let dist = Math.sqrt(x * x + y * y);
if (dist < this.radius) {
/** @type {?} */
let theta = SwirlEffect.interpolation.apply(0, radAngle, (this.radius - dist) / this.radius);
/** @type {?} */
let cos = Math.cos(theta);
/** @type {?} */
let sin = Math.sin(theta);
position.x = cos * x - sin * y + this.worldX;
position.y = sin * x + cos * y + this.worldY;
}
}
/**
* @return {?}
*/
end() { }
}
SwirlEffect.interpolation = new PowOut(2);
if (false) {
/** @type {?} */
SwirlEffect.interpolation;
/** @type {?} */
SwirlEffect.prototype.centerX;
/** @type {?} */
SwirlEffect.prototype.centerY;
/** @type {?} */
SwirlEffect.prototype.radius;
/** @type {?} */
SwirlEffect.prototype.angle;
/**
* @type {?}
* @private
*/
SwirlEffect.prototype.worldX;
/**
* @type {?}
* @private
*/
SwirlEffect.prototype.worldY;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3dpcmxFZmZlY3QuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtc3BpbmUvIiwic291cmNlcyI6WyJsaWIvc3BpbmUtdHMvY29yZS92ZXJ0ZXhlZmZlY3RzL1N3aXJsRWZmZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNEJBLE9BQU8sRUFBRSxNQUFNLEVBQVcsU0FBUyxFQUFTLE1BQU0sVUFBVSxDQUFDO0FBSTdELE1BQU0sT0FBTyxXQUFXOzs7O0lBU3RCLFlBQVksTUFBYztRQVAxQixZQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ1osWUFBTyxHQUFHLENBQUMsQ0FBQztRQUNaLFdBQU0sR0FBRyxDQUFDLENBQUM7UUFDWCxVQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ0YsV0FBTSxHQUFHLENBQUMsQ0FBQztRQUNYLFdBQU0sR0FBRyxDQUFDLENBQUM7UUFHakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQzs7Ozs7SUFFRCxLQUFLLENBQUMsUUFBa0I7UUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDeEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDMUMsQ0FBQzs7Ozs7Ozs7SUFFRCxTQUFTLENBQUMsUUFBaUIsRUFBRSxFQUFXLEVBQUUsS0FBWSxFQUFFLElBQVc7O1lBQzdELFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxnQkFBZ0I7O1lBQ2xELENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNOztZQUM1QixDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTTs7WUFDNUIsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUU7O2dCQUNsQixLQUFLLEdBQUcsV0FBVyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQ3pDLENBQUMsRUFDRCxRQUFRLEVBQ1IsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQ25DOztnQkFDRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7O2dCQUNyQixHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7WUFDekIsUUFBUSxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUM3QyxRQUFRLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1NBQzlDO0lBQ0gsQ0FBQzs7OztJQUVELEdBQUcsS0FBVSxDQUFDOztBQW5DUCx5QkFBYSxHQUFHLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDOzs7SUFBckMsMEJBQXFDOztJQUNyQyw4QkFBWTs7SUFDWiw4QkFBWTs7SUFDWiw2QkFBVzs7SUFDWCw0QkFBVTs7Ozs7SUFDViw2QkFBbUI7Ozs7O0lBQ25CLDZCQUFtQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XG4gKiBMYXN0IHVwZGF0ZWQgTWF5IDEsIDIwMTkuIFJlcGxhY2VzIGFsbCBwcmlvciB2ZXJzaW9ucy5cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtMjAxOSwgRXNvdGVyaWMgU29mdHdhcmUgTExDXG4gKlxuICogSW50ZWdyYXRpb24gb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmUgb3Igb3RoZXJ3aXNlIGNyZWF0aW5nXG4gKiBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpcyBwZXJtaXR0ZWQgdW5kZXIgdGhlIHRlcm1zIGFuZFxuICogY29uZGl0aW9ucyBvZiBTZWN0aW9uIDIgb2YgdGhlIFNwaW5lIEVkaXRvciBMaWNlbnNlIEFncmVlbWVudDpcbiAqIGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1lZGl0b3ItbGljZW5zZVxuICpcbiAqIE90aGVyd2lzZSwgaXQgaXMgcGVybWl0dGVkIHRvIGludGVncmF0ZSB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZVxuICogb3Igb3RoZXJ3aXNlIGNyZWF0ZSBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyAoY29sbGVjdGl2ZWx5LFxuICogXCJQcm9kdWN0c1wiKSwgcHJvdmlkZWQgdGhhdCBlYWNoIHVzZXIgb2YgdGhlIFByb2R1Y3RzIG11c3Qgb2J0YWluIHRoZWlyIG93blxuICogU3BpbmUgRWRpdG9yIGxpY2Vuc2UgYW5kIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9kdWN0cyBpbiBhbnkgZm9ybSBtdXN0XG4gKiBpbmNsdWRlIHRoaXMgbGljZW5zZSBhbmQgY29weXJpZ2h0IG5vdGljZS5cbiAqXG4gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEVTT1RFUklDIFNPRlRXQVJFIExMQyBcIkFTIElTXCIgQU5EIEFOWSBFWFBSRVNTXG4gKiBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTXG4gKiBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTlxuICogTk8gRVZFTlQgU0hBTEwgRVNPVEVSSUMgU09GVFdBUkUgTExDIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsXG4gKiBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLFxuICogQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTLCBCVVNJTkVTU1xuICogSU5URVJSVVBUSU9OLCBPUiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUykgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWVxuICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HXG4gKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsXG4gKiBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuaW1wb3J0IHsgUG93T3V0LCBWZWN0b3IyLCBNYXRoVXRpbHMsIENvbG9yIH0gZnJvbSBcIi4uL1V0aWxzXCI7XG5pbXBvcnQgeyBWZXJ0ZXhFZmZlY3QgfSBmcm9tIFwiLi4vVmVydGV4RWZmZWN0XCI7XG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gXCIuLi9Ta2VsZXRvblwiO1xuXG5leHBvcnQgY2xhc3MgU3dpcmxFZmZlY3QgaW1wbGVtZW50cyBWZXJ0ZXhFZmZlY3Qge1xuICBzdGF0aWMgaW50ZXJwb2xhdGlvbiA9IG5ldyBQb3dPdXQoMik7XG4gIGNlbnRlclggPSAwO1xuICBjZW50ZXJZID0gMDtcbiAgcmFkaXVzID0gMDtcbiAgYW5nbGUgPSAwO1xuICBwcml2YXRlIHdvcmxkWCA9IDA7XG4gIHByaXZhdGUgd29ybGRZID0gMDtcblxuICBjb25zdHJ1Y3RvcihyYWRpdXM6IG51bWJlcikge1xuICAgIHRoaXMucmFkaXVzID0gcmFkaXVzO1xuICB9XG5cbiAgYmVnaW4oc2tlbGV0b246IFNrZWxldG9uKTogdm9pZCB7XG4gICAgdGhpcy53b3JsZFggPSBza2VsZXRvbi54ICsgdGhpcy5jZW50ZXJYO1xuICAgIHRoaXMud29ybGRZID0gc2tlbGV0b24ueSArIHRoaXMuY2VudGVyWTtcbiAgfVxuXG4gIHRyYW5zZm9ybShwb3NpdGlvbjogVmVjdG9yMiwgdXY6IFZlY3RvcjIsIGxpZ2h0OiBDb2xvciwgZGFyazogQ29sb3IpOiB2b2lkIHtcbiAgICBsZXQgcmFkQW5nbGUgPSB0aGlzLmFuZ2xlICogTWF0aFV0aWxzLmRlZ3JlZXNUb1JhZGlhbnM7XG4gICAgbGV0IHggPSBwb3NpdGlvbi54IC0gdGhpcy53b3JsZFg7XG4gICAgbGV0IHkgPSBwb3NpdGlvbi55IC0gdGhpcy53b3JsZFk7XG4gICAgbGV0IGRpc3QgPSBNYXRoLnNxcnQoeCAqIHggKyB5ICogeSk7XG4gICAgaWYgKGRpc3QgPCB0aGlzLnJhZGl1cykge1xuICAgICAgbGV0IHRoZXRhID0gU3dpcmxFZmZlY3QuaW50ZXJwb2xhdGlvbi5hcHBseShcbiAgICAgICAgMCxcbiAgICAgICAgcmFkQW5nbGUsXG4gICAgICAgICh0aGlzLnJhZGl1cyAtIGRpc3QpIC8gdGhpcy5yYWRpdXNcbiAgICAgICk7XG4gICAgICBsZXQgY29zID0gTWF0aC5jb3ModGhldGEpO1xuICAgICAgbGV0IHNpbiA9IE1hdGguc2luKHRoZXRhKTtcbiAgICAgIHBvc2l0aW9uLnggPSBjb3MgKiB4IC0gc2luICogeSArIHRoaXMud29ybGRYO1xuICAgICAgcG9zaXRpb24ueSA9IHNpbiAqIHggKyBjb3MgKiB5ICsgdGhpcy53b3JsZFk7XG4gICAgfVxuICB9XG5cbiAgZW5kKCk6IHZvaWQge31cbn1cbiJdfQ==