{"version":3,"file":"RegionAttachment.mjs","sources":["../../../src/core/attachments/RegionAttachment.ts"],"sourcesContent":["import { Attachment } from './Attachment';\nimport { AttachmentType, NumberArrayLike, Color, TextureRegion, Utils, IHasTextureRegion, IRegionAttachment } from '@pixi-spine/base';\nimport type { Sequence } from './Sequence';\nimport type { Slot } from '../Slot';\n\n/**\n * @public\n */\nexport class RegionAttachment extends Attachment implements IRegionAttachment, IHasTextureRegion {\n    type = AttachmentType.Region;\n\n    /** The local x translation. */\n    x = 0;\n\n    /** The local y translation. */\n    y = 0;\n\n    /** The local scaleX. */\n    scaleX = 1;\n\n    /** The local scaleY. */\n    scaleY = 1;\n\n    /** The local rotation. */\n    rotation = 0;\n\n    /** The width of the region attachment in Spine. */\n    width = 0;\n\n    /** The height of the region attachment in Spine. */\n    height = 0;\n\n    /** The color to tint the region attachment. */\n    color = new Color(1, 1, 1, 1);\n\n    /** The name of the texture region for this attachment. */\n    path: string;\n\n    private rendererObject: any = null;\n    region: TextureRegion | null = null;\n    sequence: Sequence | null = null;\n\n    /** For each of the 4 vertices, a pair of <code>x,y</code> values that is the local position of the vertex.\n     *\n     * See {@link #updateOffset()}. */\n    offset = Utils.newFloatArray(8);\n\n    uvs = Utils.newFloatArray(8);\n\n    tempColor = new Color(1, 1, 1, 1);\n\n    constructor(name: string, path: string) {\n        super(name);\n        this.path = path;\n    }\n\n    /** Calculates the {@link #offset} using the region settings. Must be called after changing region settings. */\n    updateRegion(): void {\n        if (!this.region) throw new Error('Region not set.');\n        const region = this.region;\n        const regionScaleX = (this.width / this.region.originalWidth) * this.scaleX;\n        const regionScaleY = (this.height / this.region.originalHeight) * this.scaleY;\n        const localX = (-this.width / 2) * this.scaleX + this.region.offsetX * regionScaleX;\n        const localY = (-this.height / 2) * this.scaleY + this.region.offsetY * regionScaleY;\n        const localX2 = localX + this.region.width * regionScaleX;\n        const localY2 = localY + this.region.height * regionScaleY;\n        const radians = (this.rotation * Math.PI) / 180;\n        const cos = Math.cos(radians);\n        const sin = Math.sin(radians);\n        const x = this.x;\n        const y = this.y;\n        const localXCos = localX * cos + x;\n        const localXSin = localX * sin;\n        const localYCos = localY * cos + y;\n        const localYSin = localY * sin;\n        const localX2Cos = localX2 * cos + x;\n        const localX2Sin = localX2 * sin;\n        const localY2Cos = localY2 * cos + y;\n        const localY2Sin = localY2 * sin;\n        const offset = this.offset;\n\n        offset[0] = localXCos - localYSin;\n        offset[1] = localYCos + localXSin;\n        offset[2] = localXCos - localY2Sin;\n        offset[3] = localY2Cos + localXSin;\n        offset[4] = localX2Cos - localY2Sin;\n        offset[5] = localY2Cos + localX2Sin;\n        offset[6] = localX2Cos - localYSin;\n        offset[7] = localYCos + localX2Sin;\n\n        const uvs = this.uvs;\n\n        if (region.degrees == 90) {\n            uvs[2] = region.u;\n            uvs[3] = region.v2;\n            uvs[4] = region.u;\n            uvs[5] = region.v;\n            uvs[6] = region.u2;\n            uvs[7] = region.v;\n            uvs[0] = region.u2;\n            uvs[1] = region.v2;\n        } else {\n            uvs[0] = region.u;\n            uvs[1] = region.v2;\n            uvs[2] = region.u;\n            uvs[3] = region.v;\n            uvs[4] = region.u2;\n            uvs[5] = region.v;\n            uvs[6] = region.u2;\n            uvs[7] = region.v2;\n        }\n    }\n\n    /** Transforms the attachment's four vertices to world coordinates. If the attachment has a {@link #sequence}, the region may\n     * be changed.\n     * <p>\n     * See <a href=\"http://esotericsoftware.com/spine-runtime-skeletons#World-transforms\">World transforms</a> in the Spine\n     * Runtimes Guide.\n     * @param worldVertices The output world vertices. Must have a length >= <code>offset</code> + 8.\n     * @param offset The <code>worldVertices</code> index to begin writing values.\n     * @param stride The number of <code>worldVertices</code> entries between the value pairs written. */\n    computeWorldVertices(slot: Slot, worldVertices: NumberArrayLike, offset: number, stride: number) {\n        if (this.sequence != null) this.sequence.apply(slot, this);\n\n        const bone = slot.bone;\n        const vertexOffset = this.offset;\n        const mat = bone.matrix;\n        const x = mat.tx;\n        const y = mat.ty;\n        const a = mat.a;\n        const b = mat.c;\n        const c = mat.b;\n        const d = mat.d;\n        let offsetX = 0;\n        let offsetY = 0;\n\n        offsetX = vertexOffset[0];\n        offsetY = vertexOffset[1];\n        worldVertices[offset] = offsetX * a + offsetY * b + x; // br\n        worldVertices[offset + 1] = offsetX * c + offsetY * d + y;\n        offset += stride;\n\n        offsetX = vertexOffset[2];\n        offsetY = vertexOffset[3];\n        worldVertices[offset] = offsetX * a + offsetY * b + x; // bl\n        worldVertices[offset + 1] = offsetX * c + offsetY * d + y;\n        offset += stride;\n\n        offsetX = vertexOffset[4];\n        offsetY = vertexOffset[5];\n        worldVertices[offset] = offsetX * a + offsetY * b + x; // ul\n        worldVertices[offset + 1] = offsetX * c + offsetY * d + y;\n        offset += stride;\n\n        offsetX = vertexOffset[6];\n        offsetY = vertexOffset[7];\n        worldVertices[offset] = offsetX * a + offsetY * b + x; // ur\n        worldVertices[offset + 1] = offsetX * c + offsetY * d + y;\n    }\n\n    copy(): Attachment {\n        const copy = new RegionAttachment(this.name, this.path);\n\n        copy.region = this.region;\n        copy.rendererObject = this.rendererObject;\n        copy.x = this.x;\n        copy.y = this.y;\n        copy.scaleX = this.scaleX;\n        copy.scaleY = this.scaleY;\n        copy.rotation = this.rotation;\n        copy.width = this.width;\n        copy.height = this.height;\n        Utils.arrayCopy(this.uvs, 0, copy.uvs, 0, 8);\n        Utils.arrayCopy(this.offset, 0, copy.offset, 0, 8);\n        copy.color.setFromColor(this.color);\n        copy.sequence = this.sequence != null ? this.sequence.copy() : null;\n\n        return copy;\n    }\n\n    static X1 = 0;\n    static Y1 = 1;\n    static C1R = 2;\n    static C1G = 3;\n    static C1B = 4;\n    static C1A = 5;\n    static U1 = 6;\n    static V1 = 7;\n\n    static X2 = 8;\n    static Y2 = 9;\n    static C2R = 10;\n    static C2G = 11;\n    static C2B = 12;\n    static C2A = 13;\n    static U2 = 14;\n    static V2 = 15;\n\n    static X3 = 16;\n    static Y3 = 17;\n    static C3R = 18;\n    static C3G = 19;\n    static C3B = 20;\n    static C3A = 21;\n    static U3 = 22;\n    static V3 = 23;\n\n    static X4 = 24;\n    static Y4 = 25;\n    static C4R = 26;\n    static C4G = 27;\n    static C4B = 28;\n    static C4A = 29;\n    static U4 = 30;\n    static V4 = 31;\n}\n"],"names":[],"mappings":"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"}