{"version":3,"file":"SwirlEffect.mjs","sources":["../../../src/core/vertexeffects/SwirlEffect.ts"],"sourcesContent":["import type { VertexEffect } from '../VertexEffect';\nimport type { Skeleton } from '../Skeleton';\nimport { Color, MathUtils, PowOut, Vector2 } from '@pixi-spine/base';\n\n/**\n * @public\n */\nexport class SwirlEffect implements VertexEffect {\n    static interpolation = new PowOut(2);\n    centerX = 0;\n    centerY = 0;\n    radius = 0;\n    angle = 0;\n    private worldX = 0;\n    private worldY = 0;\n\n    constructor(radius: number) {\n        this.radius = radius;\n    }\n\n    begin(skeleton: Skeleton): void {\n        this.worldX = skeleton.x + this.centerX;\n        this.worldY = skeleton.y + this.centerY;\n    }\n\n    transform(position: Vector2, uv: Vector2, light: Color, dark: Color): void {\n        const radAngle = this.angle * MathUtils.degreesToRadians;\n        const x = position.x - this.worldX;\n        const y = position.y - this.worldY;\n        const dist = Math.sqrt(x * x + y * y);\n\n        if (dist < this.radius) {\n            const theta = SwirlEffect.interpolation.apply(0, radAngle, (this.radius - dist) / this.radius);\n            const cos = Math.cos(theta);\n            const sin = Math.sin(theta);\n\n            position.x = cos * x - sin * y + this.worldX;\n            position.y = sin * x + cos * y + this.worldY;\n        }\n    }\n\n    end(): void {}\n}\n"],"names":[],"mappings":";;AAOO,MAAM,eAAN,MAA0C;AAAA,EAS7C,YAAY,MAAgB,EAAA;AAP5B,IAAU,IAAA,CAAA,OAAA,GAAA,CAAA,CAAA;AACV,IAAU,IAAA,CAAA,OAAA,GAAA,CAAA,CAAA;AACV,IAAS,IAAA,CAAA,MAAA,GAAA,CAAA,CAAA;AACT,IAAQ,IAAA,CAAA,KAAA,GAAA,CAAA,CAAA;AACR,IAAA,IAAA,CAAQ,MAAS,GAAA,CAAA,CAAA;AACjB,IAAA,IAAA,CAAQ,MAAS,GAAA,CAAA,CAAA;AAGb,IAAA,IAAA,CAAK,MAAS,GAAA,MAAA,CAAA;AAAA,GAClB;AAAA,EAEA,MAAM,QAA0B,EAAA;AAC5B,IAAK,IAAA,CAAA,MAAA,GAAS,QAAS,CAAA,CAAA,GAAI,IAAK,CAAA,OAAA,CAAA;AAChC,IAAK,IAAA,CAAA,MAAA,GAAS,QAAS,CAAA,CAAA,GAAI,IAAK,CAAA,OAAA,CAAA;AAAA,GACpC;AAAA,EAEA,SAAU,CAAA,QAAA,EAAmB,EAAa,EAAA,KAAA,EAAc,IAAmB,EAAA;AACvE,IAAM,MAAA,QAAA,GAAW,IAAK,CAAA,KAAA,GAAQ,SAAU,CAAA,gBAAA,CAAA;AACxC,IAAM,MAAA,CAAA,GAAI,QAAS,CAAA,CAAA,GAAI,IAAK,CAAA,MAAA,CAAA;AAC5B,IAAM,MAAA,CAAA,GAAI,QAAS,CAAA,CAAA,GAAI,IAAK,CAAA,MAAA,CAAA;AAC5B,IAAA,MAAM,OAAO,IAAK,CAAA,IAAA,CAAK,CAAI,GAAA,CAAA,GAAI,IAAI,CAAC,CAAA,CAAA;AAEpC,IAAI,IAAA,IAAA,GAAO,KAAK,MAAQ,EAAA;AACpB,MAAM,MAAA,KAAA,GAAQ,YAAY,CAAA,aAAA,CAAc,KAAM,CAAA,CAAA,EAAG,WAAW,IAAK,CAAA,MAAA,GAAS,IAAQ,IAAA,IAAA,CAAK,MAAM,CAAA,CAAA;AAC7F,MAAM,MAAA,GAAA,GAAM,IAAK,CAAA,GAAA,CAAI,KAAK,CAAA,CAAA;AAC1B,MAAM,MAAA,GAAA,GAAM,IAAK,CAAA,GAAA,CAAI,KAAK,CAAA,CAAA;AAE1B,MAAA,QAAA,CAAS,CAAI,GAAA,GAAA,GAAM,CAAI,GAAA,GAAA,GAAM,IAAI,IAAK,CAAA,MAAA,CAAA;AACtC,MAAA,QAAA,CAAS,CAAI,GAAA,GAAA,GAAM,CAAI,GAAA,GAAA,GAAM,IAAI,IAAK,CAAA,MAAA,CAAA;AAAA,KAC1C;AAAA,GACJ;AAAA,EAEA,GAAY,GAAA;AAAA,GAAC;AACjB,CAAA,CAAA;AAnCO,IAAM,WAAN,GAAA,aAAA;AAAM,WACF,CAAA,aAAA,GAAgB,IAAI,MAAA,CAAO,CAAC,CAAA;;;;"}