{"version":3,"file":"pixi-projection.mjs","sources":["../node_modules/@pixi/constants/lib/index.mjs","../src/base/webgl/Sprite2dRenderer.ts","../src/base/AbstractProjection.ts","../src/base/LinearProjection.ts","../src/base/webgl/UniformBatchRenderer.ts","../src/base/index.ts","../src/utils.ts","../src/proj2d/Matrix2d.ts","../src/proj2d/tiling/TilingSprite2dRenderer.ts","../src/proj2d/Projection2d.ts","../src/proj2d/Container2d.ts","../src/proj2d/mesh/Mesh2d.ts","../src/proj2d/sprites/Sprite2d.ts","../src/proj2d/tiling/TilingSprite2d.ts","../src/proj2d/sprites/convert.ts","../src/proj2d/sprites/Text2d.ts","../src/proj2d/z_masks/SpriteMaskFilter.ts","../src/proj2d/z_masks/MaskHacker.ts","../src/proj2d/index.ts","../src/proj3d/Point3d.ts","../src/proj3d/Euler.ts","../src/proj3d/ObservableEuler.ts","../src/proj3d/Matrix3d.ts","../src/proj3d/Projection3d.ts","../src/proj3d/Container3d.ts","../src/proj3d/Camera3d.ts","../src/proj3d/mesh/Mesh3d2d.ts","../src/proj3d/sprites/Sprite3d.ts","../src/proj3d/sprites/convert.ts","../src/proj3d/sprites/Text3d.ts","../src/curve/SpriteBilinearRenderer.ts","../src/curve/BaseSurface.ts","../src/curve/BilinearSurface.ts","../src/curve/ProjectionSurface.ts","../src/curve/sprites/Sprite2s.ts","../src/curve/sprites/convert.ts","../src/curve/sprites/Text2s.ts","../src/curve/index.ts","../src/spine/Spine2d.ts","../src/spine/Spine3d.ts"],"sourcesContent":["var ENV = /* @__PURE__ */ ((ENV2) => {\n  ENV2[ENV2[\"WEBGL_LEGACY\"] = 0] = \"WEBGL_LEGACY\";\n  ENV2[ENV2[\"WEBGL\"] = 1] = \"WEBGL\";\n  ENV2[ENV2[\"WEBGL2\"] = 2] = \"WEBGL2\";\n  return ENV2;\n})(ENV || {});\nvar RENDERER_TYPE = /* @__PURE__ */ ((RENDERER_TYPE2) => {\n  RENDERER_TYPE2[RENDERER_TYPE2[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n  RENDERER_TYPE2[RENDERER_TYPE2[\"WEBGL\"] = 1] = \"WEBGL\";\n  RENDERER_TYPE2[RENDERER_TYPE2[\"CANVAS\"] = 2] = \"CANVAS\";\n  return RENDERER_TYPE2;\n})(RENDERER_TYPE || {});\nvar BUFFER_BITS = /* @__PURE__ */ ((BUFFER_BITS2) => {\n  BUFFER_BITS2[BUFFER_BITS2[\"COLOR\"] = 16384] = \"COLOR\";\n  BUFFER_BITS2[BUFFER_BITS2[\"DEPTH\"] = 256] = \"DEPTH\";\n  BUFFER_BITS2[BUFFER_BITS2[\"STENCIL\"] = 1024] = \"STENCIL\";\n  return BUFFER_BITS2;\n})(BUFFER_BITS || {});\nvar BLEND_MODES = /* @__PURE__ */ ((BLEND_MODES2) => {\n  BLEND_MODES2[BLEND_MODES2[\"NORMAL\"] = 0] = \"NORMAL\";\n  BLEND_MODES2[BLEND_MODES2[\"ADD\"] = 1] = \"ADD\";\n  BLEND_MODES2[BLEND_MODES2[\"MULTIPLY\"] = 2] = \"MULTIPLY\";\n  BLEND_MODES2[BLEND_MODES2[\"SCREEN\"] = 3] = \"SCREEN\";\n  BLEND_MODES2[BLEND_MODES2[\"OVERLAY\"] = 4] = \"OVERLAY\";\n  BLEND_MODES2[BLEND_MODES2[\"DARKEN\"] = 5] = \"DARKEN\";\n  BLEND_MODES2[BLEND_MODES2[\"LIGHTEN\"] = 6] = \"LIGHTEN\";\n  BLEND_MODES2[BLEND_MODES2[\"COLOR_DODGE\"] = 7] = \"COLOR_DODGE\";\n  BLEND_MODES2[BLEND_MODES2[\"COLOR_BURN\"] = 8] = \"COLOR_BURN\";\n  BLEND_MODES2[BLEND_MODES2[\"HARD_LIGHT\"] = 9] = \"HARD_LIGHT\";\n  BLEND_MODES2[BLEND_MODES2[\"SOFT_LIGHT\"] = 10] = \"SOFT_LIGHT\";\n  BLEND_MODES2[BLEND_MODES2[\"DIFFERENCE\"] = 11] = \"DIFFERENCE\";\n  BLEND_MODES2[BLEND_MODES2[\"EXCLUSION\"] = 12] = \"EXCLUSION\";\n  BLEND_MODES2[BLEND_MODES2[\"HUE\"] = 13] = \"HUE\";\n  BLEND_MODES2[BLEND_MODES2[\"SATURATION\"] = 14] = \"SATURATION\";\n  BLEND_MODES2[BLEND_MODES2[\"COLOR\"] = 15] = \"COLOR\";\n  BLEND_MODES2[BLEND_MODES2[\"LUMINOSITY\"] = 16] = \"LUMINOSITY\";\n  BLEND_MODES2[BLEND_MODES2[\"NORMAL_NPM\"] = 17] = \"NORMAL_NPM\";\n  BLEND_MODES2[BLEND_MODES2[\"ADD_NPM\"] = 18] = \"ADD_NPM\";\n  BLEND_MODES2[BLEND_MODES2[\"SCREEN_NPM\"] = 19] = \"SCREEN_NPM\";\n  BLEND_MODES2[BLEND_MODES2[\"NONE\"] = 20] = \"NONE\";\n  BLEND_MODES2[BLEND_MODES2[\"SRC_OVER\"] = 0] = \"SRC_OVER\";\n  BLEND_MODES2[BLEND_MODES2[\"SRC_IN\"] = 21] = \"SRC_IN\";\n  BLEND_MODES2[BLEND_MODES2[\"SRC_OUT\"] = 22] = \"SRC_OUT\";\n  BLEND_MODES2[BLEND_MODES2[\"SRC_ATOP\"] = 23] = \"SRC_ATOP\";\n  BLEND_MODES2[BLEND_MODES2[\"DST_OVER\"] = 24] = \"DST_OVER\";\n  BLEND_MODES2[BLEND_MODES2[\"DST_IN\"] = 25] = \"DST_IN\";\n  BLEND_MODES2[BLEND_MODES2[\"DST_OUT\"] = 26] = \"DST_OUT\";\n  BLEND_MODES2[BLEND_MODES2[\"DST_ATOP\"] = 27] = \"DST_ATOP\";\n  BLEND_MODES2[BLEND_MODES2[\"ERASE\"] = 26] = \"ERASE\";\n  BLEND_MODES2[BLEND_MODES2[\"SUBTRACT\"] = 28] = \"SUBTRACT\";\n  BLEND_MODES2[BLEND_MODES2[\"XOR\"] = 29] = \"XOR\";\n  return BLEND_MODES2;\n})(BLEND_MODES || {});\nvar DRAW_MODES = /* @__PURE__ */ ((DRAW_MODES2) => {\n  DRAW_MODES2[DRAW_MODES2[\"POINTS\"] = 0] = \"POINTS\";\n  DRAW_MODES2[DRAW_MODES2[\"LINES\"] = 1] = \"LINES\";\n  DRAW_MODES2[DRAW_MODES2[\"LINE_LOOP\"] = 2] = \"LINE_LOOP\";\n  DRAW_MODES2[DRAW_MODES2[\"LINE_STRIP\"] = 3] = \"LINE_STRIP\";\n  DRAW_MODES2[DRAW_MODES2[\"TRIANGLES\"] = 4] = \"TRIANGLES\";\n  DRAW_MODES2[DRAW_MODES2[\"TRIANGLE_STRIP\"] = 5] = \"TRIANGLE_STRIP\";\n  DRAW_MODES2[DRAW_MODES2[\"TRIANGLE_FAN\"] = 6] = \"TRIANGLE_FAN\";\n  return DRAW_MODES2;\n})(DRAW_MODES || {});\nvar FORMATS = /* @__PURE__ */ ((FORMATS2) => {\n  FORMATS2[FORMATS2[\"RGBA\"] = 6408] = \"RGBA\";\n  FORMATS2[FORMATS2[\"RGB\"] = 6407] = \"RGB\";\n  FORMATS2[FORMATS2[\"RG\"] = 33319] = \"RG\";\n  FORMATS2[FORMATS2[\"RED\"] = 6403] = \"RED\";\n  FORMATS2[FORMATS2[\"RGBA_INTEGER\"] = 36249] = \"RGBA_INTEGER\";\n  FORMATS2[FORMATS2[\"RGB_INTEGER\"] = 36248] = \"RGB_INTEGER\";\n  FORMATS2[FORMATS2[\"RG_INTEGER\"] = 33320] = \"RG_INTEGER\";\n  FORMATS2[FORMATS2[\"RED_INTEGER\"] = 36244] = \"RED_INTEGER\";\n  FORMATS2[FORMATS2[\"ALPHA\"] = 6406] = \"ALPHA\";\n  FORMATS2[FORMATS2[\"LUMINANCE\"] = 6409] = \"LUMINANCE\";\n  FORMATS2[FORMATS2[\"LUMINANCE_ALPHA\"] = 6410] = \"LUMINANCE_ALPHA\";\n  FORMATS2[FORMATS2[\"DEPTH_COMPONENT\"] = 6402] = \"DEPTH_COMPONENT\";\n  FORMATS2[FORMATS2[\"DEPTH_STENCIL\"] = 34041] = \"DEPTH_STENCIL\";\n  return FORMATS2;\n})(FORMATS || {});\nvar TARGETS = /* @__PURE__ */ ((TARGETS2) => {\n  TARGETS2[TARGETS2[\"TEXTURE_2D\"] = 3553] = \"TEXTURE_2D\";\n  TARGETS2[TARGETS2[\"TEXTURE_CUBE_MAP\"] = 34067] = \"TEXTURE_CUBE_MAP\";\n  TARGETS2[TARGETS2[\"TEXTURE_2D_ARRAY\"] = 35866] = \"TEXTURE_2D_ARRAY\";\n  TARGETS2[TARGETS2[\"TEXTURE_CUBE_MAP_POSITIVE_X\"] = 34069] = \"TEXTURE_CUBE_MAP_POSITIVE_X\";\n  TARGETS2[TARGETS2[\"TEXTURE_CUBE_MAP_NEGATIVE_X\"] = 34070] = \"TEXTURE_CUBE_MAP_NEGATIVE_X\";\n  TARGETS2[TARGETS2[\"TEXTURE_CUBE_MAP_POSITIVE_Y\"] = 34071] = \"TEXTURE_CUBE_MAP_POSITIVE_Y\";\n  TARGETS2[TARGETS2[\"TEXTURE_CUBE_MAP_NEGATIVE_Y\"] = 34072] = \"TEXTURE_CUBE_MAP_NEGATIVE_Y\";\n  TARGETS2[TARGETS2[\"TEXTURE_CUBE_MAP_POSITIVE_Z\"] = 34073] = \"TEXTURE_CUBE_MAP_POSITIVE_Z\";\n  TARGETS2[TARGETS2[\"TEXTURE_CUBE_MAP_NEGATIVE_Z\"] = 34074] = \"TEXTURE_CUBE_MAP_NEGATIVE_Z\";\n  return TARGETS2;\n})(TARGETS || {});\nvar TYPES = /* @__PURE__ */ ((TYPES2) => {\n  TYPES2[TYPES2[\"UNSIGNED_BYTE\"] = 5121] = \"UNSIGNED_BYTE\";\n  TYPES2[TYPES2[\"UNSIGNED_SHORT\"] = 5123] = \"UNSIGNED_SHORT\";\n  TYPES2[TYPES2[\"UNSIGNED_SHORT_5_6_5\"] = 33635] = \"UNSIGNED_SHORT_5_6_5\";\n  TYPES2[TYPES2[\"UNSIGNED_SHORT_4_4_4_4\"] = 32819] = \"UNSIGNED_SHORT_4_4_4_4\";\n  TYPES2[TYPES2[\"UNSIGNED_SHORT_5_5_5_1\"] = 32820] = \"UNSIGNED_SHORT_5_5_5_1\";\n  TYPES2[TYPES2[\"UNSIGNED_INT\"] = 5125] = \"UNSIGNED_INT\";\n  TYPES2[TYPES2[\"UNSIGNED_INT_10F_11F_11F_REV\"] = 35899] = \"UNSIGNED_INT_10F_11F_11F_REV\";\n  TYPES2[TYPES2[\"UNSIGNED_INT_2_10_10_10_REV\"] = 33640] = \"UNSIGNED_INT_2_10_10_10_REV\";\n  TYPES2[TYPES2[\"UNSIGNED_INT_24_8\"] = 34042] = \"UNSIGNED_INT_24_8\";\n  TYPES2[TYPES2[\"UNSIGNED_INT_5_9_9_9_REV\"] = 35902] = \"UNSIGNED_INT_5_9_9_9_REV\";\n  TYPES2[TYPES2[\"BYTE\"] = 5120] = \"BYTE\";\n  TYPES2[TYPES2[\"SHORT\"] = 5122] = \"SHORT\";\n  TYPES2[TYPES2[\"INT\"] = 5124] = \"INT\";\n  TYPES2[TYPES2[\"FLOAT\"] = 5126] = \"FLOAT\";\n  TYPES2[TYPES2[\"FLOAT_32_UNSIGNED_INT_24_8_REV\"] = 36269] = \"FLOAT_32_UNSIGNED_INT_24_8_REV\";\n  TYPES2[TYPES2[\"HALF_FLOAT\"] = 36193] = \"HALF_FLOAT\";\n  return TYPES2;\n})(TYPES || {});\nvar SAMPLER_TYPES = /* @__PURE__ */ ((SAMPLER_TYPES2) => {\n  SAMPLER_TYPES2[SAMPLER_TYPES2[\"FLOAT\"] = 0] = \"FLOAT\";\n  SAMPLER_TYPES2[SAMPLER_TYPES2[\"INT\"] = 1] = \"INT\";\n  SAMPLER_TYPES2[SAMPLER_TYPES2[\"UINT\"] = 2] = \"UINT\";\n  return SAMPLER_TYPES2;\n})(SAMPLER_TYPES || {});\nvar SCALE_MODES = /* @__PURE__ */ ((SCALE_MODES2) => {\n  SCALE_MODES2[SCALE_MODES2[\"NEAREST\"] = 0] = \"NEAREST\";\n  SCALE_MODES2[SCALE_MODES2[\"LINEAR\"] = 1] = \"LINEAR\";\n  return SCALE_MODES2;\n})(SCALE_MODES || {});\nvar WRAP_MODES = /* @__PURE__ */ ((WRAP_MODES2) => {\n  WRAP_MODES2[WRAP_MODES2[\"CLAMP\"] = 33071] = \"CLAMP\";\n  WRAP_MODES2[WRAP_MODES2[\"REPEAT\"] = 10497] = \"REPEAT\";\n  WRAP_MODES2[WRAP_MODES2[\"MIRRORED_REPEAT\"] = 33648] = \"MIRRORED_REPEAT\";\n  return WRAP_MODES2;\n})(WRAP_MODES || {});\nvar MIPMAP_MODES = /* @__PURE__ */ ((MIPMAP_MODES2) => {\n  MIPMAP_MODES2[MIPMAP_MODES2[\"OFF\"] = 0] = \"OFF\";\n  MIPMAP_MODES2[MIPMAP_MODES2[\"POW2\"] = 1] = \"POW2\";\n  MIPMAP_MODES2[MIPMAP_MODES2[\"ON\"] = 2] = \"ON\";\n  MIPMAP_MODES2[MIPMAP_MODES2[\"ON_MANUAL\"] = 3] = \"ON_MANUAL\";\n  return MIPMAP_MODES2;\n})(MIPMAP_MODES || {});\nvar ALPHA_MODES = /* @__PURE__ */ ((ALPHA_MODES2) => {\n  ALPHA_MODES2[ALPHA_MODES2[\"NPM\"] = 0] = \"NPM\";\n  ALPHA_MODES2[ALPHA_MODES2[\"UNPACK\"] = 1] = \"UNPACK\";\n  ALPHA_MODES2[ALPHA_MODES2[\"PMA\"] = 2] = \"PMA\";\n  ALPHA_MODES2[ALPHA_MODES2[\"NO_PREMULTIPLIED_ALPHA\"] = 0] = \"NO_PREMULTIPLIED_ALPHA\";\n  ALPHA_MODES2[ALPHA_MODES2[\"PREMULTIPLY_ON_UPLOAD\"] = 1] = \"PREMULTIPLY_ON_UPLOAD\";\n  ALPHA_MODES2[ALPHA_MODES2[\"PREMULTIPLIED_ALPHA\"] = 2] = \"PREMULTIPLIED_ALPHA\";\n  return ALPHA_MODES2;\n})(ALPHA_MODES || {});\nvar CLEAR_MODES = /* @__PURE__ */ ((CLEAR_MODES2) => {\n  CLEAR_MODES2[CLEAR_MODES2[\"NO\"] = 0] = \"NO\";\n  CLEAR_MODES2[CLEAR_MODES2[\"YES\"] = 1] = \"YES\";\n  CLEAR_MODES2[CLEAR_MODES2[\"AUTO\"] = 2] = \"AUTO\";\n  CLEAR_MODES2[CLEAR_MODES2[\"BLEND\"] = 0] = \"BLEND\";\n  CLEAR_MODES2[CLEAR_MODES2[\"CLEAR\"] = 1] = \"CLEAR\";\n  CLEAR_MODES2[CLEAR_MODES2[\"BLIT\"] = 2] = \"BLIT\";\n  return CLEAR_MODES2;\n})(CLEAR_MODES || {});\nvar GC_MODES = /* @__PURE__ */ ((GC_MODES2) => {\n  GC_MODES2[GC_MODES2[\"AUTO\"] = 0] = \"AUTO\";\n  GC_MODES2[GC_MODES2[\"MANUAL\"] = 1] = \"MANUAL\";\n  return GC_MODES2;\n})(GC_MODES || {});\nvar PRECISION = /* @__PURE__ */ ((PRECISION2) => {\n  PRECISION2[\"LOW\"] = \"lowp\";\n  PRECISION2[\"MEDIUM\"] = \"mediump\";\n  PRECISION2[\"HIGH\"] = \"highp\";\n  return PRECISION2;\n})(PRECISION || {});\nvar MASK_TYPES = /* @__PURE__ */ ((MASK_TYPES2) => {\n  MASK_TYPES2[MASK_TYPES2[\"NONE\"] = 0] = \"NONE\";\n  MASK_TYPES2[MASK_TYPES2[\"SCISSOR\"] = 1] = \"SCISSOR\";\n  MASK_TYPES2[MASK_TYPES2[\"STENCIL\"] = 2] = \"STENCIL\";\n  MASK_TYPES2[MASK_TYPES2[\"SPRITE\"] = 3] = \"SPRITE\";\n  MASK_TYPES2[MASK_TYPES2[\"COLOR\"] = 4] = \"COLOR\";\n  return MASK_TYPES2;\n})(MASK_TYPES || {});\nvar COLOR_MASK_BITS = /* @__PURE__ */ ((COLOR_MASK_BITS2) => {\n  COLOR_MASK_BITS2[COLOR_MASK_BITS2[\"RED\"] = 1] = \"RED\";\n  COLOR_MASK_BITS2[COLOR_MASK_BITS2[\"GREEN\"] = 2] = \"GREEN\";\n  COLOR_MASK_BITS2[COLOR_MASK_BITS2[\"BLUE\"] = 4] = \"BLUE\";\n  COLOR_MASK_BITS2[COLOR_MASK_BITS2[\"ALPHA\"] = 8] = \"ALPHA\";\n  return COLOR_MASK_BITS2;\n})(COLOR_MASK_BITS || {});\nvar MSAA_QUALITY = /* @__PURE__ */ ((MSAA_QUALITY2) => {\n  MSAA_QUALITY2[MSAA_QUALITY2[\"NONE\"] = 0] = \"NONE\";\n  MSAA_QUALITY2[MSAA_QUALITY2[\"LOW\"] = 2] = \"LOW\";\n  MSAA_QUALITY2[MSAA_QUALITY2[\"MEDIUM\"] = 4] = \"MEDIUM\";\n  MSAA_QUALITY2[MSAA_QUALITY2[\"HIGH\"] = 8] = \"HIGH\";\n  return MSAA_QUALITY2;\n})(MSAA_QUALITY || {});\nvar BUFFER_TYPE = /* @__PURE__ */ ((BUFFER_TYPE2) => {\n  BUFFER_TYPE2[BUFFER_TYPE2[\"ELEMENT_ARRAY_BUFFER\"] = 34963] = \"ELEMENT_ARRAY_BUFFER\";\n  BUFFER_TYPE2[BUFFER_TYPE2[\"ARRAY_BUFFER\"] = 34962] = \"ARRAY_BUFFER\";\n  BUFFER_TYPE2[BUFFER_TYPE2[\"UNIFORM_BUFFER\"] = 35345] = \"UNIFORM_BUFFER\";\n  return BUFFER_TYPE2;\n})(BUFFER_TYPE || {});\n\nexport { ALPHA_MODES, BLEND_MODES, BUFFER_BITS, BUFFER_TYPE, CLEAR_MODES, COLOR_MASK_BITS, DRAW_MODES, ENV, FORMATS, GC_MODES, MASK_TYPES, MIPMAP_MODES, MSAA_QUALITY, PRECISION, RENDERER_TYPE, SAMPLER_TYPES, SCALE_MODES, TARGETS, TYPES, WRAP_MODES };\n//# sourceMappingURL=index.mjs.map\n","import {\r\n    BatchRenderer,\r\n    BatchShaderGenerator,\r\n    ViewableBuffer,\r\n    Buffer,\r\n    Geometry,\r\n    ExtensionType, Color, Renderer\r\n} from '@pixi/core';\r\nimport { TYPES } from '@pixi/constants';\r\n\r\nconst shaderVert\r\n    = `precision highp float;\r\nattribute vec3 aVertexPosition;\r\nattribute vec2 aTextureCoord;\r\nattribute vec4 aColor;\r\nattribute float aTextureId;\r\n\r\nuniform mat3 projectionMatrix;\r\n\r\nvarying vec2 vTextureCoord;\r\nvarying vec4 vColor;\r\nvarying float vTextureId;\r\n\r\nvoid main(void){\r\ngl_Position.xyw = projectionMatrix * aVertexPosition;\r\ngl_Position.z = 0.0;\r\n\r\nvTextureCoord = aTextureCoord;\r\nvTextureId = aTextureId;\r\nvColor = aColor;\r\n}\r\n`;\r\nconst shaderFrag = `\r\nvarying vec2 vTextureCoord;\r\nvarying vec4 vColor;\r\nvarying float vTextureId;\r\nuniform sampler2D uSamplers[%count%];\r\n\r\nvoid main(void){\r\nvec4 color;\r\n%forloop%\r\ngl_FragColor = color * vColor;\r\n}`;\r\n\r\nexport class Batch3dGeometry extends Geometry\r\n{\r\n    _buffer: Buffer;\r\n    _indexBuffer : Buffer;\r\n\r\n    constructor(_static = false)\r\n    {\r\n        super();\r\n\r\n        this._buffer = new Buffer(null, _static, false);\r\n\r\n        this._indexBuffer = new Buffer(null, _static, true);\r\n\r\n        this.addAttribute('aVertexPosition', this._buffer, 3, false, TYPES.FLOAT)\r\n            .addAttribute('aTextureCoord', this._buffer, 2, false, TYPES.FLOAT)\r\n            .addAttribute('aColor', this._buffer, 4, true, TYPES.UNSIGNED_BYTE)\r\n            .addAttribute('aTextureId', this._buffer, 1, true, TYPES.FLOAT)\r\n            .addIndex(this._indexBuffer);\r\n    }\r\n}\r\n\r\nexport class Batch2dRenderer extends BatchRenderer\r\n{\r\n    static extension = {\r\n        name: 'batch2d',\r\n        type: ExtensionType.RendererPlugin\r\n    };\r\n\r\n    constructor(renderer: Renderer)\r\n    {\r\n        super(renderer);\r\n        this.geometryClass = Batch3dGeometry;\r\n        this.vertexSize = 7;\r\n    }\r\n\r\n    setShaderGenerator()\r\n    {\r\n        this.shaderGenerator = new BatchShaderGenerator(\r\n            shaderVert,\r\n            shaderFrag\r\n        );\r\n    }\r\n\r\n    // eslint-disable-next-line max-len\r\n    packInterleavedGeometry(element: any, attributeBuffer: ViewableBuffer, indexBuffer: Uint16Array, aIndex: number, iIndex: number)\r\n    {\r\n        const {\r\n            uint32View,\r\n            float32View,\r\n        } = attributeBuffer;\r\n\r\n        const p = aIndex / this.vertexSize;// float32View.length / 6 / 2;\r\n        const uvs = element.uvs;\r\n        const indices = element.indices;// geometry.getIndex().data;// indicies;\r\n        const vertexData = element.vertexData;\r\n        const vertexData2d = element.vertexData2d;\r\n        const textureId = element._texture.baseTexture._batchLocation;\r\n\r\n        const alpha = Math.min(element.worldAlpha, 1.0);\r\n\r\n        const argb = Color.shared\r\n            .setValue(element._tintRGB)\r\n            .toPremultiplied(alpha);\r\n\r\n        if (vertexData2d)\r\n        {\r\n            let j = 0;\r\n\r\n            for (let i = 0; i < vertexData2d.length; i += 3, j += 2)\r\n            {\r\n                float32View[aIndex++] = vertexData2d[i];\r\n                float32View[aIndex++] = vertexData2d[i + 1];\r\n                float32View[aIndex++] = vertexData2d[i + 2];\r\n                float32View[aIndex++] = uvs[j];\r\n                float32View[aIndex++] = uvs[j + 1];\r\n                uint32View[aIndex++] = argb;\r\n                float32View[aIndex++] = textureId;\r\n            }\r\n        }\r\n        else\r\n        {\r\n            for (let i = 0; i < vertexData.length; i += 2)\r\n            {\r\n                float32View[aIndex++] = vertexData[i];\r\n                float32View[aIndex++] = vertexData[i + 1];\r\n                float32View[aIndex++] = 1.0;\r\n                float32View[aIndex++] = uvs[i];\r\n                float32View[aIndex++] = uvs[i + 1];\r\n                uint32View[aIndex++] = argb;\r\n                float32View[aIndex++] = textureId;\r\n            }\r\n        }\r\n\r\n        for (let i = 0; i < indices.length; i++)\r\n        {\r\n            indexBuffer[iIndex++] = p + indices[i];\r\n        }\r\n    }\r\n}\r\n","import { Transform } from '@pixi/math';\r\n\r\nexport class AbstractProjection\r\n{\r\n    constructor(legacy: Transform, enable = true)\r\n    {\r\n        this.legacy = legacy;\r\n\r\n        if (enable)\r\n        {\r\n            this.enabled = true;\r\n        }\r\n\r\n        // sorry for hidden class, it would be good to have special projection field in official pixi\r\n        // TODO: pixi 6.1.0 global mixin\r\n        (this.legacy as any).proj = this;\r\n    }\r\n\r\n    legacy: Transform;\r\n\r\n    _enabled = false;\r\n\r\n    get enabled(): boolean\r\n    {\r\n        return this._enabled;\r\n    }\r\n\r\n    set enabled(value: boolean)\r\n    {\r\n        this._enabled = value;\r\n    }\r\n\r\n    clear(): void\r\n    // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n    {\r\n    }\r\n}\r\n\r\nexport enum TRANSFORM_STEP\n    {\r\n    NONE = 0,\r\n    // POS = 1,\r\n    // ROT = 2,\r\n    // SCALE = 3,\r\n    // PIVOT = 4,\r\n    BEFORE_PROJ = 4,\r\n    PROJ = 5,\r\n    // POS_2 = 6,\r\n    // ROT_2 = 7,\r\n    // SCALE_2 = 8,\r\n    // PIVOT_2 = 9,\r\n    ALL = 9\r\n}\r\n","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","import {\r\n    BatchRenderer,\r\n    ViewableBuffer,\r\n    BatchTextureArray\r\n} from '@pixi/core';\r\nimport { Dict, premultiplyBlendMode } from '@pixi/utils';\r\nimport { Sprite } from '@pixi/sprite';\r\n\r\nexport class UniformBatchRenderer extends BatchRenderer\r\n{\r\n    _iIndex: number;\r\n    _aIndex: number;\r\n    _dcIndex: number;\r\n    _bufferedElements: Array<any>;\r\n    _attributeBuffer: ViewableBuffer;\r\n    _indexBuffer: Uint16Array;\r\n    vertexSize: number;\r\n    forceMaxTextures = 0;\r\n\r\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n    getUniforms(sprite: Sprite): any\r\n    {\r\n        return this.defUniforms;\r\n    }\r\n\r\n    syncUniforms(obj: Dict<any>): void\r\n    {\r\n        if (!obj) return;\r\n        const sh = this._shader;\r\n\r\n        for (const key in obj)\r\n        {\r\n            sh.uniforms[key] = obj[key];\r\n        }\r\n    }\r\n\r\n    defUniforms = {};\r\n\r\n    buildDrawCalls(texArray: BatchTextureArray, start: number, finish: number): void\r\n    {\r\n        const thisAny = this as any;\r\n\r\n        const {\r\n            _bufferedElements: elements,\r\n            _attributeBuffer,\r\n            _indexBuffer,\r\n            vertexSize,\r\n        } = this;\r\n        const drawCalls = BatchRenderer._drawCallPool;\r\n\r\n        let dcIndex: number = this._dcIndex;\r\n        let aIndex: number = this._aIndex;\r\n        let iIndex: number = this._iIndex;\r\n\r\n        let drawCall = drawCalls[dcIndex] as any;\r\n\r\n        drawCall.start = this._iIndex;\r\n        drawCall.texArray = texArray;\r\n\r\n        for (let i = start; i < finish; ++i)\r\n        {\r\n            const sprite = elements[i];\r\n            const tex = sprite._texture.baseTexture;\r\n            const spriteBlendMode = premultiplyBlendMode[\r\n                tex.alphaMode ? 1 : 0][sprite.blendMode];\r\n            const uniforms = this.getUniforms(sprite);\r\n\r\n            elements[i] = null;\r\n\r\n            // here is the difference\r\n            if (start < i && (drawCall.blend !== spriteBlendMode || drawCall.uniforms !== uniforms))\r\n            {\r\n                drawCall.size = iIndex - drawCall.start;\r\n                start = i;\r\n                drawCall = drawCalls[++dcIndex];\r\n                drawCall.texArray = texArray;\r\n                drawCall.start = iIndex;\r\n            }\r\n\r\n            this.packInterleavedGeometry(sprite, _attributeBuffer, _indexBuffer, aIndex, iIndex);\r\n            aIndex += sprite.vertexData.length / 2 * vertexSize;\r\n            iIndex += sprite.indices.length;\r\n\r\n            drawCall.blend = spriteBlendMode;\r\n            // here is the difference\r\n            drawCall.uniforms = uniforms;\r\n        }\r\n\r\n        if (start < finish)\r\n        {\r\n            drawCall.size = iIndex - drawCall.start;\r\n            ++dcIndex;\r\n        }\r\n\r\n        thisAny._dcIndex = dcIndex;\r\n        thisAny._aIndex = aIndex;\r\n        thisAny._iIndex = iIndex;\r\n    }\r\n\r\n    drawBatches(): void\r\n    {\r\n        const dcCount = this._dcIndex;\r\n        const { gl, state: stateSystem, shader: shaderSystem } = this.renderer;\r\n        const drawCalls = BatchRenderer._drawCallPool;\r\n        let curUniforms: any = null;\r\n        let curTexArray: BatchTextureArray = null;\r\n\r\n        for (let i = 0; i < dcCount; i++)\r\n        {\r\n            const { texArray, type, size, start, blend, uniforms } = drawCalls[i] as any;\r\n\r\n            if (curTexArray !== texArray)\r\n            {\r\n                curTexArray = texArray;\r\n                this.bindAndClearTexArray(texArray);\r\n            }\r\n            // here is the difference\r\n            if (curUniforms !== uniforms)\r\n            {\r\n                curUniforms = uniforms;\r\n                this.syncUniforms(uniforms);\r\n                (shaderSystem as any).syncUniformGroup((this._shader as any).uniformGroup);\r\n            }\r\n\r\n            this.state.blendMode = blend;\r\n            stateSystem.set(this.state);\r\n            gl.drawElements(type, size, gl.UNSIGNED_SHORT, start * 2);\r\n        }\r\n    }\r\n\r\n    contextChange(): void\r\n    {\r\n        if (!this.forceMaxTextures)\r\n        {\r\n            super.contextChange();\r\n            this.syncUniforms(this.defUniforms);\r\n\r\n            return;\r\n        }\r\n\r\n        // we can override maxTextures with this hack\r\n\r\n        const thisAny = this as any;\r\n\r\n        thisAny.maxTextures = this.forceMaxTextures;\r\n        this._shader = thisAny.shaderGenerator.generateShader(this.maxTextures);\r\n        this.syncUniforms(this.defUniforms);\r\n        for (let i = 0; i < thisAny._packedGeometryPoolSize; i++)\r\n        {\r\n            /* eslint-disable max-len */\r\n            thisAny._packedGeometries[i] = new (this.geometryClass)();\r\n        }\r\n        this.initFlushBuffers();\r\n    }\r\n}\r\n","import { extensions } from '@pixi/core';\r\nimport { Batch2dRenderer } from './webgl/Sprite2dRenderer';\r\n\r\nexport * from './AbstractProjection';\r\nexport * from './LinearProjection';\r\nexport * from './webgl/Sprite2dRenderer';\r\nexport * from './webgl/UniformBatchRenderer';\r\n\r\nextensions.add(Batch2dRenderer);\r\n","/* eslint-disable no-mixed-operators */\r\nimport { IPointData, Point } from '@pixi/math';\r\n\r\n// eslint-disable-next-line max-len\r\nexport function getIntersectionFactor(p1: IPointData, p2: IPointData, p3: IPointData, p4: IPointData, out: IPointData): number\r\n{\r\n    const A1 = p2.x - p1.x; const B1 = p3.x - p4.x;\r\n    const C1 = p3.x - p1.x;\r\n    const A2 = p2.y - p1.y; const B2 = p3.y - p4.y;\r\n    const C2 = p3.y - p1.y;\r\n    const D = A1 * B2 - A2 * B1;\r\n\r\n    if (Math.abs(D) < 1e-7)\r\n    {\r\n        out.x = A1;\r\n        out.y = A2;\r\n\r\n        return 0;\r\n    }\r\n    const T = C1 * B2 - C2 * B1;\r\n    const U = A1 * C2 - A2 * C1;\r\n\r\n    const t = T / D; const\r\n        u = U / D;\r\n\r\n    if (u < (1e-6) || u - 1 > -1e-6)\r\n    {\r\n        return -1;\r\n    }\r\n\r\n    out.x = p1.x + t * (p2.x - p1.x);\r\n    out.y = p1.y + t * (p2.y - p1.y);\r\n\r\n    return 1;\r\n}\r\n\r\nexport function getPositionFromQuad(p: Array<IPointData>, anchor: IPointData, out: IPointData): IPointData\r\n{\r\n    out = out || new Point();\r\n    const a1 = 1.0 - anchor.x; const\r\n        a2 = 1.0 - a1;\r\n    const b1 = 1.0 - anchor.y; const\r\n        b2 = 1.0 - b1;\r\n\r\n    out.x = (p[0].x * a1 + p[1].x * a2) * b1 + (p[3].x * a1 + p[2].x * a2) * b2;\r\n    out.y = (p[0].y * a1 + p[1].y * a2) * b1 + (p[3].y * a1 + p[2].y * a2) * b2;\r\n\r\n    return out;\r\n}\r\n","/* eslint-disable no-mixed-operators,max-statements-per-line */\r\n// according to https://jsperf.com/obj-vs-array-view-access/1 , Float64Array is the best here\r\nimport { IPointData, Matrix, Point } from '@pixi/math';\r\nimport { AFFINE } from '../base';\r\n\r\nconst mat3id = [1, 0, 0, 0, 1, 0, 0, 0, 1];\r\n\r\nexport class Matrix2d\r\n{\r\n    /**\r\n     * A default (identity) matrix\r\n     *\r\n     * @static\r\n     * @const\r\n     */\r\n    static readonly IDENTITY = new Matrix2d();\r\n\r\n    /**\r\n     * A temp matrix\r\n     *\r\n     * @static\r\n     * @const\r\n     */\r\n    static readonly TEMP_MATRIX = new Matrix2d();\r\n\r\n    /**\r\n     * mat3 implementation through array of 9 elements\r\n     */\r\n    mat3: Float64Array;\r\n\r\n    floatArray: Float32Array = null;\r\n\r\n    constructor(backingArray?: ArrayLike<number>)\r\n    {\r\n        this.mat3 = new Float64Array(backingArray || mat3id);\r\n    }\r\n\r\n    get a(): number\r\n    {\r\n        return this.mat3[0] / this.mat3[8];\r\n    }\r\n\r\n    set a(value: number)\r\n    {\r\n        this.mat3[0] = value * this.mat3[8];\r\n    }\r\n\r\n    get b(): number\r\n    {\r\n        return this.mat3[1] / this.mat3[8];\r\n    }\r\n\r\n    set b(value: number)\r\n    {\r\n        this.mat3[1] = value * this.mat3[8];\r\n    }\r\n\r\n    get c(): number\r\n    {\r\n        return this.mat3[3] / this.mat3[8];\r\n    }\r\n\r\n    set c(value: number)\r\n    {\r\n        this.mat3[3] = value * this.mat3[8];\r\n    }\r\n\r\n    get d(): number\r\n    {\r\n        return this.mat3[4] / this.mat3[8];\r\n    }\r\n\r\n    set d(value: number)\r\n    {\r\n        this.mat3[4] = value * this.mat3[8];\r\n    }\r\n\r\n    get tx(): number\r\n    {\r\n        return this.mat3[6] / this.mat3[8];\r\n    }\r\n\r\n    set tx(value: number)\r\n    {\r\n        this.mat3[6] = value * this.mat3[8];\r\n    }\r\n\r\n    get ty(): number\r\n    {\r\n        return this.mat3[7] / this.mat3[8];\r\n    }\r\n\r\n    set ty(value: number)\r\n    {\r\n        this.mat3[7] = value * this.mat3[8];\r\n    }\r\n\r\n    set(a: number, b: number, c: number, d: number, tx: number, ty: number): this\r\n    {\r\n        const mat3 = this.mat3;\r\n\r\n        mat3[0] = a;\r\n        mat3[1] = b;\r\n        mat3[2] = 0;\r\n        mat3[3] = c;\r\n        mat3[4] = d;\r\n        mat3[5] = 0;\r\n        mat3[6] = tx;\r\n        mat3[7] = ty;\r\n        mat3[8] = 1;\r\n\r\n        return this;\r\n    }\r\n\r\n    toArray(transpose?: boolean, out?: Float32Array): Float32Array\r\n    {\r\n        if (!this.floatArray)\r\n        {\r\n            this.floatArray = new Float32Array(9);\r\n        }\r\n\r\n        const array = out || this.floatArray;\r\n        const mat3 = this.mat3;\r\n\r\n        if (transpose)\r\n        {\r\n            array[0] = mat3[0];\r\n            array[1] = mat3[1];\r\n            array[2] = mat3[2];\r\n            array[3] = mat3[3];\r\n            array[4] = mat3[4];\r\n            array[5] = mat3[5];\r\n            array[6] = mat3[6];\r\n            array[7] = mat3[7];\r\n            array[8] = mat3[8];\r\n        }\r\n        else\r\n        {\r\n            // this branch is NEVER USED in pixi\r\n            array[0] = mat3[0];\r\n            array[1] = mat3[3];\r\n            array[2] = mat3[6];\r\n            array[3] = mat3[1];\r\n            array[4] = mat3[4];\r\n            array[5] = mat3[7];\r\n            array[6] = mat3[2];\r\n            array[7] = mat3[5];\r\n            array[8] = mat3[8];\r\n        }\r\n\r\n        return array;\r\n    }\r\n\r\n    // TODO: remove props\r\n    apply(pos: IPointData, newPos: IPointData): IPointData\r\n    {\r\n        newPos = newPos || new Point();\r\n\r\n        const mat3 = this.mat3;\r\n        const x = pos.x;\r\n        const y = pos.y;\r\n\r\n        const z = 1.0 / (mat3[2] * x + mat3[5] * y + mat3[8]);\r\n\r\n        newPos.x = z * (mat3[0] * x + mat3[3] * y + mat3[6]);\r\n        newPos.y = z * (mat3[1] * x + mat3[4] * y + mat3[7]);\r\n\r\n        return newPos;\r\n    }\r\n\r\n    translate(tx: number, ty: number): this\r\n    {\r\n        const mat3 = this.mat3;\r\n\r\n        mat3[0] += tx * mat3[2];\r\n        mat3[1] += ty * mat3[2];\r\n        mat3[3] += tx * mat3[5];\r\n        mat3[4] += ty * mat3[5];\r\n        mat3[6] += tx * mat3[8];\r\n        mat3[7] += ty * mat3[8];\r\n\r\n        return this;\r\n    }\r\n\r\n    scale(x: number, y: number): this\r\n    {\r\n        const mat3 = this.mat3;\r\n\r\n        mat3[0] *= x;\r\n        mat3[1] *= y;\r\n        mat3[3] *= x;\r\n        mat3[4] *= y;\r\n        mat3[6] *= x;\r\n        mat3[7] *= y;\r\n\r\n        return this;\r\n    }\r\n\r\n    scaleAndTranslate(scaleX: number, scaleY: number, tx: number, ty: number): void\r\n    {\r\n        const mat3 = this.mat3;\r\n\r\n        mat3[0] = scaleX * mat3[0] + tx * mat3[2];\r\n        mat3[1] = scaleY * mat3[1] + ty * mat3[2];\r\n        mat3[3] = scaleX * mat3[3] + tx * mat3[5];\r\n        mat3[4] = scaleY * mat3[4] + ty * mat3[5];\r\n        mat3[6] = scaleX * mat3[6] + tx * mat3[8];\r\n        mat3[7] = scaleY * mat3[7] + ty * mat3[8];\r\n    }\r\n\r\n    // TODO: remove props\r\n    applyInverse(pos: IPointData, newPos: IPointData): IPointData\r\n    {\r\n        newPos = newPos || new Point();\r\n\r\n        const a = this.mat3;\r\n        const x = pos.x;\r\n        const y = pos.y;\r\n\r\n        const a00 = a[0]; const a01 = a[3]; const a02 = a[6];\r\n        const a10 = a[1]; const a11 = a[4]; const a12 = a[7];\r\n        const a20 = a[2]; const a21 = a[5]; const\r\n            a22 = a[8];\r\n\r\n        const newX = (a22 * a11 - a12 * a21) * x + (-a22 * a01 + a02 * a21) * y + (a12 * a01 - a02 * a11);\r\n        const newY = (-a22 * a10 + a12 * a20) * x + (a22 * a00 - a02 * a20) * y + (-a12 * a00 + a02 * a10);\r\n        const newZ = (a21 * a10 - a11 * a20) * x + (-a21 * a00 + a01 * a20) * y + (a11 * a00 - a01 * a10);\r\n\r\n        newPos.x = newX / newZ;\r\n        newPos.y = newY / newZ;\r\n\r\n        return newPos;\r\n    }\r\n\r\n    invert(): Matrix2d\r\n    {\r\n        const a = this.mat3;\r\n\r\n        const a00 = a[0]; const a01 = a[1]; const a02 = a[2];\r\n        const a10 = a[3]; const a11 = a[4]; const a12 = a[5];\r\n        const a20 = a[6]; const a21 = a[7]; const a22 = a[8];\r\n\r\n        const b01 = a22 * a11 - a12 * a21;\r\n        const b11 = -a22 * a10 + a12 * a20;\r\n        const b21 = a21 * a10 - a11 * a20;\r\n\r\n        // Calculate the determinant\r\n        let det = a00 * b01 + a01 * b11 + a02 * b21;\r\n\r\n        if (!det)\r\n        {\r\n            return this;\r\n        }\r\n        det = 1.0 / det;\r\n\r\n        a[0] = b01 * det;\r\n        a[1] = (-a22 * a01 + a02 * a21) * det;\r\n        a[2] = (a12 * a01 - a02 * a11) * det;\r\n        a[3] = b11 * det;\r\n        a[4] = (a22 * a00 - a02 * a20) * det;\r\n        a[5] = (-a12 * a00 + a02 * a10) * det;\r\n        a[6] = b21 * det;\r\n        a[7] = (-a21 * a00 + a01 * a20) * det;\r\n        a[8] = (a11 * a00 - a01 * a10) * det;\r\n\r\n        return this;\r\n    }\r\n\r\n    identity(): Matrix2d\r\n    {\r\n        const mat3 = this.mat3;\r\n\r\n        mat3[0] = 1;\r\n        mat3[1] = 0;\r\n        mat3[2] = 0;\r\n        mat3[3] = 0;\r\n        mat3[4] = 1;\r\n        mat3[5] = 0;\r\n        mat3[6] = 0;\r\n        mat3[7] = 0;\r\n        mat3[8] = 1;\r\n\r\n        return this;\r\n    }\r\n\r\n    clone(): Matrix2d\r\n    {\r\n        return new Matrix2d(this.mat3);\r\n    }\r\n\r\n    copyTo2dOr3d(matrix: Matrix2d): Matrix2d\r\n    {\r\n        const mat3 = this.mat3;\r\n        const ar2 = matrix.mat3;\r\n\r\n        ar2[0] = mat3[0];\r\n        ar2[1] = mat3[1];\r\n        ar2[2] = mat3[2];\r\n        ar2[3] = mat3[3];\r\n        ar2[4] = mat3[4];\r\n        ar2[5] = mat3[5];\r\n        ar2[6] = mat3[6];\r\n        ar2[7] = mat3[7];\r\n        ar2[8] = mat3[8];\r\n\r\n        return matrix;\r\n    }\r\n\r\n    /**\r\n     * legacy method, change the values of given pixi matrix\r\n     * @param matrix\r\n     * @param affine\r\n     * @param preserveOrientation\r\n     * @return matrix\r\n     */\r\n    copyTo(matrix: Matrix, affine?: AFFINE, preserveOrientation?: boolean): Matrix\r\n    {\r\n        const mat3 = this.mat3;\r\n        const d = 1.0 / mat3[8];\r\n        const tx = mat3[6] * d; const\r\n            ty = mat3[7] * d;\r\n\r\n        matrix.a = (mat3[0] - mat3[2] * tx) * d;\r\n        matrix.b = (mat3[1] - mat3[2] * ty) * d;\r\n        matrix.c = (mat3[3] - mat3[5] * tx) * d;\r\n        matrix.d = (mat3[4] - mat3[5] * ty) * d;\r\n        matrix.tx = tx;\r\n        matrix.ty = ty;\r\n\r\n        if (affine >= 2)\r\n        {\r\n            let D = matrix.a * matrix.d - matrix.b * matrix.c;\r\n\r\n            if (!preserveOrientation)\r\n            {\r\n                D = Math.abs(D);\r\n            }\r\n            if (affine === AFFINE.POINT)\r\n            {\r\n                if (D > 0)\r\n                {\r\n                    D = 1;\r\n                }\r\n                else D = -1;\r\n                matrix.a = D;\r\n                matrix.b = 0;\r\n                matrix.c = 0;\r\n                matrix.d = D;\r\n            }\r\n            else if (affine === AFFINE.AXIS_X)\r\n            {\r\n                D /= Math.sqrt(matrix.b * matrix.b + matrix.d * matrix.d);\r\n                matrix.c = 0;\r\n                matrix.d = D;\r\n            }\r\n            else if (affine === AFFINE.AXIS_Y)\r\n            {\r\n                D /= Math.sqrt(matrix.a * matrix.a + matrix.c * matrix.c);\r\n                matrix.a = D;\r\n                matrix.c = 0;\r\n            }\r\n            else if (affine === AFFINE.AXIS_XR)\r\n            {\r\n                matrix.a = matrix.d * D;\r\n                matrix.c = -matrix.b * D;\r\n            }\r\n        }\r\n\r\n        return matrix;\r\n    }\r\n\r\n    /**\r\n     * legacy method, change the values of given pixi matrix\r\n     * @param matrix\r\n     * @return\r\n     */\r\n    copyFrom(matrix: Matrix): this\r\n    {\r\n        const mat3 = this.mat3;\r\n\r\n        mat3[0] = matrix.a;\r\n        mat3[1] = matrix.b;\r\n        mat3[2] = 0;\r\n        mat3[3] = matrix.c;\r\n        mat3[4] = matrix.d;\r\n        mat3[5] = 0;\r\n        mat3[6] = matrix.tx;\r\n        mat3[7] = matrix.ty;\r\n        mat3[8] = 1.0;\r\n\r\n        return this;\r\n    }\r\n\r\n    setToMultLegacy(pt: Matrix, lt: Matrix2d): this\r\n    {\r\n        const out = this.mat3;\r\n        const b = lt.mat3;\r\n\r\n        const a00 = pt.a; const a01 = pt.b;\r\n        const a10 = pt.c; const a11 = pt.d;\r\n        const a20 = pt.tx; const a21 = pt.ty;\r\n\r\n        const b00 = b[0]; const b01 = b[1]; const b02 = b[2];\r\n        const b10 = b[3]; const b11 = b[4]; const b12 = b[5];\r\n        const b20 = b[6]; const b21 = b[7]; const\r\n            b22 = b[8];\r\n\r\n        out[0] = b00 * a00 + b01 * a10 + b02 * a20;\r\n        out[1] = b00 * a01 + b01 * a11 + b02 * a21;\r\n        out[2] = b02;\r\n\r\n        out[3] = b10 * a00 + b11 * a10 + b12 * a20;\r\n        out[4] = b10 * a01 + b11 * a11 + b12 * a21;\r\n        out[5] = b12;\r\n\r\n        out[6] = b20 * a00 + b21 * a10 + b22 * a20;\r\n        out[7] = b20 * a01 + b21 * a11 + b22 * a21;\r\n        out[8] = b22;\r\n\r\n        return this;\r\n    }\r\n\r\n    setToMultLegacy2(pt: Matrix2d, lt: Matrix): this\r\n    {\r\n        const out = this.mat3;\r\n        const a = pt.mat3;\r\n\r\n        const a00 = a[0]; const a01 = a[1]; const a02 = a[2];\r\n        const a10 = a[3]; const a11 = a[4]; const a12 = a[5];\r\n        const a20 = a[6]; const a21 = a[7]; const a22 = a[8];\r\n\r\n        const b00 = lt.a; const b01 = lt.b;\r\n        const b10 = lt.c; const b11 = lt.d;\r\n        const b20 = lt.tx; const\r\n            b21 = lt.ty;\r\n\r\n        out[0] = b00 * a00 + b01 * a10;\r\n        out[1] = b00 * a01 + b01 * a11;\r\n        out[2] = b00 * a02 + b01 * a12;\r\n\r\n        out[3] = b10 * a00 + b11 * a10;\r\n        out[4] = b10 * a01 + b11 * a11;\r\n        out[5] = b10 * a02 + b11 * a12;\r\n\r\n        out[6] = b20 * a00 + b21 * a10 + a20;\r\n        out[7] = b20 * a01 + b21 * a11 + a21;\r\n        out[8] = b20 * a02 + b21 * a12 + a22;\r\n\r\n        return this;\r\n    }\r\n\r\n    // that's transform multiplication we use\r\n    setToMult(pt: Matrix2d, lt: Matrix2d): this\r\n    {\r\n        const out = this.mat3;\r\n        const a = pt.mat3; const\r\n            b = lt.mat3;\r\n\r\n        const a00 = a[0]; const a01 = a[1]; const a02 = a[2];\r\n        const a10 = a[3]; const a11 = a[4]; const a12 = a[5];\r\n        const a20 = a[6]; const a21 = a[7]; const a22 = a[8];\r\n\r\n        const b00 = b[0]; const b01 = b[1]; const b02 = b[2];\r\n        const b10 = b[3]; const b11 = b[4]; const b12 = b[5];\r\n        const b20 = b[6]; const b21 = b[7]; const\r\n            b22 = b[8];\r\n\r\n        out[0] = b00 * a00 + b01 * a10 + b02 * a20;\r\n        out[1] = b00 * a01 + b01 * a11 + b02 * a21;\r\n        out[2] = b00 * a02 + b01 * a12 + b02 * a22;\r\n\r\n        out[3] = b10 * a00 + b11 * a10 + b12 * a20;\r\n        out[4] = b10 * a01 + b11 * a11 + b12 * a21;\r\n        out[5] = b10 * a02 + b11 * a12 + b12 * a22;\r\n\r\n        out[6] = b20 * a00 + b21 * a10 + b22 * a20;\r\n        out[7] = b20 * a01 + b21 * a11 + b22 * a21;\r\n        out[8] = b20 * a02 + b21 * a12 + b22 * a22;\r\n\r\n        return this;\r\n    }\r\n\r\n    // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\r\n    prepend(lt: any): this\r\n    {\r\n        if (lt.mat3)\r\n        {\r\n            return this.setToMult(lt, this);\r\n        }\r\n\r\n        return this.setToMultLegacy(lt, this);\r\n    }\r\n}\r\n","import { Matrix2d } from '../Matrix2d';\r\nimport { ExtensionMetadata, ExtensionType, ObjectRenderer, QuadUv, Renderer, Shader } from '@pixi/core';\r\nimport { DRAW_MODES, WRAP_MODES } from '@pixi/constants';\r\nimport { correctBlendMode, premultiplyTintToRgba } from '@pixi/utils';\r\n\r\nconst shaderVert\r\n    = `attribute vec2 aVertexPosition;\r\nattribute vec2 aTextureCoord;\r\n\r\nuniform mat3 projectionMatrix;\r\nuniform mat3 translationMatrix;\r\nuniform mat3 uTransform;\r\n\r\nvarying vec3 vTextureCoord;\r\n\r\nvoid main(void)\r\n{\r\ngl_Position.xyw = projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0);\r\n\r\nvTextureCoord = uTransform * vec3(aTextureCoord, 1.0);\r\n}\r\n`;\r\nconst shaderFrag = `\r\nvarying vec3 vTextureCoord;\r\n\r\nuniform sampler2D uSampler;\r\nuniform vec4 uColor;\r\nuniform mat3 uMapCoord;\r\nuniform vec4 uClampFrame;\r\nuniform vec2 uClampOffset;\r\n\r\nvoid main(void)\r\n{\r\nvec2 coord = mod(vTextureCoord.xy / vTextureCoord.z - uClampOffset, vec2(1.0, 1.0)) + uClampOffset;\r\ncoord = (uMapCoord * vec3(coord, 1.0)).xy;\r\ncoord = clamp(coord, uClampFrame.xy, uClampFrame.zw);\r\n\r\nvec4 sample = texture2D(uSampler, coord);\r\ngl_FragColor = sample * uColor;\r\n}\r\n`;\r\nconst shaderSimpleFrag = `\r\nvarying vec3 vTextureCoord;\r\n\r\nuniform sampler2D uSampler;\r\nuniform vec4 uColor;\r\n\r\nvoid main(void)\r\n{\r\nvec4 sample = texture2D(uSampler, vTextureCoord.xy / vTextureCoord.z);\r\ngl_FragColor = sample * uColor;\r\n}\r\n`;\r\n\r\n// changed\r\nconst tempMat = new Matrix2d();\r\n\r\nexport class TilingSprite2dRenderer extends ObjectRenderer\r\n{\r\n    static extension: ExtensionMetadata = {\r\n        name: 'tilingSprite2d',\r\n        type: ExtensionType.RendererPlugin,\r\n    };\r\n\r\n    constructor(renderer: Renderer)\r\n    {\r\n        super(renderer);\r\n\r\n        const uniforms = { globals: this.renderer.globalUniforms };\r\n\r\n        this.shader = Shader.from(shaderVert, shaderFrag, uniforms);\r\n\r\n        this.simpleShader = Shader.from(shaderVert, shaderSimpleFrag, uniforms);\r\n    }\r\n\r\n    shader: Shader;\r\n    simpleShader: Shader;\r\n    quad = new QuadUv();\r\n\r\n    // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\r\n    render(ts: any): void\r\n    {\r\n        const renderer = this.renderer;\r\n        const quad = this.quad;\r\n\r\n        let vertices = quad.vertices;\r\n\r\n        vertices[0] = vertices[6] = (ts._width) * -ts.anchor.x;\r\n        vertices[1] = vertices[3] = ts._height * -ts.anchor.y;\r\n\r\n        vertices[2] = vertices[4] = (ts._width) * (1.0 - ts.anchor.x);\r\n        vertices[5] = vertices[7] = ts._height * (1.0 - ts.anchor.y);\r\n\r\n        if (ts.uvRespectAnchor)\r\n        {\r\n            vertices = quad.uvs;\r\n\r\n            vertices[0] = vertices[6] = -ts.anchor.x;\r\n            vertices[1] = vertices[3] = -ts.anchor.y;\r\n\r\n            vertices[2] = vertices[4] = 1.0 - ts.anchor.x;\r\n            vertices[5] = vertices[7] = 1.0 - ts.anchor.y;\r\n        }\r\n\r\n        quad.invalidate();\r\n\r\n        const tex = ts._texture;\r\n        const baseTex = tex.baseTexture;\r\n        const lt = ts.tileProj.world;\r\n        const uv = ts.uvMatrix;\r\n        let isSimple = baseTex.isPowerOfTwo\r\n            && tex.frame.width === baseTex.width && tex.frame.height === baseTex.height;\r\n\r\n        // auto, force repeat wrapMode for big tiling textures\r\n        if (isSimple)\r\n        {\r\n            if (!baseTex._glTextures[(renderer as any).CONTEXT_UID])\r\n            {\r\n                if (baseTex.wrapMode === WRAP_MODES.CLAMP)\r\n                {\r\n                    baseTex.wrapMode = WRAP_MODES.REPEAT;\r\n                }\r\n            }\r\n            else\r\n            {\r\n                isSimple = baseTex.wrapMode !== WRAP_MODES.CLAMP;\r\n            }\r\n        }\r\n\r\n        const shader = isSimple ? this.simpleShader : this.shader;\r\n\r\n        // changed\r\n        tempMat.identity();\r\n        tempMat.scale(tex.width, tex.height);\r\n        tempMat.prepend(lt);\r\n        tempMat.scale(1.0 / ts._width, 1.0 / ts._height);\r\n\r\n        tempMat.invert();\r\n        if (isSimple)\r\n        {\r\n            tempMat.prepend(uv.mapCoord);\r\n        }\r\n        else\r\n        {\r\n            shader.uniforms.uMapCoord = uv.mapCoord.toArray(true);\r\n            shader.uniforms.uClampFrame = uv.uClampFrame;\r\n            shader.uniforms.uClampOffset = uv.uClampOffset;\r\n        }\r\n\r\n        shader.uniforms.uTransform = tempMat.toArray(true);\r\n        shader.uniforms.uColor = premultiplyTintToRgba(ts.tint, ts.worldAlpha,\r\n            shader.uniforms.uColor, baseTex.premultiplyAlpha);\r\n        shader.uniforms.translationMatrix = ts.worldTransform.toArray(true);\r\n        shader.uniforms.uSampler = tex;\r\n\r\n        renderer.shader.bind(shader, false);\r\n        renderer.geometry.bind(quad as any, undefined);// , renderer.shader.getGLShader());\r\n\r\n        renderer.state.setBlendMode(correctBlendMode(ts.blendMode, baseTex.premultiplyAlpha));\r\n        renderer.geometry.draw(DRAW_MODES.TRIANGLES, 6, 0);\r\n    }\r\n}\r\n","/* eslint-disable no-mixed-operators */\r\nimport { Matrix2d } from './Matrix2d';\r\nimport { IPointData, Matrix, ObservablePoint, Point, Rectangle, Transform } from '@pixi/math';\r\nimport { Sprite } from '@pixi/sprite';\r\nimport { LinearProjection } from '../base';\r\nimport { getIntersectionFactor } from '../utils';\r\n\r\nconst t0 = new Point();\r\nconst tt = [new Point(), new Point(), new Point(), new Point()];\r\nconst tempRect = new Rectangle();\r\nconst tempMat = new Matrix2d();\r\n\r\nexport class Projection2d extends LinearProjection<Matrix2d>\r\n{\r\n    constructor(legacy: Transform, enable?: boolean)\r\n    {\r\n        super(legacy, enable);\r\n        this.local = new Matrix2d();\r\n        this.world = new Matrix2d();\r\n    }\r\n\r\n    matrix = new Matrix2d();\r\n    pivot = new ObservablePoint(this.onChange, this, 0, 0);\r\n\r\n    reverseLocalOrder = false;\r\n\r\n    onChange(): void\r\n    {\r\n        const pivot = this.pivot;\r\n        const mat3 = this.matrix.mat3;\r\n\r\n        mat3[6] = -(pivot._x * mat3[0] + pivot._y * mat3[3]);\r\n        mat3[7] = -(pivot._x * mat3[1] + pivot._y * mat3[4]);\r\n\r\n        this._projID++;\r\n    }\r\n\r\n    setAxisX(p: IPointData, factor = 1): void\r\n    {\r\n        const x = p.x; const\r\n            y = p.y;\r\n        const d = Math.sqrt(x * x + y * y);\r\n        const mat3 = this.matrix.mat3;\r\n\r\n        mat3[0] = x / d;\r\n        mat3[1] = y / d;\r\n        mat3[2] = factor / d;\r\n\r\n        this.onChange();\r\n    }\r\n\r\n    setAxisY(p: IPointData, factor = 1): void\r\n    {\r\n        const x = p.x; const\r\n            y = p.y;\r\n        const d = Math.sqrt(x * x + y * y);\r\n        const mat3 = this.matrix.mat3;\r\n\r\n        mat3[3] = x / d;\r\n        mat3[4] = y / d;\r\n        mat3[5] = factor / d;\r\n        this.onChange();\r\n    }\r\n\r\n    mapSprite(sprite: Sprite, quad: Array<IPointData>): void\r\n    {\r\n        const tex = sprite.texture;\r\n\r\n        tempRect.x = -sprite.anchor.x * tex.orig.width;\r\n        tempRect.y = -sprite.anchor.y * tex.orig.height;\r\n        tempRect.width = tex.orig.width;\r\n        tempRect.height = tex.orig.height;\r\n\r\n        this.mapQuad(tempRect, quad);\r\n    }\r\n\r\n    mapQuad(rect: Rectangle, p: Array<IPointData>): void\r\n    {\r\n        // utils.getPositionFromQuad(p, anchor, t0);\r\n        tt[0].set(rect.x, rect.y);\r\n        tt[1].set(rect.x + rect.width, rect.y);\r\n        tt[2].set(rect.x + rect.width, rect.y + rect.height);\r\n        tt[3].set(rect.x, rect.y + rect.height);\r\n\r\n        let k1 = 1; let k2 = 2;\r\n        let k3 = 3;\r\n        const f = getIntersectionFactor(p[0], p[2], p[1], p[3], t0);\r\n\r\n        if (f !== 0)\r\n        {\r\n            k1 = 1;\r\n            k2 = 3;\r\n            k3 = 2;\r\n        }\r\n        else\r\n        {\r\n            return;\r\n            /* f = utils.getIntersectionFactor(p[0], p[1], p[2], p[3], t0);\r\n            if (f > 0) {\r\n                k1 = 2;\r\n                k2 = 3;\r\n                k3 = 1;\r\n            } else {\r\n                f = utils.getIntersectionFactor(p[0], p[3], p[1], p[2], t0);\r\n                if (f > 0) {\r\n                    // cant find it :(\r\n                    k1 = 1;\r\n                    k2 = 2;\r\n                    k3 = 3;\r\n                } else {\r\n                    return;\r\n                }\r\n            }*/\r\n        }\r\n        const d0 = Math.sqrt((p[0].x - t0.x) * (p[0].x - t0.x) + (p[0].y - t0.y) * (p[0].y - t0.y));\r\n        const d1 = Math.sqrt((p[k1].x - t0.x) * (p[k1].x - t0.x) + (p[k1].y - t0.y) * (p[k1].y - t0.y));\r\n        const d2 = Math.sqrt((p[k2].x - t0.x) * (p[k2].x - t0.x) + (p[k2].y - t0.y) * (p[k2].y - t0.y));\r\n        const d3 = Math.sqrt((p[k3].x - t0.x) * (p[k3].x - t0.x) + (p[k3].y - t0.y) * (p[k3].y - t0.y));\r\n\r\n        const q0 = (d0 + d3) / d3;\r\n        const q1 = (d1 + d2) / d2;\r\n        const q2 = (d1 + d2) / d1;\r\n\r\n        let mat3 = this.matrix.mat3;\r\n\r\n        mat3[0] = tt[0].x * q0;\r\n        mat3[1] = tt[0].y * q0;\r\n        mat3[2] = q0;\r\n        mat3[3] = tt[k1].x * q1;\r\n        mat3[4] = tt[k1].y * q1;\r\n        mat3[5] = q1;\r\n        mat3[6] = tt[k2].x * q2;\r\n        mat3[7] = tt[k2].y * q2;\r\n        mat3[8] = q2;\r\n        this.matrix.invert();\r\n\r\n        mat3 = tempMat.mat3;\r\n        mat3[0] = p[0].x;\r\n        mat3[1] = p[0].y;\r\n        mat3[2] = 1;\r\n        mat3[3] = p[k1].x;\r\n        mat3[4] = p[k1].y;\r\n        mat3[5] = 1;\r\n        mat3[6] = p[k2].x;\r\n        mat3[7] = p[k2].y;\r\n        mat3[8] = 1;\r\n\r\n        this.matrix.setToMult(tempMat, this.matrix);\r\n        this._projID++;\r\n    }\r\n\r\n    updateLocalTransform(lt: Matrix): void\r\n    {\r\n        if (this._projID !== 0)\r\n        {\r\n            if (this.reverseLocalOrder)\r\n            {\r\n                // tilingSprite inside order\r\n                this.local.setToMultLegacy2(this.matrix, lt);\r\n            }\r\n            else\r\n            {\r\n                // good order\r\n                this.local.setToMultLegacy(lt, this.matrix);\r\n            }\r\n        }\r\n        else\r\n        {\r\n            this.local.copyFrom(lt);\r\n        }\r\n    }\r\n\r\n    clear(): void\r\n    {\r\n        super.clear();\r\n        this.matrix.identity();\r\n        this.pivot.set(0, 0);\r\n    }\r\n}\r\n","import { Projection2d } from './Projection2d';\r\nimport { Container, DisplayObject } from '@pixi/display';\r\nimport { IPointData, Matrix, Point } from '@pixi/math';\r\nimport { TRANSFORM_STEP } from '../base';\r\n\r\nexport function container2dWorldTransform(): Matrix\r\n{\r\n    return this.proj.affine ? this.transform.worldTransform : this.proj.world as any;\r\n}\r\n\r\nexport class Container2d extends Container\r\n{\r\n    constructor()\r\n    {\r\n        super();\r\n        this.proj = new Projection2d(this.transform);\r\n    }\r\n\r\n    proj: Projection2d;\r\n\r\n    toLocal<P extends IPointData = Point>(position: IPointData, from?: DisplayObject, point?: P, skipUpdate?: boolean,\r\n        step = TRANSFORM_STEP.ALL): P\r\n    {\r\n        if (from)\r\n        {\r\n            position = from.toGlobal(position, point, skipUpdate);\r\n        }\r\n\r\n        if (!skipUpdate)\r\n        {\r\n            this._recursivePostUpdateTransform();\r\n        }\r\n\r\n        if (step >= TRANSFORM_STEP.PROJ)\r\n        {\r\n            if (!skipUpdate)\r\n            {\r\n                this.displayObjectUpdateTransform();\r\n            }\r\n            if (this.proj.affine)\r\n            {\r\n                return this.transform.worldTransform.applyInverse(position, point) as any;\r\n            }\r\n\r\n            return this.proj.world.applyInverse(position, point) as any;\r\n        }\r\n\r\n        if (this.parent)\r\n        {\r\n            point = this.parent.worldTransform.applyInverse(position, point) as any;\r\n        }\r\n        else\r\n        {\r\n            point.x = position.x;\r\n            point.y = position.y;\r\n        }\r\n        if (step === TRANSFORM_STEP.NONE)\r\n        {\r\n            return point;\r\n        }\r\n\r\n        return this.transform.localTransform.applyInverse(point, point) as any;\r\n    }\r\n\r\n    get worldTransform(): Matrix\r\n    {\r\n        return this.proj.affine ? this.transform.worldTransform : this.proj.world as any;\r\n    }\r\n}\r\n\r\nexport const container2dToLocal = Container2d.prototype.toLocal;\r\n","import { Mesh, MeshGeometry, MeshMaterial } from '@pixi/mesh';\r\nimport { Geometry, Program, Renderer, State, Texture } from '@pixi/core';\r\nimport { Projection2d } from '../Projection2d';\r\nimport { IPointData, Matrix } from '@pixi/math';\r\nimport { DisplayObject } from '@pixi/display';\r\nimport { TRANSFORM_STEP } from '../../base';\r\nimport { container2dToLocal } from '../Container2d';\r\n\r\nexport class Mesh2d extends Mesh\r\n{\r\n    static defaultVertexShader\r\n        = `precision highp float;\r\nattribute vec2 aVertexPosition;\r\nattribute vec2 aTextureCoord;\r\n\r\nuniform mat3 projectionMatrix;\r\nuniform mat3 translationMatrix;\r\nuniform mat3 uTextureMatrix;\r\n\r\nvarying vec2 vTextureCoord;\r\n\r\nvoid main(void)\r\n{\r\ngl_Position.xyw = projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0);\r\ngl_Position.z = 0.0;\r\n\r\nvTextureCoord = (uTextureMatrix * vec3(aTextureCoord, 1.0)).xy;\r\n}\r\n`;\r\n    static defaultFragmentShader = `\r\nvarying vec2 vTextureCoord;\r\nuniform vec4 uColor;\r\n\r\nuniform sampler2D uSampler;\r\n\r\nvoid main(void)\r\n{\r\ngl_FragColor = texture2D(uSampler, vTextureCoord) * uColor;\r\n}`;\r\n    constructor(geometry: Geometry, shader: MeshMaterial, state: State, drawMode?: number)\r\n    {\r\n        super(geometry, shader, state, drawMode);\r\n        this.proj = new Projection2d(this.transform);\r\n    }\r\n\r\n    vertexData2d: Float32Array = null;\r\n    proj: Projection2d;\r\n\r\n    calculateVertices(): void\r\n    {\r\n        if (this.proj._affine)\r\n        {\r\n            this.vertexData2d = null;\r\n            super.calculateVertices();\r\n\r\n            return;\r\n        }\r\n\r\n        const geometry = this.geometry as any;\r\n        const vertices = geometry.buffers[0].data;\r\n        const thisAny = this as any;\r\n\r\n        if (geometry.vertexDirtyId === thisAny.vertexDirty && thisAny._transformID === thisAny.transform._worldID)\r\n        {\r\n            return;\r\n        }\r\n\r\n        thisAny._transformID = thisAny.transform._worldID;\r\n\r\n        if (thisAny.vertexData.length !== vertices.length)\r\n        {\r\n            thisAny.vertexData = new Float32Array(vertices.length);\r\n        }\r\n\r\n        if (!this.vertexData2d || this.vertexData2d.length !== vertices.length * 3 / 2)\r\n        {\r\n            this.vertexData2d = new Float32Array(vertices.length * 3);\r\n        }\r\n\r\n        const wt = this.proj.world.mat3;\r\n\r\n        const vertexData2d = this.vertexData2d;\r\n        const vertexData = thisAny.vertexData;\r\n\r\n        for (let i = 0; i < vertexData.length / 2; i++)\r\n        {\r\n            const x = vertices[(i * 2)];\r\n            const y = vertices[(i * 2) + 1];\r\n\r\n            const xx = (wt[0] * x) + (wt[3] * y) + wt[6];\r\n            const yy = (wt[1] * x) + (wt[4] * y) + wt[7];\r\n            const ww = (wt[2] * x) + (wt[5] * y) + wt[8];\r\n\r\n            vertexData2d[i * 3] = xx;\r\n            vertexData2d[(i * 3) + 1] = yy;\r\n            vertexData2d[(i * 3) + 2] = ww;\r\n\r\n            vertexData[(i * 2)] = xx / ww;\r\n            vertexData[(i * 2) + 1] = yy / ww;\r\n        }\r\n\r\n        thisAny.vertexDirty = geometry.vertexDirtyId;\r\n    }\r\n\r\n    _renderDefault(renderer: Renderer): void\r\n    {\r\n        const shader = this.shader as MeshMaterial;\r\n\r\n        shader.alpha = this.worldAlpha;\r\n        if (shader.update)\r\n        {\r\n            shader.update();\r\n        }\r\n\r\n        renderer.batch.flush();\r\n\r\n        if ((shader as any).program.uniformData?.translationMatrix)\r\n        {\r\n            shader.uniforms.translationMatrix = this.worldTransform.toArray(true);\r\n        }\r\n\r\n        // bind and sync uniforms..\r\n        renderer.shader.bind(shader, false);\r\n\r\n        // set state..\r\n        renderer.state.set(this.state);\r\n\r\n        // bind the geometry...\r\n        renderer.geometry.bind(this.geometry, shader);\r\n\r\n        // then render it\r\n        renderer.geometry.draw(this.drawMode, this.size, this.start, (this.geometry as any).instanceCount);\r\n    }\r\n\r\n    toLocal<T extends IPointData>(position: IPointData, from?: DisplayObject,\r\n        point?: T, skipUpdate?: boolean,\r\n        step = TRANSFORM_STEP.ALL): T\r\n    {\r\n        return container2dToLocal.call(this, position, from, point, skipUpdate, step);\r\n    }\r\n\r\n    get worldTransform(): Matrix\r\n    {\r\n        return this.proj.affine ? this.transform.worldTransform : this.proj.world as any;\r\n    }\r\n}\r\n\r\nexport class SimpleMesh2d extends Mesh2d\r\n{\r\n    constructor(texture: Texture, vertices?: Float32Array, uvs?: Float32Array,\r\n        indices?: Uint16Array, drawMode?: number)\r\n    {\r\n        super(new MeshGeometry(vertices, uvs, indices),\r\n            new MeshMaterial(texture, {\r\n                program: Program.from(Mesh2d.defaultVertexShader, Mesh2d.defaultFragmentShader),\r\n                pluginName: 'batch2d'\r\n            }),\r\n            null,\r\n            drawMode);\r\n\r\n        (this.geometry.getBuffer('aVertexPosition') as any).static = false;\r\n    }\r\n\r\n    autoUpdate = true;\r\n\r\n    get vertices(): Float32Array\r\n    {\r\n        return this.geometry.getBuffer('aVertexPosition').data as Float32Array;\r\n    }\r\n    set vertices(value: Float32Array)\r\n    {\r\n        this.geometry.getBuffer('aVertexPosition').data = value;\r\n    }\r\n\r\n    protected _render(renderer?: Renderer): void\r\n    {\r\n        if (this.autoUpdate)\r\n        {\r\n            this.geometry.getBuffer('aVertexPosition').update();\r\n        }\r\n\r\n        (super._render as any)(renderer);\r\n    }\r\n}\r\n","/* eslint-disable no-mixed-operators */\r\nimport { Sprite } from '@pixi/sprite';\r\nimport { Texture } from '@pixi/core';\r\nimport { Projection2d } from '../Projection2d';\r\nimport { IPointData, Matrix, Point } from '@pixi/math';\r\nimport { DisplayObject } from '@pixi/display';\r\nimport { TRANSFORM_STEP } from '../../base';\r\nimport { container2dToLocal } from '../Container2d';\r\n\r\nexport class Sprite2d extends Sprite\r\n{\r\n    constructor(texture: Texture)\r\n    {\r\n        super(texture);\r\n        this.proj = new Projection2d(this.transform);\r\n        this.pluginName = 'batch2d';\r\n    }\r\n\r\n    vertexData2d: Float32Array = null;\r\n    proj: Projection2d;\r\n\r\n    _calculateBounds(): void\r\n    {\r\n        this.calculateTrimmedVertices();\r\n        this._bounds.addQuad((this as any).vertexTrimmedData);\r\n    }\r\n\r\n    calculateVertices(): void\r\n    {\r\n        const texture = this._texture;\r\n        const thisAny = this as any;\r\n\r\n        if (this.proj._affine)\r\n        {\r\n            this.vertexData2d = null;\r\n            super.calculateVertices();\r\n\r\n            return;\r\n        }\r\n        if (!this.vertexData2d)\r\n        {\r\n            this.vertexData2d = new Float32Array(12);\r\n        }\r\n\r\n        const wid = (this.transform as any)._worldID;\r\n        const tuid = (texture as any)._updateID;\r\n\r\n        if (thisAny._transformID === wid && this._textureID === tuid)\r\n        {\r\n            return;\r\n        }\r\n        // update texture UV here, because base texture can be changed without calling `_onTextureUpdate`\r\n        if (this._textureID !== tuid)\r\n        {\r\n            (this as any).uvs = (texture as any)._uvs.uvsFloat32;\r\n        }\r\n\r\n        thisAny._transformID = wid;\r\n        this._textureID = tuid;\r\n\r\n        const wt = this.proj.world.mat3;\r\n        const vertexData2d = this.vertexData2d;\r\n        const vertexData = this.vertexData;\r\n        const trim = texture.trim;\r\n        const orig = texture.orig;\r\n        const anchor = this._anchor;\r\n\r\n        let w0: number;\r\n        let w1: number;\r\n        let h0: number;\r\n        let h1: number;\r\n\r\n        if (trim)\r\n        {\r\n            w1 = trim.x - (anchor._x * orig.width);\r\n            w0 = w1 + trim.width;\r\n\r\n            h1 = trim.y - (anchor._y * orig.height);\r\n            h0 = h1 + trim.height;\r\n        }\r\n        else\r\n        {\r\n            w1 = -anchor._x * orig.width;\r\n            w0 = w1 + orig.width;\r\n\r\n            h1 = -anchor._y * orig.height;\r\n            h0 = h1 + orig.height;\r\n        }\r\n\r\n        vertexData2d[0] = (wt[0] * w1) + (wt[3] * h1) + wt[6];\r\n        vertexData2d[1] = (wt[1] * w1) + (wt[4] * h1) + wt[7];\r\n        vertexData2d[2] = (wt[2] * w1) + (wt[5] * h1) + wt[8];\r\n\r\n        vertexData2d[3] = (wt[0] * w0) + (wt[3] * h1) + wt[6];\r\n        vertexData2d[4] = (wt[1] * w0) + (wt[4] * h1) + wt[7];\r\n        vertexData2d[5] = (wt[2] * w0) + (wt[5] * h1) + wt[8];\r\n\r\n        vertexData2d[6] = (wt[0] * w0) + (wt[3] * h0) + wt[6];\r\n        vertexData2d[7] = (wt[1] * w0) + (wt[4] * h0) + wt[7];\r\n        vertexData2d[8] = (wt[2] * w0) + (wt[5] * h0) + wt[8];\r\n\r\n        vertexData2d[9] = (wt[0] * w1) + (wt[3] * h0) + wt[6];\r\n        vertexData2d[10] = (wt[1] * w1) + (wt[4] * h0) + wt[7];\r\n        vertexData2d[11] = (wt[2] * w1) + (wt[5] * h0) + wt[8];\r\n\r\n        vertexData[0] = vertexData2d[0] / vertexData2d[2];\r\n        vertexData[1] = vertexData2d[1] / vertexData2d[2];\r\n\r\n        vertexData[2] = vertexData2d[3] / vertexData2d[5];\r\n        vertexData[3] = vertexData2d[4] / vertexData2d[5];\r\n\r\n        vertexData[4] = vertexData2d[6] / vertexData2d[8];\r\n        vertexData[5] = vertexData2d[7] / vertexData2d[8];\r\n\r\n        vertexData[6] = vertexData2d[9] / vertexData2d[11];\r\n        vertexData[7] = vertexData2d[10] / vertexData2d[11];\r\n    }\r\n\r\n    calculateTrimmedVertices(): void\r\n    {\r\n        if (this.proj._affine)\r\n        {\r\n            super.calculateTrimmedVertices();\r\n\r\n            return;\r\n        }\r\n\r\n        const wid = (this.transform as any)._worldID;\r\n        const tuid = (this._texture as any)._updateID;\r\n        const thisAny = this as any;\r\n\r\n        if (!thisAny.vertexTrimmedData)\r\n        {\r\n            thisAny.vertexTrimmedData = new Float32Array(8);\r\n        }\r\n        else if (thisAny._transformTrimmedID === wid && this._textureTrimmedID === tuid)\r\n        {\r\n            return;\r\n        }\r\n\r\n        thisAny._transformTrimmedID = wid;\r\n        this._textureTrimmedID = tuid;\r\n\r\n        // lets do some special trim code!\r\n        const texture = this._texture;\r\n        const vertexData = thisAny.vertexTrimmedData;\r\n        const orig = texture.orig;\r\n        const w = (this as any).tileProj ? this._width : orig.width;\r\n        const h = (this as any).tileProj ? this._height : orig.height;\r\n        const anchor = this._anchor;\r\n\r\n        // lets calculate the new untrimmed bounds..\r\n        const wt = this.proj.world.mat3;\r\n\r\n        const w1 = -anchor._x * w;\r\n        const w0 = w1 + w;\r\n\r\n        const h1 = -anchor._y * h;\r\n        const h0 = h1 + h;\r\n\r\n        let z = 1.0 / (wt[2] * w1 + wt[5] * h1 + wt[8]);\r\n\r\n        vertexData[0] = z * ((wt[0] * w1) + (wt[3] * h1) + wt[6]);\r\n        vertexData[1] = z * ((wt[1] * w1) + (wt[4] * h1) + wt[7]);\r\n\r\n        z = 1.0 / (wt[2] * w0 + wt[5] * h1 + wt[8]);\r\n        vertexData[2] = z * ((wt[0] * w0) + (wt[3] * h1) + wt[6]);\r\n        vertexData[3] = z * ((wt[1] * w0) + (wt[4] * h1) + wt[7]);\r\n\r\n        z = 1.0 / (wt[2] * w0 + wt[5] * h0 + wt[8]);\r\n        vertexData[4] = z * ((wt[0] * w0) + (wt[3] * h0) + wt[6]);\r\n        vertexData[5] = z * ((wt[1] * w0) + (wt[4] * h0) + wt[7]);\r\n\r\n        z = 1.0 / (wt[2] * w1 + wt[5] * h0 + wt[8]);\r\n        vertexData[6] = z * ((wt[0] * w1) + (wt[3] * h0) + wt[6]);\r\n        vertexData[7] = z * ((wt[1] * w1) + (wt[4] * h0) + wt[7]);\r\n    }\r\n\r\n    toLocal<P extends IPointData = Point>(position: IPointData, from?: DisplayObject, point?: P, skipUpdate?: boolean,\r\n        step = TRANSFORM_STEP.ALL): P\r\n    {\r\n        return container2dToLocal.call(this, position, from, point, skipUpdate, step);\r\n    }\r\n\r\n    get worldTransform(): Matrix\r\n    {\r\n        return this.proj.affine ? this.transform.worldTransform : this.proj.world as any;\r\n    }\r\n}\r\n","import { Renderer, Texture } from '@pixi/core';\r\nimport { IPointData, Matrix, Point, Transform } from '@pixi/math';\r\nimport { Projection2d } from '../Projection2d';\r\nimport { DisplayObject } from '@pixi/display';\r\nimport { TRANSFORM_STEP } from '../../base';\r\nimport { container2dToLocal } from '../Container2d';\r\nimport { TilingSprite } from '@pixi/sprite-tiling';\r\n\r\nconst tempTransform = new Transform();\r\n\r\nexport class TilingSprite2d extends TilingSprite\r\n{\r\n    constructor(texture: Texture, width: number, height: number)\r\n    {\r\n        super(texture, width, height);\r\n\r\n        this.tileProj = new Projection2d(this.tileTransform);\r\n        this.tileProj.reverseLocalOrder = true;\r\n        this.proj = new Projection2d(this.transform);\r\n\r\n        this.pluginName = 'tilingSprite2d';\r\n        this.uvRespectAnchor = true;\r\n    }\r\n\r\n    tileProj: Projection2d;\r\n    proj: Projection2d;\r\n\r\n    get worldTransform(): Matrix\r\n    {\r\n        return this.proj.affine ? this.transform.worldTransform : this.proj.world as any;\r\n    }\r\n\r\n    toLocal<P extends IPointData = Point>(position: IPointData, from?: DisplayObject, point?: P, skipUpdate?: boolean,\r\n        step = TRANSFORM_STEP.ALL): P\r\n    {\r\n        return container2dToLocal.call(this, position, from, point, skipUpdate, step);\r\n    }\r\n\r\n    _render(renderer: Renderer): void\r\n    {\r\n        // tweak our texture temporarily..\r\n        const texture = this._texture;\r\n\r\n        if (!texture || !texture.valid)\r\n        {\r\n            return;\r\n        }\r\n\r\n        // changed\r\n        this.tileTransform.updateTransform(tempTransform);\r\n        this.uvMatrix.update();\r\n\r\n        renderer.batch.setObjectRenderer((renderer.plugins as any)[this.pluginName]);\r\n        (renderer.plugins as any)[this.pluginName].render(this);\r\n    }\r\n}\r\n","import { Projection2d } from '../Projection2d';\r\nimport { Container2d, container2dWorldTransform } from '../Container2d';\r\nimport { TilingSprite } from '@pixi/sprite-tiling';\r\nimport { Program } from '@pixi/core';\r\nimport { MeshMaterial } from '@pixi/mesh';\r\nimport { Mesh2d } from '../mesh/Mesh2d';\r\nimport { SimpleMesh, SimpleRope } from '@pixi/mesh-extras';\r\nimport { Container } from '@pixi/display';\r\nimport { Sprite } from '@pixi/sprite';\r\nimport { Sprite2d } from './Sprite2d';\r\nimport { TilingSprite2d } from '../tiling/TilingSprite2d';\r\n\r\nfunction convertTo2d()\r\n{\r\n    if (this.proj) return;\r\n    this.proj = new Projection2d(this.transform);\r\n    this.toLocal = Container2d.prototype.toLocal;\r\n    Object.defineProperty(this, 'worldTransform', {\r\n        get: container2dWorldTransform,\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n}\r\n\r\nContainer.prototype.convertTo2d = convertTo2d;\r\n\r\nSprite.prototype.convertTo2d = function spriteConvertTo2d()\r\n{\r\n    if (this.proj) return;\r\n    this.calculateVertices = Sprite2d.prototype.calculateVertices;\r\n    this.calculateTrimmedVertices = Sprite2d.prototype.calculateTrimmedVertices;\r\n    this._calculateBounds = Sprite2d.prototype._calculateBounds;\r\n    this.pluginName = 'batch2d';\r\n    convertTo2d.call(this);\r\n};\r\n\r\nContainer.prototype.convertSubtreeTo2d = function convertSubtreeTo2d()\r\n{\r\n    this.convertTo2d();\r\n    for (let i = 0; i < this.children.length; i++)\r\n    {\r\n        this.children[i].convertSubtreeTo2d();\r\n    }\r\n};\r\n\r\nSimpleMesh.prototype.convertTo2d\r\n    = SimpleRope.prototype.convertTo2d\r\n        = function meshConvertTo2d()\r\n        {\r\n            if (this.proj) return;\r\n            this.calculateVertices = Mesh2d.prototype.calculateVertices;\r\n            this._renderDefault = Mesh2d.prototype._renderDefault;\r\n            if (this.material.pluginName !== 'batch2d')\r\n            {\r\n                this.material = new MeshMaterial(this.material.texture, {\r\n                    program: Program.from(Mesh2d.defaultVertexShader, Mesh2d.defaultFragmentShader),\r\n                    pluginName: 'batch2d'\r\n                });\r\n            }\r\n            convertTo2d.call(this);\r\n        };\r\n\r\nTilingSprite.prototype.convertTo2d = function tilingConvertTo2d()\r\n{\r\n    if (this.proj) return;\r\n\r\n    this.tileProj = new Projection2d(this.tileTransform);\r\n    this.tileProj.reverseLocalOrder = true;\r\n    this.uvRespectAnchor = true;\r\n\r\n    this.calculateTrimmedVertices = Sprite2d.prototype.calculateTrimmedVertices;\r\n    this._calculateBounds = Sprite2d.prototype._calculateBounds;\r\n    this._render = TilingSprite2d.prototype._render;\r\n\r\n    this.pluginName = 'tilingSprite2d';\r\n    convertTo2d.call(this);\r\n};\r\n","import { Text, TextStyle } from '@pixi/text';\r\nimport { Projection2d } from '../Projection2d';\r\nimport { Sprite2d } from './Sprite2d';\r\nimport { Matrix } from '@pixi/math';\r\n\r\nexport class Text2d extends Text\r\n{\r\n    constructor(text?: string, style?: TextStyle, canvas?: HTMLCanvasElement)\r\n    {\r\n        super(text, style, canvas);\r\n        this.proj = new Projection2d(this.transform);\r\n        this.pluginName = 'batch2d';\r\n    }\r\n\r\n    proj: Projection2d;\r\n    vertexData2d: Float32Array = null;\r\n\r\n    get worldTransform(): Matrix\r\n    {\r\n        return this.proj.affine ? this.transform.worldTransform : this.proj.world as any;\r\n    }\r\n}\r\n\r\nText2d.prototype.calculateVertices = Sprite2d.prototype.calculateVertices;\r\nText2d.prototype.calculateTrimmedVertices = Sprite2d.prototype.calculateTrimmedVertices;\r\n(Text2d.prototype as any)._calculateBounds = Sprite2d.prototype._calculateBounds;\r\n","import { Sprite } from '@pixi/sprite';\r\nimport { Matrix2d } from '../Matrix2d';\r\nimport { Filter, FilterSystem, RenderTexture, TextureMatrix } from '@pixi/core';\r\nimport { Projection2d } from '../Projection2d';\r\n\r\nconst spriteMaskVert = `\r\nattribute vec2 aVertexPosition;\r\nattribute vec2 aTextureCoord;\r\n\r\nuniform mat3 projectionMatrix;\r\nuniform mat3 otherMatrix;\r\n\r\nvarying vec3 vMaskCoord;\r\nvarying vec2 vTextureCoord;\r\n\r\nvoid main(void)\r\n{\r\ngl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\r\n\r\nvTextureCoord = aTextureCoord;\r\nvMaskCoord = otherMatrix * vec3( aTextureCoord, 1.0);\r\n}\r\n`;\r\nconst spriteMaskFrag = `\r\nvarying vec3 vMaskCoord;\r\nvarying vec2 vTextureCoord;\r\n\r\nuniform sampler2D uSampler;\r\nuniform sampler2D mask;\r\nuniform float alpha;\r\nuniform vec4 maskClamp;\r\n\r\nvoid main(void)\r\n{\r\nvec2 uv = vMaskCoord.xy / vMaskCoord.z;\r\n\r\nfloat clip = step(3.5,\r\n    step(maskClamp.x, uv.x) +\r\n    step(maskClamp.y, uv.y) +\r\n    step(uv.x, maskClamp.z) +\r\n    step(uv.y, maskClamp.w));\r\n\r\nvec4 original = texture2D(uSampler, vTextureCoord);\r\nvec4 masky = texture2D(mask, uv);\r\n\r\noriginal *= (masky.r * masky.a * alpha * clip);\r\n\r\ngl_FragColor = original;\r\n}\r\n`;\r\n\r\nconst tempMat = new Matrix2d();\r\n\r\nexport class SpriteMaskFilter2d extends Filter\r\n{\r\n    constructor(sprite: Sprite)\r\n    {\r\n        super(spriteMaskVert, spriteMaskFrag);\r\n\r\n        sprite.renderable = false;\r\n\r\n        this.maskSprite = sprite;\r\n    }\r\n\r\n    maskSprite: Sprite;\r\n    maskMatrix = new Matrix2d();\r\n\r\n    apply(filterManager: FilterSystem, input: RenderTexture, output: RenderTexture,\r\n        clearMode?: number): void\r\n    {\r\n        const maskSprite = this.maskSprite;\r\n        const tex = this.maskSprite.texture;\r\n\r\n        if (!tex.valid)\r\n        {\r\n            return;\r\n        }\r\n        if (!tex.uvMatrix)\r\n        {\r\n            // margin = 0.0, let it bleed a bit, shader code becomes easier\r\n            // assuming that atlas textures were made with 1-pixel padding\r\n            tex.uvMatrix = new TextureMatrix(tex, 0.0);\r\n        }\r\n        tex.uvMatrix.update();\r\n\r\n        this.uniforms.npmAlpha = tex.baseTexture.alphaMode ? 0.0 : 1.0;\r\n        this.uniforms.mask = maskSprite.texture;\r\n        this.uniforms.otherMatrix = SpriteMaskFilter2d.calculateSpriteMatrix(input, this.maskMatrix, maskSprite)\r\n            .prepend(tex.uvMatrix.mapCoord);\r\n        this.uniforms.alpha = maskSprite.worldAlpha;\r\n        this.uniforms.maskClamp = tex.uvMatrix.uClampFrame;\r\n\r\n        filterManager.applyFilter(this, input, output, clearMode);\r\n    }\r\n\r\n    static calculateSpriteMatrix(input: RenderTexture, mappedMatrix: Matrix2d, sprite: Sprite): Matrix2d\r\n    {\r\n        const proj = (sprite as any).proj as Projection2d;\r\n\r\n        const filterArea = (input as any).filterFrame;\r\n\r\n        // eslint-disable-next-line max-len\r\n        const worldTransform = proj && !proj._affine ? proj.world.copyTo2dOr3d(tempMat) : tempMat.copyFrom(sprite.transform.worldTransform);\r\n        const texture = sprite.texture.orig;\r\n\r\n        mappedMatrix.set(input.width, 0, 0, input.height, filterArea.x, filterArea.y);\r\n        worldTransform.invert();\r\n        mappedMatrix.setToMult(worldTransform, mappedMatrix);\r\n        mappedMatrix.scaleAndTranslate(1.0 / texture.width, 1.0 / texture.height,\r\n            sprite.anchor.x, sprite.anchor.y);\r\n\r\n        return mappedMatrix;\r\n    }\r\n}\r\n","import { MaskData, MaskSystem } from '@pixi/core';\r\nimport type { Sprite } from '@pixi/sprite';\r\nimport { SpriteMaskFilter2d } from './SpriteMaskFilter';\r\n\r\nconst oldPushSpriteMask = MaskSystem.prototype.pushSpriteMask;\r\n\r\nfunction pushSpriteMaskOverride(maskData: MaskData): void\n{\r\n    const { maskObject } = maskData;\r\n    const origFilter = maskData._filters;\r\n\n    if (!origFilter)\n    {\r\n        let alphaMaskFilter = this.alphaMaskPool[this.alphaMaskIndex];\r\n\n        if (!alphaMaskFilter)\r\n        {\r\n            alphaMaskFilter = this.alphaMaskPool[this.alphaMaskIndex] = [new SpriteMaskFilter2d(maskObject as Sprite)];\r\n        }\r\n        maskData._filters = alphaMaskFilter;\r\n    }\r\n    oldPushSpriteMask.call(this, maskData);\r\n    if (!origFilter)\n    {\r\n        maskData._filters = null;\r\n    }\r\n}\r\n\r\nexport function patchSpriteMask()\n{\r\n    MaskSystem.prototype.pushSpriteMask = pushSpriteMaskOverride;\r\n}\r\n","import { extensions } from '@pixi/core';\r\nimport { TilingSprite2dRenderer } from './tiling/TilingSprite2dRenderer';\r\n\r\nexport * from './Matrix2d';\r\nexport * from './Projection2d';\r\nexport * from './Container2d';\r\n\r\nexport * from './sprites/convert';\r\nexport * from './sprites/Sprite2d';\r\nexport * from './sprites/Text2d';\r\n\r\nexport * from './tiling/TilingSprite2d';\r\nexport * from './tiling/TilingSprite2dRenderer';\r\n\r\nexport * from './z_masks/MaskHacker';\r\nexport * from './z_masks/SpriteMaskFilter';\r\n\r\nexport * from './mesh/Mesh2d';\r\n\r\nextensions.add(TilingSprite2dRenderer);\r\n","import { IPoint, IPointData, ObservablePoint, Point } from '@pixi/math';\r\n\r\nexport class Point3d extends Point\r\n{\r\n    // TODO: pixi 6.1.0 global mixin\r\n    z: number;\r\n    constructor(x?: number, y?: number, z?: number)\r\n    {\r\n        super(x, y);\r\n        this.z = z;\r\n    }\r\n\r\n    set(x?: number, y?: number, z?: number): this\r\n    {\r\n        this.x = x || 0;\r\n        this.y = (y === undefined) ? this.x : (y || 0);\r\n        this.z = (y === undefined) ? this.x : (z || 0);\r\n\r\n        return this;\r\n    }\r\n\r\n    copyFrom(p: IPointData): this\r\n    {\r\n        // TODO: pixi 6.1.0 global mixin\r\n        this.set(p.x, p.y, (p as any).z || 0);\r\n\r\n        return this;\r\n    }\r\n\r\n    copyTo<T extends IPoint>(p: T): T\r\n    {\r\n        (p as any).set(this.x, this.y, this.z);\r\n\r\n        return p;\r\n    }\r\n}\r\n\r\nexport class ObservablePoint3d extends ObservablePoint\r\n{\r\n    _z = 0;\r\n\r\n    get z(): number\r\n    {\r\n        return this._z;\r\n    }\r\n\r\n    set z(value: number)\r\n    {\r\n        if (this._z !== value)\r\n        {\r\n            this._z = value;\r\n            this.cb.call(this.scope);\r\n        }\r\n    }\r\n\r\n    set(x?: number, y?: number, z?: number): this\r\n    {\r\n        const _x = x || 0;\r\n        const _y = (y === undefined) ? _x : (y || 0);\r\n        const _z = (y === undefined) ? _x : (z || 0);\r\n\r\n        if (this._x !== _x || this._y !== _y || this._z !== _z)\r\n        {\r\n            this._x = _x;\r\n            this._y = _y;\r\n            this._z = _z;\r\n            this.cb.call(this.scope);\r\n        }\r\n\r\n        return this;\r\n    }\r\n\r\n    copyFrom(p: IPointData): this\r\n    {\r\n        // TODO: pixi 6.1.0 global mixin\r\n        this.set(p.x, p.y, (p as any).z || 0);\r\n\r\n        return this;\r\n    }\r\n\r\n    copyTo<T extends IPoint>(p: T): T\r\n    {\r\n        (p as any).set(this._x, this._y, this._z);\r\n\r\n        return p;\r\n    }\r\n}\r\n","import { IEuler } from './ObservableEuler';\r\n\r\nexport class Euler\r\n{\r\n    constructor(x?: number, y?: number, z?: number)\r\n    {\r\n        /**\r\n         * @member {number}\r\n         * @default 0\r\n         */\r\n        this._x = x || 0;\r\n\r\n        /**\r\n         * @member {number}\r\n         * @default 0\r\n         */\r\n        this._y = y || 0;\r\n\r\n        /**\r\n         * @member {number}\r\n         * @default 0\r\n         */\r\n        this._z = z || 0;\r\n\r\n        this.quaternion = new Float64Array(4);\r\n        this.quaternion[3] = 1;\r\n\r\n        this.update();\r\n    }\r\n\r\n    _quatUpdateId = -1;\r\n    _quatDirtyId = 0;\r\n\r\n    quaternion: Float64Array;\r\n\r\n    _x: number;\r\n    _y: number;\r\n    _z: number;\r\n    _sign = 1;\r\n\r\n    get x(): number\r\n    {\r\n        return this._x;\r\n    }\r\n\r\n    set x(value: number)\r\n    {\r\n        if (this._x !== value)\r\n        {\r\n            this._x = value;\r\n            this._quatDirtyId++;\r\n        }\r\n    }\r\n\r\n    get y(): number\r\n    {\r\n        return this._y;\r\n    }\r\n\r\n    set y(value: number)\r\n    {\r\n        if (this._y !== value)\r\n        {\r\n            this._y = value;\r\n            this._quatDirtyId++;\r\n        }\r\n    }\r\n\r\n    get z(): number\r\n    {\r\n        return this._z;\r\n    }\r\n\r\n    set z(value: number)\r\n    {\r\n        if (this._z !== value)\r\n        {\r\n            this._z = value;\r\n            this._quatDirtyId++;\r\n        }\r\n    }\r\n\r\n    get pitch(): number\r\n    {\r\n        return this._x;\r\n    }\r\n\r\n    set pitch(value: number)\r\n    {\r\n        if (this._x !== value)\r\n        {\r\n            this._x = value;\r\n            this._quatDirtyId++;\r\n        }\r\n    }\r\n\r\n    get yaw(): number\r\n    {\r\n        return this._y;\r\n    }\r\n\r\n    set yaw(value: number)\r\n    {\r\n        if (this._y !== value)\r\n        {\r\n            this._y = value;\r\n            this._quatDirtyId++;\r\n        }\r\n    }\r\n\r\n    get roll(): number\r\n    {\r\n        return this._z;\r\n    }\r\n\r\n    set roll(value: number)\r\n    {\r\n        if (this._z !== value)\r\n        {\r\n            this._z = value;\r\n            this._quatDirtyId++;\r\n        }\r\n    }\r\n\r\n    set(x?: number, y?: number, z?: number): void\r\n    {\r\n        const _x = x || 0;\r\n        const _y = y || 0;\r\n        const _z = z || 0;\r\n\r\n        if (this._x !== _x || this._y !== _y || this._z !== _z)\r\n        {\r\n            this._x = _x;\r\n            this._y = _y;\r\n            this._z = _z;\r\n            this._quatDirtyId++;\r\n        }\r\n    }\r\n\r\n    copyFrom(euler: IEuler): this\r\n    {\r\n        const _x = euler.x;\r\n        const _y = euler.y;\r\n        const _z = euler.z;\r\n\r\n        if (this._x !== _x || this._y !== _y || this._z !== _z)\r\n        {\r\n            this._x = _x;\r\n            this._y = _y;\r\n            this._z = _z;\r\n            this._quatDirtyId++;\r\n        }\r\n\r\n        return this;\r\n    }\r\n\r\n    copyTo(p: IEuler): IEuler\r\n    {\r\n        p.set(this._x, this._y, this._z);\r\n\r\n        return p;\r\n    }\r\n\r\n    equals(euler: IEuler): boolean\r\n    {\r\n        return this._x === euler.x\r\n            && this._y === euler.y\r\n            && this._z === euler.z;\r\n    }\r\n\r\n    clone(): Euler\r\n    {\r\n        return new Euler(this._x, this._y, this._z);\r\n    }\r\n\r\n    update(): boolean\r\n    {\r\n        if (this._quatUpdateId === this._quatDirtyId)\r\n        {\r\n            return false;\r\n        }\r\n        this._quatUpdateId = this._quatDirtyId;\r\n\r\n        const c1 = Math.cos(this._x / 2);\r\n        const c2 = Math.cos(this._y / 2);\r\n        const c3 = Math.cos(this._z / 2);\r\n\r\n        const s = this._sign;\r\n        const s1 = s * Math.sin(this._x / 2);\r\n        const s2 = s * Math.sin(this._y / 2);\r\n        const s3 = s * Math.sin(this._z / 2);\r\n\r\n        const q = this.quaternion;\r\n\r\n        q[0] = (s1 * c2 * c3) + (c1 * s2 * s3);\r\n        q[1] = (c1 * s2 * c3) - (s1 * c2 * s3);\r\n        q[2] = (c1 * c2 * s3) + (s1 * s2 * c3);\r\n        q[3] = (c1 * c2 * c3) - (s1 * s2 * s3);\r\n\r\n        return true;\r\n    }\r\n}\r\n","import { Euler } from './Euler';\r\n\r\nexport type IEuler = Euler | ObservableEuler;\r\n\r\n/**\r\n * The Euler angles, order is YZX. Except for projections (camera.lookEuler), its reversed XZY\r\n * @class\r\n * @namespace PIXI.projection\r\n * @param x pitch\r\n * @param y yaw\r\n * @param z roll\r\n * @constructor\r\n */\r\n\r\nexport class ObservableEuler\r\n{\r\n    // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\r\n    constructor(public cb: any, public scope: any, x?: number, y?: number, z?: number)\r\n    {\r\n        /**\r\n         * @member {number}\r\n         * @default 0\r\n         */\r\n        this._x = x || 0;\r\n\r\n        /**\r\n         * @member {number}\r\n         * @default 0\r\n         */\r\n        this._y = y || 0;\r\n\r\n        /**\r\n         * @member {number}\r\n         * @default 0\r\n         */\r\n        this._z = z || 0;\r\n\r\n        this.quaternion = new Float64Array(4);\r\n        this.quaternion[3] = 1;\r\n\r\n        this.update();\r\n    }\r\n\r\n    _quatUpdateId = -1;\r\n    _quatDirtyId = 0;\r\n\r\n    quaternion: Float64Array;\r\n\r\n    _x: number;\r\n    _y: number;\r\n    _z: number;\r\n    _sign = 1;\r\n\r\n    get x(): number\r\n    {\r\n        return this._x;\r\n    }\r\n\r\n    set x(value: number)\r\n    {\r\n        if (this._x !== value)\r\n        {\r\n            this._x = value;\r\n            this._quatDirtyId++;\r\n            this.cb.call(this.scope);\r\n        }\r\n    }\r\n\r\n    get y(): number\r\n    {\r\n        return this._y;\r\n    }\r\n\r\n    set y(value: number)\r\n    {\r\n        if (this._y !== value)\r\n        {\r\n            this._y = value;\r\n            this._quatDirtyId++;\r\n            this.cb.call(this.scope);\r\n        }\r\n    }\r\n\r\n    get z(): number\r\n    {\r\n        return this._z;\r\n    }\r\n\r\n    set z(value: number)\r\n    {\r\n        if (this._z !== value)\r\n        {\r\n            this._z = value;\r\n            this._quatDirtyId++;\r\n            this.cb.call(this.scope);\r\n        }\r\n    }\r\n\r\n    get pitch(): number\r\n    {\r\n        return this._x;\r\n    }\r\n\r\n    set pitch(value: number)\r\n    {\r\n        if (this._x !== value)\r\n        {\r\n            this._x = value;\r\n            this._quatDirtyId++;\r\n            this.cb.call(this.scope);\r\n        }\r\n    }\r\n\r\n    get yaw(): number\r\n    {\r\n        return this._y;\r\n    }\r\n\r\n    set yaw(value: number)\r\n    {\r\n        if (this._y !== value)\r\n        {\r\n            this._y = value;\r\n            this._quatDirtyId++;\r\n            this.cb.call(this.scope);\r\n        }\r\n    }\r\n\r\n    get roll(): number\r\n    {\r\n        return this._z;\r\n    }\r\n\r\n    set roll(value: number)\r\n    {\r\n        if (this._z !== value)\r\n        {\r\n            this._z = value;\r\n            this._quatDirtyId++;\r\n            this.cb.call(this.scope);\r\n        }\r\n    }\r\n\r\n    set(x?: number, y?: number, z?: number): this\r\n    {\r\n        const _x = x || 0;\r\n        const _y = y || 0;\r\n        const _z = z || 0;\r\n\r\n        if (this._x !== _x || this._y !== _y || this._z !== _z)\r\n        {\r\n            this._x = _x;\r\n            this._y = _y;\r\n            this._z = _z;\r\n            this._quatDirtyId++;\r\n            this.cb.call(this.scope);\r\n        }\r\n\r\n        return this;\r\n    }\r\n\r\n    copyFrom(euler: IEuler): this\r\n    {\r\n        const _x = euler.x;\r\n        const _y = euler.y;\r\n        const _z = euler.z;\r\n\r\n        if (this._x !== _x || this._y !== _y || this._z !== _z)\r\n        {\r\n            this._x = _x;\r\n            this._y = _y;\r\n            this._z = _z;\r\n            this._quatDirtyId++;\r\n            this.cb.call(this.scope);\r\n        }\r\n\r\n        return this;\r\n    }\r\n\r\n    copyTo(p: IEuler): IEuler\r\n    {\r\n        p.set(this._x, this._y, this._z);\r\n\r\n        return p;\r\n    }\r\n\r\n    equals(euler: IEuler): boolean\r\n    {\r\n        return this._x === euler.x\r\n            && this._y === euler.y\r\n            && this._z === euler.z;\r\n    }\r\n\r\n    clone(): Euler\r\n    {\r\n        return new Euler(this._x, this._y, this._z);\r\n    }\r\n\r\n    update(): boolean\r\n    {\r\n        if (this._quatUpdateId === this._quatDirtyId)\r\n        {\r\n            return false;\r\n        }\r\n        this._quatUpdateId = this._quatDirtyId;\r\n\r\n        const c1 = Math.cos(this._x / 2);\r\n        const c2 = Math.cos(this._y / 2);\r\n        const c3 = Math.cos(this._z / 2);\r\n\r\n        const s = this._sign;\r\n        const s1 = s * Math.sin(this._x / 2);\r\n        const s2 = s * Math.sin(this._y / 2);\r\n        const s3 = s * Math.sin(this._z / 2);\r\n\r\n        const q = this.quaternion;\r\n\r\n        q[0] = (s1 * c2 * c3) + (c1 * s2 * s3);\r\n        q[1] = (c1 * s2 * c3) - (s1 * c2 * s3);\r\n        q[2] = (c1 * c2 * s3) + (s1 * s2 * c3);\r\n        q[3] = (c1 * c2 * c3) - (s1 * s2 * s3);\r\n\r\n        return true;\r\n    }\r\n}\r\n","/* eslint-disable no-mixed-operators,max-statements-per-line */\r\n// according to https://jsperf.com/obj-vs-array-view-access/1 , Float64Array is the best here\r\n\r\nimport { IPointData, Matrix, Point } from '@pixi/math';\r\nimport { Matrix2d } from '../proj2d';\r\nimport { Point3d } from './Point3d';\r\nimport { AFFINE } from '../base';\r\n\r\nconst mat4id = [1, 0, 0, 0,\r\n    0, 1, 0, 0,\r\n    0, 0, 1, 0,\r\n    0, 0, 0, 1];\r\n\r\nexport class Matrix3d\r\n{\r\n    /**\r\n     * A default (identity) matrix\r\n     *\r\n     * @static\r\n     * @const\r\n     */\r\n    static readonly IDENTITY = new Matrix3d();\r\n\r\n    /**\r\n     * A temp matrix\r\n     *\r\n     * @static\r\n     * @const\r\n     */\r\n    static readonly TEMP_MATRIX = new Matrix3d();\r\n\r\n    /**\r\n     * mat4 implementation through array of 16 elements\r\n     */\r\n    mat4: Float64Array;\r\n\r\n    floatArray: Float32Array = null;\r\n\r\n    _dirtyId = 0;\r\n    _updateId = -1;\r\n    _mat4inv: Float64Array = null;\r\n    cacheInverse = false;\r\n\r\n    constructor(backingArray?: ArrayLike<number>)\r\n    {\r\n        this.mat4 = new Float64Array(backingArray || mat4id);\r\n    }\r\n\r\n    get a(): number\r\n    {\r\n        return this.mat4[0] / this.mat4[15];\r\n    }\r\n\r\n    set a(value: number)\r\n    {\r\n        this.mat4[0] = value * this.mat4[15];\r\n    }\r\n\r\n    get b(): number\r\n    {\r\n        return this.mat4[1] / this.mat4[15];\r\n    }\r\n\r\n    set b(value: number)\r\n    {\r\n        this.mat4[1] = value * this.mat4[15];\r\n    }\r\n\r\n    get c(): number\r\n    {\r\n        return this.mat4[4] / this.mat4[15];\r\n    }\r\n\r\n    set c(value: number)\r\n    {\r\n        this.mat4[4] = value * this.mat4[15];\r\n    }\r\n\r\n    get d(): number\r\n    {\r\n        return this.mat4[5] / this.mat4[15];\r\n    }\r\n\r\n    set d(value: number)\r\n    {\r\n        this.mat4[5] = value * this.mat4[15];\r\n    }\r\n\r\n    get tx(): number\r\n    {\r\n        return this.mat4[12] / this.mat4[15];\r\n    }\r\n\r\n    set tx(value: number)\r\n    {\r\n        this.mat4[12] = value * this.mat4[15];\r\n    }\r\n\r\n    get ty(): number\r\n    {\r\n        return this.mat4[13] / this.mat4[15];\r\n    }\r\n\r\n    set ty(value: number)\r\n    {\r\n        this.mat4[13] = value * this.mat4[15];\r\n    }\r\n\r\n    set(a: number, b: number, c: number, d: number, tx: number, ty: number): this\r\n    {\r\n        const mat4 = this.mat4;\r\n\r\n        mat4[0] = a;\r\n        mat4[1] = b;\r\n        mat4[2] = 0;\r\n        mat4[3] = 0;\r\n        mat4[4] = c;\r\n        mat4[5] = d;\r\n        mat4[6] = 0;\r\n        mat4[7] = 0;\r\n        mat4[8] = 0;\r\n        mat4[9] = 0;\r\n        mat4[10] = 1;\r\n        mat4[11] = 0;\r\n        mat4[12] = tx;\r\n        mat4[13] = ty;\r\n        mat4[14] = 0;\r\n        mat4[15] = 1;\r\n\r\n        return this;\r\n    }\r\n\r\n    toArray(transpose?: boolean, out?: Float32Array): Float32Array\r\n    {\r\n        if (!this.floatArray)\r\n        {\r\n            this.floatArray = new Float32Array(9);\r\n        }\r\n\r\n        const array = out || this.floatArray;\r\n        const mat3 = this.mat4;\r\n\r\n        if (transpose)\r\n        {\r\n            array[0] = mat3[0];\r\n            array[1] = mat3[1];\r\n            array[2] = mat3[3];\r\n            array[3] = mat3[4];\r\n            array[4] = mat3[5];\r\n            array[5] = mat3[7];\r\n            array[6] = mat3[12];\r\n            array[7] = mat3[13];\r\n            array[8] = mat3[15];\r\n        }\r\n        else\r\n        {\r\n            // this branch is NEVER USED in pixi\r\n            array[0] = mat3[0];\r\n            array[1] = mat3[4];\r\n            array[2] = mat3[12];\r\n            array[3] = mat3[2];\r\n            array[4] = mat3[6];\r\n            array[5] = mat3[13];\r\n            array[6] = mat3[3];\r\n            array[7] = mat3[7];\r\n            array[8] = mat3[15];\r\n        }\r\n\r\n        return array;\r\n    }\r\n\r\n    setToTranslation(tx: number, ty: number, tz: number): void\r\n    {\r\n        const mat4 = this.mat4;\r\n\r\n        mat4[0] = 1;\r\n        mat4[1] = 0;\r\n        mat4[2] = 0;\r\n        mat4[3] = 0;\r\n\r\n        mat4[4] = 0;\r\n        mat4[5] = 1;\r\n        mat4[6] = 0;\r\n        mat4[7] = 0;\r\n\r\n        mat4[8] = 0;\r\n        mat4[9] = 0;\r\n        mat4[10] = 1;\r\n        mat4[11] = 0;\r\n\r\n        mat4[12] = tx;\r\n        mat4[13] = ty;\r\n        mat4[14] = tz;\r\n        mat4[15] = 1;\r\n    }\r\n\r\n    // eslint-disable-next-line max-len\r\n    setToRotationTranslationScale(quat: Float64Array, tx: number, ty: number, tz: number, sx: number, sy: number, sz: number): Float64Array\r\n    {\r\n        const out = this.mat4;\r\n\r\n        const x = quat[0]; const y = quat[1]; const z = quat[2]; const\r\n            w = quat[3];\r\n        const x2 = x + x;\r\n        const y2 = y + y;\r\n        const z2 = z + z;\r\n\r\n        const xx = x * x2;\r\n        const xy = x * y2;\r\n        const xz = x * z2;\r\n        const yy = y * y2;\r\n        const yz = y * z2;\r\n        const zz = z * z2;\r\n        const wx = w * x2;\r\n        const wy = w * y2;\r\n        const wz = w * z2;\r\n\r\n        out[0] = (1 - (yy + zz)) * sx;\r\n        out[1] = (xy + wz) * sx;\r\n        out[2] = (xz - wy) * sx;\r\n        out[3] = 0;\r\n        out[4] = (xy - wz) * sy;\r\n        out[5] = (1 - (xx + zz)) * sy;\r\n        out[6] = (yz + wx) * sy;\r\n        out[7] = 0;\r\n        out[8] = (xz + wy) * sz;\r\n        out[9] = (yz - wx) * sz;\r\n        out[10] = (1 - (xx + yy)) * sz;\r\n        out[11] = 0;\r\n        out[12] = tx;\r\n        out[13] = ty;\r\n        out[14] = tz;\r\n        out[15] = 1;\r\n\r\n        return out;\r\n    }\r\n\r\n    apply(pos: IPointData, newPos: IPointData): IPointData\r\n    {\r\n        newPos = newPos || new Point3d();\r\n\r\n        const mat4 = this.mat4;\r\n        const x = pos.x;\r\n        const y = pos.y;\r\n        // TODO: pixi 6.1.0 global mixin\r\n        const z = (pos as any).z || 0;\r\n\r\n        // TODO: apply for 2d point\r\n\r\n        const w = 1.0 / (mat4[3] * x + mat4[7] * y + mat4[11] * z + mat4[15]);\r\n\r\n        newPos.x = w * (mat4[0] * x + mat4[4] * y + mat4[8] * z + mat4[12]);\r\n        newPos.y = w * (mat4[1] * x + mat4[5] * y + mat4[9] * z + mat4[13]);\r\n        // TODO: pixi 6.1.0 global mixin\r\n        (newPos as any).z = w * (mat4[2] * x + mat4[6] * y + mat4[10] * z + mat4[14]);\r\n\r\n        return newPos;\r\n    }\r\n\r\n    translate(tx: number, ty: number, tz: number): this\r\n    {\r\n        const a = this.mat4;\r\n\r\n        a[12] = a[0] * tx + a[4] * ty + a[8] * tz + a[12];\r\n        a[13] = a[1] * tx + a[5] * ty + a[9] * tz + a[13];\r\n        a[14] = a[2] * tx + a[6] * ty + a[10] * tz + a[14];\r\n        a[15] = a[3] * tx + a[7] * ty + a[11] * tz + a[15];\r\n\r\n        return this;\r\n    }\r\n\r\n    scale(x: number, y: number, z?: number): this\r\n    {\r\n        const mat4 = this.mat4;\r\n\r\n        mat4[0] *= x;\r\n        mat4[1] *= x;\r\n        mat4[2] *= x;\r\n        mat4[3] *= x;\r\n\r\n        mat4[4] *= y;\r\n        mat4[5] *= y;\r\n        mat4[6] *= y;\r\n        mat4[7] *= y;\r\n\r\n        if (z !== undefined)\r\n        {\r\n            mat4[8] *= z;\r\n            mat4[9] *= z;\r\n            mat4[10] *= z;\r\n            mat4[11] *= z;\r\n        }\r\n\r\n        return this;\r\n    }\r\n\r\n    scaleAndTranslate(scaleX: number, scaleY: number, scaleZ: number, tx: number, ty: number, tz: number): void\r\n    {\r\n        const mat4 = this.mat4;\r\n\r\n        mat4[0] = scaleX * mat4[0] + tx * mat4[3];\r\n        mat4[1] = scaleY * mat4[1] + ty * mat4[3];\r\n        mat4[2] = scaleZ * mat4[2] + tz * mat4[3];\r\n\r\n        mat4[4] = scaleX * mat4[4] + tx * mat4[7];\r\n        mat4[5] = scaleY * mat4[5] + ty * mat4[7];\r\n        mat4[6] = scaleZ * mat4[6] + tz * mat4[7];\r\n\r\n        mat4[8] = scaleX * mat4[8] + tx * mat4[11];\r\n        mat4[9] = scaleY * mat4[9] + ty * mat4[11];\r\n        mat4[10] = scaleZ * mat4[10] + tz * mat4[11];\r\n\r\n        mat4[12] = scaleX * mat4[12] + tx * mat4[15];\r\n        mat4[13] = scaleY * mat4[13] + ty * mat4[15];\r\n        mat4[14] = scaleZ * mat4[14] + tz * mat4[15];\r\n    }\r\n\r\n    // TODO: remove props\r\n    applyInverse<P extends IPointData = Point>(pos: IPointData, newPos?: P): P\r\n    {\r\n        newPos = (newPos || new Point3d()) as any;\r\n        if (!this._mat4inv)\r\n        {\r\n            this._mat4inv = new Float64Array(16);\r\n        }\r\n\r\n        const mat4 = this._mat4inv;\r\n        const a = this.mat4;\r\n        const x = pos.x;\r\n        const y = pos.y;\r\n        // TODO: pixi 6.1.0 global mixin\r\n        let z = (pos as any).z || 0;\r\n\r\n        if (!this.cacheInverse || this._updateId !== this._dirtyId)\r\n        {\r\n            this._updateId = this._dirtyId;\r\n            Matrix3d.glMatrixMat4Invert(mat4, a);\r\n        }\r\n\r\n        const w1 = 1.0 / (mat4[3] * x + mat4[7] * y + mat4[11] * z + mat4[15]);\r\n        const x1 = w1 * (mat4[0] * x + mat4[4] * y + mat4[8] * z + mat4[12]);\r\n        const y1 = w1 * (mat4[1] * x + mat4[5] * y + mat4[9] * z + mat4[13]);\r\n        const z1 = w1 * (mat4[2] * x + mat4[6] * y + mat4[10] * z + mat4[14]);\r\n\r\n        z += 1.0;\r\n\r\n        const w2 = 1.0 / (mat4[3] * x + mat4[7] * y + mat4[11] * z + mat4[15]);\r\n        const x2 = w2 * (mat4[0] * x + mat4[4] * y + mat4[8] * z + mat4[12]);\r\n        const y2 = w2 * (mat4[1] * x + mat4[5] * y + mat4[9] * z + mat4[13]);\r\n        const z2 = w2 * (mat4[2] * x + mat4[6] * y + mat4[10] * z + mat4[14]);\r\n\r\n        if (Math.abs(z1 - z2) < 1e-10)\r\n        {\r\n            (newPos as any).set(NaN, NaN, 0);\r\n        }\r\n\r\n        const alpha = (0 - z1) / (z2 - z1);\r\n\r\n        (newPos as any).set((x2 - x1) * alpha + x1, (y2 - y1) * alpha + y1, 0.0);\r\n\r\n        return newPos;\r\n    }\r\n\r\n    invert(): Matrix3d\r\n    {\r\n        Matrix3d.glMatrixMat4Invert(this.mat4, this.mat4);\r\n\r\n        return this;\r\n    }\r\n\r\n    invertCopyTo(matrix: Matrix3d): void\r\n    {\r\n        if (!this._mat4inv)\r\n        {\r\n            this._mat4inv = new Float64Array(16);\r\n        }\r\n\r\n        const mat4 = this._mat4inv;\r\n        const a = this.mat4;\r\n\r\n        if (!this.cacheInverse || this._updateId !== this._dirtyId)\r\n        {\r\n            this._updateId = this._dirtyId;\r\n            Matrix3d.glMatrixMat4Invert(mat4, a);\r\n        }\r\n\r\n        matrix.mat4.set(mat4);\r\n    }\r\n\r\n    identity(): Matrix3d\r\n    {\r\n        const mat3 = this.mat4;\r\n\r\n        mat3[0] = 1;\r\n        mat3[1] = 0;\r\n        mat3[2] = 0;\r\n        mat3[3] = 0;\r\n\r\n        mat3[4] = 0;\r\n        mat3[5] = 1;\r\n        mat3[6] = 0;\r\n        mat3[7] = 0;\r\n\r\n        mat3[8] = 0;\r\n        mat3[9] = 0;\r\n        mat3[10] = 1;\r\n        mat3[11] = 0;\r\n\r\n        mat3[12] = 0;\r\n        mat3[13] = 0;\r\n        mat3[14] = 0;\r\n        mat3[15] = 1;\r\n\r\n        return this;\r\n    }\r\n\r\n    clone(): Matrix3d\r\n    {\r\n        return new Matrix3d(this.mat4);\r\n    }\r\n\r\n    copyTo3d(matrix: Matrix3d): Matrix3d\r\n    {\r\n        const mat3 = this.mat4;\r\n        const ar2 = matrix.mat4;\r\n\r\n        ar2[0] = mat3[0];\r\n        ar2[1] = mat3[1];\r\n        ar2[2] = mat3[2];\r\n        ar2[3] = mat3[3];\r\n        ar2[4] = mat3[4];\r\n        ar2[5] = mat3[5];\r\n        ar2[6] = mat3[6];\r\n        ar2[7] = mat3[7];\r\n        ar2[8] = mat3[8];\r\n\r\n        return matrix;\r\n    }\r\n\r\n    copyTo2d(matrix: Matrix2d): Matrix2d\r\n    {\r\n        const mat3 = this.mat4;\r\n        const ar2 = matrix.mat3;\r\n\r\n        ar2[0] = mat3[0];\r\n        ar2[1] = mat3[1];\r\n        ar2[2] = mat3[3];\r\n        ar2[3] = mat3[4];\r\n        ar2[4] = mat3[5];\r\n        ar2[5] = mat3[7];\r\n        ar2[6] = mat3[12];\r\n        ar2[7] = mat3[13];\r\n        ar2[8] = mat3[15];\r\n\r\n        return matrix;\r\n    }\r\n\r\n    copyTo2dOr3d<P extends Matrix2d | Matrix3d>(matrix: P): P\r\n    {\r\n        if (matrix instanceof Matrix2d)\r\n        {\r\n            return this.copyTo2d(matrix) as any;\r\n        }\r\n\r\n        return this.copyTo3d(matrix as any) as any;\r\n    }\r\n\r\n    /**\r\n     * legacy method, change the values of given pixi matrix\r\n     * @param matrix\r\n     * @param affine\r\n     * @param preserveOrientation\r\n     * @return matrix\r\n     */\r\n    copyTo(matrix: Matrix, affine?: AFFINE, preserveOrientation?: boolean): Matrix\r\n    {\r\n        const mat3 = this.mat4;\r\n        const d = 1.0 / mat3[15];\r\n        const tx = mat3[12] * d; const\r\n            ty = mat3[13] * d;\r\n\r\n        matrix.a = (mat3[0] - mat3[3] * tx) * d;\r\n        matrix.b = (mat3[1] - mat3[3] * ty) * d;\r\n        matrix.c = (mat3[4] - mat3[7] * tx) * d;\r\n        matrix.d = (mat3[5] - mat3[7] * ty) * d;\r\n        matrix.tx = tx;\r\n        matrix.ty = ty;\r\n\r\n        if (affine >= 2)\r\n        {\r\n            let D = matrix.a * matrix.d - matrix.b * matrix.c;\r\n\r\n            if (!preserveOrientation)\r\n            {\r\n                D = Math.abs(D);\r\n            }\r\n            if (affine === AFFINE.POINT)\r\n            {\r\n                if (D > 0)\r\n                {\r\n                    D = 1;\r\n                }\r\n                else D = -1;\r\n                matrix.a = D;\r\n                matrix.b = 0;\r\n                matrix.c = 0;\r\n                matrix.d = D;\r\n            }\r\n            else if (affine === AFFINE.AXIS_X)\r\n            {\r\n                D /= Math.sqrt(matrix.b * matrix.b + matrix.d * matrix.d);\r\n                matrix.c = 0;\r\n                matrix.d = D;\r\n            }\r\n            else if (affine === AFFINE.AXIS_Y)\r\n            {\r\n                D /= Math.sqrt(matrix.a * matrix.a + matrix.c * matrix.c);\r\n                matrix.a = D;\r\n                matrix.c = 0;\r\n            }\r\n        }\r\n\r\n        return matrix;\r\n    }\r\n\r\n    /**\r\n     * legacy method, change the values of given pixi matrix\r\n     * @param matrix\r\n     * @return\r\n     */\r\n    copyFrom(matrix: Matrix): this\r\n    {\r\n        const mat3 = this.mat4;\r\n\r\n        mat3[0] = matrix.a;\r\n        mat3[1] = matrix.b;\r\n        mat3[2] = 0;\r\n        mat3[3] = 0;\r\n\r\n        mat3[4] = matrix.c;\r\n        mat3[5] = matrix.d;\r\n        mat3[6] = 0;\r\n        mat3[7] = 0;\r\n\r\n        mat3[8] = 0;\r\n        mat3[9] = 0;\r\n        mat3[10] = 1;\r\n        mat3[11] = 0;\r\n\r\n        mat3[12] = matrix.tx;\r\n        mat3[13] = matrix.ty;\r\n        mat3[14] = 0;\r\n        mat3[15] = 1;\r\n\r\n        this._dirtyId++;\r\n\r\n        return this;\r\n    }\r\n\r\n    setToMultLegacy(pt: Matrix, lt: Matrix3d): this\r\n    {\r\n        const out = this.mat4;\r\n        const b = lt.mat4;\r\n\r\n        const a00 = pt.a; const a01 = pt.b;\r\n        const a10 = pt.c; const a11 = pt.d;\r\n        const a30 = pt.tx; const\r\n            a31 = pt.ty;\r\n\r\n        let b0 = b[0]; let b1 = b[1]; let b2 = b[2]; let\r\n            b3 = b[3];\r\n\r\n        out[0] = b0 * a00 + b1 * a10 + b3 * a30;\r\n        out[1] = b0 * a01 + b1 * a11 + b3 * a31;\r\n        out[2] = b2;\r\n        out[3] = b3;\r\n\r\n        b0 = b[4];\r\n        b1 = b[5];\r\n        b2 = b[6];\r\n        b3 = b[7];\r\n        out[4] = b0 * a00 + b1 * a10 + b3 * a30;\r\n        out[5] = b0 * a01 + b1 * a11 + b3 * a31;\r\n        out[6] = b2;\r\n        out[7] = b3;\r\n\r\n        b0 = b[8];\r\n        b1 = b[9];\r\n        b2 = b[10];\r\n        b3 = b[11];\r\n        out[8] = b0 * a00 + b1 * a10 + b3 * a30;\r\n        out[9] = b0 * a01 + b1 * a11 + b3 * a31;\r\n        out[10] = b2;\r\n        out[11] = b3;\r\n\r\n        b0 = b[12];\r\n        b1 = b[13];\r\n        b2 = b[14];\r\n        b3 = b[15];\r\n        out[12] = b0 * a00 + b1 * a10 + b3 * a30;\r\n        out[13] = b0 * a01 + b1 * a11 + b3 * a31;\r\n        out[14] = b2;\r\n        out[15] = b3;\r\n\r\n        this._dirtyId++;\r\n\r\n        return this;\r\n    }\r\n\r\n    setToMultLegacy2(pt: Matrix3d, lt: Matrix): this\r\n    {\r\n        const out = this.mat4;\r\n        const a = pt.mat4;\r\n\r\n        const a00 = a[0]; const a01 = a[1]; const a02 = a[2]; const\r\n            a03 = a[3];\r\n        const a10 = a[4]; const a11 = a[5]; const a12 = a[6]; const\r\n            a13 = a[7];\r\n\r\n        const b00 = lt.a; const b01 = lt.b;\r\n        const b10 = lt.c; const b11 = lt.d;\r\n        const b30 = lt.tx; const\r\n            b31 = lt.ty;\r\n\r\n        out[0] = b00 * a00 + b01 * a10;\r\n        out[1] = b00 * a01 + b01 * a11;\r\n        out[2] = b00 * a02 + b01 * a12;\r\n        out[3] = b00 * a03 + b01 * a13;\r\n\r\n        out[4] = b10 * a00 + b11 * a10;\r\n        out[5] = b10 * a01 + b11 * a11;\r\n        out[6] = b10 * a02 + b11 * a12;\r\n        out[7] = b10 * a03 + b11 * a13;\r\n\r\n        out[8] = a[8];\r\n        out[9] = a[9];\r\n        out[10] = a[10];\r\n        out[11] = a[11];\r\n\r\n        out[12] = b30 * a00 + b31 * a10 + a[12];\r\n        out[13] = b30 * a01 + b31 * a11 + a[13];\r\n        out[14] = b30 * a02 + b31 * a12 + a[14];\r\n        out[15] = b30 * a03 + b31 * a13 + a[15];\r\n\r\n        this._dirtyId++;\r\n\r\n        return this;\r\n    }\r\n\r\n    // that's transform multiplication we use\r\n    setToMult(pt: Matrix3d, lt: Matrix3d): this\r\n    {\r\n        Matrix3d.glMatrixMat4Multiply(this.mat4, pt.mat4, lt.mat4);\r\n\r\n        this._dirtyId++;\r\n\r\n        return this;\r\n    }\r\n\r\n    // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\r\n    prepend(lt: any): void\r\n    {\r\n        if (lt.mat4)\r\n        {\r\n            this.setToMult(lt, this);\r\n        }\r\n        else\r\n        {\r\n            this.setToMultLegacy(lt, this);\r\n        }\r\n    }\r\n\r\n    static glMatrixMat4Invert(out: Float64Array, a: Float64Array): Float64Array\r\n    {\r\n        const a00 = a[0]; const a01 = a[1]; const a02 = a[2]; const\r\n            a03 = a[3];\r\n        const a10 = a[4]; const a11 = a[5]; const a12 = a[6]; const\r\n            a13 = a[7];\r\n        const a20 = a[8]; const a21 = a[9]; const a22 = a[10]; const\r\n            a23 = a[11];\r\n        const a30 = a[12]; const a31 = a[13]; const a32 = a[14]; const\r\n            a33 = a[15];\r\n\r\n        const b00 = a00 * a11 - a01 * a10;\r\n        const b01 = a00 * a12 - a02 * a10;\r\n        const b02 = a00 * a13 - a03 * a10;\r\n        const b03 = a01 * a12 - a02 * a11;\r\n        const b04 = a01 * a13 - a03 * a11;\r\n        const b05 = a02 * a13 - a03 * a12;\r\n        const b06 = a20 * a31 - a21 * a30;\r\n        const b07 = a20 * a32 - a22 * a30;\r\n        const b08 = a20 * a33 - a23 * a30;\r\n        const b09 = a21 * a32 - a22 * a31;\r\n        const b10 = a21 * a33 - a23 * a31;\r\n        const b11 = a22 * a33 - a23 * a32;\r\n\r\n        // Calculate the determinant\r\n        let det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\r\n\r\n        if (!det)\r\n        {\r\n            return null;\r\n        }\r\n        det = 1.0 / det;\r\n\r\n        out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\r\n        out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\r\n        out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\r\n        out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\r\n        out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\r\n        out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\r\n        out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\r\n        out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\r\n        out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\r\n        out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\r\n        out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\r\n        out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\r\n        out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\r\n        out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\r\n        out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\r\n        out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\r\n\r\n        return out;\r\n    }\r\n\r\n    static glMatrixMat4Multiply(out: Float64Array, a: Float64Array, b: Float64Array): Float64Array\r\n    {\r\n        const a00 = a[0]; const a01 = a[1]; const a02 = a[2]; const\r\n            a03 = a[3];\r\n        const a10 = a[4]; const a11 = a[5]; const a12 = a[6]; const\r\n            a13 = a[7];\r\n        const a20 = a[8]; const a21 = a[9]; const a22 = a[10]; const\r\n            a23 = a[11];\r\n        const a30 = a[12]; const a31 = a[13]; const a32 = a[14]; const\r\n            a33 = a[15];\r\n\r\n        // Cache only the current line of the second matrix\r\n        let b0 = b[0]; let b1 = b[1]; let b2 = b[2]; let\r\n            b3 = b[3];\r\n\r\n        out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\r\n        out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\r\n        out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\r\n        out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\r\n\r\n        b0 = b[4];\r\n        b1 = b[5];\r\n        b2 = b[6];\r\n        b3 = b[7];\r\n        out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\r\n        out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\r\n        out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\r\n        out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\r\n\r\n        b0 = b[8];\r\n        b1 = b[9];\r\n        b2 = b[10];\r\n        b3 = b[11];\r\n        out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\r\n        out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\r\n        out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\r\n        out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\r\n\r\n        b0 = b[12];\r\n        b1 = b[13];\r\n        b2 = b[14];\r\n        b3 = b[15];\r\n        out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\r\n        out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\r\n        out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\r\n        out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\r\n\r\n        return out;\r\n    }\r\n}\r\n","import { LinearProjection } from '../base';\r\nimport { ObservablePoint3d } from './Point3d';\r\nimport { Matrix, Transform } from '@pixi/math';\r\nimport { Matrix3d } from './Matrix3d';\r\nimport { ObservableEuler } from './ObservableEuler';\r\n\r\nconst tempMat = new Matrix3d();\r\n\r\nexport class Projection3d extends LinearProjection<Matrix3d>\r\n{\r\n    constructor(legacy: Transform, enable?: boolean)\r\n    {\r\n        super(legacy, enable);\r\n        this.local = new Matrix3d();\r\n        this.world = new Matrix3d();\r\n\r\n        this.local.cacheInverse = true;\r\n        this.world.cacheInverse = true;\r\n\r\n        this.position._z = 0;\r\n        this.scale._z = 1;\r\n        this.pivot._z = 0;\r\n    }\r\n\r\n    cameraMatrix: Matrix3d = null;\r\n\r\n    _cameraMode = false;\r\n\r\n    get cameraMode(): boolean\r\n    {\r\n        return this._cameraMode;\r\n    }\r\n\r\n    set cameraMode(value: boolean)\r\n    {\r\n        if (this._cameraMode === value)\r\n        {\r\n            return;\r\n        }\r\n        this._cameraMode = value;\r\n\r\n        this.euler._sign = this._cameraMode ? -1 : 1;\r\n        this.euler._quatDirtyId++;\r\n\r\n        if (value)\r\n        {\r\n            this.cameraMatrix = new Matrix3d();\r\n        }\r\n    }\r\n\r\n    position = new ObservablePoint3d(this.onChange, this, 0, 0);\r\n    scale = new ObservablePoint3d(this.onChange, this, 1, 1);\r\n    euler = new ObservableEuler(this.onChange, this, 0, 0, 0);\r\n    pivot = new ObservablePoint3d(this.onChange, this, 0, 0);\r\n\r\n    onChange(): void\r\n    {\r\n        this._projID++;\r\n    }\r\n\r\n    clear(): void\r\n    {\r\n        if (this.cameraMatrix)\r\n        {\r\n            this.cameraMatrix.identity();\r\n        }\r\n        this.position.set(0, 0, 0);\r\n        this.scale.set(1, 1, 1);\r\n        this.euler.set(0, 0, 0);\r\n        this.pivot.set(0, 0, 0);\r\n        super.clear();\r\n    }\r\n\r\n    updateLocalTransform(lt: Matrix): void\r\n    {\r\n        if (this._projID === 0)\r\n        {\r\n            this.local.copyFrom(lt);\r\n\r\n            return;\r\n        }\r\n        const matrix = this.local;\r\n        const euler = this.euler;\r\n        const pos = this.position;\r\n        const scale = this.scale;\r\n        const pivot = this.pivot;\r\n\r\n        euler.update();\r\n\r\n        if (!this.cameraMode)\r\n        {\r\n            matrix.setToRotationTranslationScale(euler.quaternion, pos._x, pos._y, pos._z, scale._x, scale._y, scale._z);\r\n            matrix.translate(-pivot._x, -pivot._y, -pivot._z);\r\n            matrix.setToMultLegacy(lt, matrix);\r\n\r\n            return;\r\n        }\r\n\r\n        matrix.setToMultLegacy(lt, this.cameraMatrix);\r\n        matrix.translate(pivot._x, pivot._y, pivot._z);\r\n        matrix.scale(1.0 / scale._x, 1.0 / scale._y, 1.0 / scale._z);\r\n        tempMat.setToRotationTranslationScale(euler.quaternion, 0, 0, 0, 1, 1, 1);\r\n        matrix.setToMult(matrix, tempMat);\r\n        matrix.translate(-pos._x, -pos._y, -pos._z);\r\n\r\n        this.local._dirtyId++;\r\n    }\r\n}\r\n","/* eslint-disable no-mixed-operators */\r\nimport { Projection3d } from './Projection3d';\r\nimport { Container, DisplayObject } from '@pixi/display';\r\nimport { IPointData, Matrix, Point } from '@pixi/math';\r\nimport { TRANSFORM_STEP } from '../base';\r\nimport { IEuler } from './ObservableEuler';\r\n\r\nexport function container3dWorldTransform(): Matrix\r\n{\r\n    return this.proj.affine ? this.transform.worldTransform : this.proj.world as any;\r\n}\r\n\r\nexport interface IDisplayObject3d\n{\r\n    isFrontFace(forceUpdate?: boolean): boolean;\r\n    getDepth(forceUpdate?: boolean): number;\r\n    // eslint-disable-next-line max-len\r\n    toLocal<P extends IPointData = Point>(position: IPointData, from?: DisplayObject, point?: P, skipUpdate?: boolean, step?: TRANSFORM_STEP): P;\r\n    position3d: IPointData;\r\n    scale3d: IPointData;\r\n    euler: IEuler;\r\n    pivot3d: IPointData;\r\n}\r\n\r\nexport class Container3d extends Container implements IDisplayObject3d\r\n{\r\n    constructor()\r\n    {\r\n        super();\r\n        this.proj = new Projection3d(this.transform);\r\n    }\r\n\r\n    proj: Projection3d;\r\n\r\n    isFrontFace(forceUpdate = false): boolean\r\n    {\r\n        if (forceUpdate)\r\n        {\r\n            this._recursivePostUpdateTransform();\r\n            this.displayObjectUpdateTransform();\r\n        }\r\n\r\n        const mat = this.proj.world.mat4;\r\n        const dx1 = mat[0] * mat[15] - mat[3] * mat[12];\r\n        const dy1 = mat[1] * mat[15] - mat[3] * mat[13];\r\n        const dx2 = mat[4] * mat[15] - mat[7] * mat[12];\r\n        const dy2 = mat[5] * mat[15] - mat[7] * mat[13];\r\n\r\n        return dx1 * dy2 - dx2 * dy1 > 0;\r\n    }\r\n\r\n    /**\r\n     * returns depth from 0 to 1\r\n     *\r\n     * @param {boolean} forceUpdate whether to force matrix updates\r\n     * @returns {number} depth\r\n     */\r\n    getDepth(forceUpdate = false): number\r\n    {\r\n        if (forceUpdate)\r\n        {\r\n            this._recursivePostUpdateTransform();\r\n            this.displayObjectUpdateTransform();\r\n        }\r\n\r\n        const mat4 = this.proj.world.mat4;\r\n\r\n        return mat4[14] / mat4[15];\r\n    }\r\n\r\n    toLocal<P extends IPointData = Point>(position: IPointData, from?: DisplayObject, point?: P, skipUpdate?: boolean,\r\n        step = TRANSFORM_STEP.ALL): P\r\n    {\r\n        if (from)\r\n        {\r\n            position = from.toGlobal(position, point, skipUpdate);\r\n        }\r\n\r\n        if (!skipUpdate)\r\n        {\r\n            this._recursivePostUpdateTransform();\r\n        }\r\n\r\n        if (step === TRANSFORM_STEP.ALL)\r\n        {\r\n            if (!skipUpdate)\r\n            {\r\n                this.displayObjectUpdateTransform();\r\n            }\r\n            if (this.proj.affine)\r\n            {\r\n                return this.transform.worldTransform.applyInverse(position, point) as any;\r\n            }\r\n\r\n            return this.proj.world.applyInverse(position, point) as any;\r\n        }\r\n\r\n        if (this.parent)\r\n        {\r\n            point = this.parent.worldTransform.applyInverse(position, point) as any;\r\n        }\r\n        else\r\n        {\r\n            point.x = position.x;\r\n            point.y = position.y;\r\n            // TODO: pixi 6.1.0 global mixin\r\n            (point as any).z = (position as any).z;\r\n        }\r\n        if (step === TRANSFORM_STEP.NONE)\r\n        {\r\n            return point;\r\n        }\r\n\r\n        point = this.transform.localTransform.applyInverse(point, point) as any;\r\n        if (step === TRANSFORM_STEP.PROJ && this.proj.cameraMode)\r\n        {\r\n            point = this.proj.cameraMatrix.applyInverse(point, point) as any;\r\n        }\r\n\r\n        return point;\r\n    }\r\n\r\n    get worldTransform(): Matrix\r\n    {\r\n        return this.proj.affine ? this.transform.worldTransform : this.proj.world as any;\r\n    }\r\n\r\n    get position3d(): IPointData\r\n    {\r\n        return this.proj.position;\r\n    }\r\n    set position3d(value: IPointData)\r\n    {\r\n        this.proj.position.copyFrom(value);\r\n    }\r\n    get scale3d(): IPointData\r\n    {\r\n        return this.proj.scale;\r\n    }\r\n    set scale3d(value: IPointData)\r\n    {\r\n        this.proj.scale.copyFrom(value);\r\n    }\r\n    get euler(): IEuler\r\n    {\r\n        return this.proj.euler;\r\n    }\r\n    set euler(value: IEuler)\r\n    {\r\n        this.proj.euler.copyFrom(value);\r\n    }\r\n    get pivot3d(): IPointData\r\n    {\r\n        return this.proj.pivot;\r\n    }\r\n    set pivot3d(value: IPointData)\r\n    {\r\n        this.proj.pivot.copyFrom(value);\r\n    }\r\n}\r\n\r\nexport const container3dToLocal = Container3d.prototype.toLocal;\r\nexport const container3dGetDepth = Container3d.prototype.getDepth;\r\nexport const container3dIsFrontFace = Container3d.prototype.isFrontFace;\r\n","import { Container3d } from './Container3d';\r\n\r\nexport class Camera3d extends Container3d\r\n{\r\n    constructor()\r\n    {\r\n        super();\r\n        this.proj.cameraMode = true;\r\n        this.setPlanes(400, 10, 10000, false);\r\n    }\r\n\r\n    _far = 0;\r\n    _near = 0;\r\n    _focus = 0;\r\n    _orthographic = false;\r\n\r\n    get far(): number\r\n    {\r\n        return this._far;\r\n    }\r\n\r\n    get near(): number\r\n    {\r\n        return this._near;\r\n    }\r\n\r\n    get focus(): number\r\n    {\r\n        return this._focus;\r\n    }\r\n\r\n    get ortographic(): boolean\r\n    {\r\n        return this._orthographic;\r\n    }\r\n\r\n    setPlanes(focus: number, near = 10, far = 10000, orthographic = false): void\r\n    {\r\n        this._focus = focus;\r\n        this._near = near;\r\n        this._far = far;\r\n        this._orthographic = orthographic;\r\n\r\n        const proj = this.proj;\r\n        const mat4 = proj.cameraMatrix.mat4;\r\n\r\n        proj._projID++;\r\n\r\n        mat4[10] = 1.0 / (far - near);\r\n        mat4[14] = (focus - near) / (far - near);\r\n        if (this._orthographic)\r\n        {\r\n            mat4[11] = 0;\r\n        }\r\n        else\r\n        {\r\n            mat4[11] = 1.0 / focus;\r\n        }\r\n    }\r\n}\r\n","import { Mesh, MeshGeometry, MeshMaterial } from '@pixi/mesh';\r\nimport { Geometry, Program, Renderer, State, Texture } from '@pixi/core';\r\nimport { Projection3d } from '../Projection3d';\r\nimport { IPointData, Matrix } from '@pixi/math';\r\nimport { DisplayObject } from '@pixi/display';\r\nimport { TRANSFORM_STEP } from '../../base';\r\nimport { container3dGetDepth, container3dIsFrontFace, container3dToLocal } from '../Container3d';\r\nimport { Euler } from '../Euler';\r\nimport { Mesh2d } from '../../proj2d';\r\n\r\nexport class Mesh3d2d extends Mesh\r\n{\r\n    constructor(geometry: Geometry, shader: MeshMaterial, state: State, drawMode?: number)\r\n    {\r\n        super(geometry, shader, state, drawMode);\r\n        this.proj = new Projection3d(this.transform);\r\n    }\r\n\r\n    vertexData2d: Float32Array = null;\r\n    proj: Projection3d;\r\n\r\n    calculateVertices(): void\r\n    {\r\n        if (this.proj._affine)\r\n        {\r\n            this.vertexData2d = null;\r\n            super.calculateVertices();\r\n\r\n            return;\r\n        }\r\n\r\n        const geometry = this.geometry as any;\r\n        const vertices = geometry.buffers[0].data;\r\n        const thisAny = this as any;\r\n\r\n        if (geometry.vertexDirtyId === thisAny.vertexDirty && thisAny._transformID === thisAny.transform._worldID)\r\n        {\r\n            return;\r\n        }\r\n\r\n        thisAny._transformID = thisAny.transform._worldID;\r\n\r\n        if (thisAny.vertexData.length !== vertices.length)\r\n        {\r\n            thisAny.vertexData = new Float32Array(vertices.length);\r\n        }\r\n        if (!this.vertexData2d || this.vertexData2d.length !== vertices.length * 3 / 2)\r\n        {\r\n            this.vertexData2d = new Float32Array(vertices.length * 3);\r\n        }\r\n\r\n        const wt = this.proj.world.mat4;\r\n\r\n        const vertexData2d = this.vertexData2d;\r\n        const vertexData = thisAny.vertexData;\r\n\r\n        for (let i = 0; i < vertexData.length / 2; i++)\r\n        {\r\n            const x = vertices[(i * 2)];\r\n            const y = vertices[(i * 2) + 1];\r\n\r\n            const xx = (wt[0] * x) + (wt[4] * y) + wt[12];\r\n            const yy = (wt[1] * x) + (wt[5] * y) + wt[13];\r\n            const ww = (wt[3] * x) + (wt[7] * y) + wt[15];\r\n\r\n            vertexData2d[i * 3] = xx;\r\n            vertexData2d[(i * 3) + 1] = yy;\r\n            vertexData2d[(i * 3) + 2] = ww;\r\n\r\n            vertexData[(i * 2)] = xx / ww;\r\n            vertexData[(i * 2) + 1] = yy / ww;\r\n        }\r\n\r\n        thisAny.vertexDirty = geometry.vertexDirtyId;\r\n    }\r\n\r\n    get worldTransform(): Matrix\r\n    {\r\n        return this.proj.affine ? this.transform.worldTransform : this.proj.world as any;\r\n    }\r\n\r\n    toLocal<T extends IPointData>(position: IPointData, from?: DisplayObject,\r\n        point?: T, skipUpdate?: boolean,\r\n        step = TRANSFORM_STEP.ALL): T\r\n    {\r\n        return container3dToLocal.call(this, position, from, point, skipUpdate, step);\r\n    }\r\n\r\n    isFrontFace(forceUpdate?: boolean): boolean\r\n    {\r\n        return container3dIsFrontFace.call(this, forceUpdate);\r\n    }\r\n\r\n    getDepth(forceUpdate?: boolean): boolean\r\n    {\r\n        return container3dGetDepth.call(this, forceUpdate);\r\n    }\r\n\r\n    get position3d(): IPointData\r\n    {\r\n        return this.proj.position;\r\n    }\r\n    set position3d(value: IPointData)\r\n    {\r\n        this.proj.position.copyFrom(value);\r\n    }\r\n    get scale3d(): IPointData\r\n    {\r\n        return this.proj.scale;\r\n    }\r\n    set scale3d(value: IPointData)\r\n    {\r\n        this.proj.scale.copyFrom(value);\r\n    }\r\n    get euler(): Euler\r\n    {\r\n        return this.proj.euler;\r\n    }\r\n    set euler(value: Euler)\r\n    {\r\n        this.proj.euler.copyFrom(value);\r\n    }\r\n    get pivot3d(): IPointData\r\n    {\r\n        return this.proj.pivot;\r\n    }\r\n    set pivot3d(value: IPointData)\r\n    {\r\n        this.proj.pivot.copyFrom(value);\r\n    }\r\n}\r\n\r\n(Mesh3d2d.prototype as any)._renderDefault = Mesh2d.prototype._renderDefault;\r\n\r\nexport class SimpleMesh3d2d extends Mesh3d2d\r\n{\r\n    constructor(texture: Texture, vertices?: Float32Array, uvs?: Float32Array,\r\n        indices?: Uint16Array, drawMode?: number)\r\n    {\r\n        super(new MeshGeometry(vertices, uvs, indices),\r\n            new MeshMaterial(texture, {\r\n                program: Program.from(Mesh2d.defaultVertexShader, Mesh2d.defaultFragmentShader),\r\n                pluginName: 'batch2d'\r\n            }),\r\n            null,\r\n            drawMode);\r\n\r\n        (this.geometry.getBuffer('aVertexPosition') as any).static = false;\r\n    }\r\n\r\n    autoUpdate = true;\r\n\r\n    get vertices(): Float32Array\r\n    {\r\n        return this.geometry.getBuffer('aVertexPosition').data as Float32Array;\r\n    }\r\n    set vertices(value: Float32Array)\r\n    {\r\n        this.geometry.getBuffer('aVertexPosition').data = value;\r\n    }\r\n\r\n    protected _render(renderer?: Renderer): void\r\n    {\r\n        if (this.autoUpdate)\r\n        {\r\n            this.geometry.getBuffer('aVertexPosition').update();\r\n        }\r\n\r\n        (super._render as any)(renderer);\r\n    }\r\n}\r\n","import { Sprite } from '@pixi/sprite';\r\nimport { Renderer, Texture } from '@pixi/core';\r\nimport { Projection3d } from '../Projection3d';\r\nimport { IPointData, Matrix } from '@pixi/math';\r\nimport { DisplayObject } from '@pixi/display';\r\nimport { TRANSFORM_STEP } from '../../base';\r\nimport { container3dGetDepth, container3dIsFrontFace, container3dToLocal } from '../Container3d';\r\nimport { Euler } from '../Euler';\r\n/**\r\n * Same as Sprite2d, but\r\n * 1. uses Matrix3d in proj\r\n * 2. does not render if at least one vertex is behind camera\r\n */\r\nexport class Sprite3d extends Sprite\r\n{\r\n    constructor(texture: Texture)\r\n    {\r\n        super(texture);\r\n        this.proj = new Projection3d(this.transform);\r\n        this.pluginName = 'batch2d';\r\n    }\r\n\r\n    vertexData2d: Float32Array = null;\r\n    proj: Projection3d;\r\n    culledByFrustrum = false;\r\n    trimmedCulledByFrustrum = false;\r\n\r\n    calculateVertices(): void\r\n    {\r\n        const texture = this._texture;\r\n\r\n        if (this.proj._affine)\r\n        {\r\n            this.vertexData2d = null;\r\n            super.calculateVertices();\r\n\r\n            return;\r\n        }\r\n        if (!this.vertexData2d)\r\n        {\r\n            this.vertexData2d = new Float32Array(12);\r\n        }\r\n\r\n        const wid = (this.transform as any)._worldID;\r\n        const tuid = (texture as any)._updateID;\r\n        const thisAny = this as any;\r\n\r\n        if (thisAny._transformID === wid && this._textureID === tuid)\r\n        {\r\n            return;\r\n        }\r\n        // update texture UV here, because base texture can be changed without calling `_onTextureUpdate`\r\n        if (this._textureID !== tuid)\r\n        {\r\n            (this as any).uvs = (texture as any)._uvs.uvsFloat32;\r\n        }\r\n\r\n        thisAny._transformID = wid;\r\n        this._textureID = tuid;\r\n\r\n        const wt = this.proj.world.mat4;\r\n        const vertexData2d = this.vertexData2d;\r\n        const vertexData = this.vertexData;\r\n        const trim = texture.trim;\r\n        const orig = texture.orig;\r\n        const anchor = this._anchor;\r\n\r\n        let w0: number;\r\n        let w1: number;\r\n        let h0: number;\r\n        let h1: number;\r\n\r\n        if (trim)\r\n        {\r\n            w1 = trim.x - (anchor._x * orig.width);\r\n            w0 = w1 + trim.width;\r\n\r\n            h1 = trim.y - (anchor._y * orig.height);\r\n            h0 = h1 + trim.height;\r\n        }\r\n        else\r\n        {\r\n            w1 = -anchor._x * orig.width;\r\n            w0 = w1 + orig.width;\r\n\r\n            h1 = -anchor._y * orig.height;\r\n            h0 = h1 + orig.height;\r\n        }\r\n\r\n        let culled = false;\r\n\r\n        let z;\r\n\r\n        vertexData2d[0] = (wt[0] * w1) + (wt[4] * h1) + wt[12];\r\n        vertexData2d[1] = (wt[1] * w1) + (wt[5] * h1) + wt[13];\r\n        z = (wt[2] * w1) + (wt[6] * h1) + wt[14];\r\n        vertexData2d[2] = (wt[3] * w1) + (wt[7] * h1) + wt[15];\r\n        culled = culled || z < 0;\r\n\r\n        vertexData2d[3] = (wt[0] * w0) + (wt[4] * h1) + wt[12];\r\n        vertexData2d[4] = (wt[1] * w0) + (wt[5] * h1) + wt[13];\r\n        z = (wt[2] * w0) + (wt[6] * h1) + wt[14];\r\n        vertexData2d[5] = (wt[3] * w0) + (wt[7] * h1) + wt[15];\r\n        culled = culled || z < 0;\r\n\r\n        vertexData2d[6] = (wt[0] * w0) + (wt[4] * h0) + wt[12];\r\n        vertexData2d[7] = (wt[1] * w0) + (wt[5] * h0) + wt[13];\r\n        z = (wt[2] * w0) + (wt[6] * h0) + wt[14];\r\n        vertexData2d[8] = (wt[3] * w0) + (wt[7] * h0) + wt[15];\r\n        culled = culled || z < 0;\r\n\r\n        vertexData2d[9] = (wt[0] * w1) + (wt[4] * h0) + wt[12];\r\n        vertexData2d[10] = (wt[1] * w1) + (wt[5] * h0) + wt[13];\r\n        z = (wt[2] * w1) + (wt[6] * h0) + wt[14];\r\n        vertexData2d[11] = (wt[3] * w1) + (wt[7] * h0) + wt[15];\r\n        culled = culled || z < 0;\r\n\r\n        this.culledByFrustrum = culled;\r\n\r\n        vertexData[0] = vertexData2d[0] / vertexData2d[2];\r\n        vertexData[1] = vertexData2d[1] / vertexData2d[2];\r\n\r\n        vertexData[2] = vertexData2d[3] / vertexData2d[5];\r\n        vertexData[3] = vertexData2d[4] / vertexData2d[5];\r\n\r\n        vertexData[4] = vertexData2d[6] / vertexData2d[8];\r\n        vertexData[5] = vertexData2d[7] / vertexData2d[8];\r\n\r\n        vertexData[6] = vertexData2d[9] / vertexData2d[11];\r\n        vertexData[7] = vertexData2d[10] / vertexData2d[11];\r\n    }\r\n\r\n    calculateTrimmedVertices(): void\r\n    {\r\n        if (this.proj._affine)\r\n        {\r\n            super.calculateTrimmedVertices();\r\n\r\n            return;\r\n        }\r\n\r\n        const wid = (this.transform as any)._worldID;\r\n        const tuid = (this._texture as any)._updateID;\r\n        const thisAny = this as any;\r\n\r\n        if (!thisAny.vertexTrimmedData)\r\n        {\r\n            thisAny.vertexTrimmedData = new Float32Array(8);\r\n        }\r\n        else if (thisAny._transformTrimmedID === wid && this._textureTrimmedID === tuid)\r\n        {\r\n            return;\r\n        }\r\n\r\n        thisAny._transformTrimmedID = wid;\r\n        this._textureTrimmedID = tuid;\r\n\r\n        // lets do some special trim code!\r\n        const texture = this._texture;\r\n        const vertexData = thisAny.vertexTrimmedData;\r\n        const orig = texture.orig;\r\n        const anchor = this._anchor;\r\n\r\n        // lets calculate the new untrimmed bounds..\r\n        const wt = this.proj.world.mat4;\r\n\r\n        const w1 = -anchor._x * orig.width;\r\n        const w0 = w1 + orig.width;\r\n\r\n        const h1 = -anchor._y * orig.height;\r\n        const h0 = h1 + orig.height;\r\n\r\n        let culled = false;\r\n\r\n        let z;\r\n\r\n        let w = 1.0 / ((wt[3] * w1) + (wt[7] * h1) + wt[15]);\r\n\r\n        vertexData[0] = w * ((wt[0] * w1) + (wt[4] * h1) + wt[12]);\r\n        vertexData[1] = w * ((wt[1] * w1) + (wt[5] * h1) + wt[13]);\r\n        z = (wt[2] * w1) + (wt[6] * h1) + wt[14];\r\n        culled = culled || z < 0;\r\n\r\n        w = 1.0 / ((wt[3] * w0) + (wt[7] * h1) + wt[15]);\r\n        vertexData[2] = w * ((wt[0] * w0) + (wt[4] * h1) + wt[12]);\r\n        vertexData[3] = w * ((wt[1] * w0) + (wt[5] * h1) + wt[13]);\r\n        z = (wt[2] * w0) + (wt[6] * h1) + wt[14];\r\n        culled = culled || z < 0;\r\n\r\n        w = 1.0 / ((wt[3] * w0) + (wt[7] * h0) + wt[15]);\r\n        vertexData[4] = w * ((wt[0] * w0) + (wt[4] * h0) + wt[12]);\r\n        vertexData[5] = w * ((wt[1] * w0) + (wt[5] * h0) + wt[13]);\r\n        z = (wt[2] * w0) + (wt[6] * h0) + wt[14];\r\n        culled = culled || z < 0;\r\n\r\n        w = 1.0 / ((wt[3] * w1) + (wt[7] * h0) + wt[15]);\r\n        vertexData[6] = w * ((wt[0] * w1) + (wt[4] * h0) + wt[12]);\r\n        vertexData[7] = w * ((wt[1] * w1) + (wt[5] * h0) + wt[13]);\r\n        z = (wt[2] * w1) + (wt[6] * h0) + wt[14];\r\n        culled = culled || z < 0;\r\n\r\n        this.culledByFrustrum = culled;\r\n    }\r\n\r\n    _calculateBounds(): void\r\n    {\r\n        this.calculateVertices();\r\n        if (this.culledByFrustrum)\r\n        {\r\n            return;\r\n        }\r\n\r\n        const trim = this._texture.trim;\r\n        const orig = this._texture.orig;\r\n\r\n        if (!trim || (trim.width === orig.width && trim.height === orig.height))\r\n        {\r\n            // no trim! lets use the usual calculations..\r\n            this._bounds.addQuad(this.vertexData);\r\n\r\n            return;\r\n        }\r\n\r\n        this.calculateTrimmedVertices();\r\n        if (!this.trimmedCulledByFrustrum)\r\n        {\r\n            this._bounds.addQuad((this as any).vertexTrimmedData as any);\r\n        }\r\n    }\r\n\r\n    _render(renderer: Renderer): void\r\n    {\r\n        this.calculateVertices();\r\n\r\n        if (this.culledByFrustrum)\r\n        {\r\n            return;\r\n        }\r\n\r\n        renderer.batch.setObjectRenderer((renderer as any).plugins[this.pluginName]);\r\n        (renderer as any).plugins[this.pluginName].render(this);\r\n    }\r\n\r\n    containsPoint(point: IPointData): boolean\r\n    {\r\n        if (this.culledByFrustrum)\r\n        {\r\n            return false;\r\n        }\r\n\r\n        return super.containsPoint(point as any);\r\n    }\r\n\r\n    get worldTransform(): Matrix\r\n    {\r\n        return this.proj.affine ? this.transform.worldTransform : this.proj.world as any;\r\n    }\r\n\r\n    toLocal<T extends IPointData>(position: IPointData, from?: DisplayObject,\r\n        point?: T, skipUpdate?: boolean,\r\n        step = TRANSFORM_STEP.ALL): T\r\n    {\r\n        return container3dToLocal.call(this, position, from, point, skipUpdate, step);\r\n    }\r\n\r\n    isFrontFace(forceUpdate?: boolean): boolean\r\n    {\r\n        return container3dIsFrontFace.call(this, forceUpdate);\r\n    }\r\n\r\n    getDepth(forceUpdate?: boolean): boolean\r\n    {\r\n        return container3dGetDepth.call(this, forceUpdate);\r\n    }\r\n\r\n    get position3d(): IPointData\r\n    {\r\n        return this.proj.position;\r\n    }\r\n    set position3d(value: IPointData)\r\n    {\r\n        this.proj.position.copyFrom(value);\r\n    }\r\n    get scale3d(): IPointData\r\n    {\r\n        return this.proj.scale;\r\n    }\r\n    set scale3d(value: IPointData)\r\n    {\r\n        this.proj.scale.copyFrom(value);\r\n    }\r\n    get euler(): Euler\r\n    {\r\n        return this.proj.euler;\r\n    }\r\n    set euler(value: Euler)\r\n    {\r\n        this.proj.euler.copyFrom(value);\r\n    }\r\n    get pivot3d(): IPointData\r\n    {\r\n        return this.proj.pivot;\r\n    }\r\n    set pivot3d(value: IPointData)\r\n    {\r\n        this.proj.pivot.copyFrom(value);\r\n    }\r\n}\r\n","import { Container3d, container3dWorldTransform } from '../Container3d';\r\nimport { Projection3d } from '../Projection3d';\r\nimport { Mesh3d2d } from '../mesh/Mesh3d2d';\r\nimport { MeshMaterial } from '@pixi/mesh';\r\nimport { Mesh2d } from '../../proj2d';\r\nimport { Program } from '@pixi/core';\r\nimport { SimpleMesh, SimpleRope } from '@pixi/mesh-extras';\r\nimport { Container } from '@pixi/display';\r\nimport { Sprite } from '@pixi/sprite';\r\nimport { Sprite3d } from './Sprite3d';\r\n\r\nconst containerProps: any = {\r\n    worldTransform: {\r\n        get: container3dWorldTransform,\r\n        enumerable: true,\r\n        configurable: true\r\n    },\r\n    position3d: {\r\n        get() { return this.proj.position; },\r\n        set(value: any) { this.proj.position.copy(value); }\r\n    },\r\n    scale3d: {\r\n        get() { return this.proj.scale; },\r\n        set(value: any) { this.proj.scale.copy(value); }\r\n    },\r\n    pivot3d: {\r\n        get() { return this.proj.pivot; },\r\n        set(value: any) { this.proj.pivot.copy(value); }\r\n    },\r\n    euler: {\r\n        get() { return this.proj.euler; },\r\n        set(value: any) { this.proj.euler.copy(value); }\r\n    }\r\n};\r\n\r\nfunction convertTo3d()\r\n{\r\n    if (this.proj) return;\r\n    this.proj = new Projection3d(this.transform);\r\n    this.toLocal = Container3d.prototype.toLocal;\r\n    this.isFrontFace = Container3d.prototype.isFrontFace;\r\n    this.getDepth = Container3d.prototype.getDepth;\r\n    Object.defineProperties(this, containerProps);\r\n}\r\n\r\nContainer.prototype.convertTo3d = convertTo3d;\r\n\r\nSprite.prototype.convertTo3d = function spriteConvertTo3d()\r\n{\r\n    if (this.proj) return;\r\n    this.calculateVertices = Sprite3d.prototype.calculateVertices;\r\n    this.calculateTrimmedVertices = Sprite3d.prototype.calculateTrimmedVertices;\r\n    this._calculateBounds = Sprite3d.prototype._calculateBounds;\r\n    this.containsPoint = Sprite3d.prototype.containsPoint;\r\n    this.pluginName = 'batch2d';\r\n    convertTo3d.call(this);\r\n};\r\n\r\nContainer.prototype.convertSubtreeTo3d = function convertSubtreeTo3d()\r\n{\r\n    this.convertTo3d();\r\n    for (let i = 0; i < this.children.length; i++)\r\n    {\r\n        this.children[i].convertSubtreeTo3d();\r\n    }\r\n};\r\n\r\nSimpleMesh.prototype.convertTo3d\r\n    = SimpleRope.prototype.convertTo3d\r\n    = function meshConvert3d()\r\n        {\r\n            if (this.proj) return;\r\n            this.calculateVertices = Mesh3d2d.prototype.calculateVertices;\r\n            this._renderDefault = (Mesh3d2d.prototype as any)._renderDefault;\r\n            if (this.material.pluginName !== 'batch2d')\r\n            {\r\n                this.material = new MeshMaterial(this.material.texture, {\r\n                    program: Program.from(Mesh2d.defaultVertexShader, Mesh2d.defaultFragmentShader),\r\n                    pluginName: 'batch2d'\r\n                });\r\n            }\r\n            convertTo3d.call(this);\r\n        };\r\n","import { Text, TextStyle } from '@pixi/text';\r\nimport { Projection3d } from '../Projection3d';\r\nimport { IPointData, Matrix } from '@pixi/math';\r\nimport { container3dGetDepth, container3dIsFrontFace, container3dToLocal } from '../Container3d';\r\nimport { DisplayObject } from '@pixi/display';\r\nimport { TRANSFORM_STEP } from '../../base';\r\nimport { Sprite3d } from './Sprite3d';\r\nimport { Euler } from '../Euler';\r\n\r\nexport class Text3d extends Text\r\n{\r\n    constructor(text?: string, style?: TextStyle, canvas?: HTMLCanvasElement)\r\n    {\r\n        super(text, style, canvas);\r\n        this.proj = new Projection3d(this.transform);\r\n        this.pluginName = 'batch2d';\r\n    }\r\n\r\n    proj: Projection3d;\r\n    vertexData2d: Float32Array = null;\r\n\r\n    get worldTransform(): Matrix\r\n    {\r\n        return this.proj.affine ? this.transform.worldTransform : this.proj.world as any;\r\n    }\r\n\r\n    toLocal<T extends IPointData>(position: IPointData, from?: DisplayObject,\r\n        point?: T, skipUpdate?: boolean,\r\n        step = TRANSFORM_STEP.ALL): T\r\n    {\r\n        return container3dToLocal.call(this, position, from, point, skipUpdate, step);\r\n    }\r\n\r\n    isFrontFace(forceUpdate?: boolean): boolean\r\n    {\r\n        return container3dIsFrontFace.call(this, forceUpdate);\r\n    }\r\n\r\n    getDepth(forceUpdate?: boolean): boolean\r\n    {\r\n        return container3dGetDepth.call(this, forceUpdate);\r\n    }\r\n\r\n    get position3d(): IPointData\r\n    {\r\n        return this.proj.position;\r\n    }\r\n    set position3d(value: IPointData)\r\n    {\r\n        this.proj.position.copyFrom(value);\r\n    }\r\n    get scale3d(): IPointData\r\n    {\r\n        return this.proj.scale;\r\n    }\r\n    set scale3d(value: IPointData)\r\n    {\r\n        this.proj.scale.copyFrom(value);\r\n    }\r\n    get euler(): Euler\r\n    {\r\n        return this.proj.euler;\r\n    }\r\n    set euler(value: Euler)\r\n    {\r\n        this.proj.euler.copyFrom(value);\r\n    }\r\n    get pivot3d(): IPointData\r\n    {\r\n        return this.proj.pivot;\r\n    }\r\n    set pivot3d(value: IPointData)\r\n    {\r\n        this.proj.pivot.copyFrom(value);\r\n    }\r\n}\r\n\r\nText3d.prototype.calculateVertices = Sprite3d.prototype.calculateVertices;\r\n(Text3d.prototype as any).calculateTrimmedVertices = Sprite3d.prototype.calculateTrimmedVertices;\r\n(Text3d.prototype as any)._calculateBounds = Sprite3d.prototype._calculateBounds;\r\nText3d.prototype.containsPoint = Sprite3d.prototype.containsPoint;\r\n(Text3d.prototype as any)._render = Sprite3d.prototype._render;\r\n","import { BatchShaderGenerator, Buffer, Color, ExtensionType, Geometry, Renderer, ViewableBuffer } from '@pixi/core';\r\nimport { TYPES } from '@pixi/constants';\r\nimport { Sprite } from '@pixi/sprite';\r\nimport { Sprite2s } from './sprites/Sprite2s';\r\nimport { Matrix } from '@pixi/math';\r\nimport { UniformBatchRenderer } from '../base';\r\n\r\nconst shaderVert = `precision highp float;\r\nattribute vec2 aVertexPosition;\r\nattribute vec3 aTrans1;\r\nattribute vec3 aTrans2;\r\nattribute vec2 aSamplerSize;\r\nattribute vec4 aFrame;\r\nattribute vec4 aColor;\r\nattribute float aTextureId;\r\n\r\nuniform mat3 projectionMatrix;\r\nuniform mat3 translationMatrix;\r\n\r\nvarying vec2 vertexPosition;\r\nvarying vec3 vTrans1;\r\nvarying vec3 vTrans2;\r\nvarying vec2 vSamplerSize;\r\nvarying vec4 vFrame;\r\nvarying vec4 vColor;\r\nvarying float vTextureId;\r\n\r\nvoid main(void){\r\ngl_Position.xyw = projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0);\r\ngl_Position.z = 0.0;\r\n\r\nvertexPosition = aVertexPosition;\r\nvTrans1 = aTrans1;\r\nvTrans2 = aTrans2;\r\nvTextureId = aTextureId;\r\nvColor = aColor;\r\nvSamplerSize = aSamplerSize;\r\nvFrame = aFrame;\r\n}\r\n`;\r\n\r\nconst shaderFrag = `precision highp float;\r\nvarying vec2 vertexPosition;\r\nvarying vec3 vTrans1;\r\nvarying vec3 vTrans2;\r\nvarying vec2 vSamplerSize;\r\nvarying vec4 vFrame;\r\nvarying vec4 vColor;\r\nvarying float vTextureId;\r\n\r\nuniform sampler2D uSamplers[%count%];\r\nuniform vec4 distortion;\r\n\r\nvoid main(void){\r\nvec2 surface;\r\nvec2 surface2;\r\n\r\nfloat vx = vertexPosition.x;\r\nfloat vy = vertexPosition.y;\r\nfloat dx = distortion.x;\r\nfloat dy = distortion.y;\r\nfloat revx = distortion.z;\r\nfloat revy = distortion.w;\r\n\r\nif (distortion.x == 0.0) {\r\nsurface.x = vx;\r\nsurface.y = vy / (1.0 + dy * vx);\r\nsurface2 = surface;\r\n} else\r\nif (distortion.y == 0.0) {\r\nsurface.y = vy;\r\nsurface.x = vx / (1.0 + dx * vy);\r\nsurface2 = surface;\r\n} else {\r\nfloat c = vy * dx - vx * dy;\r\nfloat b = (c + 1.0) * 0.5;\r\nfloat b2 = (-c + 1.0) * 0.5;\r\nfloat d = b * b + vx * dy;\r\nif (d < -0.00001) {\r\n    discard;\r\n}\r\nd = sqrt(max(d, 0.0));\r\nsurface.x = (- b + d) * revy;\r\nsurface2.x = (- b - d) * revy;\r\nsurface.y = (- b2 + d) * revx;\r\nsurface2.y = (- b2 - d) * revx;\r\n}\r\n\r\nvec2 uv;\r\nuv.x = vTrans1.x * surface.x + vTrans1.y * surface.y + vTrans1.z;\r\nuv.y = vTrans2.x * surface.x + vTrans2.y * surface.y + vTrans2.z;\r\n\r\nvec2 pixels = uv * vSamplerSize;\r\n\r\nif (pixels.x < vFrame.x || pixels.x > vFrame.z ||\r\npixels.y < vFrame.y || pixels.y > vFrame.w) {\r\nuv.x = vTrans1.x * surface2.x + vTrans1.y * surface2.y + vTrans1.z;\r\nuv.y = vTrans2.x * surface2.x + vTrans2.y * surface2.y + vTrans2.z;\r\npixels = uv * vSamplerSize;\r\n\r\nif (pixels.x < vFrame.x || pixels.x > vFrame.z ||\r\n   pixels.y < vFrame.y || pixels.y > vFrame.w) {\r\n   discard;\r\n}\r\n}\r\n\r\nvec4 edge;\r\nedge.xy = clamp(pixels - vFrame.xy + 0.5, vec2(0.0, 0.0), vec2(1.0, 1.0));\r\nedge.zw = clamp(vFrame.zw - pixels + 0.5, vec2(0.0, 0.0), vec2(1.0, 1.0));\r\n\r\nfloat alpha = 1.0; //edge.x * edge.y * edge.z * edge.w;\r\nvec4 rColor = vColor * alpha;\r\n\r\nfloat textureId = floor(vTextureId+0.5);\r\nvec2 vTextureCoord = uv;\r\nvec4 color;\r\n%forloop%\r\ngl_FragColor = color * rColor;\r\n}`;\r\n\r\nexport class BatchBilinearGeometry extends Geometry\r\n{\r\n    _buffer: Buffer;\r\n    _indexBuffer : Buffer;\r\n\r\n    constructor(_static = false)\r\n    {\r\n        super();\r\n\r\n        this._buffer = new Buffer(null, _static, false);\r\n\r\n        this._indexBuffer = new Buffer(null, _static, true);\r\n\r\n        this.addAttribute('aVertexPosition', this._buffer, 2, false, TYPES.FLOAT)\r\n            .addAttribute('aTrans1', this._buffer, 3, false, TYPES.FLOAT)\r\n            .addAttribute('aTrans2', this._buffer, 3, false, TYPES.FLOAT)\r\n            .addAttribute('aSamplerSize', this._buffer, 2, false, TYPES.FLOAT)\r\n            .addAttribute('aFrame', this._buffer, 4, false, TYPES.FLOAT)\r\n            .addAttribute('aColor', this._buffer, 4, true, TYPES.UNSIGNED_BYTE)\r\n            .addAttribute('aTextureId', this._buffer, 1, true, TYPES.FLOAT)\r\n            .addIndex(this._indexBuffer);\r\n    }\r\n}\r\n\r\nexport class BatchBilinearRenderer extends UniformBatchRenderer\r\n{\r\n    constructor(renderer: Renderer)\r\n    {\r\n        super(renderer);\r\n        this.vertexSize = 16;\r\n        this.geometryClass = BatchBilinearGeometry;\r\n    }\r\n\r\n    static extension = {\r\n        name: 'batch_bilinear',\r\n        type: ExtensionType.RendererPlugin\r\n    };\r\n\r\n    setShaderGenerator()\r\n    {\r\n        this.shaderGenerator = new BatchShaderGenerator(\r\n            shaderVert,\r\n            shaderFrag\r\n        );\r\n    }\r\n\r\n    defUniforms = {\r\n        translationMatrix: new Matrix(),\r\n        distortion: new Float32Array([0, 0, Infinity, Infinity])\r\n    };\r\n    size = 1000;\r\n    forceMaxTextures = 1;\r\n\r\n    getUniforms(sprite: Sprite)\r\n    {\r\n        const { proj } = sprite as Sprite2s;\r\n\r\n        if (proj.surface !== null)\r\n        {\r\n            return proj.uniforms;\r\n        }\r\n        if (proj._activeProjection !== null)\r\n        {\r\n            return proj._activeProjection.uniforms;\r\n        }\r\n\r\n        return this.defUniforms;\r\n    }\r\n\r\n    // eslint-disable-next-line max-len\r\n    packInterleavedGeometry(element: any, attributeBuffer: ViewableBuffer, indexBuffer: Uint16Array, aIndex: number, iIndex: number)\r\n    {\r\n        const {\r\n            uint32View,\r\n            float32View,\r\n        } = attributeBuffer;\r\n        const p = aIndex / this.vertexSize;\r\n        const indices = element.indices;\r\n        const vertexData = element.vertexData;\r\n        const tex = element._texture;\r\n        const frame = tex._frame;\r\n        const aTrans = element.aTrans;\r\n        const { _batchLocation, realWidth, realHeight, resolution } = element._texture.baseTexture;\r\n\r\n        const alpha = Math.min(element.worldAlpha, 1.0);\r\n        const argb = Color.shared\r\n            .setValue(element._tintRGB)\r\n            .toPremultiplied(alpha);\r\n\r\n        for (let i = 0; i < vertexData.length; i += 2)\r\n        {\r\n            float32View[aIndex] = vertexData[i];\r\n            float32View[aIndex + 1] = vertexData[i + 1];\r\n\r\n            float32View[aIndex + 2] = aTrans.a;\r\n            float32View[aIndex + 3] = aTrans.c;\r\n            float32View[aIndex + 4] = aTrans.tx;\r\n            float32View[aIndex + 5] = aTrans.b;\r\n            float32View[aIndex + 6] = aTrans.d;\r\n            float32View[aIndex + 7] = aTrans.ty;\r\n\r\n            float32View[aIndex + 8] = realWidth;\r\n            float32View[aIndex + 9] = realHeight;\r\n            float32View[aIndex + 10] = frame.x * resolution;\r\n            float32View[aIndex + 11] = frame.y * resolution;\r\n            float32View[aIndex + 12] = (frame.x + frame.width) * resolution;\r\n            float32View[aIndex + 13] = (frame.y + frame.height) * resolution;\r\n\r\n            uint32View[aIndex + 14] = argb;\r\n            float32View[aIndex + 15] = _batchLocation;\r\n            aIndex += 16;\r\n        }\r\n\r\n        for (let i = 0; i < indices.length; i++)\r\n        {\r\n            indexBuffer[iIndex++] = p + indices[i];\r\n        }\r\n    }\r\n}\r\n","import { IPointData, Matrix, Point } from '@pixi/math';\r\nimport { IWorldTransform } from './ProjectionSurface';\r\nimport { Dict } from '@pixi/utils';\r\n\r\nconst p = [new Point(), new Point(), new Point(), new Point()];\r\nconst a = [0, 0, 0, 0];\r\n\r\nexport abstract class Surface implements IWorldTransform\r\n{\r\n    surfaceID = 'default';\r\n\r\n    _updateID = 0;\r\n\r\n    vertexSrc = '';\r\n    fragmentSrc = '';\r\n\r\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n    fillUniforms(uniforms: Dict<any>): void\r\n    // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n    {\r\n\r\n    }\r\n\r\n    clear(): void\r\n    // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n    {\r\n\r\n    }\r\n\r\n    /**\r\n     * made for bilinear, other things will need adjustments, like test if (0) is inside\r\n     * @param {ArrayLike<number>} v\r\n     * @param out\r\n     * @param {Matrix} after\r\n     */\r\n    // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\r\n    boundsQuad(v: ArrayLike<number>, out: any, after?: Matrix): void\r\n    {\r\n        let minX = out[0]; let\r\n            minY = out[1];\r\n        let maxX = out[0]; let\r\n            maxY = out[1];\r\n\r\n        for (let i = 2; i < 8; i += 2)\r\n        {\r\n            if (minX > out[i]) minX = out[i];\r\n            if (maxX < out[i]) maxX = out[i];\r\n            if (minY > out[i + 1]) minY = out[i + 1];\r\n            if (maxY < out[i + 1]) maxY = out[i + 1];\r\n        }\r\n\r\n        p[0].set(minX, minY);\r\n        this.apply(p[0], p[0]);\r\n        p[1].set(maxX, minY);\r\n        this.apply(p[1], p[1]);\r\n        p[2].set(maxX, maxY);\r\n        this.apply(p[2], p[2]);\r\n        p[3].set(minX, maxY);\r\n        this.apply(p[3], p[3]);\r\n\r\n        if (after)\r\n        {\r\n            after.apply(p[0], p[0]);\r\n            after.apply(p[1], p[1]);\r\n            after.apply(p[2], p[2]);\r\n            after.apply(p[3], p[3]);\r\n            out[0] = p[0].x;\r\n            out[1] = p[0].y;\r\n            out[2] = p[1].x;\r\n            out[3] = p[1].y;\r\n            out[4] = p[2].x;\r\n            out[5] = p[2].y;\r\n            out[6] = p[3].x;\r\n            out[7] = p[3].y;\r\n        }\r\n        else\r\n        {\r\n            for (let i = 1; i <= 3; i++)\r\n            {\r\n                if (p[i].y < p[0].y || (p[i].y === p[0].y && p[i].x < p[0].x))\r\n                {\r\n                    const t = p[0];\r\n\r\n                    p[0] = p[i];\r\n                    p[i] = t;\r\n                }\r\n            }\r\n\r\n            for (let i = 1; i <= 3; i++)\r\n            {\r\n                a[i] = Math.atan2(p[i].y - p[0].y, p[i].x - p[0].x);\r\n            }\r\n            for (let i = 1; i <= 3; i++)\r\n            {\r\n                for (let j = i + 1; j <= 3; j++)\r\n                {\r\n                    if (a[i] > a[j])\r\n                    {\r\n                        const t = p[i];\r\n\r\n                        p[i] = p[j];\r\n                        p[j] = t;\r\n                        const t2 = a[i];\r\n\r\n                        a[i] = a[j];\r\n                        a[j] = t2;\r\n                    }\r\n                }\r\n            }\r\n\r\n            out[0] = p[0].x;\r\n            out[1] = p[0].y;\r\n            out[2] = p[1].x;\r\n            out[3] = p[1].y;\r\n            out[4] = p[2].x;\r\n            out[5] = p[2].y;\r\n            out[6] = p[3].x;\r\n            out[7] = p[3].y;\r\n\r\n            if (((p[3].x - p[2].x) * (p[1].y - p[2].y)) - ((p[1].x - p[2].x) * (p[3].y - p[2].y)) < 0)\r\n            {\r\n                // triangle!!!\r\n                out[4] = p[3].x;\r\n                out[5] = p[3].y;\r\n\r\n                return;\r\n            }\r\n        }\r\n    }\r\n\r\n    abstract apply(pos: IPointData, newPos: IPointData): IPointData;\r\n\r\n    // TODO: remove props\r\n    abstract applyInverse(pos: IPointData, newPos: IPointData): IPointData;\r\n}\r\n","/* eslint-disable no-mixed-operators */\r\nimport { IPoint, IPointData, Matrix, Point, Rectangle, Transform } from '@pixi/math';\r\nimport { Sprite } from '@pixi/sprite';\r\nimport { Surface } from './BaseSurface';\r\nimport { Dict } from '@pixi/utils';\r\n\r\nconst tempMat = new Matrix();\r\nconst tempRect = new Rectangle();\r\nconst tempPoint = new Point();\r\n\r\nexport class BilinearSurface extends Surface\r\n{\r\n    distortion = new Point();\r\n\r\n    clear(): void\r\n    {\r\n        this.distortion.set(0, 0);\r\n    }\r\n\r\n    apply(pos: IPointData, newPos?: IPointData): IPointData\r\n    {\r\n        newPos = newPos || new Point();\r\n        const d = this.distortion;\r\n        const m = pos.x * pos.y;\r\n\r\n        newPos.x = pos.x + d.x * m;\r\n        newPos.y = pos.y + d.y * m;\r\n\r\n        return newPos;\r\n    }\r\n\r\n    applyInverse(pos: IPointData, newPos: IPoint): IPointData\r\n    {\r\n        newPos = newPos || new Point();\r\n        const vx = pos.x; const\r\n            vy = pos.y;\r\n        const dx = this.distortion.x; const\r\n            dy = this.distortion.y;\r\n\r\n        if (dx === 0.0)\r\n        {\r\n            newPos.x = vx;\r\n            newPos.y = vy / (1.0 + dy * vx);\r\n        }\r\n        else\r\n        if (dy === 0.0)\r\n        {\r\n            newPos.y = vy;\r\n            newPos.x = vx / (1.0 + dx * vy);\r\n        }\r\n        else\r\n        {\r\n            const b = (vy * dx - vx * dy + 1.0) * 0.5 / dy;\r\n            const d = b * b + vx / dy;\r\n\r\n            if (d <= 0.00001)\r\n            {\r\n                newPos.set(NaN, NaN);\r\n\r\n                return newPos;\r\n            }\r\n            if (dy > 0.0)\r\n            {\r\n                newPos.x = -b + Math.sqrt(d);\r\n            }\r\n            else\r\n            {\r\n                newPos.x = -b - Math.sqrt(d);\r\n            }\r\n            newPos.y = (vx / newPos.x - 1.0) / dx;\r\n        }\r\n\r\n        return newPos;\r\n    }\r\n\r\n    mapSprite(sprite: Sprite, quad: Array<IPointData>, outTransform?: Transform): this\r\n    {\r\n        const tex = sprite.texture;\r\n\r\n        tempRect.x = -sprite.anchor.x * tex.orig.width;\r\n        tempRect.y = -sprite.anchor.y * tex.orig.height;\r\n        tempRect.width = tex.orig.width;\r\n        tempRect.height = tex.orig.height;\r\n\r\n        return this.mapQuad(tempRect, quad, outTransform || sprite.transform as Transform);\r\n    }\r\n\r\n    mapQuad(rect: Rectangle, quad: Array<IPointData>, outTransform: Transform): this\r\n    {\r\n        const ax = -rect.x / rect.width;\r\n        const ay = -rect.y / rect.height;\r\n\r\n        const ax2 = (1.0 - rect.x) / rect.width;\r\n        const ay2 = (1.0 - rect.y) / rect.height;\r\n\r\n        const up1x = (quad[0].x * (1.0 - ax) + quad[1].x * ax);\r\n        const up1y = (quad[0].y * (1.0 - ax) + quad[1].y * ax);\r\n        const up2x = (quad[0].x * (1.0 - ax2) + quad[1].x * ax2);\r\n        const up2y = (quad[0].y * (1.0 - ax2) + quad[1].y * ax2);\r\n\r\n        const down1x = (quad[3].x * (1.0 - ax) + quad[2].x * ax);\r\n        const down1y = (quad[3].y * (1.0 - ax) + quad[2].y * ax);\r\n        const down2x = (quad[3].x * (1.0 - ax2) + quad[2].x * ax2);\r\n        const down2y = (quad[3].y * (1.0 - ax2) + quad[2].y * ax2);\r\n\r\n        const x00 = up1x * (1.0 - ay) + down1x * ay;\r\n        const y00 = up1y * (1.0 - ay) + down1y * ay;\r\n\r\n        const x10 = up2x * (1.0 - ay) + down2x * ay;\r\n        const y10 = up2y * (1.0 - ay) + down2y * ay;\r\n\r\n        const x01 = up1x * (1.0 - ay2) + down1x * ay2;\r\n        const y01 = up1y * (1.0 - ay2) + down1y * ay2;\r\n\r\n        const x11 = up2x * (1.0 - ay2) + down2x * ay2;\r\n        const y11 = up2y * (1.0 - ay2) + down2y * ay2;\r\n\r\n        const mat = tempMat;\r\n\r\n        mat.tx = x00;\r\n        mat.ty = y00;\r\n        mat.a = x10 - x00;\r\n        mat.b = y10 - y00;\r\n        mat.c = x01 - x00;\r\n        mat.d = y01 - y00;\r\n        tempPoint.set(x11, y11);\r\n        mat.applyInverse(tempPoint, tempPoint);\r\n        this.distortion.set(tempPoint.x - 1, tempPoint.y - 1);\r\n\r\n        outTransform.setFromMatrix(mat);\r\n\r\n        return this;\r\n    }\r\n\r\n    fillUniforms(uniforms: Dict<any>): void\r\n    {\r\n        uniforms.distortion = uniforms.distortion || new Float32Array([0, 0, 0, 0]);\r\n        const ax = Math.abs(this.distortion.x);\r\n        const ay = Math.abs(this.distortion.y);\r\n\r\n        uniforms.distortion[0] = ax * 10000 <= ay ? 0 : this.distortion.x;\r\n        uniforms.distortion[1] = ay * 10000 <= ax ? 0 : this.distortion.y;\r\n        uniforms.distortion[2] = 1.0 / uniforms.distortion[0];\r\n        uniforms.distortion[3] = 1.0 / uniforms.distortion[1];\r\n    }\r\n}\r\n","import { IPointData, Transform } from '@pixi/math';\r\nimport { AbstractProjection } from '../base';\r\nimport { Surface } from './BaseSurface';\r\nimport { BilinearSurface } from './BilinearSurface';\r\nimport { Sprite } from '@pixi/sprite';\r\n\r\nconst fun = Transform.prototype.updateTransform;\r\n\r\nexport interface IWorldTransform\n{\r\n    apply(pos: IPointData, newPos: IPointData): IPointData;\r\n\r\n    // TODO: remove props\r\n    applyInverse(pos: IPointData, newPos: IPointData): IPointData;\r\n}\r\n\r\nfunction transformHack(this: Transform, parentTransform: Transform): IWorldTransform\r\n{\r\n    // TODO: pixi 6.1.0 global mixin\r\n    const proj = (this as any).proj as ProjectionSurface;\r\n\r\n    const pp = (parentTransform as any).proj as ProjectionSurface;\r\n    const ta = this as any;\r\n\r\n    if (!pp)\r\n    {\r\n        fun.call(this, parentTransform);\r\n        proj._activeProjection = null;\r\n\r\n        return;\r\n    }\r\n\r\n    if (pp._surface)\r\n    {\r\n        proj._activeProjection = pp;\r\n        this.updateLocalTransform();\r\n        this.localTransform.copyTo(this.worldTransform);\r\n        if (ta._parentID < 0)\r\n        {\r\n            ++ta._worldID;\r\n        }\r\n\r\n        return;\r\n    }\r\n\r\n    fun.call(this, parentTransform);\r\n    proj._activeProjection = pp._activeProjection;\r\n}\r\n\r\nexport class ProjectionSurface extends AbstractProjection\r\n{\r\n    _surface: Surface = null;\r\n    _activeProjection: ProjectionSurface = null;\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    get surface(): Surface\r\n    {\r\n        return this._surface;\r\n    }\r\n\r\n    set surface(value: Surface)\r\n    {\r\n        if (this._surface === value)\r\n        {\r\n            return;\r\n        }\r\n        this._surface = value || null;\r\n        (this.legacy as any)._parentID = -1;\r\n    }\r\n\r\n    applyPartial(pos: IPointData, newPos?: IPointData): IPointData\r\n    {\r\n        if (this._activeProjection !== null)\r\n        {\r\n            newPos = this.legacy.worldTransform.apply(pos, newPos);\r\n\r\n            return this._activeProjection.surface.apply(newPos, newPos);\r\n        }\r\n        if (this._surface !== null)\r\n        {\r\n            return this.surface.apply(pos, newPos);\r\n        }\r\n\r\n        return this.legacy.worldTransform.apply(pos, newPos);\r\n    }\r\n\r\n    apply(pos: IPointData, newPos?: IPointData): IPointData\r\n    {\r\n        if (this._activeProjection !== null)\r\n        {\r\n            newPos = this.legacy.worldTransform.apply(pos, newPos);\r\n            this._activeProjection.surface.apply(newPos, newPos);\r\n\r\n            return this._activeProjection.legacy.worldTransform.apply(newPos, newPos);\r\n        }\r\n        if (this._surface !== null)\r\n        {\r\n            newPos = this.surface.apply(pos, newPos);\r\n\r\n            return this.legacy.worldTransform.apply(newPos, newPos);\r\n        }\r\n\r\n        return this.legacy.worldTransform.apply(pos, newPos);\r\n    }\r\n\r\n    applyInverse(pos: IPointData, newPos: IPointData): IPointData\r\n    {\r\n        if (this._activeProjection !== null)\r\n        {\r\n            newPos = this._activeProjection.legacy.worldTransform.applyInverse(pos, newPos);\r\n            this._activeProjection._surface.applyInverse(newPos, newPos);\r\n\r\n            return this.legacy.worldTransform.applyInverse(newPos, newPos);\r\n        }\r\n        if (this._surface !== null)\r\n        {\r\n            newPos = this.legacy.worldTransform.applyInverse(pos, newPos);\r\n\r\n            return this._surface.applyInverse(newPos, newPos);\r\n        }\r\n\r\n        return this.legacy.worldTransform.applyInverse(pos, newPos);\r\n    }\r\n\r\n    mapBilinearSprite(sprite: Sprite, quad: Array<IPointData>): void\r\n    {\r\n        if (!(this._surface instanceof BilinearSurface))\r\n        {\r\n            this.surface = new BilinearSurface();\r\n        }\r\n        (this.surface as BilinearSurface).mapSprite(sprite, quad, this.legacy);\r\n    }\r\n\r\n    _currentSurfaceID = -1;\r\n    _currentLegacyID = -1;\r\n    _lastUniforms : any = null;\r\n\r\n    clear(): void\r\n    {\r\n        if (this.surface)\r\n        {\r\n            this.surface.clear();\r\n        }\r\n    }\r\n\r\n    get uniforms(): any\r\n    {\r\n        if (this._currentLegacyID === (this.legacy as any)._worldID\r\n            && this._currentSurfaceID === this.surface._updateID)\r\n        {\r\n            return this._lastUniforms;\r\n        }\r\n\r\n        this._lastUniforms = this._lastUniforms || {};\r\n        this._lastUniforms.translationMatrix = this.legacy.worldTransform;\r\n        this._surface.fillUniforms(this._lastUniforms);\r\n\r\n        return this._lastUniforms;\r\n    }\r\n}\r\n","import { Matrix } from '@pixi/math';\r\nimport { Texture, TextureMatrix } from '@pixi/core';\r\nimport { Sprite } from '@pixi/sprite';\r\nimport { ProjectionSurface } from '../ProjectionSurface';\r\n\r\nexport class Sprite2s extends Sprite\r\n{\r\n    constructor(texture: Texture)\r\n    {\r\n        super(texture);\r\n        this.proj = new ProjectionSurface(this.transform);\r\n        this.pluginName = 'batch_bilinear';\r\n    }\r\n\r\n    proj: ProjectionSurface;\r\n    aTrans = new Matrix();\r\n\r\n    _calculateBounds(): void\r\n    {\r\n        this.calculateTrimmedVertices();\r\n        this._bounds.addQuad((this as any).vertexTrimmedData as any);\r\n    }\r\n\r\n    calculateVertices(): void\r\n    {\r\n        const wid = (this.transform as any)._worldID;\r\n        const tuid = (this._texture as any)._updateID;\r\n        const thisAny = this as any;\r\n\r\n        if (thisAny._transformID === wid && this._textureID === tuid)\r\n        {\r\n            return;\r\n        }\r\n\r\n        thisAny._transformID = wid;\r\n        this._textureID = tuid;\r\n\r\n        const texture = this._texture;\r\n        const vertexData = this.vertexData;\r\n        const trim = texture.trim;\r\n        const orig = texture.orig;\r\n        const anchor = this._anchor;\r\n\r\n        let w0: number;\r\n        let w1: number;\r\n        let h0: number;\r\n        let h1: number;\r\n\r\n        if (trim)\r\n        {\r\n            w1 = trim.x - (anchor._x * orig.width);\r\n            w0 = w1 + trim.width;\r\n\r\n            h1 = trim.y - (anchor._y * orig.height);\r\n            h0 = h1 + trim.height;\r\n        }\r\n        else\r\n        {\r\n            w1 = -anchor._x * orig.width;\r\n            w0 = w1 + orig.width;\r\n\r\n            h1 = -anchor._y * orig.height;\r\n            h0 = h1 + orig.height;\r\n        }\r\n\r\n        if (this.proj._surface)\r\n        {\r\n            vertexData[0] = w1;\r\n            vertexData[1] = h1;\r\n            vertexData[2] = w0;\r\n            vertexData[3] = h1;\r\n            vertexData[4] = w0;\r\n            vertexData[5] = h0;\r\n            vertexData[6] = w1;\r\n            vertexData[7] = h0;\r\n            this.proj._surface.boundsQuad(vertexData, vertexData);\r\n        }\r\n        else\r\n        {\r\n            const wt = this.transform.worldTransform;\r\n            const a = wt.a;\r\n            const b = wt.b;\r\n            const c = wt.c;\r\n            const d = wt.d;\r\n            const tx = wt.tx;\r\n            const ty = wt.ty;\r\n\r\n            vertexData[0] = (a * w1) + (c * h1) + tx;\r\n            vertexData[1] = (d * h1) + (b * w1) + ty;\r\n            vertexData[2] = (a * w0) + (c * h1) + tx;\r\n            vertexData[3] = (d * h1) + (b * w0) + ty;\r\n            vertexData[4] = (a * w0) + (c * h0) + tx;\r\n            vertexData[5] = (d * h0) + (b * w0) + ty;\r\n            vertexData[6] = (a * w1) + (c * h0) + tx;\r\n            vertexData[7] = (d * h0) + (b * w1) + ty;\r\n            if (this.proj._activeProjection)\r\n            {\r\n                this.proj._activeProjection.surface.boundsQuad(vertexData, vertexData);\r\n            }\r\n        }\r\n\r\n        if (!texture.uvMatrix)\r\n        {\r\n            texture.uvMatrix = new TextureMatrix(texture);\r\n        }\r\n        texture.uvMatrix.update();\r\n\r\n        const aTrans = this.aTrans;\r\n\r\n        aTrans.set(orig.width, 0, 0, orig.height, w1, h1);\r\n        if (this.proj._surface === null)\r\n        {\r\n            aTrans.prepend(this.transform.worldTransform);\r\n        }\r\n        aTrans.invert();\r\n        aTrans.prepend((texture.uvMatrix as any).mapCoord);\r\n    }\r\n\r\n    calculateTrimmedVertices(): void\r\n    {\r\n        const wid = (this.transform as any)._worldID;\r\n        const tuid = (this._texture as any)._updateID;\r\n        const thisAny = this as any;\r\n\r\n        if (!thisAny.vertexTrimmedData)\r\n        {\r\n            thisAny.vertexTrimmedData = new Float32Array(8);\r\n        }\r\n        else if (thisAny._transformTrimmedID === wid && this._textureTrimmedID === tuid)\r\n        {\r\n            return;\r\n        }\r\n\r\n        thisAny._transformTrimmedID = wid;\r\n        this._textureTrimmedID = tuid;\r\n\r\n        // lets do some special trim code!\r\n        const texture = this._texture;\r\n        const vertexData = thisAny.vertexTrimmedData;\r\n        const orig = texture.orig;\r\n        const anchor = this._anchor;\r\n\r\n        // lets calculate the new untrimmed bounds..\r\n\r\n        const w1 = -anchor._x * orig.width;\r\n        const w0 = w1 + orig.width;\r\n\r\n        const h1 = -anchor._y * orig.height;\r\n        const h0 = h1 + orig.height;\r\n\r\n        // TODO: take rotations into account! form temporary bounds\r\n\r\n        if (this.proj._surface)\r\n        {\r\n            vertexData[0] = w1;\r\n            vertexData[1] = h1;\r\n            vertexData[2] = w0;\r\n            vertexData[3] = h1;\r\n            vertexData[4] = w0;\r\n            vertexData[5] = h0;\r\n            vertexData[6] = w1;\r\n            vertexData[7] = h0;\r\n            this.proj._surface.boundsQuad(vertexData, vertexData, this.transform.worldTransform);\r\n        }\r\n        else\r\n        {\r\n            const wt = this.transform.worldTransform;\r\n            const a = wt.a;\r\n            const b = wt.b;\r\n            const c = wt.c;\r\n            const d = wt.d;\r\n            const tx = wt.tx;\r\n            const ty = wt.ty;\r\n\r\n            vertexData[0] = (a * w1) + (c * h1) + tx;\r\n            vertexData[1] = (d * h1) + (b * w1) + ty;\r\n            vertexData[2] = (a * w0) + (c * h1) + tx;\r\n            vertexData[3] = (d * h1) + (b * w0) + ty;\r\n            vertexData[4] = (a * w0) + (c * h0) + tx;\r\n            vertexData[5] = (d * h0) + (b * w0) + ty;\r\n            vertexData[6] = (a * w1) + (c * h0) + tx;\r\n            vertexData[7] = (d * h0) + (b * w1) + ty;\r\n            if (this.proj._activeProjection)\r\n            {\r\n                this.proj._activeProjection.surface.boundsQuad(vertexData, vertexData,\r\n                    this.proj._activeProjection.legacy.worldTransform);\r\n            }\r\n        }\r\n    }\r\n\r\n    get worldTransform(): Matrix\r\n    {\r\n        return this.proj as any;\r\n    }\r\n}\r\n","import { Sprite } from '@pixi/sprite';\r\nimport { Container } from '@pixi/display';\r\nimport { Matrix } from '@pixi/math';\r\nimport { Sprite2s } from './Sprite2s';\r\nimport { ProjectionSurface } from '../ProjectionSurface';\r\n\r\nSprite.prototype.convertTo2s = function spriteConvertTo2s()\r\n{\r\n    if (this.proj) return;\r\n    // container\r\n    this.pluginName = 'sprite_bilinear';\r\n    this.aTrans = new Matrix();\r\n    this.calculateVertices = Sprite2s.prototype.calculateVertices;\r\n    this.calculateTrimmedVertices = Sprite2s.prototype.calculateTrimmedVertices;\r\n    this._calculateBounds = Sprite2s.prototype._calculateBounds;\r\n    Container.prototype.convertTo2s.call(this);\r\n};\r\n\r\nContainer.prototype.convertTo2s = function convertTo2s()\r\n{\r\n    if (this.proj) return;\r\n    this.proj = new ProjectionSurface(this.transform);\r\n    Object.defineProperty(this, 'worldTransform', {\r\n        get()\r\n        {\r\n            return this.proj;\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n};\r\n\r\nContainer.prototype.convertSubtreeTo2s = function convertSubtreeTo2s()\r\n{\r\n    this.convertTo2s();\r\n    for (let i = 0; i < this.children.length; i++)\r\n    {\r\n        this.children[i].convertSubtreeTo2s();\r\n    }\r\n};\r\n","import { Text, TextStyle } from '@pixi/text';\r\nimport { ProjectionSurface } from '../ProjectionSurface';\r\nimport { Matrix } from '@pixi/math';\r\nimport { Sprite2s } from './Sprite2s';\r\n\r\nexport class Text2s extends Text\r\n{\r\n    constructor(text?: string, style?: TextStyle, canvas?: HTMLCanvasElement)\r\n    {\r\n        super(text, style, canvas);\r\n        this.proj = new ProjectionSurface(this.transform);\r\n        this.pluginName = 'batch_bilinear';\r\n    }\r\n\r\n    proj: ProjectionSurface;\r\n\r\n    aTrans = new Matrix();\r\n\r\n    get worldTransform(): Matrix\r\n    {\r\n        return this.proj as any;\r\n    }\r\n}\r\n\r\n(Text2s.prototype as any).calculateVertices = Sprite2s.prototype.calculateVertices;\r\n(Text2s.prototype as any).calculateTrimmedVertices = Sprite2s.prototype.calculateTrimmedVertices;\r\n(Text2s.prototype as any)._calculateBounds = Sprite2s.prototype._calculateBounds;\r\n","import { extensions } from '@pixi/core';\r\nimport { BatchBilinearRenderer } from './SpriteBilinearRenderer';\r\n\r\nexport * from './BaseSurface';\r\nexport * from './BilinearSurface';\r\nexport * from './ProjectionSurface';\r\nexport * from './SpriteBilinearRenderer';\r\n\r\nexport * from './sprites/convert';\r\nexport * from './sprites/Sprite2s';\r\nexport * from './sprites/Text2s';\r\n\r\nextensions.add(BatchBilinearRenderer);\r\n","import { ISpineClass } from './base';\r\nimport { Graphics } from '@pixi/graphics';\r\nimport { Sprite2d, Container2d, SimpleMesh2d } from '../proj2d';\r\nimport { Texture } from '@pixi/core';\r\n\r\nexport function applySpine2dMixin(spineClassPrototype: ISpineClass): void\r\n{\r\n    spineClassPrototype.newMesh = function newMesh(texture: Texture, vertices?: Float32Array,\r\n        uvs?: Float32Array, indices?: Uint16Array, drawMode?: number)\r\n    {\r\n        return new SimpleMesh2d(texture, vertices, uvs, indices, drawMode) as any;\r\n    };\r\n    spineClassPrototype.newContainer = function newMesh()\r\n    {\r\n        if (!this.proj)\r\n        {\r\n            this.convertTo2d();\r\n        }\r\n\r\n        return new Container2d() as any;\r\n    };\r\n    spineClassPrototype.newSprite = function newSprite(texture: Texture)\r\n    {\r\n        return new Sprite2d(texture);\r\n    };\r\n    spineClassPrototype.newGraphics = function newMesh()\r\n    {\r\n        const graphics = new Graphics();\r\n        // TODO: make Graphics2d\r\n\r\n        graphics.convertTo2d();\r\n\r\n        return graphics;\r\n    };\r\n    spineClassPrototype.transformHack = function transformHack()\r\n    {\r\n        return 2;\r\n    };\r\n}\r\n","import { ISpineClass } from './base';\r\nimport { Graphics } from '@pixi/graphics';\r\nimport { Sprite3d, Container3d, SimpleMesh3d2d } from '../proj3d';\r\nimport { Texture } from '@pixi/core';\r\n\r\nexport function applySpine3dMixin(spineClassPrototype: ISpineClass): void\r\n{\r\n    spineClassPrototype.newMesh = function newMesh(texture: Texture, vertices?: Float32Array,\r\n        uvs?: Float32Array, indices?: Uint16Array, drawMode?: number)\r\n    {\r\n        return new SimpleMesh3d2d(texture, vertices, uvs, indices, drawMode) as any;\r\n    };\r\n    spineClassPrototype.newContainer = function newMesh()\r\n    {\r\n        if (!this.proj)\r\n        {\r\n            this.convertTo3d();\r\n        }\r\n\r\n        return new Container3d() as any;\r\n    };\r\n    spineClassPrototype.newSprite = function newSprite(texture: Texture)\r\n    {\r\n        return new Sprite3d(texture);\r\n    };\r\n    spineClassPrototype.newGraphics = function newMesh()\r\n    {\r\n        const graphics = new Graphics();\r\n        // TODO: make Graphics2d\r\n\r\n        graphics.convertTo3d();\r\n\r\n        return graphics;\r\n    };\r\n    spineClassPrototype.transformHack = function transformHack()\r\n    {\r\n        return 2;\r\n    };\r\n}\r\n"],"names":["ENV","ENV2","RENDERER_TYPE","RENDERER_TYPE2","BUFFER_BITS","BUFFER_BITS2","BLEND_MODES","BLEND_MODES2","DRAW_MODES","DRAW_MODES2","FORMATS","FORMATS2","TARGETS","TARGETS2","TYPES","TYPES2","SAMPLER_TYPES","SAMPLER_TYPES2","SCALE_MODES","SCALE_MODES2","WRAP_MODES","WRAP_MODES2","MIPMAP_MODES","MIPMAP_MODES2","ALPHA_MODES","ALPHA_MODES2","CLEAR_MODES","CLEAR_MODES2","GC_MODES","GC_MODES2","PRECISION","PRECISION2","MASK_TYPES","MASK_TYPES2","COLOR_MASK_BITS","COLOR_MASK_BITS2","MSAA_QUALITY","MSAA_QUALITY2","BUFFER_TYPE","BUFFER_TYPE2","shaderVert","shaderFrag","Batch3dGeometry","Geometry","_static","Buffer","Batch2dRenderer","BatchRenderer","renderer","BatchShaderGenerator","element","attributeBuffer","indexBuffer","aIndex","iIndex","uint32View","float32View","p","uvs","indices","vertexData","vertexData2d","textureId","alpha","argb","Color","j","i","ExtensionType","AbstractProjection","legacy","enable","value","TRANSFORM_STEP","e","AFFINE","transformHack","parentTransform","proj","ta","pwid","lt","scaleAfterAffine","_matrixID","pp","wa","LinearProjection","Transform","UniformBatchRenderer","sprite","obj","sh","key","texArray","start","finish","thisAny","elements","_attributeBuffer","_indexBuffer","vertexSize","drawCalls","dcIndex","drawCall","tex","spriteBlendMode","premultiplyBlendMode","uniforms","dcCount","gl","stateSystem","shaderSystem","curUniforms","curTexArray","type","size","blend","extensions","getIntersectionFactor","p1","p2","p3","p4","out","A1","B1","C1","A2","B2","C2","D","T","U","t","u","getPositionFromQuad","anchor","Point","a1","a2","b1","b2","mat3id","_Matrix2d","backingArray","a","b","c","d","tx","ty","mat3","transpose","array","pos","newPos","x","y","z","scaleX","scaleY","a00","a01","a02","a10","a11","a12","a20","a21","a22","newX","newY","newZ","b01","b11","b21","det","matrix","ar2","affine","preserveOrientation","pt","b00","b02","b10","b12","b20","b22","Matrix2d","shaderSimpleFrag","tempMat","TilingSprite2dRenderer","ObjectRenderer","QuadUv","Shader","ts","quad","vertices","baseTex","uv","isSimple","shader","premultiplyTintToRgba","correctBlendMode","t0","tt","tempRect","Rectangle","Projection2d","ObservablePoint","pivot","factor","rect","k1","k2","k3","d0","d1","d2","d3","q0","q1","q2","container2dWorldTransform","Container2d","Container","position","from","point","skipUpdate","step","container2dToLocal","Mesh2d","Mesh","geometry","state","drawMode","wt","xx","yy","ww","_a","SimpleMesh2d","texture","MeshGeometry","MeshMaterial","Program","Sprite2d","Sprite","wid","tuid","trim","orig","w0","w1","h0","h1","w","h","tempTransform","TilingSprite2d","TilingSprite","width","height","convertTo2d","SimpleMesh","SimpleRope","Text2d","Text","text","style","canvas","spriteMaskVert","spriteMaskFrag","SpriteMaskFilter2d","Filter","filterManager","input","output","clearMode","maskSprite","TextureMatrix","mappedMatrix","filterArea","worldTransform","oldPushSpriteMask","MaskSystem","pushSpriteMaskOverride","maskData","maskObject","origFilter","alphaMaskFilter","patchSpriteMask","Point3d","ObservablePoint3d","_x","_y","_z","Euler","euler","c1","c2","c3","s","s1","s2","s3","q","ObservableEuler","cb","scope","mat4id","_Matrix3d","mat4","tz","quat","sx","sy","sz","x2","y2","z2","xy","xz","yz","zz","wx","wy","wz","scaleZ","x1","y1","z1","w2","a30","a31","b0","b3","a03","a13","b30","b31","a23","a32","a33","b03","b04","b05","b06","b07","b08","b09","Matrix3d","Projection3d","scale","container3dWorldTransform","Container3d","forceUpdate","mat","dx1","dy1","dx2","dy2","container3dToLocal","container3dGetDepth","container3dIsFrontFace","Camera3d","focus","near","far","orthographic","Mesh3d2d","SimpleMesh3d2d","Sprite3d","culled","containerProps","convertTo3d","Text3d","BatchBilinearGeometry","BatchBilinearRenderer","Matrix","frame","aTrans","_batchLocation","realWidth","realHeight","resolution","Surface","v","after","minX","minY","maxX","maxY","t2","tempPoint","BilinearSurface","m","vx","vy","dx","dy","outTransform","ax","ay","ax2","ay2","up1x","up1y","up2x","up2y","down1x","down1y","down2x","down2y","x00","y00","x10","y10","x01","y01","x11","y11","fun","ProjectionSurface","Sprite2s","Text2s","applySpine2dMixin","spineClassPrototype","graphics","Graphics","applySpine3dMixin"],"mappings":"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","x_google_ignoreList":[0]}