{"version":3,"file":"LinearProjection.mjs","sources":["../../src/base/LinearProjection.ts"],"sourcesContent":["import { AbstractProjection } from './AbstractProjection';\r\nimport { Matrix, Transform } from '@pixi/math';\r\nimport type { Projection2d } from '../proj2d';\r\n\r\nexport enum AFFINE\n    {\r\n    NONE = 0,\r\n    FREE = 1,\r\n    AXIS_X = 2,\r\n    AXIS_Y = 3,\r\n    POINT = 4,\r\n    AXIS_XR = 5\r\n}\r\n\r\nexport function transformHack(this: Transform, parentTransform: Transform): void\r\n{\r\n    // implementation here\r\n    // TODO: pixi 6.1.0 global mixin\r\n    const proj = (this as any).proj as LinearProjection<any>;\r\n    const ta = this as any;\r\n    const pwid = (parentTransform as any)._worldID;\r\n\r\n    const lt = ta.localTransform;\r\n    const scaleAfterAffine = proj.scaleAfterAffine && proj.affine >= 2;\r\n\r\n    // this part is copied from\r\n    if (ta._localID !== ta._currentLocalID)\r\n    {\r\n        // get the matrix values of the displayobject based on its transform properties..\r\n        if (scaleAfterAffine)\r\n        {\r\n            lt.a = ta._cx;\r\n            lt.b = ta._sx;\r\n            lt.c = ta._cy;\r\n            lt.d = ta._sy;\r\n\r\n            lt.tx = ta.position._x;\r\n            lt.ty = ta.position._y;\r\n        }\r\n        else\r\n        {\r\n            lt.a = ta._cx * ta.scale._x;\r\n            lt.b = ta._sx * ta.scale._x;\r\n            lt.c = ta._cy * ta.scale._y;\r\n            lt.d = ta._sy * ta.scale._y;\r\n\r\n            lt.tx = ta.position._x - ((ta.pivot._x * lt.a) + (ta.pivot._y * lt.c));\r\n            lt.ty = ta.position._y - ((ta.pivot._x * lt.b) + (ta.pivot._y * lt.d));\r\n        }\r\n\r\n        ta._currentLocalID = ta._localID;\r\n\r\n        // force an update..\r\n        proj._currentProjID = -1;\r\n    }\r\n\r\n    const _matrixID = proj._projID;\r\n\r\n    if (proj._currentProjID !== _matrixID)\r\n    {\r\n        proj._currentProjID = _matrixID;\r\n        proj.updateLocalTransform(lt);\r\n        ta._parentID = -1;\r\n    }\r\n\r\n    if (ta._parentID !== pwid)\r\n    {\r\n        // TODO: pixi 6.1.0 global mixin\r\n        const pp = (parentTransform as any).proj as Projection2d;\r\n\r\n        if (pp && !pp._affine)\r\n        {\r\n            proj.world.setToMult(pp.world, proj.local);\r\n        }\r\n        else\r\n        {\r\n            proj.world.setToMultLegacy(parentTransform.worldTransform, proj.local);\r\n        }\r\n\r\n        const wa = ta.worldTransform;\r\n\r\n        proj.world.copyTo(wa, proj._affine, proj.affinePreserveOrientation);\r\n\r\n        if (scaleAfterAffine)\r\n        {\r\n            wa.a *= ta.scale._x;\r\n            wa.b *= ta.scale._x;\r\n            wa.c *= ta.scale._y;\r\n            wa.d *= ta.scale._y;\r\n\r\n            wa.tx -= ((ta.pivot._x * wa.a) + (ta.pivot._y * wa.c));\r\n            wa.ty -= ((ta.pivot._x * wa.b) + (ta.pivot._y * wa.d));\r\n        }\r\n        ta._parentID = pwid;\r\n        ta._worldID++;\r\n    }\r\n}\r\n\r\nexport class LinearProjection<T> extends AbstractProjection\r\n{\r\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n    updateLocalTransform(lt: Matrix): void\r\n    // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n    {\r\n    }\r\n\r\n    _projID = 0;\r\n    _currentProjID = -1;\r\n    _affine = AFFINE.NONE;\r\n    affinePreserveOrientation = false;\r\n    scaleAfterAffine = true;\r\n\r\n    set affine(value: AFFINE)\r\n    {\r\n        if (this._affine === value) return;\r\n        this._affine = value;\r\n        this._currentProjID = -1;\r\n        // this is because scaleAfterAffine\r\n        (this.legacy as any)._currentLocalID = -1;\r\n    }\r\n\r\n    get affine(): AFFINE\r\n    {\r\n        return this._affine;\r\n    }\r\n\r\n    local: T;\r\n    world: T;\r\n\r\n    // eslint-disable-next-line accessor-pairs\r\n    set enabled(value: boolean)\r\n    {\r\n        if (value === this._enabled)\r\n        {\r\n            return;\r\n        }\r\n        this._enabled = value;\r\n        if (value)\r\n        {\r\n            this.legacy.updateTransform = transformHack;\r\n            (this.legacy as any)._parentID = -1;\r\n        }\r\n        else\r\n        {\r\n            this.legacy.updateTransform = Transform.prototype.updateTransform;\r\n            (this.legacy as any)._parentID = -1;\r\n        }\r\n    }\r\n\r\n    clear(): void\r\n    {\r\n        this._currentProjID = -1;\r\n        this._projID = 0;\r\n    }\r\n}\r\n"],"names":["AFFINE"],"mappings":"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"}