pixi_projection 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pixi-projection-spine.js","sourceRoot":"","sources":["../src/utils.ts","../src/xporter.ts","../src/base/AbstractProjection.ts","../src/base/LinearProjection.ts","../src/base/webgl/BatchBuffer.ts","../src/base/webgl/SpriteRenderer.ts","../src/base/webgl/generateMultiTextureShader.ts","../src/curve/BaseSurface.ts","../src/curve/BilinearSurface.ts","../src/curve/Container2s.ts","../src/curve/ProjectionSurface.ts","../src/curve/SpriteBilinearRenderer.ts","../src/curve/SpriteStrangeRenderer.ts","../src/curve/StrangeSurface.ts","../src/curve/sprites/Sprite2s.ts","../src/curve/sprites/Text2s.ts","../src/curve/sprites/convert.ts","../src/proj2d/Container2d.ts","../src/proj2d/Matrix2d.ts","../src/proj2d/Projection2d.ts","../src/proj2d/mesh/Mesh2d.ts","../src/proj2d/mesh/Mesh2dRenderer.ts","../src/proj2d/sprites/Sprite2d.ts","../src/proj2d/sprites/Sprite2dRenderer.ts","../src/proj2d/sprites/Text2d.ts","../src/proj2d/sprites/convert.ts","../src/proj2d/tiling/TilingSprite2d.ts","../src/proj2d/tiling/TilingSprite2dRenderer.ts","../src/proj2d/z_masks/MaskHacker.ts","../src/proj2d/z_masks/SpriteMaskFilter.ts","../src/proj3d/Container3d.ts","../src/proj3d/Camera3d.ts","../src/proj3d/Euler.ts","../src/proj3d/Matrix3d.ts","../src/proj3d/ObservableEuler.ts","../src/proj3d/Point3d.ts","../src/proj3d/Projection3d.ts","../src/proj3d/mesh/Mesh3d2d.ts","../src/proj3d/sprites/Sprite3d.ts","../src/proj3d/sprites/Text3d.ts","../src/proj3d/sprites/convert.ts","../spine/Spine2d.ts","../spine/Spine3d.ts"],"names":[],"mappings":"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CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1F,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9F,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9F,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAE9F,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;YACxB,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;YACxB,IAAI,EAAE,GAAG,CAAC,EAAE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AAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5C,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1D,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAE1D,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5C,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1D,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAE1D,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5C,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC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,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;YAEnD,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACV,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACV,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACV,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACV,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;YACnD,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;YACnD,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;YACnD,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;YAEnD,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACV,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACV,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACX,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACX,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;YACnD,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;YACnD,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;YACpD,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,G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AAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACrD,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACrD,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACzC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACrD,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;YAEzB,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACrD,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACrD,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACzC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACrD,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;YAEzB,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,C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","sourcesContent":["namespace pixi_projection.utils {\r\n\texport function createIndicesForQuads(size: number) {\r\n\t\t// the total number of indices in our array, there are 6 points per quad.\r\n\r\n\t\tconst totalIndices = size * 6;\r\n\r\n\t\tconst indices = new Uint16Array(totalIndices);\r\n\r\n\t\t// fill the indices with the quads to draw\r\n\t\tfor (let i = 0, j = 0; i < totalIndices; i += 6, j += 4) {\r\n\t\t\tindices[i + 0] = j + 0;\r\n\t\t\tindices[i + 1] = j + 1;\r\n\t\t\tindices[i + 2] = j + 2;\r\n\t\t\tindices[i + 3] = j + 0;\r\n\t\t\tindices[i + 4] = j + 2;\r\n\t\t\tindices[i + 5] = j + 3;\r\n\t\t}\r\n\r\n\t\treturn indices;\r\n\t}\r\n\r\n\t//bit twiddle is here\r\n\r\n\texport function isPow2(v: number): boolean {\r\n\t\treturn !(v & (v - 1)) && (!!v);\r\n\t}\r\n\r\n\texport function nextPow2(v: number): number {\r\n\t\tv += +(v === 0);\r\n\t\t--v;\r\n\t\tv |= v >>> 1;\r\n\t\tv |= v >>> 2;\r\n\t\tv |= v >>> 4;\r\n\t\tv |= v >>> 8;\r\n\t\tv |= v >>> 16;\r\n\t\treturn v + 1;\r\n\t}\r\n\r\n\texport function log2(v: number) {\r\n\t\tlet r: number, shift: number;\r\n\t\tr = +(v > 0xFFFF) << 4;\r\n\t\tv >>>= r;\r\n\t\tshift = +(v > 0xFF ) << 3;\r\n\t\tv >>>= shift;\r\n\t\tr |= shift;\r\n\t\tshift = +(v > 0xF ) << 2;\r\n\t\tv >>>= shift;\r\n\t\tr |= shift;\r\n\t\tshift = +(v > 0x3 ) << 1;\r\n\t\tv >>>= shift;\r\n\t\tr |= shift;\r\n\t\treturn r | (v >> 1);\r\n\t}\r\n\r\n\timport PointLike = PIXI.PointLike;\r\n\r\n\texport function getIntersectionFactor(p1: PointLike, p2: PointLike, p3: PointLike, p4: PointLike, out: PointLike): number {\r\n\t\tlet A1 = p2.x - p1.x, B1 = p3.x - p4.x, C1 = p3.x - p1.x;\r\n\t\tlet A2 = p2.y - p1.y, B2 = p3.y - p4.y, C2 = p3.y - p1.y;\r\n\t\tlet D = A1 * B2 - A2 * B1;\r\n\t\tif (Math.abs(D) < 1e-7) {\r\n\t\t\tout.x = A1;\r\n\t\t\tout.y = A2;\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tlet T = C1 * B2 - C2 * B1;\r\n\t\tlet U = A1 * C2 - A2 * C1;\r\n\r\n\t\tlet t = T / D, u = U / D;\r\n\t\tif (u < (1e-6) || u - 1 > -1e-6) {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\r\n\t\tout.x = p1.x + t * (p2.x - p1.x);\r\n\t\tout.y = p1.y + t * (p2.y - p1.y);\r\n\r\n\t\treturn 1;\r\n\t}\r\n\r\n\texport function getPositionFromQuad(p: Array<PointLike>, anchor: PointLike, out: PointLike) {\r\n\t\tout = out || new PIXI.Point();\r\n\t\tlet a1 = 1.0 - anchor.x, a2 = 1.0 - a1;\r\n\t\tlet b1 = 1.0 - anchor.y, b2 = 1.0 - b1;\r\n\t\tout.x = (p[0].x * a1 + p[1].x * a2) * b1 + (p[3].x * a1 + p[2].x * a2) * b2;\r\n\t\tout.y = (p[0].y * a1 + p[1].y * a2) * b1 + (p[3].y * a1 + p[2].y * a2) * b2;\r\n\t\treturn out;\r\n\t}\r\n}\r\n","///<reference types=\"pixi.js\"/>\r\n(PIXI as any).projection = pixi_projection;\r\n","declare namespace PIXI {\r\n export interface TransformBase {\r\n proj: pixi_projection.AbstractProjection;\r\n }\r\n\r\n export interface ObservablePoint {\r\n _x: number;\r\n _y: number;\r\n }\r\n\r\n export interface TransformStatic {\r\n proj: pixi_projection.AbstractProjection;\r\n }\r\n}\r\n\r\nnamespace pixi_projection {\r\n export class AbstractProjection {\r\n\r\n constructor(legacy: PIXI.TransformBase, enable: boolean = true) {\r\n this.legacy = legacy as PIXI.TransformStatic;\r\n\r\n if (enable) {\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 this.legacy.proj = this;\r\n }\r\n\r\n legacy: PIXI.TransformStatic;\r\n\r\n _enabled: boolean = false;\r\n\r\n get enabled() {\r\n return this._enabled;\r\n }\r\n\r\n set enabled(value: boolean) {\r\n this._enabled = value;\r\n }\r\n\r\n clear() {\r\n }\r\n }\r\n\r\n export enum TRANSFORM_STEP {\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}\r\n","namespace pixi_projection {\r\n\tfunction transformHack(this: PIXI.TransformStatic, parentTransform: PIXI.TransformBase) {\r\n\t\t// implementation here\r\n\t\tconst proj = this.proj as LinearProjection<any>;\r\n\t\tconst ta = this as any;\r\n\t\tconst pwid = (parentTransform as any)._worldID;\r\n\r\n\t\tconst lt = ta.localTransform;\r\n\r\n\t\t//this part is copied from\r\n\t\tif (ta._localID !== ta._currentLocalID) {\r\n\t\t\t// get the matrix values of the displayobject based on its transform properties..\r\n\t\t\tlt.a = ta._cx * ta.scale._x;\r\n\t\t\tlt.b = ta._sx * ta.scale._x;\r\n\t\t\tlt.c = ta._cy * ta.scale._y;\r\n\t\t\tlt.d = ta._sy * ta.scale._y;\r\n\r\n\t\t\tlt.tx = ta.position._x - ((ta.pivot._x * lt.a) + (ta.pivot._y * lt.c));\r\n\t\t\tlt.ty = ta.position._y - ((ta.pivot._x * lt.b) + (ta.pivot._y * lt.d));\r\n\t\t\tta._currentLocalID = ta._localID;\r\n\r\n\t\t\t// force an update..\r\n\t\t\tproj._currentProjID = -1;\r\n\t\t}\r\n\r\n\t\tconst _matrixID = proj._projID;\r\n\t\tif (proj._currentProjID !== _matrixID) {\r\n\t\t\tproj._currentProjID = _matrixID;\r\n\t\t\tproj.updateLocalTransform(lt);\r\n\t\t\tta._parentID = -1;\r\n\t\t}\r\n\r\n\t\tif (ta._parentID !== pwid) {\r\n\t\t\tconst pp = parentTransform.proj as Projection2d;\r\n\t\t\tif (pp && !pp._affine) {\r\n\t\t\t\tproj.world.setToMult(pp.world, proj.local);\r\n\t\t\t} else {\r\n\t\t\t\tproj.world.setToMultLegacy(parentTransform.worldTransform, proj.local);\r\n\t\t\t}\r\n\t\t\tproj.world.copy(ta.worldTransform, proj._affine);\r\n\t\t\tta._parentID = pwid;\r\n\t\t\tta._worldID++;\r\n\t\t}\r\n\t}\r\n\r\n\texport class LinearProjection<T> extends AbstractProjection {\r\n\t\tupdateLocalTransform(lt: PIXI.Matrix) {\r\n\r\n\t\t}\r\n\r\n\t\t_projID = 0;\r\n\t\t_currentProjID = -1;\r\n\t\t_affine = AFFINE.NONE;\r\n\r\n\t\tset affine(value: AFFINE) {\r\n\t\t\tif (this._affine == value) return;\r\n\t\t\tthis._affine = value;\r\n\t\t\tthis._currentProjID = -1;\r\n\t\t}\r\n\r\n\t\tget affine() {\r\n\t\t\treturn this._affine;\r\n\t\t}\r\n\r\n\t\tlocal: T;\r\n\t\tworld: T;\r\n\r\n\t\tset enabled(value: boolean) {\r\n\t\t\tif (value === this._enabled) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis._enabled = value;\r\n\t\t\tif (value) {\r\n\t\t\t\tthis.legacy.updateTransform = transformHack;\r\n\t\t\t\t(this.legacy as any)._parentID = -1;\r\n\t\t\t} else {\r\n\t\t\t\tthis.legacy.updateTransform = PIXI.TransformStatic.prototype.updateTransform;\r\n\t\t\t\t(this.legacy as any)._parentID = -1;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tclear() {\r\n\t\t\tthis._currentProjID = -1;\r\n\t\t\tthis._projID = 0;\r\n\t\t}\r\n\t}\r\n}\r\n","namespace pixi_projection.webgl {\r\n\texport class BatchBuffer {\r\n\t\tvertices: ArrayBuffer;\r\n\t\tfloat32View: Float32Array;\r\n\t\tuint32View: Uint32Array;\r\n\r\n\r\n\t\tconstructor(size: number) {\r\n\t\t\tthis.vertices = new ArrayBuffer(size);\r\n\r\n\t\t\t/**\r\n\t\t\t * View on the vertices as a Float32Array for positions\r\n\t\t\t *\r\n\t\t\t * @member {Float32Array}\r\n\t\t\t */\r\n\t\t\tthis.float32View = new Float32Array(this.vertices);\r\n\r\n\t\t\t/**\r\n\t\t\t * View on the vertices as a Uint32Array for uvs\r\n\t\t\t *\r\n\t\t\t * @member {Float32Array}\r\n\t\t\t */\r\n\t\t\tthis.uint32View = new Uint32Array(this.vertices);\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Destroys the buffer.\r\n\t\t *\r\n\t\t */\r\n\t\tdestroy() {\r\n\t\t\tthis.vertices = null;\r\n\t\t}\r\n\t}\r\n}\r\n","declare module PIXI {\r\n\texport interface ObjectRenderer {\r\n\t\trenderer: WebGLRenderer;\r\n\t}\r\n\r\n\texport interface BaseTexture {\r\n\t\t_virtalBoundId: number;\r\n\t}\r\n}\r\n\r\nnamespace pixi_projection.webgl {\r\n\timport BaseTexture = PIXI.BaseTexture;\r\n\timport ObjectRenderer = PIXI.ObjectRenderer;\r\n\timport settings = PIXI.settings;\r\n\timport GLBuffer = PIXI.glCore.GLBuffer;\r\n\timport VertexArrayObject = PIXI.glCore.VertexArrayObject;\r\n\r\n\timport WebGLRenderer = PIXI.WebGLRenderer;\r\n\timport Sprite = PIXI.Sprite;\r\n\r\n\timport premultiplyTint = PIXI.utils.premultiplyTint;\r\n\timport premultiplyBlendMode = PIXI.utils.premultiplyBlendMode;\r\n\r\n\tlet TICK = 0;\r\n\r\n\texport class BatchGroup {\r\n\t\ttextures: Array<BaseTexture> = [];\r\n\t\ttextureCount = 0;\r\n\t\tids: Array<Number> = [];\r\n\t\tsize = 0;\r\n\t\tstart = 0;\r\n\t\tblend = PIXI.BLEND_MODES.NORMAL;\r\n\t\tuniforms: any = null;\r\n\t}\r\n\r\n\texport abstract class MultiTextureSpriteRenderer extends ObjectRenderer {\r\n\t\tshaderVert = '';\r\n\t\tshaderFrag = '';\r\n\t\tMAX_TEXTURES_LOCAL = 32;\r\n\r\n\t\tabstract createVao(vertexBuffer: GLBuffer): PIXI.glCore.VertexArrayObject;\r\n\r\n\t\tabstract fillVertices(float32View: Float32Array, uint32View: Uint32Array, index: number, sprite: any, argb: number, textureId: number): void;\r\n\r\n\t\tgetUniforms(spr: PIXI.Sprite): any {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tsyncUniforms(obj: any) {\r\n\t\t\tif (!obj) return;\r\n\t\t\tlet sh = this.shader;\r\n\t\t\tfor (let key in obj) {\r\n\t\t\t\tsh.uniforms[key] = obj[key];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvertSize = 5;\r\n\t\tvertByteSize = this.vertSize * 4;\r\n\t\tsize = settings.SPRITE_BATCH_SIZE;\r\n\t\tbuffers: Array<BatchBuffer>;\r\n\r\n\t\tindices: Uint16Array;\r\n\r\n\t\tshader: PIXI.Shader;\r\n\r\n\t\tcurrentIndex = 0;\r\n\t\tgroups: Array<BatchGroup>;\r\n\t\tsprites: Array<Sprite> = [];\r\n\r\n\t\tindexBuffer: GLBuffer;\r\n\t\tvertexBuffers: Array<GLBuffer> = [];\r\n\t\tvaos: Array<VertexArrayObject> = [];\r\n\t\tvao: VertexArrayObject;\r\n\t\tvaoMax = 2;\r\n\t\tvertexCount = 0;\r\n\r\n\t\tMAX_TEXTURES = 1;\r\n\r\n\t\t/**\r\n\t\t * @param {PIXI.WebGLRenderer} renderer - The renderer this sprite batch works for.\r\n\t\t */\r\n\t\tconstructor(renderer: WebGLRenderer) {\r\n\t\t\tsuper(renderer);\r\n\r\n\t\t\tthis.indices = utils.createIndicesForQuads(this.size);\r\n\r\n\t\t\tthis.groups = [];\r\n\t\t\tfor (let k = 0; k < this.size; k++) {\r\n\t\t\t\tthis.groups[k] = new BatchGroup();\r\n\t\t\t}\r\n\r\n\t\t\tthis.vaoMax = 2;\r\n\t\t\tthis.vertexCount = 0;\r\n\r\n\t\t\tthis.renderer.on('prerender', this.onPrerender, this);\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Sets up the renderer context and necessary buffers.\r\n\t\t *\r\n\t\t * @private\r\n\t\t */\r\n\t\tonContextChange() {\r\n\t\t\tconst gl = this.renderer.gl;\r\n\r\n\t\t\tthis.MAX_TEXTURES = Math.min(this.MAX_TEXTURES_LOCAL, this.renderer.plugins['sprite'].MAX_TEXTURES);\r\n\r\n\t\t\t// generate generateMultiTextureProgram, may be a better move?\r\n\t\t\tthis.shader = generateMultiTextureShader(this.shaderVert, this.shaderFrag, gl, this.MAX_TEXTURES);\r\n\r\n\t\t\tthis.indexBuffer = GLBuffer.createIndexBuffer(gl, this.indices, gl.STATIC_DRAW);\r\n\r\n\t\t\t// we use the second shader as the first one depending on your browser may omit aTextureId\r\n\t\t\t// as it is not used by the shader so is optimized out.\r\n\r\n\t\t\tthis.renderer.bindVao(null);\r\n\r\n\t\t\tconst attrs = this.shader.attributes;\r\n\r\n\t\t\tfor (let i = 0; i < this.vaoMax; i++) {\r\n\t\t\t\t/* eslint-disable max-len */\r\n\t\t\t\tconst vertexBuffer = this.vertexBuffers[i] = GLBuffer.createVertexBuffer(gl, null, gl.STREAM_DRAW);\r\n\t\t\t\t/* eslint-enable max-len */\r\n\r\n\t\t\t\t// build the vao object that will render..\r\n\t\t\t\tthis.vaos[i] = this.createVao(vertexBuffer);\r\n\t\t\t}\r\n\r\n\t\t\tif (!this.buffers) {\r\n\t\t\t\tthis.buffers = [];\r\n\t\t\t\tfor (let i = 1; i <= utils.nextPow2(this.size); i *= 2) {\r\n\t\t\t\t\tthis.buffers.push(new BatchBuffer(i * 4 * this.vertByteSize));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.vao = this.vaos[0];\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Called before the renderer starts rendering.\r\n\t\t *\r\n\t\t */\r\n\t\tonPrerender() {\r\n\t\t\tthis.vertexCount = 0;\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Renders the sprite object.\r\n\t\t *\r\n\t\t * @param {PIXI.Sprite} sprite - the sprite to render when using this spritebatch\r\n\t\t */\r\n\t\trender(sprite: Sprite) {\r\n\t\t\t// TODO set blend modes..\r\n\t\t\t// check texture..\r\n\t\t\tif (this.currentIndex >= this.size) {\r\n\t\t\t\tthis.flush();\r\n\t\t\t}\r\n\r\n\t\t\t// get the uvs for the texture\r\n\r\n\t\t\t// if the uvs have not updated then no point rendering just yet!\r\n\t\t\tif (!(sprite as any)._texture._uvs) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (!(sprite as any)._texture.baseTexture) {\r\n\t\t\t\t//WTF, Rpgmaker MV?\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// push a texture.\r\n\t\t\t// increment the batchsize\r\n\t\t\tthis.sprites[this.currentIndex++] = sprite;\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Renders the content and empties the current batch.\r\n\t\t *\r\n\t\t */\r\n\t\tflush() {\r\n\t\t\tif (this.currentIndex === 0) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst gl = this.renderer.gl;\r\n\t\t\tconst MAX_TEXTURES = this.MAX_TEXTURES;\r\n\r\n\t\t\tconst np2 = utils.nextPow2(this.currentIndex);\r\n\t\t\tconst log2 = utils.log2(np2);\r\n\t\t\tconst buffer = this.buffers[log2];\r\n\r\n\t\t\tconst sprites = this.sprites;\r\n\t\t\tconst groups = this.groups;\r\n\r\n\t\t\tconst float32View = buffer.float32View;\r\n\t\t\tconst uint32View = buffer.uint32View;\r\n\r\n\t\t\t// const touch = 0;// this.renderer.textureGC.count;\r\n\r\n\t\t\tlet index = 0;\r\n\t\t\tlet nextTexture: any;\r\n\t\t\tlet currentTexture: BaseTexture;\r\n\t\t\tlet currentUniforms: any = null;\r\n\t\t\tlet groupCount = 1;\r\n\t\t\tlet textureCount = 0;\r\n\t\t\tlet currentGroup = groups[0];\r\n\t\t\tlet vertexData;\r\n\t\t\tlet uvs;\r\n\t\t\tlet blendMode = premultiplyBlendMode[\r\n\t\t\t\t(sprites[0] as any)._texture.baseTexture.premultipliedAlpha ? 1 : 0][sprites[0].blendMode];\r\n\r\n\t\t\tcurrentGroup.textureCount = 0;\r\n\t\t\tcurrentGroup.start = 0;\r\n\t\t\tcurrentGroup.blend = blendMode;\r\n\r\n\t\t\tTICK++;\r\n\r\n\t\t\tlet i;\r\n\r\n\t\t\tfor (i = 0; i < this.currentIndex; ++i) {\r\n\t\t\t\t// upload the sprite elemetns...\r\n\t\t\t\t// they have all ready been calculated so we just need to push them into the buffer.\r\n\r\n\t\t\t\t// upload the sprite elemetns...\r\n\t\t\t\t// they have all ready been calculated so we just need to push them into the buffer.\r\n\t\t\t\tconst sprite = sprites[i] as any;\r\n\r\n\t\t\t\tnextTexture = sprite._texture.baseTexture;\r\n\r\n\t\t\t\tconst spriteBlendMode = premultiplyBlendMode[Number(nextTexture.premultipliedAlpha)][sprite.blendMode];\r\n\r\n\t\t\t\tif (blendMode !== spriteBlendMode) {\r\n\t\t\t\t\t// finish a group..\r\n\t\t\t\t\tblendMode = spriteBlendMode;\r\n\r\n\t\t\t\t\t// force the batch to break!\r\n\t\t\t\t\tcurrentTexture = null;\r\n\t\t\t\t\ttextureCount = MAX_TEXTURES;\r\n\t\t\t\t\tTICK++;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst uniforms = this.getUniforms(sprite);\r\n\t\t\t\tif (currentUniforms !== uniforms) {\r\n\t\t\t\t\tcurrentUniforms = uniforms;\r\n\r\n\t\t\t\t\tcurrentTexture = null;\r\n\t\t\t\t\ttextureCount = MAX_TEXTURES;\r\n\t\t\t\t\tTICK++;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (currentTexture !== nextTexture) {\r\n\t\t\t\t\tcurrentTexture = nextTexture;\r\n\r\n\t\t\t\t\tif (nextTexture._enabled !== TICK) {\r\n\t\t\t\t\t\tif (textureCount === MAX_TEXTURES) {\r\n\t\t\t\t\t\t\tTICK++;\r\n\r\n\t\t\t\t\t\t\ttextureCount = 0;\r\n\r\n\t\t\t\t\t\t\tcurrentGroup.size = i - currentGroup.start;\r\n\r\n\t\t\t\t\t\t\tcurrentGroup = groups[groupCount++];\r\n\t\t\t\t\t\t\tcurrentGroup.textureCount = 0;\r\n\t\t\t\t\t\t\tcurrentGroup.blend = blendMode;\r\n\t\t\t\t\t\t\tcurrentGroup.start = i;\r\n\t\t\t\t\t\t\tcurrentGroup.uniforms = currentUniforms;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tnextTexture._enabled = TICK;\r\n\t\t\t\t\t\tnextTexture._virtalBoundId = textureCount;\r\n\r\n\t\t\t\t\t\tcurrentGroup.textures[currentGroup.textureCount++] = nextTexture;\r\n\t\t\t\t\t\ttextureCount++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst alpha = Math.min(sprite.worldAlpha, 1.0);\r\n\t\t\t\t// we dont call extra function if alpha is 1.0, that's faster\r\n\t\t\t\tconst argb = alpha < 1.0 && nextTexture.premultipliedAlpha ? premultiplyTint(sprite._tintRGB, alpha)\r\n\t\t\t\t\t: sprite._tintRGB + (alpha * 255 << 24);\r\n\r\n\t\t\t\tthis.fillVertices(float32View, uint32View, index, sprite, argb, nextTexture._virtalBoundId);\r\n\r\n\t\t\t\tindex += this.vertSize * 4;\r\n\t\t\t}\r\n\r\n\t\t\tcurrentGroup.size = i - currentGroup.start;\r\n\r\n\t\t\tif (!settings.CAN_UPLOAD_SAME_BUFFER) {\r\n\t\t\t\t// this is still needed for IOS performance..\r\n\t\t\t\t// it really does not like uploading to the same buffer in a single frame!\r\n\t\t\t\tif (this.vaoMax <= this.vertexCount) {\r\n\t\t\t\t\tthis.vaoMax++;\r\n\r\n\t\t\t\t\tconst attrs = this.shader.attributes;\r\n\r\n\t\t\t\t\t/* eslint-disable max-len */\r\n\t\t\t\t\tconst vertexBuffer = this.vertexBuffers[this.vertexCount] = GLBuffer.createVertexBuffer(gl, null, gl.STREAM_DRAW);\r\n\t\t\t\t\t/* eslint-enable max-len */\r\n\r\n\t\t\t\t\tthis.vaos[this.vertexCount] = this.createVao(vertexBuffer);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.renderer.bindVao(this.vaos[this.vertexCount]);\r\n\r\n\t\t\t\tthis.vertexBuffers[this.vertexCount].upload(buffer.vertices, 0, false);\r\n\r\n\t\t\t\tthis.vertexCount++;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// lets use the faster option, always use buffer number 0\r\n\t\t\t\tthis.vertexBuffers[this.vertexCount].upload(buffer.vertices, 0, true);\r\n\t\t\t}\r\n\r\n\t\t\tcurrentUniforms = null;\r\n\r\n\t\t\t// / render the groups..\r\n\t\t\tfor (i = 0; i < groupCount; i++) {\r\n\t\t\t\tconst group = groups[i];\r\n\t\t\t\tconst groupTextureCount = group.textureCount;\r\n\r\n\t\t\t\tif (group.uniforms !== currentUniforms) {\r\n\t\t\t\t\tthis.syncUniforms(group.uniforms);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor (let j = 0; j < groupTextureCount; j++) {\r\n\t\t\t\t\tthis.renderer.bindTexture(group.textures[j], j, true);\r\n\t\t\t\t\tgroup.textures[j]._virtalBoundId = -1;\r\n\r\n\t\t\t\t\tconst v = this.shader.uniforms.samplerSize;\r\n\t\t\t\t\tif (v) {\r\n\t\t\t\t\t\tv[0] = group.textures[j].realWidth;\r\n\t\t\t\t\t\tv[1] = group.textures[j].realHeight;\r\n\t\t\t\t\t\tthis.shader.uniforms.samplerSize = v;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// set the blend mode..\r\n\t\t\t\tthis.renderer.state.setBlendMode(group.blend);\r\n\r\n\t\t\t\tgl.drawElements(gl.TRIANGLES, group.size * 6, gl.UNSIGNED_SHORT, group.start * 6 * 2);\r\n\t\t\t}\r\n\r\n\t\t\t// reset elements for the next flush\r\n\t\t\tthis.currentIndex = 0;\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Starts a new sprite batch.\r\n\t\t */\r\n\t\tstart() {\r\n\t\t\tthis.renderer.bindShader(this.shader);\r\n\r\n\t\t\tif (settings.CAN_UPLOAD_SAME_BUFFER) {\r\n\t\t\t\t// bind buffer #0, we don't need others\r\n\t\t\t\tthis.renderer.bindVao(this.vaos[this.vertexCount]);\r\n\r\n\t\t\t\tthis.vertexBuffers[this.vertexCount].bind();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Stops and flushes the current batch.\r\n\t\t *\r\n\t\t */\r\n\t\tstop() {\r\n\t\t\tthis.flush();\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Destroys the SpriteRenderer.\r\n\t\t *\r\n\t\t */\r\n\t\tdestroy() {\r\n\t\t\tfor (let i = 0; i < this.vaoMax; i++) {\r\n\t\t\t\tif (this.vertexBuffers[i]) {\r\n\t\t\t\t\tthis.vertexBuffers[i].destroy();\r\n\t\t\t\t}\r\n\t\t\t\tif (this.vaos[i]) {\r\n\t\t\t\t\tthis.vaos[i].destroy();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (this.indexBuffer) {\r\n\t\t\t\tthis.indexBuffer.destroy();\r\n\t\t\t}\r\n\r\n\t\t\tthis.renderer.off('prerender', this.onPrerender, this);\r\n\r\n\t\t\tsuper.destroy();\r\n\r\n\t\t\tif (this.shader) {\r\n\t\t\t\tthis.shader.destroy();\r\n\t\t\t\tthis.shader = null;\r\n\t\t\t}\r\n\r\n\t\t\tthis.vertexBuffers = null;\r\n\t\t\tthis.vaos = null;\r\n\t\t\tthis.indexBuffer = null;\r\n\t\t\tthis.indices = null;\r\n\r\n\t\t\tthis.sprites = null;\r\n\r\n\t\t\tfor (let i = 0; i < this.buffers.length; ++i) {\r\n\t\t\t\tthis.buffers[i].destroy();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","namespace pixi_projection.webgl {\r\n\texport function generateMultiTextureShader(vertexSrc: string, fragmentSrc: string, gl: WebGLRenderingContext, maxTextures: number) {\r\n\t\tfragmentSrc = fragmentSrc.replace(/%count%/gi, maxTextures + '');\r\n\t\tfragmentSrc = fragmentSrc.replace(/%forloop%/gi, generateSampleSrc(maxTextures));\r\n\r\n\t\tconst shader = new PIXI.Shader(gl, vertexSrc, fragmentSrc);\r\n\r\n\t\tconst sampleValues = new Int32Array(maxTextures);\r\n\r\n\t\tfor (let i = 0; i < maxTextures; i++) {\r\n\t\t\tsampleValues[i] = i;\r\n\t\t}\r\n\r\n\t\tshader.bind();\r\n\t\tshader.uniforms.uSamplers = sampleValues;\r\n\r\n\t\treturn shader;\r\n\t}\r\n\r\n\tfunction generateSampleSrc(maxTextures: number) {\r\n\t\tlet src = '';\r\n\r\n\t\tsrc += '\\n';\r\n\t\tsrc += '\\n';\r\n\r\n\t\tfor (let i = 0; i < maxTextures; i++) {\r\n\t\t\tif (i > 0) {\r\n\t\t\t\tsrc += '\\nelse ';\r\n\t\t\t}\r\n\r\n\t\t\tif (i < maxTextures - 1) {\r\n\t\t\t\tsrc += `if(textureId == ${i}.0)`;\r\n\t\t\t}\r\n\r\n\t\t\tsrc += '\\n{';\r\n\t\t\tsrc += `\\n\\tcolor = texture2D(uSamplers[${i}], textureCoord);`;\r\n\t\t\tsrc += '\\n}';\r\n\t\t}\r\n\r\n\t\tsrc += '\\n';\r\n\t\tsrc += '\\n';\r\n\r\n\t\treturn src;\r\n\t}\r\n}\r\n","namespace pixi_projection {\r\n import PointLike = PIXI.PointLike;\r\n\r\n const p = [new PIXI.Point(), new PIXI.Point(), new PIXI.Point(), new PIXI.Point()];\r\n const a = [0, 0, 0, 0];\r\n\r\n export abstract class Surface implements IWorldTransform {\r\n surfaceID = \"default\";\r\n\r\n _updateID: number = 0;\r\n\r\n vertexSrc: string = \"\";\r\n fragmentSrc: string = \"\";\r\n\r\n fillUniforms(uniforms: any) {\r\n\r\n }\r\n\r\n clear() {\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 {PIXI.Matrix} after\r\n */\r\n boundsQuad(v: ArrayLike<number>, out: any, after?: PIXI.Matrix) {\r\n let minX = out[0], minY = out[1];\r\n let maxX = out[0], maxY = out[1];\r\n for (let i = 2; i < 8; i += 2) {\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 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 } else {\r\n for (let i = 1; i <= 3; i++) {\r\n if (p[i].y < p[0].y || p[i].y == p[0].y && p[i].x < p[0].x) {\r\n let t = p[0];\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 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 for (let j = i + 1; j <= 3; j++) {\r\n if (a[i] > a[j]) {\r\n let t = p[i];\r\n p[i] = p[j];\r\n p[j] = t;\r\n let t2 = a[i];\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 //triangle!!!\r\n out[4] = p[3].x;\r\n out[5] = p[3].y;\r\n return;\r\n }\r\n }\r\n }\r\n\r\n abstract apply(pos: PointLike, newPos: PointLike): PointLike;\r\n\r\n //TODO: remove props\r\n abstract applyInverse(pos: PointLike, newPos: PointLike): PointLike;\r\n }\r\n}\r\n","namespace pixi_projection {\r\n import PointLike = PIXI.PointLike;\r\n\r\n const tempMat = new PIXI.Matrix();\r\n const tempRect = new PIXI.Rectangle();\r\n const tempPoint = new PIXI.Point();\r\n\r\n export class BilinearSurface extends Surface {\r\n distortion = new PIXI.Point();\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n clear() {\r\n this.distortion.set(0, 0);\r\n }\r\n\r\n apply(pos: PointLike, newPos?: PointLike): PointLike {\r\n newPos = newPos || new PIXI.Point();\r\n const d = this.distortion;\r\n const m = pos.x * pos.y;\r\n newPos.x = pos.x + d.x * m;\r\n newPos.y = pos.y + d.y * m;\r\n return newPos;\r\n }\r\n\r\n applyInverse(pos: PointLike, newPos: PointLike): PointLike {\r\n newPos = newPos || new PIXI.Point();\r\n const vx = pos.x, vy = pos.y;\r\n const dx = this.distortion.x, dy = this.distortion.y;\r\n\r\n if (dx == 0.0) {\r\n newPos.x = vx;\r\n newPos.y = vy / (1.0 + dy * vx);\r\n } else\r\n if (dy == 0.0) {\r\n newPos.y = vy;\r\n newPos.x = vx/ (1.0 + dx * vy);\r\n } else {\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 newPos.set(NaN, NaN);\r\n return;\r\n }\r\n if (dy > 0.0) {\r\n newPos.x = - b + Math.sqrt(d);\r\n } else {\r\n newPos.x = - b - Math.sqrt(d);\r\n }\r\n newPos.y = (vx / newPos.x - 1.0) / dx;\r\n }\r\n return newPos;\r\n }\r\n\r\n mapSprite(sprite: PIXI.Sprite, quad: Array<PointLike>, outTransform?: PIXI.TransformStatic) {\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 PIXI.TransformStatic);\r\n }\r\n\r\n mapQuad(rect: PIXI.Rectangle, quad: Array<PointLike>, outTransform: PIXI.TransformStatic) {\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 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: any) {\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}\r\n","namespace pixi_projection {\r\n export class Container2s extends PIXI.Container {\r\n constructor() {\r\n super();\r\n this.proj = new ProjectionSurface(this.transform);\r\n }\r\n\r\n proj: ProjectionSurface;\r\n\r\n get worldTransform() {\r\n return this.proj as any;\r\n }\r\n }\r\n}\r\n","declare namespace PIXI {\r\n\tinterface Matrix extends pixi_projection.IWorldTransform {\r\n\t\tapply(pos: PointLike, newPos?: PointLike): PointLike;\r\n\r\n\t\tapplyInverse(pos: PointLike, newPos?: PointLike): PointLike;\r\n\t}\r\n}\r\n\r\nnamespace pixi_projection {\r\n\timport PointLike = PIXI.PointLike;\r\n\r\n\tconst fun = PIXI.TransformStatic.prototype.updateTransform;\r\n\r\n\texport interface IWorldTransform {\r\n\t\tapply(pos: PointLike, newPos: PointLike): PointLike;\r\n\r\n\t\t//TODO: remove props\r\n\t\tapplyInverse(pos: PointLike, newPos: PointLike): PointLike;\r\n\t}\r\n\r\n\tfunction transformHack(this: PIXI.TransformStatic, parentTransform: PIXI.TransformBase): IWorldTransform {\r\n\t\tconst proj = this.proj as ProjectionSurface;\r\n\r\n\t\tconst pp = parentTransform.proj as ProjectionSurface;\r\n\t\tconst ta = this as any;\r\n\r\n\t\tif (!pp) {\r\n\t\t\tfun.call(this, parentTransform);\r\n\t\t\tproj._activeProjection = null;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (pp._surface) {\r\n\t\t\tproj._activeProjection = pp;\r\n\t\t\tthis.updateLocalTransform();\r\n\t\t\tthis.localTransform.copy(this.worldTransform);\r\n\t\t\tif (ta._parentID < 0) {\r\n\t\t\t\t++ta._worldID;\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tfun.call(this, parentTransform);\r\n\t\tproj._activeProjection = pp._activeProjection;\r\n\t}\r\n\r\n\texport class ProjectionSurface extends AbstractProjection {\r\n\t\tconstructor(legacy: PIXI.TransformBase, enable?: boolean) {\r\n\t\t\tsuper(legacy, enable);\r\n\t\t}\r\n\r\n\t\t_surface: Surface = null;\r\n\t\t_activeProjection: ProjectionSurface = null;\r\n\r\n\t\tset enabled(value: boolean) {\r\n\t\t\tif (value === this._enabled) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis._enabled = value;\r\n\t\t\tif (value) {\r\n\t\t\t\tthis.legacy.updateTransform = transformHack;\r\n\t\t\t\t(this.legacy as any)._parentID = -1;\r\n\t\t\t} else {\r\n\t\t\t\tthis.legacy.updateTransform = PIXI.TransformStatic.prototype.updateTransform;\r\n\t\t\t\t(this.legacy as any)._parentID = -1;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tget surface() {\r\n\t\t\treturn this._surface;\r\n\t\t}\r\n\r\n\t\tset surface(value: Surface) {\r\n\t\t\tif (this._surface == value) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis._surface = value || null;\r\n\t\t\t(this.legacy as any)._parentID = -1;\r\n\t\t}\r\n\r\n\t\tapplyPartial(pos: PointLike, newPos?: PointLike): PointLike {\r\n\t\t\tif (this._activeProjection !== null) {\r\n\t\t\t\tnewPos = this.legacy.worldTransform.apply(pos, newPos);\r\n\t\t\t\treturn this._activeProjection.surface.apply(newPos, newPos);\r\n\t\t\t}\r\n\t\t\tif (this._surface !== null) {\r\n\t\t\t\treturn this.surface.apply(pos, newPos);\r\n\t\t\t}\r\n\t\t\treturn this.legacy.worldTransform.apply(pos, newPos);\r\n\t\t}\r\n\r\n\t\tapply(pos: PointLike, newPos?: PointLike): PointLike {\r\n\t\t\tif (this._activeProjection !== null) {\r\n\t\t\t\tnewPos = this.legacy.worldTransform.apply(pos, newPos);\r\n\t\t\t\tthis._activeProjection.surface.apply(newPos, newPos);\r\n\t\t\t\treturn this._activeProjection.legacy.worldTransform.apply(newPos, newPos);\r\n\t\t\t}\r\n\t\t\tif (this._surface !== null) {\r\n\t\t\t\tnewPos = this.surface.apply(pos, newPos);\r\n\t\t\t\treturn this.legacy.worldTransform.apply(newPos, newPos);\r\n\t\t\t}\r\n\t\t\treturn this.legacy.worldTransform.apply(pos, newPos);\r\n\t\t}\r\n\r\n\t\tapplyInverse(pos: PointLike, newPos: PointLike) {\r\n\t\t\tif (this._activeProjection !== null) {\r\n\t\t\t\tnewPos = this._activeProjection.legacy.worldTransform.applyInverse(pos, newPos);\r\n\t\t\t\tthis._activeProjection._surface.applyInverse(newPos, newPos);\r\n\t\t\t\treturn this.legacy.worldTransform.applyInverse(newPos, newPos);\r\n\t\t\t}\r\n\t\t\tif (this._surface !== null) {\r\n\t\t\t\tnewPos = this.legacy.worldTransform.applyInverse(pos, newPos);\r\n\t\t\t\treturn this._surface.applyInverse(newPos, newPos);\r\n\t\t\t}\r\n\t\t\treturn this.legacy.worldTransform.applyInverse(pos, newPos);\r\n\t\t}\r\n\r\n\t\tmapBilinearSprite(sprite: PIXI.Sprite, quad: Array<PointLike>) {\r\n\t\t\tif (!(this._surface instanceof BilinearSurface)) {\r\n\t\t\t\tthis.surface = new BilinearSurface();\r\n\t\t\t}\r\n\t\t\t(this.surface as BilinearSurface).mapSprite(sprite, quad, this.legacy);\r\n\t\t}\r\n\r\n\t\t_currentSurfaceID = -1;\r\n\t\t_currentLegacyID = -1;\r\n\t\t_lastUniforms : any = null;\r\n\r\n\t\tclear() {\r\n\t\t\tif (this.surface) {\r\n\t\t\t\tthis.surface.clear();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tget uniforms(): any {\r\n\t\t\tif (this._currentLegacyID === (this.legacy as any)._worldID &&\r\n\t\t\t\tthis._currentSurfaceID === this.surface._updateID) {\r\n\r\n\t\t\t\treturn this._lastUniforms;\r\n\t\t\t}\r\n\r\n\t\t\tthis._lastUniforms = this._lastUniforms || {};\r\n\t\t\tthis._lastUniforms.worldTransform = this.legacy.worldTransform.toArray(true)\r\n\t\t\tthis._surface.fillUniforms(this._lastUniforms);\r\n\t\t\treturn this._lastUniforms;\r\n\t\t}\r\n\t}\r\n}\r\n","namespace pixi_projection {\r\n import MultiTextureSpriteRenderer = pixi_projection.webgl.MultiTextureSpriteRenderer;\r\n\r\n class SpriteBilinearRenderer extends MultiTextureSpriteRenderer {\r\n size = 100;\r\n MAX_TEXTURES_LOCAL = 1;\r\n\r\n shaderVert = `precision highp float;\r\nattribute vec2 aVertexPosition;\r\nattribute vec3 aTrans1;\r\nattribute vec3 aTrans2;\r\nattribute vec4 aFrame;\r\nattribute vec4 aColor;\r\nattribute float aTextureId;\r\n\r\nuniform mat3 projectionMatrix;\r\nuniform mat3 worldTransform;\r\n\r\nvarying vec2 vTextureCoord;\r\nvarying vec3 vTrans1;\r\nvarying vec3 vTrans2;\r\nvarying vec4 vFrame;\r\nvarying vec4 vColor;\r\nvarying float vTextureId;\r\n\r\nvoid main(void){\r\n gl_Position.xyw = projectionMatrix * worldTransform * vec3(aVertexPosition, 1.0);\r\n gl_Position.z = 0.0;\r\n \r\n vTextureCoord = aVertexPosition;\r\n vTrans1 = aTrans1;\r\n vTrans2 = aTrans2;\r\n vTextureId = aTextureId;\r\n vColor = aColor;\r\n vFrame = aFrame;\r\n}\r\n`;\r\n //TODO: take non-premultiplied case into account\r\n\r\n shaderFrag = `precision highp float;\r\nvarying vec2 vTextureCoord;\r\nvarying vec3 vTrans1;\r\nvarying vec3 vTrans2;\r\nvarying vec4 vFrame;\r\nvarying vec4 vColor;\r\nvarying float vTextureId;\r\n\r\nuniform sampler2D uSamplers[%count%];\r\nuniform vec2 samplerSize[%count%]; \r\nuniform vec4 distortion;\r\n\r\nvoid main(void){\r\nvec2 surface;\r\nvec2 surface2;\r\n\r\nfloat vx = vTextureCoord.x;\r\nfloat vy = vTextureCoord.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\n surface.x = vx;\r\n surface.y = vy / (1.0 + dy * vx);\r\n surface2 = surface;\r\n} else\r\nif (distortion.y == 0.0) {\r\n surface.y = vy;\r\n surface.x = vx/ (1.0 + dx * vy);\r\n surface2 = surface;\r\n} else {\r\n float c = vy * dx - vx * dy;\r\n float b = (c + 1.0) * 0.5;\r\n float b2 = (-c + 1.0) * 0.5;\r\n float d = b * b + vx * dy;\r\n if (d < -0.00001) {\r\n discard;\r\n }\r\n d = sqrt(max(d, 0.0));\r\n surface.x = (- b + d) * revy;\r\n surface2.x = (- b - d) * revy;\r\n surface.y = (- b2 + d) * revx;\r\n surface2.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 * samplerSize[0];\r\n\r\nif (pixels.x < vFrame.x || pixels.x > vFrame.z ||\r\n pixels.y < vFrame.y || pixels.y > vFrame.w) {\r\n uv.x = vTrans1.x * surface2.x + vTrans1.y * surface2.y + vTrans1.z;\r\n uv.y = vTrans2.x * surface2.x + vTrans2.y * surface2.y + vTrans2.z;\r\n pixels = uv * samplerSize[0];\r\n \r\n if (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\nvec4 color;\r\nvec2 textureCoord = uv;\r\n%forloop%\r\ngl_FragColor = color * rColor;\r\n}`;\r\n\r\n defUniforms = {\r\n worldTransform: new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]),\r\n distortion: new Float32Array([0, 0])\r\n };\r\n\r\n getUniforms(sprite: PIXI.Sprite) {\r\n let proj = (sprite as Sprite2s).proj;\r\n let shader = this.shader;\r\n\r\n if (proj.surface !== null) {\r\n return proj.uniforms;\r\n }\r\n if (proj._activeProjection !== null) {\r\n return proj._activeProjection.uniforms;\r\n }\r\n return this.defUniforms;\r\n }\r\n\r\n createVao(vertexBuffer: PIXI.glCore.GLBuffer) {\r\n const attrs = this.shader.attributes;\r\n this.vertSize = 14;\r\n this.vertByteSize = this.vertSize * 4;\r\n\r\n const gl = this.renderer.gl;\r\n const vao = this.renderer.createVao()\r\n .addIndex(this.indexBuffer)\r\n .addAttribute(vertexBuffer, attrs.aVertexPosition, gl.FLOAT, false, this.vertByteSize, 0)\r\n .addAttribute(vertexBuffer, attrs.aTrans1, gl.FLOAT, false, this.vertByteSize, 2 * 4)\r\n .addAttribute(vertexBuffer, attrs.aTrans2, gl.FLOAT, false, this.vertByteSize, 5 * 4)\r\n .addAttribute(vertexBuffer, attrs.aFrame, gl.FLOAT, false, this.vertByteSize, 8 * 4)\r\n .addAttribute(vertexBuffer, attrs.aColor, gl.UNSIGNED_BYTE, true, this.vertByteSize, 12 * 4);\r\n\r\n if (attrs.aTextureId) {\r\n vao.addAttribute(vertexBuffer, attrs.aTextureId, gl.FLOAT, false, this.vertByteSize, 13 * 4);\r\n }\r\n\r\n return vao;\r\n\r\n }\r\n\r\n fillVertices(float32View: Float32Array, uint32View: Uint32Array, index: number, sprite: any, argb: number, textureId: number) {\r\n const vertexData = sprite.vertexData;\r\n const tex = sprite._texture;\r\n const w = tex.orig.width;\r\n const h = tex.orig.height;\r\n const ax = sprite._anchor._x;\r\n const ay = sprite._anchor._y;\r\n const frame = tex._frame;\r\n const aTrans = sprite.aTrans;\r\n\r\n for (let i = 0; i < 4; i++) {\r\n float32View[index] = vertexData[i * 2];\r\n float32View[index + 1] = vertexData[i * 2 + 1];\r\n\r\n float32View[index + 2] = aTrans.a;\r\n float32View[index + 3] = aTrans.c;\r\n float32View[index + 4] = aTrans.tx;\r\n float32View[index + 5] = aTrans.b;\r\n float32View[index + 6] = aTrans.d;\r\n float32View[index + 7] = aTrans.ty;\r\n\r\n float32View[index + 8] = frame.x;\r\n float32View[index + 9] = frame.y;\r\n float32View[index + 10] = frame.x + frame.width;\r\n float32View[index + 11] = frame.y + frame.height;\r\n\r\n uint32View[index + 12] = argb;\r\n float32View[index + 13] = textureId;\r\n index += 14;\r\n }\r\n }\r\n }\r\n\r\n PIXI.WebGLRenderer.registerPlugin('sprite_bilinear', SpriteBilinearRenderer);\r\n}\r\n","namespace pixi_projection {\r\n\timport MultiTextureSpriteRenderer = pixi_projection.webgl.MultiTextureSpriteRenderer;\r\n\r\n\tclass SpriteStrangeRenderer extends MultiTextureSpriteRenderer {\r\n\t\tsize = 100;\r\n\t\tMAX_TEXTURES_LOCAL = 1;\r\n\r\n\t\tshaderVert = `precision highp float;\r\nattribute vec2 aVertexPosition;\r\nattribute vec3 aTrans1;\r\nattribute vec3 aTrans2;\r\nattribute vec4 aFrame;\r\nattribute vec4 aColor;\r\nattribute float aTextureId;\r\n\r\nuniform mat3 projectionMatrix;\r\nuniform mat3 worldTransform;\r\n\r\nvarying vec2 vTextureCoord;\r\nvarying vec3 vTrans1;\r\nvarying vec3 vTrans2;\r\nvarying vec4 vFrame;\r\nvarying vec4 vColor;\r\nvarying float vTextureId;\r\n\r\nvoid main(void){\r\n gl_Position.xyw = projectionMatrix * worldTransform * vec3(aVertexPosition, 1.0);\r\n gl_Position.z = 0.0;\r\n \r\n vTextureCoord = aVertexPosition;\r\n vTrans1 = aTrans1;\r\n vTrans2 = aTrans2;\r\n vTextureId = aTextureId;\r\n vColor = aColor;\r\n vFrame = aFrame;\r\n}\r\n`;\r\n\t\t//TODO: take non-premultiplied case into account\r\n\r\n\t\tshaderFrag = `precision highp float;\r\nvarying vec2 vTextureCoord;\r\nvarying vec3 vTrans1;\r\nvarying vec3 vTrans2;\r\nvarying vec4 vFrame;\r\nvarying vec4 vColor;\r\nvarying float vTextureId;\r\n\r\nuniform sampler2D uSamplers[%count%];\r\nuniform vec2 samplerSize[%count%]; \r\nuniform vec4 params;\r\n\r\nvoid main(void){\r\nvec2 surface;\r\n\r\nfloat vx = vTextureCoord.x;\r\nfloat vy = vTextureCoord.y;\r\nfloat aleph = params.x;\r\nfloat bet = params.y;\r\nfloat A = params.z;\r\nfloat B = params.w;\r\n\r\nif (aleph == 0.0) {\r\n\tsurface.y = vy / (1.0 + vx * bet);\r\n\tsurface.x = vx;\r\n}\r\nelse if (bet == 0.0) {\r\n\tsurface.x = vx / (1.0 + vy * aleph);\r\n\tsurface.y = vy;\r\n} else {\r\n\tsurface.x = vx * (bet + 1.0) / (bet + 1.0 + vy * aleph);\r\n\tsurface.y = vy * (aleph + 1.0) / (aleph + 1.0 + vx * bet);\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 * samplerSize[0];\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 = edge.x * edge.y * edge.z * edge.w;\r\nvec4 rColor = vColor * alpha;\r\n\r\nfloat textureId = floor(vTextureId+0.5);\r\nvec4 color;\r\nvec2 textureCoord = uv;\r\n%forloop%\r\ngl_FragColor = color * rColor;\r\n}`;\r\n\r\n\t\tdefUniforms = {\r\n\t\t\tworldTransform: new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]),\r\n\t\t\tdistortion: new Float32Array([0, 0])\r\n\t\t};\r\n\r\n\t\tgetUniforms(sprite: PIXI.Sprite) {\r\n\t\t\tlet proj = (sprite as Sprite2s).proj;\r\n\t\t\tlet shader = this.shader;\r\n\r\n\t\t\tif (proj.surface !== null) {\r\n\t\t\t\treturn proj.uniforms;\r\n\t\t\t}\r\n\t\t\tif (proj._activeProjection !== null) {\r\n\t\t\t\treturn proj._activeProjection.uniforms;\r\n\t\t\t}\r\n\t\t\treturn this.defUniforms;\r\n\t\t}\r\n\r\n\t\tcreateVao(vertexBuffer: PIXI.glCore.GLBuffer) {\r\n\t\t\tconst attrs = this.shader.attributes;\r\n\t\t\tthis.vertSize = 14;\r\n\t\t\tthis.vertByteSize = this.vertSize * 4;\r\n\r\n\t\t\tconst gl = this.renderer.gl;\r\n\t\t\tconst vao = this.renderer.createVao()\r\n\t\t\t\t.addIndex(this.indexBuffer)\r\n\t\t\t\t.addAttribute(vertexBuffer, attrs.aVertexPosition, gl.FLOAT, false, this.vertByteSize, 0)\r\n\t\t\t\t.addAttribute(vertexBuffer, attrs.aTrans1, gl.FLOAT, false, this.vertByteSize, 2 * 4)\r\n\t\t\t\t.addAttribute(vertexBuffer, attrs.aTrans2, gl.FLOAT, false, this.vertByteSize, 5 * 4)\r\n\t\t\t\t.addAttribute(vertexBuffer, attrs.aFrame, gl.FLOAT, false, this.vertByteSize, 8 * 4)\r\n\t\t\t\t.addAttribute(vertexBuffer, attrs.aColor, gl.UNSIGNED_BYTE, true, this.vertByteSize, 12 * 4);\r\n\r\n\t\t\tif (attrs.aTextureId) {\r\n\t\t\t\tvao.addAttribute(vertexBuffer, attrs.aTextureId, gl.FLOAT, false, this.vertByteSize, 13 * 4);\r\n\t\t\t}\r\n\r\n\t\t\treturn vao;\r\n\r\n\t\t}\r\n\r\n\t\tfillVertices(float32View: Float32Array, uint32View: Uint32Array, index: number, sprite: any, argb: number, textureId: number) {\r\n\t\t\tconst vertexData = sprite.vertexData;\r\n\t\t\tconst tex = sprite._texture;\r\n\t\t\tconst w = tex.orig.width;\r\n\t\t\tconst h = tex.orig.height;\r\n\t\t\tconst ax = sprite._anchor._x;\r\n\t\t\tconst ay = sprite._anchor._y;\r\n\t\t\tconst frame = tex._frame;\r\n\t\t\tconst aTrans = sprite.aTrans;\r\n\r\n\t\t\tfor (let i = 0; i < 4; i++) {\r\n\t\t\t\tfloat32View[index] = vertexData[i * 2];\r\n\t\t\t\tfloat32View[index + 1] = vertexData[i * 2 + 1];\r\n\r\n\t\t\t\tfloat32View[index + 2] = aTrans.a;\r\n\t\t\t\tfloat32View[index + 3] = aTrans.c;\r\n\t\t\t\tfloat32View[index + 4] = aTrans.tx;\r\n\t\t\t\tfloat32View[index + 5] = aTrans.b;\r\n\t\t\t\tfloat32View[index + 6] = aTrans.d;\r\n\t\t\t\tfloat32View[index + 7] = aTrans.ty;\r\n\r\n\t\t\t\tfloat32View[index + 8] = frame.x;\r\n\t\t\t\tfloat32View[index + 9] = frame.y;\r\n\t\t\t\tfloat32View[index + 10] = frame.x + frame.width;\r\n\t\t\t\tfloat32View[index + 11] = frame.y + frame.height;\r\n\r\n\t\t\t\tuint32View[index + 12] = argb;\r\n\t\t\t\tfloat32View[index + 13] = textureId;\r\n\t\t\t\tindex += 14;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tPIXI.WebGLRenderer.registerPlugin('sprite_strange', SpriteStrangeRenderer);\r\n}\r\n","namespace pixi_projection {\r\n import PointLike = PIXI.PointLike;\r\n import WebGLState = PIXI.WebGLState;\r\n\r\n const tempMat = new PIXI.Matrix();\r\n const tempRect = new PIXI.Rectangle();\r\n const tempPoint = new PIXI.Point();\r\n\r\n export class StrangeSurface extends Surface {\r\n constructor() {\r\n super();\r\n }\r\n\r\n params = [0, 0, NaN, NaN];\r\n\r\n clear() {\r\n let p = this.params;\r\n p[0] = 0;\r\n p[1] = 0;\r\n p[2] = NaN;\r\n p[3] = NaN;\r\n }\r\n\r\n setAxisX(pos: PointLike, factor: number, outTransform: PIXI.TransformStatic) {\r\n const x = pos.x, y = pos.y;\r\n //TODO: check x=0, y=0\r\n\r\n let d = Math.sqrt(x * x + y * y);\r\n let rot = outTransform.rotation;\r\n if (rot !== 0) {\r\n outTransform.skew._x -= rot;\r\n outTransform.skew._y += rot;\r\n outTransform.rotation = 0;\r\n }\r\n outTransform.skew.y = Math.atan2(y, x);\r\n\r\n let p = this.params;\r\n\r\n if (factor !== 0) {\r\n p[2] = -d * factor;\r\n } else {\r\n p[2] = NaN;\r\n }\r\n this._calc01();\r\n }\r\n\r\n setAxisY(pos: PointLike, factor: number, outTransform: PIXI.TransformStatic) {\r\n const x = pos.x, y = pos.y;\r\n\r\n //TODO: check if axis x and axis y is the same\r\n\r\n let d = Math.sqrt(x * x + y * y);\r\n let rot = outTransform.rotation;\r\n if (rot !== 0) {\r\n outTransform.skew._x -= rot;\r\n outTransform.skew._y += rot;\r\n outTransform.rotation = 0;\r\n }\r\n outTransform.skew.x = -Math.atan2(y, x) + Math.PI / 2;\r\n\r\n let p = this.params;\r\n\r\n if (factor !== 0) {\r\n p[3] = -d * factor;\r\n } else {\r\n p[3] = NaN;\r\n }\r\n this._calc01();\r\n }\r\n\r\n _calc01() {\r\n let p = this.params;\r\n if (isNaN(p[2])) {\r\n p[1] = 0;\r\n if (isNaN(p[3])) {\r\n p[0] = 0;\r\n } else {\r\n p[0] = 1.0 / p[3];\r\n }\r\n } else {\r\n if (isNaN(p[3])) {\r\n p[0] = 0;\r\n p[1] = 1.0 / p[2];\r\n } else {\r\n const d = 1.0 - p[2] * p[3];\r\n p[0] = (1.0 - p[2]) / d;\r\n p[1] = (1.0 - p[3]) / d;\r\n }\r\n }\r\n }\r\n\r\n apply(pos: PointLike, newPos?: PointLike): PointLike {\r\n newPos = newPos || new PIXI.Point();\r\n\r\n const aleph = this.params[0], bet = this.params[1], A = this.params[2], B = this.params[3];\r\n const u = pos.x, v = pos.y;\r\n\r\n if (aleph === 0.0) {\r\n newPos.y = v * (1 + u * bet);\r\n newPos.x = u;\r\n }\r\n else if (bet === 0.0) {\r\n newPos.x = u * (1 + v * aleph);\r\n newPos.y = v;\r\n } else {\r\n const D = A * B - v * u;\r\n newPos.x = A * u * (B + v) / D;\r\n newPos.y = B * v * (A + u) / D;\r\n }\r\n return newPos;\r\n }\r\n\r\n applyInverse(pos: PointLike, newPos: PointLike): PointLike {\r\n newPos = newPos || new PIXI.Point();\r\n\r\n const aleph = this.params[0], bet = this.params[1], A = this.params[2], B = this.params[3];\r\n const x = pos.x, y = pos.y;\r\n\r\n if (aleph === 0.0) {\r\n newPos.y = y / (1 + x * bet);\r\n newPos.x = x;\r\n }\r\n else if (bet === 0.0) {\r\n newPos.x = x * (1 + y * aleph);\r\n newPos.y = y;\r\n } else {\r\n newPos.x = x * (bet + 1) / (bet + 1 + y * aleph);\r\n newPos.y = y * (aleph + 1) / (aleph + 1 + x * bet);\r\n }\r\n return newPos;\r\n }\r\n\r\n mapSprite(sprite: PIXI.Sprite, quad: Array<PointLike>, outTransform?: PIXI.TransformStatic) {\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 PIXI.TransformStatic);\r\n }\r\n\r\n mapQuad(rect: PIXI.Rectangle, quad: Array<PointLike>, outTransform: PIXI.TransformStatic) {\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 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: any) {\r\n const params = this.params;\r\n const distortion = uniforms.params || new Float32Array([0, 0, 0, 0]);\r\n\r\n uniforms.params = distortion;\r\n distortion[0] = params[0];\r\n distortion[1] = params[1];\r\n distortion[2] = params[2];\r\n distortion[3] = params[3];\r\n }\r\n }\r\n}\r\n","namespace pixi_projection {\r\n\texport class Sprite2s extends PIXI.Sprite {\r\n\t\tconstructor(texture: PIXI.Texture) {\r\n\t\t\tsuper(texture);\r\n\t\t\tthis.proj = new ProjectionSurface(this.transform);\r\n\t\t\tthis.pluginName = 'sprite_bilinear';\r\n\t\t}\r\n\r\n\t\tproj: ProjectionSurface;\r\n\t\taTrans = new PIXI.Matrix();\r\n\r\n\t\t_calculateBounds() {\r\n\t\t\tthis.calculateTrimmedVertices();\r\n\t\t\tthis._bounds.addQuad(this.vertexTrimmedData as any);\r\n\t\t}\r\n\r\n\t\tcalculateVertices() {\r\n\t\t\tconst wid = (this.transform as any)._worldID;\r\n\t\t\tconst tuid = (this._texture as any)._updateID;\r\n\t\t\tif (this._transformID === wid && this._textureID === tuid) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis._transformID = wid;\r\n\t\t\tthis._textureID = tuid;\r\n\r\n\t\t\tconst texture = this._texture;\r\n\t\t\tconst vertexData = this.vertexData;\r\n\t\t\tconst trim = texture.trim;\r\n\t\t\tconst orig = texture.orig;\r\n\t\t\tconst anchor = this._anchor;\r\n\r\n\t\t\tlet w0 = 0;\r\n\t\t\tlet w1 = 0;\r\n\t\t\tlet h0 = 0;\r\n\t\t\tlet h1 = 0;\r\n\r\n\t\t\tif (trim) {\r\n\t\t\t\tw1 = trim.x - (anchor._x * orig.width);\r\n\t\t\t\tw0 = w1 + trim.width;\r\n\r\n\t\t\t\th1 = trim.y - (anchor._y * orig.height);\r\n\t\t\t\th0 = h1 + trim.height;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tw1 = -anchor._x * orig.width;\r\n\t\t\t\tw0 = w1 + orig.width;\r\n\r\n\t\t\t\th1 = -anchor._y * orig.height;\r\n\t\t\t\th0 = h1 + orig.height;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.proj._surface) {\r\n\t\t\t\tvertexData[0] = w1;\r\n\t\t\t\tvertexData[1] = h1;\r\n\t\t\t\tvertexData[2] = w0;\r\n\t\t\t\tvertexData[3] = h1;\r\n\t\t\t\tvertexData[4] = w0;\r\n\t\t\t\tvertexData[5] = h0;\r\n\t\t\t\tvertexData[6] = w1;\r\n\t\t\t\tvertexData[7] = h0;\r\n\t\t\t\tthis.proj._surface.boundsQuad(vertexData, vertexData);\r\n\t\t\t} else {\r\n\t\t\t\tconst wt = this.transform.worldTransform;\r\n\t\t\t\tconst a = wt.a;\r\n\t\t\t\tconst b = wt.b;\r\n\t\t\t\tconst c = wt.c;\r\n\t\t\t\tconst d = wt.d;\r\n\t\t\t\tconst tx = wt.tx;\r\n\t\t\t\tconst ty = wt.ty;\r\n\t\t\t\tvertexData[0] = (a * w1) + (c * h1) + tx;\r\n\t\t\t\tvertexData[1] = (d * h1) + (b * w1) + ty;\r\n\t\t\t\tvertexData[2] = (a * w0) + (c * h1) + tx;\r\n\t\t\t\tvertexData[3] = (d * h1) + (b * w0) + ty;\r\n\t\t\t\tvertexData[4] = (a * w0) + (c * h0) + tx;\r\n\t\t\t\tvertexData[5] = (d * h0) + (b * w0) + ty;\r\n\t\t\t\tvertexData[6] = (a * w1) + (c * h0) + tx;\r\n\t\t\t\tvertexData[7] = (d * h0) + (b * w1) + ty;\r\n\t\t\t\tif (this.proj._activeProjection) {\r\n\t\t\t\t\tthis.proj._activeProjection.surface.boundsQuad(vertexData, vertexData);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (!texture.transform) {\r\n\t\t\t\ttexture.transform = new PIXI.TextureMatrix(texture);\r\n\t\t\t}\r\n\t\t\ttexture.transform.update();\r\n\r\n\t\t\tconst aTrans = this.aTrans;\r\n\t\t\taTrans.set(orig.width, 0, 0, orig.height, w1, h1);\r\n\t\t\tif (this.proj._surface === null) {\r\n\t\t\t\taTrans.prepend(this.transform.worldTransform);\r\n\t\t\t}\r\n\t\t\taTrans.invert();\r\n\t\t\taTrans.prepend(texture.transform.mapCoord);\r\n\t\t}\r\n\r\n\t\tcalculateTrimmedVertices() {\r\n\t\t\tconst wid = (this.transform as any)._worldID;\r\n\t\t\tconst tuid = (this._texture as any)._updateID;\r\n\t\t\tif (!this.vertexTrimmedData) {\r\n\t\t\t\tthis.vertexTrimmedData = new Float32Array(8);\r\n\t\t\t}\r\n\t\t\telse if (this._transformTrimmedID === wid && this._textureTrimmedID === tuid) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis._transformTrimmedID = wid;\r\n\t\t\tthis._textureTrimmedID = tuid;\r\n\r\n\t\t\t// lets do some special trim code!\r\n\t\t\tconst texture = this._texture;\r\n\t\t\tconst vertexData = this.vertexTrimmedData;\r\n\t\t\tconst orig = texture.orig;\r\n\t\t\tconst anchor = this._anchor;\r\n\r\n\t\t\t// lets calculate the new untrimmed bounds..\r\n\r\n\t\t\tconst w1 = -anchor._x * orig.width;\r\n\t\t\tconst w0 = w1 + orig.width;\r\n\r\n\t\t\tconst h1 = -anchor._y * orig.height;\r\n\t\t\tconst h0 = h1 + orig.height;\r\n\r\n\t\t\t//TODO: take rotations into account! form temporary bounds\r\n\r\n\t\t\tif (this.proj._surface) {\r\n\t\t\t\tvertexData[0] = w1;\r\n\t\t\t\tvertexData[1] = h1;\r\n\t\t\t\tvertexData[2] = w0;\r\n\t\t\t\tvertexData[3] = h1;\r\n\t\t\t\tvertexData[4] = w0;\r\n\t\t\t\tvertexData[5] = h0;\r\n\t\t\t\tvertexData[6] = w1;\r\n\t\t\t\tvertexData[7] = h0;\r\n\t\t\t\tthis.proj._surface.boundsQuad(vertexData, vertexData, this.transform.worldTransform);\r\n\t\t\t} else {\r\n\t\t\t\tlet wt = this.transform.worldTransform;\r\n\t\t\t\tlet a = wt.a;\r\n\t\t\t\tlet b = wt.b;\r\n\t\t\t\tlet c = wt.c;\r\n\t\t\t\tlet d = wt.d;\r\n\t\t\t\tlet tx = wt.tx;\r\n\t\t\t\tlet ty = wt.ty;\r\n\t\t\t\tvertexData[0] = (a * w1) + (c * h1) + tx;\r\n\t\t\t\tvertexData[1] = (d * h1) + (b * w1) + ty;\r\n\t\t\t\tvertexData[2] = (a * w0) + (c * h1) + tx;\r\n\t\t\t\tvertexData[3] = (d * h1) + (b * w0) + ty;\r\n\t\t\t\tvertexData[4] = (a * w0) + (c * h0) + tx;\r\n\t\t\t\tvertexData[5] = (d * h0) + (b * w0) + ty;\r\n\t\t\t\tvertexData[6] = (a * w1) + (c * h0) + tx;\r\n\t\t\t\tvertexData[7] = (d * h0) + (b * w1) + ty;\r\n\t\t\t\tif (this.proj._activeProjection) {\r\n\t\t\t\t\tthis.proj._activeProjection.surface.boundsQuad(vertexData, vertexData,\r\n\t\t\t\t\t\tthis.proj._activeProjection.legacy.worldTransform);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tget worldTransform() {\r\n\t\t\treturn this.proj as any;\r\n\t\t}\r\n\t}\r\n}\r\n","namespace pixi_projection {\r\n\texport class Text2s extends PIXI.Text {\r\n\t\tconstructor(text?: string, style?: PIXI.TextStyle, canvas?: HTMLCanvasElement) {\r\n\t\t\tsuper(text, style, canvas);\r\n\t\t\tthis.proj = new ProjectionSurface(this.transform);\r\n\t\t\tthis.pluginName = 'sprite_bilinear';\r\n\t\t}\r\n\r\n\t\tproj: ProjectionSurface;\r\n\r\n\t\taTrans = new PIXI.Matrix();\r\n\r\n\t\tget worldTransform() {\r\n\t\t\treturn this.proj as any;\r\n\t\t}\r\n\t}\r\n\r\n\t(Text2s.prototype as any).calculateVertices = Sprite2s.prototype.calculateVertices;\r\n\t(Text2s.prototype as any).calculateTrimmedVertices = Sprite2s.prototype.calculateTrimmedVertices;\r\n\t(Text2s.prototype as any)._calculateBounds = Sprite2s.prototype._calculateBounds;\r\n}\r\n","declare module PIXI {\r\n\tinterface Sprite {\r\n\t\tconvertTo2s(): void;\r\n\t}\r\n\r\n\tinterface Container {\r\n\t\tconvertTo2s(): void;\r\n\r\n\t\tconvertSubtreeTo2s(): void;\r\n\t}\r\n}\r\n\r\nnamespace pixi_projection {\r\n\t(PIXI as any).Sprite.prototype.convertTo2s = function () {\r\n\t\tif (this.proj) return;\r\n\t\t//cointainer\r\n\t\tthis.pluginName = 'sprite_bilinear';\r\n\t\tthis.aTrans = new PIXI.Matrix();\r\n\t\tthis.calculateVertices = Sprite2s.prototype.calculateVertices;\r\n\t\tthis.calculateTrimmedVertices = Sprite2s.prototype.calculateTrimmedVertices;\r\n\t\tthis._calculateBounds = Sprite2s.prototype._calculateBounds;\r\n\t\tPIXI.Container.prototype.convertTo2s.call(this);\r\n\t};\r\n\r\n\t(PIXI as any).Container.prototype.convertTo2s = function () {\r\n\t\tif (this.proj) return;\r\n\t\tthis.proj = new Projection2d(this.transform);\r\n\t\tObject.defineProperty(this, \"worldTransform\", {\r\n\t\t\tget: function () {\r\n\t\t\t\treturn this.proj;\r\n\t\t\t},\r\n\t\t\tenumerable: true,\r\n\t\t\tconfigurable: true\r\n\t\t});\r\n\t};\r\n\r\n\t(PIXI as any).Container.prototype.convertSubtreeTo2s = function () {\r\n\t\tthis.convertTo2s();\r\n\t\tfor (let i = 0; i < this.children.length; i++) {\r\n\t\t\tthis.children[i].convertSubtreeTo2s();\r\n\t\t}\r\n\t};\r\n}\r\n","namespace pixi_projection {\r\n\texport function container2dWorldTransform() {\r\n\t\treturn this.proj.affine ? this.transform.worldTransform : this.proj.world as any;\r\n\t}\r\n\r\n\texport class Container2d extends PIXI.Container {\r\n\t\tconstructor() {\r\n\t\t\tsuper();\r\n\t\t\tthis.proj = new Projection2d(this.transform);\r\n\t\t}\r\n\r\n\t\tproj: Projection2d;\r\n\r\n\t\ttoLocal<T extends PIXI.PointLike>(position: PIXI.PointLike, from?: PIXI.DisplayObject,\r\n\t\t point?: T, skipUpdate?: boolean,\r\n\t\t step = TRANSFORM_STEP.ALL): T {\r\n\r\n\t\t\tif (from)\r\n\t\t\t{\r\n\t\t\t\tposition = from.toGlobal(position, point, skipUpdate);\r\n\t\t\t}\r\n\r\n\t\t\tif (!skipUpdate)\r\n\t\t\t{\r\n\t\t\t\tthis._recursivePostUpdateTransform();\r\n\t\t\t}\r\n\r\n\t\t\tif (step >= TRANSFORM_STEP.PROJ) {\r\n\t\t\t\tif (!skipUpdate) {\r\n\t\t\t\t\tthis.displayObjectUpdateTransform();\r\n\t\t\t\t}\r\n\t\t\t\tif (this.proj.affine) {\r\n\t\t\t\t\treturn this.transform.worldTransform.applyInverse(point, point) as any;\r\n\t\t\t\t}\r\n\t\t\t\treturn this.proj.world.applyInverse(point, point) as any;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.parent) {\r\n\t\t\t\tpoint = this.parent.worldTransform.applyInverse(position, point) as any;\r\n\t\t\t} else {\r\n\t\t\t\tpoint.copy(position);\r\n\t\t\t}\r\n\t\t\tif (step === TRANSFORM_STEP.NONE) {\r\n\t\t\t\treturn point;\r\n\t\t\t}\r\n\r\n\t\t\treturn this.transform.localTransform.applyInverse(point, point) as any;\r\n\t\t}\r\n\r\n\t\tget worldTransform() {\r\n\t\t\treturn this.proj.affine ? this.transform.worldTransform : this.proj.world as any;\r\n\t\t}\r\n\t}\r\n\r\n\texport let container2dToLocal = Container2d.prototype.toLocal;\r\n}\r\n","// according to https://jsperf.com/obj-vs-array-view-access/1 , Float64Array is the best here\r\n\r\nnamespace pixi_projection {\r\n\timport Point = PIXI.Point;\r\n\timport IPoint = PIXI.PointLike;\r\n\r\n\tconst mat3id = [1, 0, 0, 0, 1, 0, 0, 0, 1];\r\n\r\n\texport enum AFFINE {\r\n\t\tNONE = 0,\r\n\t\tFREE = 1,\r\n\t\tAXIS_X = 2,\r\n\t\tAXIS_Y = 3,\r\n\t\tPOINT = 4\r\n\t}\r\n\r\n\texport class Matrix2d {\r\n\t\t/**\r\n\t\t * A default (identity) matrix\r\n\t\t *\r\n\t\t * @static\r\n\t\t * @const\r\n\t\t */\r\n\t\tstatic readonly IDENTITY = new Matrix2d();\r\n\r\n\t\t/**\r\n\t\t * A temp matrix\r\n\t\t *\r\n\t\t * @static\r\n\t\t * @const\r\n\t\t */\r\n\t\tstatic readonly TEMP_MATRIX = new Matrix2d();\r\n\r\n\t\t/**\r\n\t\t * mat3 implementation through array of 9 elements\r\n\t\t */\r\n\t\tmat3: Float64Array;\r\n\r\n\t\tfloatArray: Float32Array = null;\r\n\r\n\t\tconstructor(backingArray?: ArrayLike<number>) {\r\n\t\t\tthis.mat3 = new Float64Array(backingArray || mat3id);\r\n\t\t}\r\n\r\n\t\tget a() {\r\n\t\t\treturn this.mat3[0] / this.mat3[8];\r\n\t\t}\r\n\r\n\t\tget b() {\r\n\t\t\treturn this.mat3[1] / this.mat3[8];\r\n\t\t}\r\n\r\n\t\tget c() {\r\n\t\t\treturn this.mat3[3] / this.mat3[8];\r\n\t\t}\r\n\r\n\t\tget d() {\r\n\t\t\treturn this.mat3[4] / this.mat3[8];\r\n\t\t}\r\n\r\n\t\tget tx() {\r\n\t\t\treturn this.mat3[6] / this.mat3[8];\r\n\t\t}\r\n\r\n\t\tget ty() {\r\n\t\t\treturn this.mat3[7] / this.mat3[8];\r\n\t\t}\r\n\r\n\t\tset a(value: number) {\r\n\t\t\tthis.mat3[0] = value * this.mat3[8];\r\n\t\t}\r\n\r\n\t\tset b(value: number) {\r\n\t\t\tthis.mat3[1] = value * this.mat3[8];\r\n\t\t}\r\n\r\n\t\tset c(value: number) {\r\n\t\t\tthis.mat3[3] = value * this.mat3[8];\r\n\t\t}\r\n\r\n\t\tset d(value: number) {\r\n\t\t\tthis.mat3[4] = value * this.mat3[8];\r\n\t\t}\r\n\r\n\t\tset tx(value: number) {\r\n\t\t\tthis.mat3[6] = value * this.mat3[8];\r\n\t\t}\r\n\r\n\t\tset ty(value: number) {\r\n\t\t\tthis.mat3[7] = value * this.mat3[8];\r\n\t\t}\r\n\r\n\t\tset(a: number, b: number, c: number, d: number, tx: number, ty: number) {\r\n\t\t\tlet mat3 = this.mat3;\r\n\t\t\tmat3[0] = a;\r\n\t\t\tmat3[1] = b;\r\n\t\t\tmat3[2] = 0;\r\n\t\t\tmat3[3] = c;\r\n\t\t\tmat3[4] = d;\r\n\t\t\tmat3[5] = 0;\r\n\t\t\tmat3[6] = tx;\r\n\t\t\tmat3[7] = ty;\r\n\t\t\tmat3[8] = 1;\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\ttoArray(transpose?: boolean, out?: Float32Array): Float32Array {\r\n\t\t\tif (!this.floatArray) {\r\n\t\t\t\tthis.floatArray = new Float32Array(9);\r\n\t\t\t}\r\n\r\n\t\t\tconst array = out || this.floatArray;\r\n\t\t\tconst mat3 = this.mat3;\r\n\r\n\t\t\tif (transpose) {\r\n\t\t\t\tarray[0] = mat3[0];\r\n\t\t\t\tarray[1] = mat3[1];\r\n\t\t\t\tarray[2] = mat3[2];\r\n\t\t\t\tarray[3] = mat3[3];\r\n\t\t\t\tarray[4] = mat3[4];\r\n\t\t\t\tarray[5] = mat3[5];\r\n\t\t\t\tarray[6] = mat3[6];\r\n\t\t\t\tarray[7] = mat3[7];\r\n\t\t\t\tarray[8] = mat3[8];\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t//this branch is NEVER USED in pixi\r\n\t\t\t\tarray[0] = mat3[0];\r\n\t\t\t\tarray[1] = mat3[3];\r\n\t\t\t\tarray[2] = mat3[6];\r\n\t\t\t\tarray[3] = mat3[1];\r\n\t\t\t\tarray[4] = mat3[4];\r\n\t\t\t\tarray[5] = mat3[7];\r\n\t\t\t\tarray[6] = mat3[2];\r\n\t\t\t\tarray[7] = mat3[5];\r\n\t\t\t\tarray[8] = mat3[8];\r\n\t\t\t}\r\n\r\n\t\t\treturn array;\r\n\t\t}\r\n\r\n\t\t//TODO: remove props\r\n\t\tapply(pos: IPoint, newPos: IPoint): IPoint {\r\n\t\t\tnewPos = newPos || new PIXI.Point();\r\n\r\n\t\t\tconst mat3 = this.mat3;\r\n\t\t\tconst x = pos.x;\r\n\t\t\tconst y = pos.y;\r\n\r\n\t\t\tlet z = 1.0 / (mat3[2] * x + mat3[5] * y + mat3[8]);\r\n\t\t\tnewPos.x = z * (mat3[0] * x + mat3[3] * y + mat3[6]);\r\n\t\t\tnewPos.y = z * (mat3[1] * x + mat3[4] * y + mat3[7]);\r\n\r\n\t\t\treturn newPos;\r\n\t\t}\r\n\r\n\t\ttranslate(tx: number, ty: number) {\r\n\t\t\tconst mat3 = this.mat3;\r\n\t\t\tmat3[0] += tx * mat3[2];\r\n\t\t\tmat3[1] += ty * mat3[2];\r\n\t\t\tmat3[3] += tx * mat3[5];\r\n\t\t\tmat3[4] += ty * mat3[5];\r\n\t\t\tmat3[6] += tx * mat3[8];\r\n\t\t\tmat3[7] += ty * mat3[8];\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tscale(x: number, y: number) {\r\n\t\t\tconst mat3 = this.mat3;\r\n\t\t\tmat3[0] *= x;\r\n\t\t\tmat3[1] *= y;\r\n\t\t\tmat3[3] *= x;\r\n\t\t\tmat3[4] *= y;\r\n\t\t\tmat3[6] *= x;\r\n\t\t\tmat3[7] *= y;\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tscaleAndTranslate(scaleX: number, scaleY: number, tx: number, ty: number) {\r\n\t\t\tconst mat3 = this.mat3;\r\n\t\t\tmat3[0] = scaleX * mat3[0] + tx * mat3[2];\r\n\t\t\tmat3[1] = scaleY * mat3[1] + ty * mat3[2];\r\n\t\t\tmat3[3] = scaleX * mat3[3] + tx * mat3[5];\r\n\t\t\tmat3[4] = scaleY * mat3[4] + ty * mat3[5];\r\n\t\t\tmat3[6] = scaleX * mat3[6] + tx * mat3[8];\r\n\t\t\tmat3[7] = scaleY * mat3[7] + ty * mat3[8];\r\n\t\t}\r\n\r\n\t\t//TODO: remove props\r\n\t\tapplyInverse(pos: IPoint, newPos: IPoint): IPoint {\r\n\t\t\tnewPos = newPos || new Point();\r\n\r\n\t\t\tconst a = this.mat3;\r\n\t\t\tconst x = pos.x;\r\n\t\t\tconst y = pos.y;\r\n\r\n\t\t\tconst a00 = a[0], a01 = a[3], a02 = a[6],\r\n\t\t\t\ta10 = a[1], a11 = a[4], a12 = a[7],\r\n\t\t\t\ta20 = a[2], a21 = a[5], a22 = a[8];\r\n\r\n\t\t\tlet newX = (a22 * a11 - a12 * a21) * x + (-a22 * a01 + a02 * a21) * y + (a12 * a01 - a02 * a11);\r\n\t\t\tlet newY = (-a22 * a10 + a12 * a20) * x + (a22 * a00 - a02 * a20) * y + (-a12 * a00 + a02 * a10);\r\n\t\t\tlet newZ = (a21 * a10 - a11 * a20) * x + (-a21 * a00 + a01 * a20) * y + (a11 * a00 - a01 * a10);\r\n\r\n\t\t\tnewPos.x = newX / newZ;\r\n\t\t\tnewPos.y = newY / newZ;\r\n\r\n\t\t\treturn newPos;\r\n\t\t}\r\n\r\n\t\tinvert(): Matrix2d {\r\n\t\t\tconst a = this.mat3;\r\n\r\n\t\t\tconst a00 = a[0], a01 = a[1], a02 = a[2],\r\n\t\t\t\ta10 = a[3], a11 = a[4], a12 = a[5],\r\n\t\t\t\ta20 = a[6], a21 = a[7], a22 = a[8],\r\n\r\n\t\t\t\tb01 = a22 * a11 - a12 * a21,\r\n\t\t\t\tb11 = -a22 * a10 + a12 * a20,\r\n\t\t\t\tb21 = a21 * a10 - a11 * a20;\r\n\r\n\t\t\t// Calculate the determinant\r\n\t\t\tlet det = a00 * b01 + a01 * b11 + a02 * b21;\r\n\t\t\tif (!det) {\r\n\t\t\t\treturn this;\r\n\t\t\t}\r\n\t\t\tdet = 1.0 / det;\r\n\r\n\t\t\ta[0] = b01 * det;\r\n\t\t\ta[1] = (-a22 * a01 + a02 * a21) * det;\r\n\t\t\ta[2] = (a12 * a01 - a02 * a11) * det;\r\n\t\t\ta[3] = b11 * det;\r\n\t\t\ta[4] = (a22 * a00 - a02 * a20) * det;\r\n\t\t\ta[5] = (-a12 * a00 + a02 * a10) * det;\r\n\t\t\ta[6] = b21 * det;\r\n\t\t\ta[7] = (-a21 * a00 + a01 * a20) * det;\r\n\t\t\ta[8] = (a11 * a00 - a01 * a10) * det;\r\n\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tidentity(): Matrix2d {\r\n\t\t\tconst mat3 = this.mat3;\r\n\t\t\tmat3[0] = 1;\r\n\t\t\tmat3[1] = 0;\r\n\t\t\tmat3[2] = 0;\r\n\t\t\tmat3[3] = 0;\r\n\t\t\tmat3[4] = 1;\r\n\t\t\tmat3[5] = 0;\r\n\t\t\tmat3[6] = 0;\r\n\t\t\tmat3[7] = 0;\r\n\t\t\tmat3[8] = 1;\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tclone() {\r\n\t\t\treturn new Matrix2d(this.mat3);\r\n\t\t}\r\n\r\n\t\tcopyTo(matrix: Matrix2d) {\r\n\t\t\tconst mat3 = this.mat3;\r\n\t\t\tconst ar2 = matrix.mat3;\r\n\t\t\tar2[0] = mat3[0];\r\n\t\t\tar2[1] = mat3[1];\r\n\t\t\tar2[2] = mat3[2];\r\n\t\t\tar2[3] = mat3[3];\r\n\t\t\tar2[4] = mat3[4];\r\n\t\t\tar2[5] = mat3[5];\r\n\t\t\tar2[6] = mat3[6];\r\n\t\t\tar2[7] = mat3[7];\r\n\t\t\tar2[8] = mat3[8];\r\n\t\t\treturn matrix;\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * legacy method, change the values of given pixi matrix\r\n\t\t * @param matrix\r\n\t\t * @return\r\n\t\t */\r\n\t\tcopy(matrix: PIXI.Matrix, affine?: AFFINE) {\r\n\t\t\tconst mat3 = this.mat3;\r\n\t\t\tconst d = 1.0 / mat3[8];\r\n\t\t\tconst tx = mat3[6] * d, ty = mat3[7] * d;\r\n\t\t\tmatrix.a = (mat3[0] - mat3[2] * tx) * d;\r\n\t\t\tmatrix.b = (mat3[1] - mat3[2] * ty) * d;\r\n\t\t\tmatrix.c = (mat3[3] - mat3[5] * tx) * d;\r\n\t\t\tmatrix.d = (mat3[4] - mat3[5] * ty) * d;\r\n\t\t\tmatrix.tx = tx;\r\n\t\t\tmatrix.ty = ty;\r\n\r\n\t\t\tif (affine >= 2) {\r\n\t\t\t\tif (affine === AFFINE.POINT) {\r\n\t\t\t\t\tmatrix.a = 1;\r\n\t\t\t\t\tmatrix.b = 0;\r\n\t\t\t\t\tmatrix.c = 0;\r\n\t\t\t\t\tmatrix.d = 1;\r\n\t\t\t\t} else if (affine === AFFINE.AXIS_X) {\r\n\t\t\t\t\tmatrix.c = -matrix.b;\r\n\t\t\t\t\tmatrix.d = matrix.a;\r\n\t\t\t\t} else if (affine === AFFINE.AXIS_Y) {\r\n\t\t\t\t\tmatrix.a = matrix.d;\r\n\t\t\t\t\tmatrix.c = -matrix.b;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * legacy method, change the values of given pixi matrix\r\n\t\t * @param matrix\r\n\t\t * @return\r\n\t\t */\r\n\t\tcopyFrom(matrix: PIXI.Matrix) {\r\n\t\t\tconst mat3 = this.mat3;\r\n\t\t\tmat3[0] = matrix.a;\r\n\t\t\tmat3[1] = matrix.b;\r\n\t\t\tmat3[2] = 0;\r\n\t\t\tmat3[3] = matrix.c;\r\n\t\t\tmat3[4] = matrix.d;\r\n\t\t\tmat3[5] = 0;\r\n\t\t\tmat3[6] = matrix.tx;\r\n\t\t\tmat3[7] = matrix.ty;\r\n\t\t\tmat3[8] = 1.0;\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tsetToMultLegacy(pt: PIXI.Matrix, lt: Matrix2d) {\r\n\t\t\tconst out = this.mat3;\r\n\t\t\tconst b = lt.mat3;\r\n\r\n\t\t\tconst a00 = pt.a, a01 = pt.b,\r\n\t\t\t\ta10 = pt.c, a11 = pt.d,\r\n\t\t\t\ta20 = pt.tx, a21 = pt.ty,\r\n\r\n\t\t\t\tb00 = b[0], b01 = b[1], b02 = b[2],\r\n\t\t\t\tb10 = b[3], b11 = b[4], b12 = b[5],\r\n\t\t\t\tb20 = b[6], b21 = b[7], b22 = b[8];\r\n\r\n\r\n\t\t\tout[0] = b00 * a00 + b01 * a10 + b02 * a20;\r\n\t\t\tout[1] = b00 * a01 + b01 * a11 + b02 * a21;\r\n\t\t\tout[2] = b02;\r\n\r\n\t\t\tout[3] = b10 * a00 + b11 * a10 + b12 * a20;\r\n\t\t\tout[4] = b10 * a01 + b11 * a11 + b12 * a21;\r\n\t\t\tout[5] = b12;\r\n\r\n\t\t\tout[6] = b20 * a00 + b21 * a10 + b22 * a20;\r\n\t\t\tout[7] = b20 * a01 + b21 * a11 + b22 * a21;\r\n\t\t\tout[8] = b22;\r\n\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tsetToMultLegacy2(pt: Matrix2d, lt: PIXI.Matrix) {\r\n\t\t\tconst out = this.mat3;\r\n\t\t\tconst a = pt.mat3;\r\n\r\n\t\t\tconst a00 = a[0], a01 = a[1], a02 = a[2],\r\n\t\t\t\ta10 = a[3], a11 = a[4], a12 = a[5],\r\n\t\t\t\ta20 = a[6], a21 = a[7], a22 = a[8],\r\n\r\n\t\t\t\tb00 = lt.a, b01 = lt.b,\r\n\t\t\t\tb10 = lt.c, b11 = lt.d,\r\n\t\t\t\tb20 = lt.tx, b21 = lt.ty;\r\n\r\n\r\n\t\t\tout[0] = b00 * a00 + b01 * a10;\r\n\t\t\tout[1] = b00 * a01 + b01 * a11;\r\n\t\t\tout[2] = b00 * a02 + b01 * a12;\r\n\r\n\t\t\tout[3] = b10 * a00 + b11 * a10;\r\n\t\t\tout[4] = b10 * a01 + b11 * a11;\r\n\t\t\tout[5] = b10 * a02 + b11 * a12;\r\n\r\n\t\t\tout[6] = b20 * a00 + b21 * a10 + a20;\r\n\t\t\tout[7] = b20 * a01 + b21 * a11 + a21;\r\n\t\t\tout[8] = b20 * a02 + b21 * a12 + a22;\r\n\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\t// that's transform multiplication we use\r\n\t\tsetToMult(pt: Matrix2d, lt: Matrix2d) {\r\n\t\t\tconst out = this.mat3;\r\n\t\t\tconst a = pt.mat3, b = lt.mat3;\r\n\r\n\t\t\tconst a00 = a[0], a01 = a[1], a02 = a[2],\r\n\t\t\t\ta10 = a[3], a11 = a[4], a12 = a[5],\r\n\t\t\t\ta20 = a[6], a21 = a[7], a22 = a[8],\r\n\r\n\t\t\t\tb00 = b[0], b01 = b[1], b02 = b[2],\r\n\t\t\t\tb10 = b[3], b11 = b[4], b12 = b[5],\r\n\t\t\t\tb20 = b[6], b21 = b[7], b22 = b[8];\r\n\r\n\t\t\tout[0] = b00 * a00 + b01 * a10 + b02 * a20;\r\n\t\t\tout[1] = b00 * a01 + b01 * a11 + b02 * a21;\r\n\t\t\tout[2] = b00 * a02 + b01 * a12 + b02 * a22;\r\n\r\n\t\t\tout[3] = b10 * a00 + b11 * a10 + b12 * a20;\r\n\t\t\tout[4] = b10 * a01 + b11 * a11 + b12 * a21;\r\n\t\t\tout[5] = b10 * a02 + b11 * a12 + b12 * a22;\r\n\r\n\t\t\tout[6] = b20 * a00 + b21 * a10 + b22 * a20;\r\n\t\t\tout[7] = b20 * a01 + b21 * a11 + b22 * a21;\r\n\t\t\tout[8] = b20 * a02 + b21 * a12 + b22 * a22;\r\n\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tprepend(lt: any) {\r\n\t\t\tif (lt.mat3) {\r\n\t\t\t\tthis.setToMult(lt, this);\r\n\t\t\t} else\r\n\t\t\t{\r\n\t\t\t\tthis.setToMultLegacy(lt, this);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","namespace pixi_projection {\r\n\timport PointLike = PIXI.PointLike;\r\n\r\n\tconst t0 = new PIXI.Point();\r\n\tconst tt = [new PIXI.Point(), new PIXI.Point(), new PIXI.Point(), new PIXI.Point()];\r\n\tconst tempRect = new PIXI.Rectangle();\r\n\tconst tempMat = new Matrix2d();\r\n\r\n\texport class Projection2d extends LinearProjection<Matrix2d> {\r\n\r\n\t\tconstructor(legacy: PIXI.TransformBase, enable?: boolean) {\r\n\t\t\tsuper(legacy, enable);\r\n\t\t\tthis.local = new Matrix2d();\r\n\t\t\tthis.world = new Matrix2d();\r\n\t\t}\r\n\r\n\t\tmatrix = new Matrix2d();\r\n\t\tpivot = new PIXI.ObservablePoint(this.onChange, this, 0, 0);\r\n\r\n\t\treverseLocalOrder = false;\r\n\r\n\t\tonChange() {\r\n\t\t\tconst pivot = this.pivot;\r\n\t\t\tconst mat3 = this.matrix.mat3;\r\n\r\n\t\t\tmat3[6] = -(pivot._x * mat3[0] + pivot._y * mat3[3]);\r\n\t\t\tmat3[7] = -(pivot._x * mat3[1] + pivot._y * mat3[4]);\r\n\r\n\t\t\tthis._projID++;\r\n\t\t}\r\n\r\n\t\tsetAxisX(p: PointLike, factor: number = 1): void {\r\n\t\t\tconst x = p.x, y = p.y;\r\n\t\t\tconst d = Math.sqrt(x * x + y * y);\r\n\t\t\tconst mat3 = this.matrix.mat3;\r\n\t\t\tmat3[0] = x / d;\r\n\t\t\tmat3[1] = y / d;\r\n\t\t\tmat3[2] = factor / d;\r\n\r\n\t\t\tthis.onChange();\r\n\t\t}\r\n\r\n\t\tsetAxisY(p: PointLike, factor: number = 1) {\r\n\t\t\tconst x = p.x, y = p.y;\r\n\t\t\tconst d = Math.sqrt(x * x + y * y);\r\n\t\t\tconst mat3 = this.matrix.mat3;\r\n\t\t\tmat3[3] = x / d;\r\n\t\t\tmat3[4] = y / d;\r\n\t\t\tmat3[5] = factor / d;\r\n\t\t\tthis.onChange();\r\n\t\t}\r\n\r\n\t\tmapSprite(sprite: PIXI.Sprite, quad: Array<PointLike>) {\r\n\t\t\tconst tex = sprite.texture;\r\n\r\n\t\t\ttempRect.x = -sprite.anchor.x * tex.orig.width;\r\n\t\t\ttempRect.y = -sprite.anchor.y * tex.orig.height;\r\n\t\t\ttempRect.width = tex.orig.width;\r\n\t\t\ttempRect.height = tex.orig.height;\r\n\r\n\t\t\treturn this.mapQuad(tempRect, quad);\r\n\t\t}\r\n\r\n\t\tmapQuad(rect: PIXI.Rectangle, p: Array<PointLike>) {\r\n\t\t\t// utils.getPositionFromQuad(p, anchor, t0);\r\n\t\t\ttt[0].set(rect.x, rect.y);\r\n\t\t\ttt[1].set(rect.x + rect.width, rect.y);\r\n\t\t\ttt[2].set(rect.x + rect.width, rect.y + rect.height);\r\n\t\t\ttt[3].set(rect.x, rect.y + rect.height);\r\n\r\n\t\t\tlet k1 = 1, k2 = 2, k3 = 3;\r\n\t\t\tlet f = utils.getIntersectionFactor(p[0], p[2], p[1], p[3], t0);\r\n\t\t\tif (f !== 0) {\r\n\t\t\t\tk1 = 1;\r\n\t\t\t\tk2 = 3;\r\n\t\t\t\tk3 = 2;\r\n\t\t\t} else {\r\n\t\t\t\treturn;\r\n\t\t\t\t/*f = utils.getIntersectionFactor(p[0], p[1], p[2], p[3], t0);\r\n\t\t\t\tif (f > 0) {\r\n\t\t\t\t\tk1 = 2;\r\n\t\t\t\t\tk2 = 3;\r\n\t\t\t\t\tk3 = 1;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tf = utils.getIntersectionFactor(p[0], p[3], p[1], p[2], t0);\r\n\t\t\t\t\tif (f > 0) {\r\n\t\t\t\t\t\t// cant find it :(\r\n\t\t\t\t\t\tk1 = 1;\r\n\t\t\t\t\t\tk2 = 2;\r\n\t\t\t\t\t\tk3 = 3;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t}*/\r\n\t\t\t}\r\n\t\t\tlet 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\t\t\tlet 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\t\t\tlet 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\t\t\tlet 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\t\t\tlet q0 = (d0 + d3) / d3;\r\n\t\t\tlet q1 = (d1 + d2) / d2;\r\n\t\t\tlet q2 = (d1 + d2) / d1;\r\n\r\n\t\t\tlet mat3 = this.matrix.mat3;\r\n\t\t\tmat3[0] = tt[0].x * q0;\r\n\t\t\tmat3[1] = tt[0].y * q0;\r\n\t\t\tmat3[2] = q0;\r\n\t\t\tmat3[3] = tt[k1].x * q1;\r\n\t\t\tmat3[4] = tt[k1].y * q1;\r\n\t\t\tmat3[5] = q1;\r\n\t\t\tmat3[6] = tt[k2].x * q2;\r\n\t\t\tmat3[7] = tt[k2].y * q2;\r\n\t\t\tmat3[8] = q2;\r\n\t\t\tthis.matrix.invert();\r\n\r\n\t\t\tmat3 = tempMat.mat3;\r\n\t\t\tmat3[0] = p[0].x;\r\n\t\t\tmat3[1] = p[0].y;\r\n\t\t\tmat3[2] = 1;\r\n\t\t\tmat3[3] = p[k1].x;\r\n\t\t\tmat3[4] = p[k1].y;\r\n\t\t\tmat3[5] = 1;\r\n\t\t\tmat3[6] = p[k2].x;\r\n\t\t\tmat3[7] = p[k2].y;\r\n\t\t\tmat3[8] = 1;\r\n\r\n\t\t\tthis.matrix.setToMult(tempMat, this.matrix);\r\n\t\t\tthis._projID++;\r\n\t\t}\r\n\r\n\t\tupdateLocalTransform(lt: PIXI.Matrix) {\r\n\t\t\tif (this._projID !== 0) {\r\n\t\t\t\tif (this.reverseLocalOrder) {\r\n\t\t\t\t\t// tilingSprite inside order\r\n\t\t\t\t\tthis.local.setToMultLegacy2(this.matrix, lt);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// good order\r\n\t\t\t\t\tthis.local.setToMultLegacy(lt, this.matrix);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis.local.copyFrom(lt);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tclear() {\r\n\t\t\tsuper.clear();\r\n\t\t\tthis.matrix.identity();\r\n\t\t\tthis.pivot.set(0, 0);\r\n\t\t}\r\n\t}\r\n}\r\n","namespace pixi_projection {\r\n\texport class Mesh2d extends PIXI.mesh.Mesh {\r\n\t\tconstructor(texture: PIXI.Texture, vertices?: Float32Array, uvs?: Float32Array,\r\n\t\t indices?: Uint16Array, drawMode?: number) {\r\n\t\t\tsuper(texture, vertices, uvs, indices, drawMode);\r\n\t\t\tthis.proj = new Projection2d(this.transform);\r\n\t\t\tthis.pluginName = 'mesh2d';\r\n\t\t}\r\n\r\n\t\tproj: Projection2d;\r\n\r\n\t\ttoLocal<T extends PIXI.PointLike>(position: PIXI.PointLike, from?: PIXI.DisplayObject,\r\n\t\t point?: T, skipUpdate?: boolean,\r\n\t\t step = TRANSFORM_STEP.ALL): T {\r\n\t\t\treturn container2dToLocal.call(this, position, from, point, skipUpdate, step);\r\n\t\t}\r\n\r\n\t\tget worldTransform() {\r\n\t\t\treturn this.proj.affine ? this.transform.worldTransform : this.proj.world as any;\r\n\t\t}\r\n\t}\r\n}\r\n","namespace pixi_projection {\r\n\tlet shaderVert =\r\n\t\t`precision highp float;\r\nattribute vec2 aVertexPosition;\r\nattribute vec2 aTextureCoord;\r\n\r\nuniform mat3 projectionMatrix;\r\nuniform mat3 translationMatrix;\r\nuniform mat3 uTransform;\r\n\r\nvarying vec2 vTextureCoord;\r\n\r\nvoid main(void)\r\n{\r\n gl_Position.xyw = projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0);\r\n gl_Position.z = 0.0;\r\n\r\n vTextureCoord = (uTransform * vec3(aTextureCoord, 1.0)).xy;\r\n}\r\n`;\r\n\tlet shaderFrag = `\r\nvarying vec2 vTextureCoord;\r\nuniform vec4 uColor;\r\n\r\nuniform sampler2D uSampler;\r\n\r\nvoid main(void)\r\n{\r\n gl_FragColor = texture2D(uSampler, vTextureCoord) * uColor;\r\n}`;\r\n\r\n\texport class Mesh2dRenderer extends PIXI.mesh.MeshRenderer {\r\n\t\tonContextChange()\r\n\t\t{\r\n\t\t\tconst gl = this.renderer.gl;\r\n\r\n\t\t\tthis.shader = new PIXI.Shader(gl, shaderVert, shaderFrag);\r\n\t\t}\r\n\t}\r\n\r\n\tPIXI.WebGLRenderer.registerPlugin('mesh2d', Mesh2dRenderer);\r\n}\r\n","namespace pixi_projection {\r\n\texport class Sprite2d extends PIXI.Sprite {\r\n\t\tconstructor(texture: PIXI.Texture) {\r\n\t\t\tsuper(texture);\r\n\t\t\tthis.proj = new Projection2d(this.transform);\r\n\t\t\tthis.pluginName = 'sprite2d';\r\n\t\t\tthis.vertexData = new Float32Array(12);\r\n\t\t}\r\n\r\n\t\tproj: Projection2d;\r\n\r\n\t\t_calculateBounds() {\r\n\t\t\tthis.calculateTrimmedVertices();\r\n\t\t\tthis._bounds.addQuad(this.vertexTrimmedData as any);\r\n\t\t}\r\n\r\n\t\tcalculateVertices() {\r\n\t\t\tif (this.proj._affine) {\r\n\t\t\t\tif (this.vertexData.length != 8) {\r\n\t\t\t\t\tthis.vertexData = new Float32Array(8);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsuper.calculateVertices();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (this.vertexData.length != 12) {\r\n\t\t\t\tthis.vertexData = new Float32Array(12);\r\n\t\t\t}\r\n\r\n\t\t\tconst wid = (this.transform as any)._worldID;\r\n\t\t\tconst tuid = (this._texture as any)._updateID;\r\n\t\t\tif (this._transformID === wid && this._textureID === tuid) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis._transformID = wid;\r\n\t\t\tthis._textureID = tuid;\r\n\r\n\t\t\tconst texture = this._texture;\r\n\t\t\tconst wt = this.proj.world.mat3;\r\n\t\t\tconst vertexData = this.vertexData;\r\n\t\t\tconst trim = texture.trim;\r\n\t\t\tconst orig = texture.orig;\r\n\t\t\tconst anchor = this._anchor;\r\n\r\n\t\t\tlet w0 = 0;\r\n\t\t\tlet w1 = 0;\r\n\t\t\tlet h0 = 0;\r\n\t\t\tlet h1 = 0;\r\n\r\n\t\t\tif (trim) {\r\n\t\t\t\tw1 = trim.x - (anchor._x * orig.width);\r\n\t\t\t\tw0 = w1 + trim.width;\r\n\r\n\t\t\t\th1 = trim.y - (anchor._y * orig.height);\r\n\t\t\t\th0 = h1 + trim.height;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tw1 = -anchor._x * orig.width;\r\n\t\t\t\tw0 = w1 + orig.width;\r\n\r\n\t\t\t\th1 = -anchor._y * orig.height;\r\n\t\t\t\th0 = h1 + orig.height;\r\n\t\t\t}\r\n\r\n\t\t\tvertexData[0] = (wt[0] * w1) + (wt[3] * h1) + wt[6];\r\n\t\t\tvertexData[1] = (wt[1] * w1) + (wt[4] * h1) + wt[7];\r\n\t\t\tvertexData[2] = (wt[2] * w1) + (wt[5] * h1) + wt[8];\r\n\r\n\t\t\tvertexData[3] = (wt[0] * w0) + (wt[3] * h1) + wt[6];\r\n\t\t\tvertexData[4] = (wt[1] * w0) + (wt[4] * h1) + wt[7];\r\n\t\t\tvertexData[5] = (wt[2] * w0) + (wt[5] * h1) + wt[8];\r\n\r\n\t\t\tvertexData[6] = (wt[0] * w0) + (wt[3] * h0) + wt[6];\r\n\t\t\tvertexData[7] = (wt[1] * w0) + (wt[4] * h0) + wt[7];\r\n\t\t\tvertexData[8] = (wt[2] * w0) + (wt[5] * h0) + wt[8];\r\n\r\n\t\t\tvertexData[9] = (wt[0] * w1) + (wt[3] * h0) + wt[6];\r\n\t\t\tvertexData[10] = (wt[1] * w1) + (wt[4] * h0) + wt[7];\r\n\t\t\tvertexData[11] = (wt[2] * w1) + (wt[5] * h0) + wt[8];\r\n\t\t}\r\n\r\n\t\tcalculateTrimmedVertices() {\r\n\t\t\tif (this.proj._affine) {\r\n\t\t\t\tsuper.calculateTrimmedVertices();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst wid = (this.transform as any)._worldID;\r\n\t\t\tconst tuid = (this._texture as any)._updateID;\r\n\t\t\tif (!this.vertexTrimmedData) {\r\n\t\t\t\tthis.vertexTrimmedData = new Float32Array(8);\r\n\t\t\t}\r\n\t\t\telse if (this._transformTrimmedID === wid && this._textureTrimmedID === tuid) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis._transformTrimmedID = wid;\r\n\t\t\tthis._textureTrimmedID = tuid;\r\n\r\n\t\t\t// lets do some special trim code!\r\n\t\t\tconst texture = this._texture;\r\n\t\t\tconst vertexData = this.vertexTrimmedData;\r\n\t\t\tconst orig = texture.orig;\r\n\t\t\tconst anchor = this._anchor;\r\n\r\n\t\t\t// lets calculate the new untrimmed bounds..\r\n\t\t\tconst wt = this.proj.world.mat3;\r\n\r\n\t\t\tconst w1 = -anchor._x * orig.width;\r\n\t\t\tconst w0 = w1 + orig.width;\r\n\r\n\t\t\tconst h1 = -anchor._y * orig.height;\r\n\t\t\tconst h0 = h1 + orig.height;\r\n\r\n\t\t\tlet z = 1.0 / (wt[2] * w1 + wt[5] * h1 + wt[8]);\r\n\t\t\tvertexData[0] = z * ((wt[0] * w1) + (wt[3] * h1) + wt[6]);\r\n\t\t\tvertexData[1] = z * ((wt[1] * w1) + (wt[4] * h1) + wt[7]);\r\n\r\n\t\t\tz = 1.0 / (wt[2] * w0 + wt[5] * h1 + wt[8]);\r\n\t\t\tvertexData[2] = z * ((wt[0] * w0) + (wt[3] * h1) + wt[6]);\r\n\t\t\tvertexData[3] = z * ((wt[1] * w0) + (wt[4] * h1) + wt[7]);\r\n\r\n\t\t\tz = 1.0 / (wt[2] * w0 + wt[5] * h0 + wt[8]);\r\n\t\t\tvertexData[4] = z * ((wt[0] * w0) + (wt[3] * h0) + wt[6]);\r\n\t\t\tvertexData[5] = z * ((wt[1] * w0) + (wt[4] * h0) + wt[7]);\r\n\r\n\t\t\tz = 1.0 / (wt[2] * w1 + wt[5] * h0 + wt[8]);\r\n\t\t\tvertexData[6] = z * ((wt[0] * w1) + (wt[3] * h0) + wt[6]);\r\n\t\t\tvertexData[7] = z * ((wt[1] * w1) + (wt[4] * h0) + wt[7]);\r\n\t\t}\r\n\r\n\t\ttoLocal<T extends PIXI.PointLike>(position: PIXI.PointLike, from?: PIXI.DisplayObject,\r\n\t\t point?: T, skipUpdate?: boolean,\r\n\t\t step = TRANSFORM_STEP.ALL): T {\r\n\t\t\treturn container2dToLocal.call(this, position, from, point, skipUpdate, step);\r\n\t\t}\r\n\r\n\t\tget worldTransform() {\r\n\t\t\treturn this.proj.affine ? this.transform.worldTransform : this.proj.world as any;\r\n\t\t}\r\n\t}\r\n}\r\n","namespace pixi_projection {\r\n\timport MultiTextureSpriteRenderer = pixi_projection.webgl.MultiTextureSpriteRenderer;\r\n\r\n\tclass Sprite2dRenderer extends MultiTextureSpriteRenderer {\r\n\t\tshaderVert =\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\n gl_Position.xyw = projectionMatrix * aVertexPosition;\r\n gl_Position.z = 0.0;\r\n \r\n vTextureCoord = aTextureCoord;\r\n vTextureId = aTextureId;\r\n vColor = aColor;\r\n}\r\n`;\r\n\t\tshaderFrag = `\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\nvec2 textureCoord = vTextureCoord;\r\nfloat textureId = floor(vTextureId+0.5);\r\n%forloop%\r\ngl_FragColor = color * vColor;\r\n}`;\r\n\r\n\t\tcreateVao(vertexBuffer: PIXI.glCore.GLBuffer) {\r\n\t\t\tconst attrs = this.shader.attributes;\r\n\t\t\tthis.vertSize = 6;\r\n\t\t\tthis.vertByteSize = this.vertSize * 4;\r\n\r\n\t\t\tconst gl = this.renderer.gl;\r\n\t\t\tconst vao = this.renderer.createVao()\r\n\t\t\t\t.addIndex(this.indexBuffer)\r\n\t\t\t\t.addAttribute(vertexBuffer, attrs.aVertexPosition, gl.FLOAT, false, this.vertByteSize, 0)\r\n\t\t\t\t.addAttribute(vertexBuffer, attrs.aTextureCoord, gl.UNSIGNED_SHORT, true, this.vertByteSize, 3 * 4)\r\n\t\t\t\t.addAttribute(vertexBuffer, attrs.aColor, gl.UNSIGNED_BYTE, true, this.vertByteSize, 4 * 4);\r\n\r\n\t\t\tif (attrs.aTextureId) {\r\n\t\t\t\tvao.addAttribute(vertexBuffer, attrs.aTextureId, gl.FLOAT, false, this.vertByteSize, 5 * 4);\r\n\t\t\t}\r\n\r\n\t\t\treturn vao;\r\n\r\n\t\t}\r\n\r\n\t\tfillVertices(float32View: Float32Array, uint32View: Uint32Array, index: number, sprite: any, argb: number, textureId: number) {\r\n\t\t\tconst vertexData = sprite.vertexData;\r\n\t\t\tconst uvs = sprite._texture._uvs.uvsUint32;\r\n\t\t\tif (vertexData.length === 8) {\r\n\t\t\t\t//PIXI standart sprite\r\n\t\t\t\tif (this.renderer.roundPixels) {\r\n\t\t\t\t\tconst resolution = this.renderer.resolution;\r\n\r\n\t\t\t\t\tfloat32View[index] = ((vertexData[0] * resolution) | 0) / resolution;\r\n\t\t\t\t\tfloat32View[index + 1] = ((vertexData[1] * resolution) | 0) / resolution;\r\n\t\t\t\t\tfloat32View[index + 2] = 1.0;\r\n\r\n\t\t\t\t\tfloat32View[index + 6] = ((vertexData[2] * resolution) | 0) / resolution;\r\n\t\t\t\t\tfloat32View[index + 7] = ((vertexData[3] * resolution) | 0) / resolution;\r\n\t\t\t\t\tfloat32View[index + 8] = 1.0;\r\n\r\n\t\t\t\t\tfloat32View[index + 12] = ((vertexData[4] * resolution) | 0) / resolution;\r\n\t\t\t\t\tfloat32View[index + 13] = ((vertexData[5] * resolution) | 0) / resolution;\r\n\t\t\t\t\tfloat32View[index + 14] = 1.0;\r\n\r\n\t\t\t\t\tfloat32View[index + 18] = ((vertexData[6] * resolution) | 0) / resolution;\r\n\t\t\t\t\tfloat32View[index + 19] = ((vertexData[7] * resolution) | 0) / resolution;\r\n\t\t\t\t\tfloat32View[index + 20] = 1.0;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tfloat32View[index] = vertexData[0];\r\n\t\t\t\t\tfloat32View[index + 1] = vertexData[1];\r\n\t\t\t\t\tfloat32View[index + 2] = 1.0;\r\n\r\n\t\t\t\t\tfloat32View[index + 6] = vertexData[2];\r\n\t\t\t\t\tfloat32View[index + 7] = vertexData[3];\r\n\t\t\t\t\tfloat32View[index + 8] = 1.0;\r\n\r\n\t\t\t\t\tfloat32View[index + 12] = vertexData[4];\r\n\t\t\t\t\tfloat32View[index + 13] = vertexData[5];\r\n\t\t\t\t\tfloat32View[index + 14] = 1.0;\r\n\r\n\t\t\t\t\tfloat32View[index + 18] = vertexData[6];\r\n\t\t\t\t\tfloat32View[index + 19] = vertexData[7];\r\n\t\t\t\t\tfloat32View[index + 20] = 1.0;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t// projective 2d/3d sprite\r\n\r\n\t\t\t\t// I removed roundPixels, dont need that for those kind of sprites\r\n\r\n\t\t\t\tfloat32View[index] = vertexData[0];\r\n\t\t\t\tfloat32View[index + 1] = vertexData[1];\r\n\t\t\t\tfloat32View[index + 2] = vertexData[2];\r\n\r\n\t\t\t\tfloat32View[index + 6] = vertexData[3];\r\n\t\t\t\tfloat32View[index + 7] = vertexData[4];\r\n\t\t\t\tfloat32View[index + 8] = vertexData[5];\r\n\r\n\t\t\t\tfloat32View[index + 12] = vertexData[6];\r\n\t\t\t\tfloat32View[index + 13] = vertexData[7];\r\n\t\t\t\tfloat32View[index + 14] = vertexData[8];\r\n\r\n\t\t\t\tfloat32View[index + 18] = vertexData[9];\r\n\t\t\t\tfloat32View[index + 19] = vertexData[10];\r\n\t\t\t\tfloat32View[index + 20] = vertexData[11];\r\n\t\t\t}\r\n\r\n\t\t\tuint32View[index + 3] = uvs[0];\r\n\t\t\tuint32View[index + 9] = uvs[1];\r\n\t\t\tuint32View[index + 15] = uvs[2];\r\n\t\t\tuint32View[index + 21] = uvs[3];\r\n\r\n\t\t\tuint32View[index + 4] = uint32View[index + 10] = uint32View[index + 16] = uint32View[index + 22] = argb;\r\n\t\t\tfloat32View[index + 5] = float32View[index + 11] = float32View[index + 17] = float32View[index + 23] = textureId;\r\n\t\t}\r\n\t}\r\n\r\n\tPIXI.WebGLRenderer.registerPlugin('sprite2d', Sprite2dRenderer);\r\n}","namespace pixi_projection {\r\n export class Text2d extends PIXI.Text {\r\n constructor(text?: string, style?: PIXI.TextStyle, canvas?: HTMLCanvasElement) {\r\n super(text, style, canvas);\r\n this.proj = new Projection2d(this.transform);\r\n this.pluginName = 'sprite2d';\r\n this.vertexData = new Float32Array(12);\r\n }\r\n\r\n proj: Projection2d;\r\n\r\n get worldTransform() {\r\n\t return this.proj.affine ? this.transform.worldTransform : this.proj.world as any;\r\n }\r\n }\r\n\r\n Text2d.prototype.calculateVertices = Sprite2d.prototype.calculateVertices;\r\n (Text2d.prototype as any).calculateTrimmedVertices = Sprite2d.prototype.calculateTrimmedVertices;\r\n\t(Text2d.prototype as any)._calculateBounds = Sprite2d.prototype._calculateBounds;\r\n}\r\n","declare module PIXI {\r\n interface Sprite {\r\n convertTo2d(): void;\r\n }\r\n\r\n interface Container {\r\n convertTo2d(): void;\r\n convertSubtreeTo2d(): void;\r\n }\r\n\r\n namespace mesh {\r\n\t interface Mesh {\r\n\t\t convertTo2d(): void;\r\n\t }\r\n }\r\n}\r\n\r\nnamespace pixi_projection {\r\n\r\n\tfunction convertTo2d() {\r\n\t\tif (this.proj) return;\r\n\t\tthis.proj = new Projection2d(this.transform);\r\n\t\tthis.toLocal = Container2d.prototype.toLocal;\r\n\t\tObject.defineProperty(this, \"worldTransform\", {\r\n\t\t\tget: container2dWorldTransform,\r\n\t\t\tenumerable: true,\r\n\t\t\tconfigurable: true\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t(PIXI as any).Container.prototype.convertTo2d = convertTo2d;\r\n\r\n (PIXI as any).Sprite.prototype.convertTo2d = function () {\r\n if (this.proj) return;\r\n this.calculateVertices = Sprite2d.prototype.calculateVertices;\r\n this.calculateTrimmedVertices = Sprite2d.prototype.calculateTrimmedVertices;\r\n\t this._calculateBounds = Sprite2d.prototype._calculateBounds;\r\n this.pluginName = 'sprite2d';\r\n this.vertexData = new Float32Array(12);\r\n convertTo2d.call(this);\r\n };\r\n\r\n\t(PIXI as any).mesh.Mesh.prototype.convertTo2d = function () {\r\n\t\tif (this.proj) return;\r\n\t\tthis.pluginName = 'mesh2d';\r\n\t\tconvertTo2d.call(this);\r\n\t};\r\n\r\n (PIXI as any).Container.prototype.convertSubtreeTo2d = function () {\r\n this.convertTo2d();\r\n for (let i = 0; i < this.children.length; i++) {\r\n this.children[i].convertSubtreeTo2d();\r\n }\r\n };\r\n}\r\n","namespace pixi_projection {\r\n\tconst tempTransform = new PIXI.TransformStatic();\r\n\r\n\texport class TilingSprite2d extends PIXI.extras.TilingSprite {\r\n\t\tconstructor(texture: PIXI.Texture, width: number, height: number) {\r\n\t\t\tsuper(texture, width, height);\r\n\r\n\t\t\tthis.tileProj = new Projection2d(this.tileTransform);\r\n\t\t\tthis.tileProj.reverseLocalOrder = true;\r\n\t\t\tthis.proj = new Projection2d(this.transform);\r\n\r\n\t\t\tthis.pluginName = 'tilingSprite2d';\r\n\t\t\tthis.uvRespectAnchor = true;\r\n\t\t}\r\n\r\n\t\ttileProj: Projection2d;\r\n\t\tproj: Projection2d;\r\n\r\n\t\tget worldTransform() {\r\n\t\t\treturn this.proj.affine ? this.transform.worldTransform : this.proj.world as any;\r\n\t\t}\r\n\r\n\t\ttoLocal<T extends PIXI.PointLike>(position: PIXI.PointLike, from?: PIXI.DisplayObject,\r\n\t\t point?: T, skipUpdate?: boolean,\r\n\t\t step = TRANSFORM_STEP.ALL): T {\r\n\t\t\treturn container2dToLocal.call(this, position, from, point, skipUpdate, step);\r\n\t\t}\r\n\r\n\t\t_renderWebGL(renderer: PIXI.WebGLRenderer)\r\n\t\t{\r\n\t\t\t// tweak our texture temporarily..\r\n\t\t\tconst texture = this._texture;\r\n\r\n\t\t\tif (!texture || !texture.valid)\r\n\t\t\t{\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// changed\r\n\t\t\tthis.tileTransform.updateTransform(tempTransform);\r\n\t\t\tthis.uvTransform.update();\r\n\r\n\t\t\trenderer.setObjectRenderer(renderer.plugins[this.pluginName]);\r\n\t\t\trenderer.plugins[this.pluginName].render(this);\r\n\t\t}\r\n\t}\r\n}\r\n","namespace pixi_projection {\r\n\tlet shaderVert =\r\n\t\t`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\n gl_Position.xyw = projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0);\r\n\r\n vTextureCoord = uTransform * vec3(aTextureCoord, 1.0);\r\n}\r\n`;\r\n\tlet 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\n vec2 coord = mod(vTextureCoord.xy / vTextureCoord.z - uClampOffset, vec2(1.0, 1.0)) + uClampOffset;\r\n coord = (uMapCoord * vec3(coord, 1.0)).xy;\r\n coord = clamp(coord, uClampFrame.xy, uClampFrame.zw);\r\n\r\n vec4 sample = texture2D(uSampler, coord);\r\n gl_FragColor = sample * uColor;\r\n}\r\n`;\r\n\tlet shaderSimpleFrag = `\r\n\tvarying vec3 vTextureCoord;\r\n\r\nuniform sampler2D uSampler;\r\nuniform vec4 uColor;\r\n\r\nvoid main(void)\r\n{\r\n vec4 sample = texture2D(uSampler, vTextureCoord.xy / vTextureCoord.z);\r\n gl_FragColor = sample * uColor;\r\n}\r\n`;\r\n\r\n\t// changed\r\n\tconst tempMat = new Matrix2d();\r\n\r\n\timport WRAP_MODES = PIXI.WRAP_MODES;\r\n\timport utils = PIXI.utils;\r\n\r\n\texport class TilingSprite2dRenderer extends PIXI.extras.TilingSpriteRenderer {\r\n\r\n\t\tshader: PIXI.Shader;\r\n\t\tsimpleShader: PIXI.Shader;\r\n\t\tquad: PIXI.Quad;\r\n\r\n\t\tonContextChange()\r\n\t\t{\r\n\t\t\tconst gl = this.renderer.gl;\r\n\r\n\t\t\tthis.shader = new PIXI.Shader(gl, shaderVert, shaderFrag);\r\n\t\t\tthis.simpleShader = new PIXI.Shader(gl, shaderVert, shaderSimpleFrag);\r\n\r\n\t\t\tthis.renderer.bindVao(null);\r\n\t\t\tthis.quad = new (PIXI.Quad as any)(gl, this.renderer.state.attribState);\r\n\t\t\tthis.quad.initVao(this.shader);\r\n\t\t}\r\n\r\n\t\trender(ts: any)\r\n\t\t{\r\n\t\t\tconst renderer = this.renderer;\r\n\t\t\tconst quad = this.quad;\r\n\r\n\t\t\trenderer.bindVao(quad.vao);\r\n\r\n\t\t\tlet vertices = quad.vertices;\r\n\r\n\t\t\tvertices[0] = vertices[6] = (ts._width) * -ts.anchor.x;\r\n\t\t\tvertices[1] = vertices[3] = ts._height * -ts.anchor.y;\r\n\r\n\t\t\tvertices[2] = vertices[4] = (ts._width) * (1.0 - ts.anchor.x);\r\n\t\t\tvertices[5] = vertices[7] = ts._height * (1.0 - ts.anchor.y);\r\n\r\n\t\t\tif (ts.uvRespectAnchor)\r\n\t\t\t{\r\n\t\t\t\tvertices = quad.uvs;\r\n\r\n\t\t\t\tvertices[0] = vertices[6] = -ts.anchor.x;\r\n\t\t\t\tvertices[1] = vertices[3] = -ts.anchor.y;\r\n\r\n\t\t\t\tvertices[2] = vertices[4] = 1.0 - ts.anchor.x;\r\n\t\t\t\tvertices[5] = vertices[7] = 1.0 - ts.anchor.y;\r\n\t\t\t}\r\n\r\n\t\t\tquad.upload();\r\n\r\n\t\t\tconst tex = ts._texture;\r\n\t\t\tconst baseTex = tex.baseTexture;\r\n\t\t\tconst lt = ts.tileProj.world;\r\n\t\t\tconst uv = ts.uvTransform;\r\n\t\t\tlet isSimple = baseTex.isPowerOfTwo\r\n\t\t\t\t&& tex.frame.width === baseTex.width && tex.frame.height === baseTex.height;\r\n\r\n\t\t\t// auto, force repeat wrapMode for big tiling textures\r\n\t\t\tif (isSimple)\r\n\t\t\t{\r\n\t\t\t\tif (!baseTex._glTextures[renderer.CONTEXT_UID])\r\n\t\t\t\t{\r\n\t\t\t\t\tif (baseTex.wrapMode === WRAP_MODES.CLAMP)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tbaseTex.wrapMode = WRAP_MODES.REPEAT;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tisSimple = baseTex.wrapMode !== WRAP_MODES.CLAMP;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tconst shader = isSimple ? this.simpleShader : this.shader;\r\n\r\n\t\t\trenderer.bindShader(shader);\r\n\r\n\t\t\t// changed\r\n\t\t\ttempMat.identity();\r\n\t\t\ttempMat.scale(tex.width, tex.height);\r\n\t\t\ttempMat.prepend(lt);\r\n\t\t\ttempMat.scale(1.0 / ts._width, 1.0 / ts._height);\r\n\r\n\t\t\ttempMat.invert();\r\n\t\t\tif (isSimple)\r\n\t\t\t{\r\n\t\t\t\ttempMat.prepend(uv.mapCoord);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tshader.uniforms.uMapCoord = uv.mapCoord.toArray(true);\r\n\t\t\t\tshader.uniforms.uClampFrame = uv.uClampFrame;\r\n\t\t\t\tshader.uniforms.uClampOffset = uv.uClampOffset;\r\n\t\t\t}\r\n\r\n\t\t\tshader.uniforms.uTransform = tempMat.toArray(true);\r\n\t\t\tshader.uniforms.uColor = utils.premultiplyTintToRgba(ts.tint, ts.worldAlpha,\r\n\t\t\t\tshader.uniforms.uColor, baseTex.premultipliedAlpha);\r\n\t\t\t// changed\r\n\t\t\tshader.uniforms.translationMatrix = ts.proj.world.toArray(true);\r\n\r\n\t\t\tshader.uniforms.uSampler = renderer.bindTexture(tex);\r\n\r\n\t\t\trenderer.setBlendMode(utils.correctBlendMode(ts.blendMode, baseTex.premultipliedAlpha));\r\n\r\n\t\t\tquad.vao.draw(this.renderer.gl.TRIANGLES, 6, 0);\r\n\t\t}\r\n\t}\r\n\r\n\tPIXI.WebGLRenderer.registerPlugin('tilingSprite2d', TilingSprite2dRenderer);\r\n}\r\n","namespace pixi_projection {\r\n\texport class ProjectionsManager {\r\n\t\t/**\r\n\t\t * A reference to the current renderer\r\n\t\t *\r\n\t\t * @member {PIXI.WebGLRenderer}\r\n\t\t */\r\n\t\trenderer: PIXI.WebGLRenderer;\r\n\r\n\t\t/**\r\n\t\t * The current WebGL rendering context\r\n\t\t *\r\n\t\t * @member {WebGLRenderingContext}\r\n\t\t */\r\n\t\tgl: WebGLRenderingContext;\r\n\r\n\t\tconstructor(renderer: PIXI.WebGLRenderer) {\r\n\t\t\tthis.renderer = renderer;\r\n\r\n\t\t\trenderer.on('context', this.onContextChange);\r\n\t\t}\r\n\r\n\t\tonContextChange = (gl: WebGLRenderingContext) => {\r\n\t\t\tthis.gl = gl;\r\n\r\n\t\t\tthis.renderer.maskManager.pushSpriteMask = pushSpriteMask;\r\n\t\t};\r\n\r\n\t\tdestroy() {\r\n\t\t\tthis.renderer.off('context', this.onContextChange);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction pushSpriteMask(target: any, maskData: PIXI.Sprite): void {\r\n\t\tlet alphaMaskFilter = this.alphaMaskPool[this.alphaMaskIndex];\r\n\r\n\t\tif (!alphaMaskFilter) {\r\n\t\t\talphaMaskFilter = this.alphaMaskPool[this.alphaMaskIndex] = [new SpriteMaskFilter2d(maskData)];\r\n\t\t}\r\n\r\n\t\talphaMaskFilter[0].resolution = this.renderer.resolution;\r\n\t\talphaMaskFilter[0].maskSprite = maskData;\r\n\r\n\t\t// TODO - may cause issues!\r\n\t\ttarget.filterArea = maskData.getBounds(true);\r\n\r\n\t\tthis.renderer.filterManager.pushFilter(target, alphaMaskFilter);\r\n\r\n\t\tthis.alphaMaskIndex++;\r\n\t}\r\n\r\n\tPIXI.WebGLRenderer.registerPlugin('projections', ProjectionsManager);\r\n}\r\n","namespace pixi_projection {\r\n\tconst 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\n\tgl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\r\n\r\n\tvTextureCoord = aTextureCoord;\r\n\tvMaskCoord = otherMatrix * vec3( aTextureCoord, 1.0);\r\n}\r\n`;\r\n\tconst spriteMaskFrag = `\r\nvarying vec3 vMaskCoord;\r\nvarying vec2 vTextureCoord;\r\n\r\nuniform sampler2D uSampler;\r\nuniform float alpha;\r\nuniform sampler2D mask;\r\n\r\nvoid main(void)\r\n{\r\n vec2 uv = vMaskCoord.xy / vMaskCoord.z;\r\n \r\n vec2 text = abs( uv - 0.5 );\r\n text = step(0.5, text);\r\n\r\n float clip = 1.0 - max(text.y, text.x);\r\n vec4 original = texture2D(uSampler, vTextureCoord);\r\n vec4 masky = texture2D(mask, uv);\r\n\r\n original *= (masky.r * masky.a * alpha * clip);\r\n\r\n gl_FragColor = original;\r\n}\r\n`;\r\n\r\n\tconst tempMat = new Matrix2d();\r\n\r\n\texport interface SpriteMaskFilter2dUniforms {\r\n\t\tmask: PIXI.Texture;\r\n\t\totherMatrix: PIXI.Matrix | Matrix2d;\r\n\t\talpha: number;\r\n\t}\r\n\r\n\texport class SpriteMaskFilter2d extends PIXI.Filter<SpriteMaskFilter2dUniforms> {\r\n\t\tconstructor(sprite: PIXI.Sprite) {\r\n\t\t\tsuper(spriteMaskVert, spriteMaskFrag);\r\n\r\n\t\t\tsprite.renderable = false;\r\n\r\n\t\t\tthis.maskSprite = sprite;\r\n\t\t}\r\n\r\n\t\tmaskSprite: PIXI.Sprite;\r\n\t\tmaskMatrix = new Matrix2d();\r\n\r\n\t\tapply(filterManager: PIXI.FilterManager, input: PIXI.RenderTarget, output: PIXI.RenderTarget,\r\n\t\t clear?: boolean, currentState?: any) {\r\n\t\t\tconst maskSprite = this.maskSprite;\r\n\r\n\t\t\tthis.uniforms.mask = maskSprite.texture;\r\n\t\t\tthis.uniforms.otherMatrix = SpriteMaskFilter2d.calculateSpriteMatrix(currentState, this.maskMatrix, maskSprite);\r\n\t\t\tthis.uniforms.alpha = maskSprite.worldAlpha;\r\n\r\n\t\t\tfilterManager.applyFilter(this, input, output);\r\n\t\t}\r\n\r\n\t\tstatic calculateSpriteMatrix(currentState: any, mappedMatrix: Matrix2d, sprite: PIXI.Sprite) {\r\n\t\t\tlet proj = (sprite as any).proj as Projection2d;\r\n\r\n\t\t\tconst filterArea = currentState.sourceFrame;\r\n\t\t\tconst textureSize = currentState.renderTarget.size;\r\n\r\n\t\t\tconst worldTransform = proj && !proj._affine ? proj.world.copyTo(tempMat) : tempMat.copyFrom(sprite.transform.worldTransform);\r\n\t\t\tconst texture = sprite.texture.orig;\r\n\r\n\t\t\tmappedMatrix.set(textureSize.width, 0, 0, textureSize.height, filterArea.x, filterArea.y);\r\n\t\t\tworldTransform.invert();\r\n\t\t\tmappedMatrix.setToMult(worldTransform, mappedMatrix);\r\n\t\t\tmappedMatrix.scaleAndTranslate(1.0 / texture.width, 1.0 / texture.height,\r\n\t\t\t\tsprite.anchor.x, sprite.anchor.y);\r\n\r\n\t\t\treturn mappedMatrix;\r\n\t\t}\r\n\t}\r\n}","namespace pixi_projection {\r\n\texport function container3dWorldTransform() {\r\n\t\treturn this.proj.affine ? this.transform.worldTransform : this.proj.world as any;\r\n\t}\r\n\r\n\texport class Container3d extends PIXI.Container {\r\n\t\tconstructor() {\r\n\t\t\tsuper();\r\n\t\t\tthis.proj = new Projection3d(this.transform);\r\n\t\t}\r\n\r\n\t\tproj: Projection3d;\r\n\r\n\t\tisFrontFace(forceUpdate: boolean = false) {\r\n\t\t\tif (forceUpdate) {\r\n\t\t\t\tthis._recursivePostUpdateTransform();\r\n\t\t\t\tthis.displayObjectUpdateTransform();\r\n\t\t\t}\r\n\r\n\t\t\tconst mat = this.proj.world.mat4;\r\n\t\t\tconst dx1 = mat[0] * mat[15] - mat[3] * mat[12];\r\n\t\t\tconst dy1 = mat[1] * mat[15] - mat[3] * mat[13];\r\n\t\t\tconst dx2 = mat[4] * mat[15] - mat[7] * mat[12];\r\n\t\t\tconst dy2 = mat[5] * mat[15] - mat[7] * mat[13];\r\n\r\n\t\t\treturn dx1 * dy2 - dx2 * dy1 > 0;\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * returns depth from 0 to 1\r\n\t\t *\r\n\t\t * @param {boolean} forceUpdate whether to force matrix updates\r\n\t\t * @returns {number} depth\r\n\t\t */\r\n\t\tgetDepth(forceUpdate: boolean = false) {\r\n\t\t\tif (forceUpdate) {\r\n\t\t\t\tthis._recursivePostUpdateTransform();\r\n\t\t\t\tthis.displayObjectUpdateTransform();\r\n\t\t\t}\r\n\r\n\t\t\tconst mat4 = this.proj.world.mat4;\r\n\t\t\treturn mat4[14] / mat4[15];\r\n\t\t}\r\n\r\n\t\ttoLocal<T extends PIXI.PointLike>(position: PIXI.PointLike, from?: PIXI.DisplayObject,\r\n\t\t point?: T, skipUpdate?: boolean,\r\n\t\t step = TRANSFORM_STEP.ALL): T {\r\n\r\n\t\t\tif (from)\r\n\t\t\t{\r\n\t\t\t\tposition = from.toGlobal(position, point, skipUpdate);\r\n\t\t\t}\r\n\r\n\t\t\tif (!skipUpdate)\r\n\t\t\t{\r\n\t\t\t\tthis._recursivePostUpdateTransform();\r\n\t\t\t}\r\n\r\n\t\t\tif (step === TRANSFORM_STEP.ALL) {\r\n\t\t\t\tif (!skipUpdate) {\r\n\t\t\t\t\tthis.displayObjectUpdateTransform();\r\n\t\t\t\t}\r\n\t\t\t\tif (this.proj.affine) {\r\n\t\t\t\t\treturn this.transform.worldTransform.applyInverse(point, point) as any;\r\n\t\t\t\t}\r\n\t\t\t\treturn this.proj.world.applyInverse(point, point) as any;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.parent) {\r\n\t\t\t\tpoint = this.parent.worldTransform.applyInverse(position, point) as any;\r\n\t\t\t} else {\r\n\t\t\t\tpoint.copy(position);\r\n\t\t\t}\r\n\t\t\tif (step === TRANSFORM_STEP.NONE) {\r\n\t\t\t\treturn point;\r\n\t\t\t}\r\n\r\n\t\t\tpoint = this.transform.localTransform.applyInverse(point, point) as any;\r\n\t\t\tif (step === TRANSFORM_STEP.PROJ && this.proj.cameraMode) {\r\n\t\t\t\tpoint = this.proj.cameraMatrix.applyInverse(point, point) as any;\r\n\t\t\t}\r\n\t\t\treturn point;\r\n\t\t}\r\n\r\n\t\tget worldTransform() {\r\n\t\t\treturn this.proj.affine ? this.transform.worldTransform : this.proj.world as any;\r\n\t\t}\r\n\r\n\t\tget position3d(): PIXI.PointLike {\r\n\t\t\treturn this.proj.position;\r\n\t\t}\r\n\t\tget scale3d(): PIXI.PointLike {\r\n\t\t\treturn this.proj.scale;\r\n\t\t}\r\n\t\tget euler(): Euler {\r\n\t\t\treturn this.proj.euler;\r\n\t\t}\r\n\t\tget pivot3d(): PIXI.PointLike {\r\n\t\t\treturn this.proj.pivot;\r\n\t\t}\r\n\t\tset position3d(value: PIXI.PointLike) {\r\n\t\t\tthis.proj.position.copy(value);\r\n\t\t}\r\n\t\tset scale3d(value: PIXI.PointLike) {\r\n\t\t\tthis.proj.scale.copy(value);\r\n\t\t}\r\n\t\tset euler(value: Euler) {\r\n\t\t\tthis.proj.euler.copy(value);\r\n\t\t}\r\n\t\tset pivot3d(value: PIXI.PointLike) {\r\n\t\t\tthis.proj.pivot.copy(value);\r\n\t\t}\r\n\t}\r\n\r\n\texport let container3dToLocal = Container3d.prototype.toLocal;\r\n\texport let container3dGetDepth = Container3d.prototype.getDepth;\r\n\texport let container3dIsFrontFace = Container3d.prototype.isFrontFace;\r\n}\r\n","///<reference path=\"./Container3d.ts\"/>\r\nnamespace pixi_projection {\r\n\texport class Camera3d extends Container3d {\r\n\t\tconstructor() {\r\n\t\t\tsuper();\r\n\t\t\tthis.proj.cameraMode = true;\r\n\t\t\tthis.setPlanes(400, 10, 10000, false);\r\n\t\t}\r\n\r\n\t\t_far: number = 0;\r\n\t\t_near: number = 0;\r\n\t\t_focus: number = 0;\r\n\t\t_orthographic: boolean = false;\r\n\r\n\t\tget far() {\r\n\t\t\treturn this._far;\r\n\t\t}\r\n\r\n\t\tget near() {\r\n\t\t\treturn this._near;\r\n\t\t}\r\n\r\n\t\tget focus() {\r\n\t\t\treturn this._focus;\r\n\t\t}\r\n\r\n\t\tget ortographic() {\r\n\t\t\treturn this._orthographic;\r\n\t\t}\r\n\r\n\t\tsetPlanes(focus: number, near: number = 10, far: number = 10000, orthographic: boolean = false) {\r\n\t\t\tthis._focus = focus;\r\n\t\t\tthis._near = near;\r\n\t\t\tthis._far = far;\r\n\t\t\tthis._orthographic = orthographic;\r\n\r\n\t\t\tconst proj = this.proj;\r\n\t\t\tconst mat4 = proj.cameraMatrix.mat4;\r\n\r\n\t\t\tproj._projID++;\r\n\r\n\t\t\tmat4[10] = 1.0 / (far - near);\r\n\t\t\tmat4[14] = (focus - near) / (far - near);\r\n\t\t\tif (this._orthographic) {\r\n\t\t\t\tmat4[11] = 0;\r\n\t\t\t} else {\r\n\t\t\t\tmat4[11] = 1.0 / focus;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","namespace pixi_projection {\r\n\t/**\r\n\t * The Euler angles, order is YZX. Except for projections (camera.lookEuler), its reversed XZY\r\n\t * @class\r\n\t * @namespace PIXI.projection\r\n\t * @param x pitch\r\n\t * @param y yaw\r\n\t * @param z roll\r\n\t * @constructor\r\n\t */\r\n\r\n\texport class Euler implements PIXI.PointLike {\r\n\t\tconstructor(x?: number, y?: number, z?: number) {\r\n\t\t\t/**\r\n\t\t\t * @member {number}\r\n\t\t\t * @default 0\r\n\t\t\t */\r\n\t\t\tthis._x = x || 0;\r\n\r\n\t\t\t/**\r\n\t\t\t * @member {number}\r\n\t\t\t * @default 0\r\n\t\t\t */\r\n\t\t\tthis._y = y || 0;\r\n\r\n\t\t\t/**\r\n\t\t\t * @member {number}\r\n\t\t\t * @default 0\r\n\t\t\t */\r\n\t\t\tthis._z = z || 0;\r\n\r\n\t\t\tthis.quaternion = new Float64Array(4);\r\n\t\t\tthis.quaternion[3] = 1;\r\n\r\n\t\t\tthis.update();\r\n\t\t}\r\n\r\n\t\t_quatUpdateId = -1;\r\n\t\t_quatDirtyId = 0;\r\n\r\n\t\tquaternion: Float64Array;\r\n\r\n\t\t_x: number;\r\n\t\t_y: number;\r\n\t\t_z: number;\r\n\t\t_sign: number = 1;\r\n\r\n\t\tget x() {\r\n\t\t\treturn this._x;\r\n\t\t}\r\n\r\n\t\tset x(value: number) {\r\n\t\t\tif (this._x !== value) {\r\n\t\t\t\tthis._x = value;\r\n\t\t\t\tthis._quatDirtyId++;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tget y() {\r\n\t\t\treturn this._y;\r\n\t\t}\r\n\r\n\t\tset y(value: number) {\r\n\t\t\tif (this._y !== value) {\r\n\t\t\t\tthis._y = value;\r\n\t\t\t\tthis._quatDirtyId++;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tget z() {\r\n\t\t\treturn this._z;\r\n\t\t}\r\n\r\n\t\tset z(value: number) {\r\n\t\t\tif (this._z !== value) {\r\n\t\t\t\tthis._z = value;\r\n\t\t\t\tthis._quatDirtyId++;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tget pitch() {\r\n\t\t\treturn this._x;\r\n\t\t}\r\n\r\n\t\tset pitch(value: number) {\r\n\t\t\tif (this._x !== value) {\r\n\t\t\t\tthis._x = value;\r\n\t\t\t\tthis._quatDirtyId++;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tget yaw() {\r\n\t\t\treturn this._y;\r\n\t\t}\r\n\r\n\t\tset yaw(value: number) {\r\n\t\t\tif (this._y !== value) {\r\n\t\t\t\tthis._y = value;\r\n\t\t\t\tthis._quatDirtyId++;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tget roll() {\r\n\t\t\treturn this._z;\r\n\t\t}\r\n\r\n\t\tset roll(value: number) {\r\n\t\t\tif (this._z !== value) {\r\n\t\t\t\tthis._z = value;\r\n\t\t\t\tthis._quatDirtyId++;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tset(x?: number, y?: number, z?: number) {\r\n\t\t\tconst _x = x || 0;\r\n\t\t\tconst _y = y || 0;\r\n\t\t\tconst _z = z || 0;\r\n\t\t\tif (this._x !== _x || this._y !== _y || this._z !== _z) {\r\n\t\t\t\tthis._x = _x;\r\n\t\t\t\tthis._y = _y;\r\n\t\t\t\tthis._z = _z;\r\n\t\t\t\tthis._quatDirtyId++;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tcopy(euler: PIXI.PointLike) {\r\n\t\t\tconst _x = euler.x;\r\n\t\t\tconst _y = euler.y;\r\n\t\t\tconst _z = euler.z;\r\n\t\t\tif (this._x !== _x || this._y !== _y || this._z !== _z) {\r\n\t\t\t\tthis._x = _x;\r\n\t\t\t\tthis._y = _y;\r\n\t\t\t\tthis._z = _z;\r\n\t\t\t\tthis._quatDirtyId++;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tclone() {\r\n\t\t\treturn new Euler(this._x, this._y, this._z);\r\n\t\t}\r\n\r\n\t\tupdate() {\r\n\t\t\tif (this._quatUpdateId === this._quatDirtyId) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tthis._quatUpdateId = this._quatDirtyId;\r\n\r\n\t\t\tconst c1 = Math.cos(this._x / 2);\r\n\t\t\tconst c2 = Math.cos(this._y / 2);\r\n\t\t\tconst c3 = Math.cos(this._z / 2);\r\n\r\n\t\t\tconst s = this._sign;\r\n\t\t\tconst s1 = s * Math.sin(this._x / 2);\r\n\t\t\tconst s2 = s * Math.sin(this._y / 2);\r\n\t\t\tconst s3 = s * Math.sin(this._z / 2);\r\n\r\n\t\t\tconst q = this.quaternion;\r\n\r\n\t\t\tq[0] = s1 * c2 * c3 + c1 * s2 * s3;\r\n\t\t\tq[1] = c1 * s2 * c3 - s1 * c2 * s3;\r\n\t\t\tq[2] = c1 * c2 * s3 + s1 * s2 * c3;\r\n\t\t\tq[3] = c1 * c2 * c3 - s1 * s2 * s3;\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\t}\r\n}\r\n","// according to https://jsperf.com/obj-vs-array-view-access/1 , Float64Array is the best here\r\n\r\nnamespace pixi_projection {\r\n\timport IPoint = PIXI.PointLike;\r\n\r\n\tconst mat4id = [1, 0, 0, 0,\r\n\t\t0, 1, 0, 0,\r\n\t\t0, 0, 1, 0,\r\n\t\t0, 0, 0, 1];\r\n\r\n\r\n\texport class Matrix3d {\r\n\t\t/**\r\n\t\t * A default (identity) matrix\r\n\t\t *\r\n\t\t * @static\r\n\t\t * @const\r\n\t\t */\r\n\t\tstatic readonly IDENTITY = new Matrix3d();\r\n\r\n\t\t/**\r\n\t\t * A temp matrix\r\n\t\t *\r\n\t\t * @static\r\n\t\t * @const\r\n\t\t */\r\n\t\tstatic readonly TEMP_MATRIX = new Matrix3d();\r\n\r\n\t\t/**\r\n\t\t * mat4 implementation through array of 16 elements\r\n\t\t */\r\n\t\tmat4: Float64Array;\r\n\r\n\t\tfloatArray: Float32Array = null;\r\n\r\n\t\t_dirtyId: number = 0;\r\n\t\t_updateId: number = -1;\r\n\t\t_mat4inv: Float64Array = null;\r\n\t\tcacheInverse: boolean = false;\r\n\r\n\t\tconstructor(backingArray?: ArrayLike<number>) {\r\n\t\t\tthis.mat4 = new Float64Array(backingArray || mat4id);\r\n\t\t}\r\n\r\n\t\tget a() {\r\n\t\t\treturn this.mat4[0] / this.mat4[15];\r\n\t\t}\r\n\r\n\t\tget b() {\r\n\t\t\treturn this.mat4[1] / this.mat4[15];\r\n\t\t}\r\n\r\n\t\tget c() {\r\n\t\t\treturn this.mat4[4] / this.mat4[15];\r\n\t\t}\r\n\r\n\t\tget d() {\r\n\t\t\treturn this.mat4[5] / this.mat4[15];\r\n\t\t}\r\n\r\n\t\tget tx() {\r\n\t\t\treturn this.mat4[12] / this.mat4[15];\r\n\t\t}\r\n\r\n\t\tget ty() {\r\n\t\t\treturn this.mat4[13] / this.mat4[15];\r\n\t\t}\r\n\r\n\t\tset a(value: number) {\r\n\t\t\tthis.mat4[0] = value * this.mat4[15];\r\n\t\t}\r\n\r\n\t\tset b(value: number) {\r\n\t\t\tthis.mat4[1] = value * this.mat4[15];\r\n\t\t}\r\n\r\n\t\tset c(value: number) {\r\n\t\t\tthis.mat4[4] = value * this.mat4[15];\r\n\t\t}\r\n\r\n\t\tset d(value: number) {\r\n\t\t\tthis.mat4[5] = value * this.mat4[15];\r\n\t\t}\r\n\r\n\t\tset tx(value: number) {\r\n\t\t\tthis.mat4[12] = value * this.mat4[15];\r\n\t\t}\r\n\r\n\t\tset ty(value: number) {\r\n\t\t\tthis.mat4[13] = value * this.mat4[15];\r\n\t\t}\r\n\r\n\t\tset(a: number, b: number, c: number, d: number, tx: number, ty: number) {\r\n\t\t\tlet mat4 = this.mat4;\r\n\t\t\tmat4[0] = a;\r\n\t\t\tmat4[1] = b;\r\n\t\t\tmat4[2] = 0;\r\n\t\t\tmat4[3] = 0;\r\n\t\t\tmat4[4] = c;\r\n\t\t\tmat4[5] = d;\r\n\t\t\tmat4[6] = 0;\r\n\t\t\tmat4[7] = 0;\r\n\t\t\tmat4[8] = 0;\r\n\t\t\tmat4[9] = 0;\r\n\t\t\tmat4[10] = 1;\r\n\t\t\tmat4[11] = 0;\r\n\t\t\tmat4[12] = tx;\r\n\t\t\tmat4[13] = ty;\r\n\t\t\tmat4[14] = 0;\r\n\t\t\tmat4[15] = 1;\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\ttoArray(transpose?: boolean, out?: Float32Array): Float32Array {\r\n\t\t\tif (!this.floatArray) {\r\n\t\t\t\tthis.floatArray = new Float32Array(9);\r\n\t\t\t}\r\n\r\n\t\t\tconst array = out || this.floatArray;\r\n\t\t\tconst mat3 = this.mat4;\r\n\r\n\t\t\tif (transpose) {\r\n\t\t\t\tarray[0] = mat3[0];\r\n\t\t\t\tarray[1] = mat3[1];\r\n\t\t\t\tarray[2] = mat3[3];\r\n\t\t\t\tarray[3] = mat3[4];\r\n\t\t\t\tarray[4] = mat3[5];\r\n\t\t\t\tarray[5] = mat3[7];\r\n\t\t\t\tarray[6] = mat3[12];\r\n\t\t\t\tarray[7] = mat3[13];\r\n\t\t\t\tarray[8] = mat3[15];\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t//this branch is NEVER USED in pixi\r\n\t\t\t\tarray[0] = mat3[0];\r\n\t\t\t\tarray[1] = mat3[4];\r\n\t\t\t\tarray[2] = mat3[12];\r\n\t\t\t\tarray[3] = mat3[2];\r\n\t\t\t\tarray[4] = mat3[6];\r\n\t\t\t\tarray[5] = mat3[13];\r\n\t\t\t\tarray[6] = mat3[3];\r\n\t\t\t\tarray[7] = mat3[7];\r\n\t\t\t\tarray[8] = mat3[15];\r\n\t\t\t}\r\n\r\n\t\t\treturn array;\r\n\t\t}\r\n\r\n\t\tsetToTranslation(tx: number, ty: number, tz: number) {\r\n\t\t\tconst mat4 = this.mat4;\r\n\r\n\t\t\tmat4[0] = 1;\r\n\t\t\tmat4[1] = 0;\r\n\t\t\tmat4[2] = 0;\r\n\t\t\tmat4[3] = 0;\r\n\r\n\t\t\tmat4[4] = 0;\r\n\t\t\tmat4[5] = 1;\r\n\t\t\tmat4[6] = 0;\r\n\t\t\tmat4[7] = 0;\r\n\r\n\t\t\tmat4[8] = 0;\r\n\t\t\tmat4[9] = 0;\r\n\t\t\tmat4[10] = 1;\r\n\t\t\tmat4[11] = 0;\r\n\r\n\t\t\tmat4[12] = tx;\r\n\t\t\tmat4[13] = ty;\r\n\t\t\tmat4[14] = tz;\r\n\t\t\tmat4[15] = 1;\r\n\t\t}\r\n\r\n\t\tsetToRotationTranslationScale(quat: Float64Array, tx: number, ty: number, tz: number, sx: number, sy: number, sz: number) {\r\n\t\t\tconst out = this.mat4;\r\n\r\n\t\t\tlet x = quat[0], y = quat[1], z = quat[2], w = quat[3];\r\n\t\t\tlet x2 = x + x;\r\n\t\t\tlet y2 = y + y;\r\n\t\t\tlet z2 = z + z;\r\n\r\n\t\t\tlet xx = x * x2;\r\n\t\t\tlet xy = x * y2;\r\n\t\t\tlet xz = x * z2;\r\n\t\t\tlet yy = y * y2;\r\n\t\t\tlet yz = y * z2;\r\n\t\t\tlet zz = z * z2;\r\n\t\t\tlet wx = w * x2;\r\n\t\t\tlet wy = w * y2;\r\n\t\t\tlet wz = w * z2;\r\n\r\n\t\t\tout[0] = (1 - (yy + zz)) * sx;\r\n\t\t\tout[1] = (xy + wz) * sx;\r\n\t\t\tout[2] = (xz - wy) * sx;\r\n\t\t\tout[3] = 0;\r\n\t\t\tout[4] = (xy - wz) * sy;\r\n\t\t\tout[5] = (1 - (xx + zz)) * sy;\r\n\t\t\tout[6] = (yz + wx) * sy;\r\n\t\t\tout[7] = 0;\r\n\t\t\tout[8] = (xz + wy) * sz;\r\n\t\t\tout[9] = (yz - wx) * sz;\r\n\t\t\tout[10] = (1 - (xx + yy)) * sz;\r\n\t\t\tout[11] = 0;\r\n\t\t\tout[12] = tx;\r\n\t\t\tout[13] = ty;\r\n\t\t\tout[14] = tz;\r\n\t\t\tout[15] = 1;\r\n\r\n\t\t\treturn out;\r\n\t\t}\r\n\r\n\t\tapply(pos: IPoint, newPos: IPoint): IPoint {\r\n\t\t\tnewPos = newPos || new PIXI.Point();\r\n\r\n\t\t\tconst mat4 = this.mat4;\r\n\t\t\tconst x = pos.x;\r\n\t\t\tconst y = pos.y;\r\n\t\t\tconst z = pos.z;\r\n\r\n\t\t\t//TODO: apply for 2d point\r\n\r\n\t\t\tlet w = 1.0 / (mat4[3] * x + mat4[7] * y + mat4[11] * z + mat4[15]);\r\n\t\t\tnewPos.x = w * (mat4[0] * x + mat4[4] * y + mat4[8] * z + mat4[12]);\r\n\t\t\tnewPos.y = w * (mat4[1] * x + mat4[5] * y + mat4[9] * z + mat4[13]);\r\n\t\t\tnewPos.z = w * (mat4[2] * x + mat4[6] * y + mat4[10] * z + mat4[14]);\r\n\r\n\t\t\treturn newPos;\r\n\t\t}\r\n\r\n\t\ttranslate(tx: number, ty: number, tz: number) {\r\n\t\t\tconst a = this.mat4;\r\n\r\n\t\t\ta[12] = a[0] * tx + a[4] * ty + a[8] * tz + a[12];\r\n\t\t\ta[13] = a[1] * tx + a[5] * ty + a[9] * tz + a[13];\r\n\t\t\ta[14] = a[2] * tx + a[6] * ty + a[10] * tz + a[14];\r\n\t\t\ta[15] = a[3] * tx + a[7] * ty + a[11] * tz + a[15];\r\n\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tscale(x: number, y: number, z?: number) {\r\n\t\t\tconst mat4 = this.mat4;\r\n\t\t\tmat4[0] *= x;\r\n\t\t\tmat4[1] *= x;\r\n\t\t\tmat4[2] *= x;\r\n\t\t\tmat4[3] *= x;\r\n\r\n\t\t\tmat4[4] *= y;\r\n\t\t\tmat4[5] *= y;\r\n\t\t\tmat4[6] *= y;\r\n\t\t\tmat4[7] *= y;\r\n\r\n\t\t\tif (z !== undefined) {\r\n\t\t\t\tmat4[8] *= z;\r\n\t\t\t\tmat4[9] *= z;\r\n\t\t\t\tmat4[10] *= z;\r\n\t\t\t\tmat4[11] *= z;\r\n\t\t\t}\r\n\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tscaleAndTranslate(scaleX: number, scaleY: number, scaleZ: number, tx: number, ty: number, tz: number) {\r\n\t\t\tconst mat4 = this.mat4;\r\n\t\t\tmat4[0] = scaleX * mat4[0] + tx * mat4[3];\r\n\t\t\tmat4[1] = scaleY * mat4[1] + ty * mat4[3];\r\n\t\t\tmat4[2] = scaleZ * mat4[2] + tz * mat4[3];\r\n\r\n\t\t\tmat4[4] = scaleX * mat4[4] + tx * mat4[7];\r\n\t\t\tmat4[5] = scaleY * mat4[5] + ty * mat4[7];\r\n\t\t\tmat4[6] = scaleZ * mat4[6] + tz * mat4[7];\r\n\r\n\t\t\tmat4[8] = scaleX * mat4[8] + tx * mat4[11];\r\n\t\t\tmat4[9] = scaleY * mat4[9] + ty * mat4[11];\r\n\t\t\tmat4[10] = scaleZ * mat4[10] + tz * mat4[11];\r\n\r\n\t\t\tmat4[12] = scaleX * mat4[12] + tx * mat4[15];\r\n\t\t\tmat4[13] = scaleY * mat4[13] + ty * mat4[15];\r\n\t\t\tmat4[14] = scaleZ * mat4[14] + tz * mat4[15];\r\n\t\t}\r\n\r\n\t\t//TODO: remove props\r\n\t\tapplyInverse(pos: IPoint, newPos: IPoint): IPoint {\r\n\t\t\tnewPos = newPos || new Point3d();\r\n\t\t\tif (!this._mat4inv) {\r\n\t\t\t\tthis._mat4inv = new Float64Array(16);\r\n\t\t\t}\r\n\r\n\t\t\tconst mat4 = this._mat4inv;\r\n\t\t\tconst a = this.mat4;\r\n\t\t\tconst x = pos.x;\r\n\t\t\tconst y = pos.y;\r\n\t\t\tlet z = pos.z;\r\n\r\n\t\t\tif (!this.cacheInverse || this._updateId !== this._dirtyId) {\r\n\t\t\t\tthis._updateId = this._dirtyId;\r\n\t\t\t\tMatrix3d.glMatrixMat4Invert(mat4, a);\r\n\t\t\t}\r\n\r\n\t\t\tlet w1 = 1.0 / (mat4[3] * x + mat4[7] * y + mat4[11] * z + mat4[15]);\r\n\t\t\tconst x1 = w1 * (mat4[0] * x + mat4[4] * y + mat4[8] * z + mat4[12]);\r\n\t\t\tconst y1 = w1 * (mat4[1] * x + mat4[5] * y + mat4[9] * z + mat4[13]);\r\n\t\t\tconst z1 = w1 * (mat4[2] * x + mat4[6] * y + mat4[10] * z + mat4[14]);\r\n\r\n\t\t\tz += 1.0;\r\n\r\n\t\t\tlet w2 = 1.0 / (mat4[3] * x + mat4[7] * y + mat4[11] * z + mat4[15]);\r\n\t\t\tconst x2 = w2 * (mat4[0] * x + mat4[4] * y + mat4[8] * z + mat4[12]);\r\n\t\t\tconst y2 = w2 * (mat4[1] * x + mat4[5] * y + mat4[9] * z + mat4[13]);\r\n\t\t\tconst z2 = w2 * (mat4[2] * x + mat4[6] * y + mat4[10] * z + mat4[14]);\r\n\r\n\t\t\tif (Math.abs(z1-z2)<1e-10) {\r\n\t\t\t\tnewPos.set(NaN, NaN, 0);\r\n\t\t\t}\r\n\r\n\t\t\tconst alpha = (0-z1) / (z2-z1);\r\n\t\t\tnewPos.set( (x2-x1)*alpha + x1, (y2-y1)*alpha + y1, 0.0);\r\n\t\t\treturn newPos;\r\n\t\t}\r\n\r\n\t\tinvert(): Matrix3d {\r\n\t\t\tMatrix3d.glMatrixMat4Invert(this.mat4, this.mat4);\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tinvertCopyTo(matrix: Matrix3d) {\r\n\t\t\tif (!this._mat4inv) {\r\n\t\t\t\tthis._mat4inv = new Float64Array(16);\r\n\t\t\t}\r\n\r\n\t\t\tconst mat4 = this._mat4inv;\r\n\t\t\tconst a = this.mat4;\r\n\r\n\t\t\tif (!this.cacheInverse || this._updateId !== this._dirtyId) {\r\n\t\t\t\tthis._updateId = this._dirtyId;\r\n\t\t\t\tMatrix3d.glMatrixMat4Invert(mat4, a);\r\n\t\t\t}\r\n\r\n\t\t\tmatrix.mat4.set(mat4);\r\n\t\t}\r\n\r\n\t\tidentity(): Matrix3d {\r\n\t\t\tconst mat3 = this.mat4;\r\n\t\t\tmat3[0] = 1;\r\n\t\t\tmat3[1] = 0;\r\n\t\t\tmat3[2] = 0;\r\n\t\t\tmat3[3] = 0;\r\n\r\n\t\t\tmat3[4] = 0;\r\n\t\t\tmat3[5] = 1;\r\n\t\t\tmat3[6] = 0;\r\n\t\t\tmat3[7] = 0;\r\n\r\n\t\t\tmat3[8] = 0;\r\n\t\t\tmat3[9] = 0;\r\n\t\t\tmat3[10] = 1;\r\n\t\t\tmat3[11] = 0;\r\n\r\n\t\t\tmat3[12] = 0;\r\n\t\t\tmat3[13] = 0;\r\n\t\t\tmat3[14] = 0;\r\n\t\t\tmat3[15] = 1;\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tclone() {\r\n\t\t\treturn new Matrix3d(this.mat4);\r\n\t\t}\r\n\r\n\t\tcopyTo(matrix: Matrix3d) {\r\n\t\t\tconst mat3 = this.mat4;\r\n\t\t\tconst ar2 = matrix.mat4;\r\n\t\t\tar2[0] = mat3[0];\r\n\t\t\tar2[1] = mat3[1];\r\n\t\t\tar2[2] = mat3[2];\r\n\t\t\tar2[3] = mat3[3];\r\n\t\t\tar2[4] = mat3[4];\r\n\t\t\tar2[5] = mat3[5];\r\n\t\t\tar2[6] = mat3[6];\r\n\t\t\tar2[7] = mat3[7];\r\n\t\t\tar2[8] = mat3[8];\r\n\t\t\treturn matrix;\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * legacy method, change the values of given pixi matrix\r\n\t\t * @param matrix\r\n\t\t * @return\r\n\t\t */\r\n\t\tcopy(matrix: PIXI.Matrix, affine?: AFFINE) {\r\n\t\t\tconst mat3 = this.mat4;\r\n\t\t\tconst d = 1.0 / mat3[15];\r\n\t\t\tconst tx = mat3[12] * d, ty = mat3[13] * d;\r\n\t\t\tmatrix.a = (mat3[0] - mat3[3] * tx) * d;\r\n\t\t\tmatrix.b = (mat3[1] - mat3[3] * ty) * d;\r\n\t\t\tmatrix.c = (mat3[4] - mat3[7] * tx) * d;\r\n\t\t\tmatrix.d = (mat3[5] - mat3[7] * ty) * d;\r\n\t\t\tmatrix.tx = tx;\r\n\t\t\tmatrix.ty = ty;\r\n\r\n\t\t\tif (affine >= 2) {\r\n\t\t\t\tif (affine === AFFINE.POINT) {\r\n\t\t\t\t\tmatrix.a = 1;\r\n\t\t\t\t\tmatrix.b = 0;\r\n\t\t\t\t\tmatrix.c = 0;\r\n\t\t\t\t\tmatrix.d = 1;\r\n\t\t\t\t} else if (affine === AFFINE.AXIS_X) {\r\n\t\t\t\t\tmatrix.c = -matrix.b;\r\n\t\t\t\t\tmatrix.d = matrix.a;\r\n\t\t\t\t} else if (affine === AFFINE.AXIS_Y) {\r\n\t\t\t\t\tmatrix.a = matrix.d;\r\n\t\t\t\t\tmatrix.c = -matrix.b;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * legacy method, change the values of given pixi matrix\r\n\t\t * @param matrix\r\n\t\t * @return\r\n\t\t */\r\n\t\tcopyFrom(matrix: PIXI.Matrix) {\r\n\t\t\tconst mat3 = this.mat4;\r\n\t\t\tmat3[0] = matrix.a;\r\n\t\t\tmat3[1] = matrix.b;\r\n\t\t\tmat3[2] = 0;\r\n\t\t\tmat3[3] = 0;\r\n\r\n\t\t\tmat3[4] = matrix.c;\r\n\t\t\tmat3[5] = matrix.d;\r\n\t\t\tmat3[6] = 0;\r\n\t\t\tmat3[7] = 0;\r\n\r\n\t\t\tmat3[8] = 0;\r\n\t\t\tmat3[9] = 0;\r\n\t\t\tmat3[10] = 1;\r\n\t\t\tmat3[11] = 0;\r\n\r\n\t\t\tmat3[12] = matrix.tx;\r\n\t\t\tmat3[13] = matrix.ty;\r\n\t\t\tmat3[14] = 0;\r\n\t\t\tmat3[15] = 1;\r\n\r\n\t\t\tthis._dirtyId++;\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tsetToMultLegacy(pt: PIXI.Matrix, lt: Matrix3d) {\r\n\t\t\tconst out = this.mat4;\r\n\t\t\tconst b = lt.mat4;\r\n\r\n\t\t\tconst a00 = pt.a, a01 = pt.b,\r\n\t\t\t\ta10 = pt.c, a11 = pt.d,\r\n\t\t\t\ta30 = pt.tx, a31 = pt.ty;\r\n\r\n\t\t\tlet b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];\r\n\r\n\t\t\tout[0] = b0 * a00 + b1 * a10 + b3 * a30;\r\n\t\t\tout[1] = b0 * a01 + b1 * a11 + b3 * a31;\r\n\t\t\tout[2] = b2;\r\n\t\t\tout[3] = b3;\r\n\r\n\t\t\tb0 = b[4];\r\n\t\t\tb1 = b[5];\r\n\t\t\tb2 = b[6];\r\n\t\t\tb3 = b[7];\r\n\t\t\tout[4] = b0 * a00 + b1 * a10 + b3 * a30;\r\n\t\t\tout[5] = b0 * a01 + b1 * a11 + b3 * a31;\r\n\t\t\tout[6] = b2;\r\n\t\t\tout[7] = b3;\r\n\r\n\t\t\tb0 = b[8];\r\n\t\t\tb1 = b[9];\r\n\t\t\tb2 = b[10];\r\n\t\t\tb3 = b[11];\r\n\t\t\tout[8] = b0 * a00 + b1 * a10 + b3 * a30;\r\n\t\t\tout[9] = b0 * a01 + b1 * a11 + b3 * a31;\r\n\t\t\tout[10] = b2;\r\n\t\t\tout[11] = b3;\r\n\r\n\t\t\tb0 = b[12];\r\n\t\t\tb1 = b[13];\r\n\t\t\tb2 = b[14];\r\n\t\t\tb3 = b[15];\r\n\t\t\tout[12] = b0 * a00 + b1 * a10 + b3 * a30;\r\n\t\t\tout[13] = b0 * a01 + b1 * a11 + b3 * a31;\r\n\t\t\tout[14] = b2;\r\n\t\t\tout[15] = b3;\r\n\r\n\t\t\tthis._dirtyId++;\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tsetToMultLegacy2(pt: Matrix3d, lt: PIXI.Matrix) {\r\n\t\t\tconst out = this.mat4;\r\n\t\t\tconst a = pt.mat4;\r\n\r\n\t\t\tconst a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];\r\n\t\t\tconst a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];\r\n\r\n\t\t\tconst b00 = lt.a, b01 = lt.b,\r\n\t\t\t\tb10 = lt.c, b11 = lt.d,\r\n\t\t\t\tb30 = lt.tx, b31 = lt.ty;\r\n\r\n\t\t\tout[0] = b00 * a00 + b01 * a10;\r\n\t\t\tout[1] = b00 * a01 + b01 * a11;\r\n\t\t\tout[2] = b00 * a02 + b01 * a12;\r\n\t\t\tout[3] = b00 * a03 + b01 * a13;\r\n\r\n\t\t\tout[4] = b10 * a00 + b11 * a10;\r\n\t\t\tout[5] = b10 * a01 + b11 * a11;\r\n\t\t\tout[6] = b10 * a02 + b11 * a12;\r\n\t\t\tout[7] = b10 * a03 + b11 * a13;\r\n\r\n\t\t\tout[8] = a[8];\r\n\t\t\tout[9] = a[9];\r\n\t\t\tout[10] = a[10];\r\n\t\t\tout[11] = a[11];\r\n\r\n\t\t\tout[12] = b30 * a00 + b31 * a10 + a[12];\r\n\t\t\tout[13] = b30 * a01 + b31 * a11 + a[13];\r\n\t\t\tout[14] = b30 * a02 + b31 * a12 + a[14];\r\n\t\t\tout[15] = b30 * a03 + b31 * a13 + a[15];\r\n\r\n\t\t\tthis._dirtyId++;\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\t// that's transform multiplication we use\r\n\t\tsetToMult(pt: Matrix3d, lt: Matrix3d) {\r\n\t\t\tMatrix3d.glMatrixMat4Multiply(this.mat4, pt.mat4, lt.mat4);\r\n\r\n\t\t\tthis._dirtyId++;\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tprepend(lt: any) {\r\n\t\t\tif (lt.mat4) {\r\n\t\t\t\tthis.setToMult(lt, this);\r\n\t\t\t} else {\r\n\t\t\t\tthis.setToMultLegacy(lt, this);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tstatic glMatrixMat4Invert(out: Float64Array, a: Float64Array) {\r\n\t\t\tlet a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];\r\n\t\t\tlet a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];\r\n\t\t\tlet a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];\r\n\t\t\tlet a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\r\n\r\n\t\t\tlet b00 = a00 * a11 - a01 * a10;\r\n\t\t\tlet b01 = a00 * a12 - a02 * a10;\r\n\t\t\tlet b02 = a00 * a13 - a03 * a10;\r\n\t\t\tlet b03 = a01 * a12 - a02 * a11;\r\n\t\t\tlet b04 = a01 * a13 - a03 * a11;\r\n\t\t\tlet b05 = a02 * a13 - a03 * a12;\r\n\t\t\tlet b06 = a20 * a31 - a21 * a30;\r\n\t\t\tlet b07 = a20 * a32 - a22 * a30;\r\n\t\t\tlet b08 = a20 * a33 - a23 * a30;\r\n\t\t\tlet b09 = a21 * a32 - a22 * a31;\r\n\t\t\tlet b10 = a21 * a33 - a23 * a31;\r\n\t\t\tlet b11 = a22 * a33 - a23 * a32;\r\n\r\n\t\t\t// Calculate the determinant\r\n\t\t\tlet det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\r\n\r\n\t\t\tif (!det) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t\tdet = 1.0 / det;\r\n\r\n\t\t\tout[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\r\n\t\t\tout[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\r\n\t\t\tout[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\r\n\t\t\tout[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\r\n\t\t\tout[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\r\n\t\t\tout[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\r\n\t\t\tout[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\r\n\t\t\tout[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\r\n\t\t\tout[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\r\n\t\t\tout[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\r\n\t\t\tout[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\r\n\t\t\tout[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\r\n\t\t\tout[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\r\n\t\t\tout[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\r\n\t\t\tout[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\r\n\t\t\tout[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\r\n\r\n\t\t\treturn out;\r\n\t\t}\r\n\r\n\t\tstatic glMatrixMat4Multiply(out: Float64Array, a: Float64Array, b: Float64Array) {\r\n\t\t\tlet a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];\r\n\t\t\tlet a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];\r\n\t\t\tlet a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];\r\n\t\t\tlet a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\r\n\r\n\t\t\t// Cache only the current line of the second matrix\r\n\t\t\tlet b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];\r\n\t\t\tout[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\r\n\t\t\tout[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\r\n\t\t\tout[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\r\n\t\t\tout[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\r\n\r\n\t\t\tb0 = b[4];\r\n\t\t\tb1 = b[5];\r\n\t\t\tb2 = b[6];\r\n\t\t\tb3 = b[7];\r\n\t\t\tout[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\r\n\t\t\tout[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\r\n\t\t\tout[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\r\n\t\t\tout[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\r\n\r\n\t\t\tb0 = b[8];\r\n\t\t\tb1 = b[9];\r\n\t\t\tb2 = b[10];\r\n\t\t\tb3 = b[11];\r\n\t\t\tout[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\r\n\t\t\tout[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\r\n\t\t\tout[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\r\n\t\t\tout[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\r\n\r\n\t\t\tb0 = b[12];\r\n\t\t\tb1 = b[13];\r\n\t\t\tb2 = b[14];\r\n\t\t\tb3 = b[15];\r\n\t\t\tout[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\r\n\t\t\tout[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\r\n\t\t\tout[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\r\n\t\t\tout[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\r\n\t\t\treturn out;\r\n\t\t}\r\n\t}\r\n}\r\n","namespace pixi_projection {\r\n\t/**\r\n\t * The Euler angles, order is YZX. Except for projections (camera.lookEuler), its reversed XZY\r\n\t * @class\r\n\t * @namespace PIXI.projection\r\n\t * @param x pitch\r\n\t * @param y yaw\r\n\t * @param z roll\r\n\t * @constructor\r\n\t */\r\n\r\n\texport class ObservableEuler implements PIXI.PointLike, Euler {\r\n\t\tconstructor(public cb: any, public scope: any, x?: number, y?: number, z?: number) {\r\n\t\t\t/**\r\n\t\t\t * @member {number}\r\n\t\t\t * @default 0\r\n\t\t\t */\r\n\t\t\tthis._x = x || 0;\r\n\r\n\t\t\t/**\r\n\t\t\t * @member {number}\r\n\t\t\t * @default 0\r\n\t\t\t */\r\n\t\t\tthis._y = y || 0;\r\n\r\n\t\t\t/**\r\n\t\t\t * @member {number}\r\n\t\t\t * @default 0\r\n\t\t\t */\r\n\t\t\tthis._z = z || 0;\r\n\r\n\t\t\tthis.quaternion = new Float64Array(4);\r\n\t\t\tthis.quaternion[3] = 1;\r\n\r\n\t\t\tthis.update();\r\n\t\t}\r\n\r\n\t\t_quatUpdateId = -1;\r\n\t\t_quatDirtyId = 0;\r\n\r\n\t\tquaternion: Float64Array;\r\n\r\n\t\t_x: number;\r\n\t\t_y: number;\r\n\t\t_z: number;\r\n\t\t_sign: number = 1;\r\n\r\n\t\tget x() {\r\n\t\t\treturn this._x;\r\n\t\t}\r\n\r\n\t\tset x(value: number) {\r\n\t\t\tif (this._x !== value) {\r\n\t\t\t\tthis._x = value;\r\n\t\t\t\tthis._quatDirtyId++;\r\n\t\t\t\tthis.cb.call(this.scope);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tget y() {\r\n\t\t\treturn this._y;\r\n\t\t}\r\n\r\n\t\tset y(value: number) {\r\n\t\t\tif (this._y !== value) {\r\n\t\t\t\tthis._y = value;\r\n\t\t\t\tthis._quatDirtyId++;\r\n\t\t\t\tthis.cb.call(this.scope);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tget z() {\r\n\t\t\treturn this._z;\r\n\t\t}\r\n\r\n\t\tset z(value: number) {\r\n\t\t\tif (this._z !== value) {\r\n\t\t\t\tthis._z = value;\r\n\t\t\t\tthis._quatDirtyId++;\r\n\t\t\t\tthis.cb.call(this.scope);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tget pitch() {\r\n\t\t\treturn this._x;\r\n\t\t}\r\n\r\n\t\tset pitch(value: number) {\r\n\t\t\tif (this._x !== value) {\r\n\t\t\t\tthis._x = value;\r\n\t\t\t\tthis._quatDirtyId++;\r\n\t\t\t\tthis.cb.call(this.scope);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tget yaw() {\r\n\t\t\treturn this._y;\r\n\t\t}\r\n\r\n\t\tset yaw(value: number) {\r\n\t\t\tif (this._y !== value) {\r\n\t\t\t\tthis._y = value;\r\n\t\t\t\tthis._quatDirtyId++;\r\n\t\t\t\tthis.cb.call(this.scope);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tget roll() {\r\n\t\t\treturn this._z;\r\n\t\t}\r\n\r\n\t\tset roll(value: number) {\r\n\t\t\tif (this._z !== value) {\r\n\t\t\t\tthis._z = value;\r\n\t\t\t\tthis._quatDirtyId++;\r\n\t\t\t\tthis.cb.call(this.scope);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tset(x?: number, y?: number, z?: number) {\r\n\t\t\tconst _x = x || 0;\r\n\t\t\tconst _y = y || 0;\r\n\t\t\tconst _z = z || 0;\r\n\t\t\tif (this._x !== _x || this._y !== _y || this._z !== _z) {\r\n\t\t\t\tthis._x = _x;\r\n\t\t\t\tthis._y = _y;\r\n\t\t\t\tthis._z = _z;\r\n\t\t\t\tthis._quatDirtyId++;\r\n\t\t\t\tthis.cb.call(this.scope);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tcopy(euler: PIXI.PointLike) {\r\n\t\t\tconst _x = euler.x;\r\n\t\t\tconst _y = euler.y;\r\n\t\t\tconst _z = euler.z;\r\n\t\t\tif (this._x !== _x || this._y !== _y || this._z !== _z) {\r\n\t\t\t\tthis._x = _x;\r\n\t\t\t\tthis._y = _y;\r\n\t\t\t\tthis._z = _z;\r\n\t\t\t\tthis._quatDirtyId++;\r\n\t\t\t\tthis.cb.call(this.scope);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tclone() {\r\n\t\t\treturn new Euler(this._x, this._y, this._z);\r\n\t\t}\r\n\r\n\t\tupdate() {\r\n\t\t\tif (this._quatUpdateId === this._quatDirtyId) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tthis._quatUpdateId = this._quatDirtyId;\r\n\r\n\t\t\tconst c1 = Math.cos(this._x / 2);\r\n\t\t\tconst c2 = Math.cos(this._y / 2);\r\n\t\t\tconst c3 = Math.cos(this._z / 2);\r\n\r\n\t\t\tconst s = this._sign;\r\n\t\t\tconst s1 = s * Math.sin(this._x / 2);\r\n\t\t\tconst s2 = s * Math.sin(this._y / 2);\r\n\t\t\tconst s3 = s * Math.sin(this._z / 2);\r\n\r\n\t\t\tconst q = this.quaternion;\r\n\r\n\t\t\tq[0] = s1 * c2 * c3 + c1 * s2 * s3;\r\n\t\t\tq[1] = c1 * s2 * c3 - s1 * c2 * s3;\r\n\t\t\tq[2] = c1 * c2 * s3 + s1 * s2 * c3;\r\n\t\t\tq[3] = c1 * c2 * c3 - s1 * s2 * s3;\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\t}\r\n}\r\n","declare namespace PIXI {\r\n\texport interface PointLike {\r\n\t\tz: number;\r\n\t\tset(x?: number, y?: number, z?: number): void;\r\n\t}\r\n\r\n\texport interface Point {\r\n\t\tz: number;\r\n\t\tset(x?: number, y?: number, z?: number): void;\r\n\t}\r\n\r\n\texport interface ObservablePoint {\r\n\t\t_z: number;\r\n\t\tz: number;\r\n\t\tset(x?: number, y?: number, z?: number): void;\r\n\t}\r\n}\r\n\r\nnamespace pixi_projection {\r\n\tPIXI.Point.prototype.z = 0;\r\n\tPIXI.Point.prototype.set = function(x?: number, y?: number, z?: number) {\r\n\t\tthis.x = x || 0;\r\n\t\tthis.y = (y === undefined) ? this.x : (y || 0);\r\n\t\tthis.z = (y === undefined) ? this.x : (z || 0);\r\n\t};\r\n\r\n\tPIXI.Point.prototype.copy = function(p?: PIXI.PointLike) {\r\n\t\tthis.set(p.x, p.y, p.z);\r\n\t};\r\n\r\n\tPIXI.ObservablePoint.prototype._z = 0;\r\n\tPIXI.ObservablePoint.prototype.set = function(x?: number, y?: number, z?: number) {\r\n\t\tconst _x = x || 0;\r\n\t\tconst _y = (y === undefined) ? _x : (y || 0);\r\n\t\tconst _z = (y === undefined) ? _x : (z || 0);\r\n\r\n\t\tif (this._x !== _x || this._y !== _y || this._z !== _z)\r\n\t\t{\r\n\t\t\tthis._x = _x;\r\n\t\t\tthis._y = _y;\r\n\t\t\tthis._z = _z;\r\n\t\t\tthis.cb.call(this.scope);\r\n\t\t}\r\n\t};\r\n\r\n\tObject.defineProperty(PIXI.ObservablePoint.prototype, \"z\", {\r\n\t\tget: function() {\r\n\t\t\treturn this._z;\r\n\t\t},\r\n\t\tset: function(value) {\r\n\t\t\tif (this._z !== value)\r\n\t\t\t{\r\n\t\t\t\tthis._z = value;\r\n\t\t\t\tthis.cb.call(this.scope);\r\n\t\t\t}\r\n\t\t},\r\n\t\tenumerable: true,\r\n\t\tconfigurable: true\r\n\t});\r\n\r\n\tPIXI.ObservablePoint.prototype.copy = function(point?: PIXI.PointLike) {\r\n\t\tif (this._x !== point.x || this._y !== point.y || this._z !== point.z)\r\n\t\t{\r\n\t\t\tthis._x = point.x;\r\n\t\t\tthis._y = point.y;\r\n\t\t\tthis._z = point.z;\r\n\t\t\tthis.cb.call(this.scope);\r\n\t\t}\r\n\t};\r\n\r\n\texport class Point3d extends PIXI.Point {\r\n\t\tconstructor(x?: number, y?: number, z?: number) {\r\n\t\t\tsuper(x, y);\r\n\t\t\tthis.z = z;\r\n\t\t}\r\n\t}\r\n\r\n\t(PIXI as any).Point = Point3d;\r\n}\r\n","namespace pixi_projection {\r\n\tconst tempMat = new Matrix3d();\r\n\r\n\texport class Projection3d extends LinearProjection<Matrix3d> {\r\n\r\n\t\tconstructor(legacy: PIXI.TransformBase, enable?: boolean) {\r\n\t\t\tsuper(legacy, enable);\r\n\t\t\tthis.local = new Matrix3d();\r\n\t\t\tthis.world = new Matrix3d();\r\n\r\n\t\t\tthis.local.cacheInverse = true;\r\n\t\t\tthis.world.cacheInverse = true;\r\n\r\n\t\t\tthis.position._z = 0;\r\n\t\t\tthis.scale._z = 1;\r\n\t\t\tthis.pivot._z = 0;\r\n\t\t}\r\n\r\n\t\tcameraMatrix: Matrix3d = null;\r\n\r\n\t\t_cameraMode = false;\r\n\r\n\t\tget cameraMode() {\r\n\t\t\treturn this._cameraMode;\r\n\t\t}\r\n\r\n\t\tset cameraMode(value: boolean) {\r\n\t\t\tif (this._cameraMode === value) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis._cameraMode = value;\r\n\r\n\t\t\tthis.euler._sign = this._cameraMode ? -1 : 1;\r\n\t\t\tthis.euler._quatDirtyId++;\r\n\r\n\t\t\tif (value) {\r\n\t\t\t\tthis.cameraMatrix = new Matrix3d();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tposition = new PIXI.ObservablePoint(this.onChange, this, 0, 0);\r\n\t\tscale = new PIXI.ObservablePoint(this.onChange, this, 1, 1);\r\n\t\teuler = new ObservableEuler(this.onChange, this, 0, 0, 0);\r\n\t\tpivot = new PIXI.ObservablePoint(this.onChange, this, 0, 0);\r\n\r\n\t\tonChange() {\r\n\t\t\tthis._projID++;\r\n\t\t}\r\n\r\n\t\tclear() {\r\n\t\t\tif (this.cameraMatrix) {\r\n\t\t\t\tthis.cameraMatrix.identity();\r\n\t\t\t}\r\n\t\t\tthis.position.set(0, 0, 0);\r\n\t\t\tthis.scale.set(1, 1, 1);\r\n\t\t\tthis.euler.set(0, 0, 0);\r\n\t\t\tthis.pivot.set(0, 0, 0);\r\n\t\t\tsuper.clear();\r\n\t\t}\r\n\r\n\t\tupdateLocalTransform(lt: PIXI.Matrix) {\r\n\t\t\tif (this._projID === 0) {\r\n\t\t\t\tthis.local.copyFrom(lt);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tconst matrix = this.local;\r\n\t\t\tconst euler = this.euler;\r\n\t\t\tconst pos = this.position;\r\n\t\t\tconst scale = this.scale;\r\n\t\t\tconst pivot = this.pivot;\r\n\r\n\t\t\teuler.update();\r\n\r\n\t\t\tif (!this.cameraMode) {\r\n\t\t\t\tmatrix.setToRotationTranslationScale(euler.quaternion, pos._x, pos._y, pos._z, scale._x, scale._y, scale._z);\r\n\t\t\t\tmatrix.translate(-pivot._x, -pivot._y, -pivot._z);\r\n\t\t\t\tmatrix.setToMultLegacy(lt, matrix);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tmatrix.setToMultLegacy(lt, this.cameraMatrix);\r\n\t\t\tmatrix.translate(pivot._x, pivot._y, pivot._z);\r\n\t\t\tmatrix.scale(1.0 / scale._x, 1.0 / scale._y, 1.0 / scale._z);\r\n\t\t\ttempMat.setToRotationTranslationScale(euler.quaternion, 0, 0, 0, 1, 1, 1);\r\n\t\t\tmatrix.setToMult(matrix, tempMat);\r\n\t\t\tmatrix.translate(-pos._x, -pos._y, -pos._z);\r\n\r\n\t\t\tthis.local._dirtyId++;\r\n\t\t}\r\n\t}\r\n}\r\n","namespace pixi_projection {\r\n\texport class Mesh3d extends PIXI.mesh.Mesh {\r\n\t\tconstructor(texture: PIXI.Texture, vertices?: Float32Array, uvs?: Float32Array,\r\n\t\t indices?: Uint16Array, drawMode?: number) {\r\n\t\t\tsuper(texture, vertices, uvs, indices, drawMode);\r\n\t\t\tthis.proj = new Projection3d(this.transform);\r\n\t\t\tthis.pluginName = 'mesh2d';\r\n\t\t}\r\n\r\n\t\tproj: Projection3d;\r\n\r\n\t\tget worldTransform() {\r\n\t\t\treturn this.proj.affine ? this.transform.worldTransform : this.proj.world as any;\r\n\t\t}\r\n\r\n\t\ttoLocal<T extends PIXI.PointLike>(position: PIXI.PointLike, from?: PIXI.DisplayObject,\r\n\t\t point?: T, skipUpdate?: boolean,\r\n\t\t step = TRANSFORM_STEP.ALL): T {\r\n\t\t\treturn container3dToLocal.call(this, position, from, point, skipUpdate, step);\r\n\t\t}\r\n\r\n\t\tisFrontFace(forceUpdate?: boolean) {\r\n\t\t\treturn container3dIsFrontFace.call(this, forceUpdate);\r\n\t\t}\r\n\r\n\t\tgetDepth(forceUpdate?: boolean) {\r\n\t\t\treturn container3dGetDepth.call(this, forceUpdate);\r\n\t\t}\r\n\r\n\t\tget position3d(): PIXI.PointLike {\r\n\t\t\treturn this.proj.position;\r\n\t\t}\r\n\t\tget scale3d(): PIXI.PointLike {\r\n\t\t\treturn this.proj.scale;\r\n\t\t}\r\n\t\tget euler(): Euler {\r\n\t\t\treturn this.proj.euler;\r\n\t\t}\r\n\t\tget pivot3d(): PIXI.PointLike {\r\n\t\t\treturn this.proj.pivot;\r\n\t\t}\r\n\t\tset position3d(value: PIXI.PointLike) {\r\n\t\t\tthis.proj.position.copy(value);\r\n\t\t}\r\n\t\tset scale3d(value: PIXI.PointLike) {\r\n\t\t\tthis.proj.scale.copy(value);\r\n\t\t}\r\n\t\tset euler(value: Euler) {\r\n\t\t\tthis.proj.euler.copy(value);\r\n\t\t}\r\n\t\tset pivot3d(value: PIXI.PointLike) {\r\n\t\t\tthis.proj.pivot.copy(value);\r\n\t\t}\r\n\t}\r\n}\r\n","namespace pixi_projection {\r\n\t/**\r\n\t * Same as Sprite2d, but\r\n\t * 1. uses Matrix3d in proj\r\n\t * 2. does not render if at least one vertex is behind camera\r\n\t */\r\n\texport class Sprite3d extends PIXI.Sprite {\r\n\t\tconstructor(texture: PIXI.Texture) {\r\n\t\t\tsuper(texture);\r\n\t\t\tthis.proj = new Projection3d(this.transform);\r\n\t\t\tthis.pluginName = 'sprite2d';\r\n\t\t\tthis.vertexData = new Float32Array(12);\r\n\t\t}\r\n\r\n\t\tproj: Projection3d;\r\n\t\tculledByFrustrum = false;\r\n\t\ttrimmedCulledByFrustrum = false;\r\n\r\n\t\t_calculateBounds() {\r\n\t\t\tthis.calculateVertices();\r\n\t\t\tif (this.culledByFrustrum) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.calculateTrimmedVertices();\r\n\t\t\tif (!this.trimmedCulledByFrustrum) {\r\n\t\t\t\tthis._bounds.addQuad(this.vertexTrimmedData as any);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcalculateVertices() {\r\n\t\t\tif (this.proj._affine) {\r\n\t\t\t\tif (this.vertexData.length != 8) {\r\n\t\t\t\t\tthis.vertexData = new Float32Array(8);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsuper.calculateVertices();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (this.vertexData.length != 12) {\r\n\t\t\t\tthis.vertexData = new Float32Array(12);\r\n\t\t\t}\r\n\r\n\t\t\tconst wid = (this.transform as any)._worldID;\r\n\t\t\tconst tuid = (this._texture as any)._updateID;\r\n\t\t\tif (this._transformID === wid && this._textureID === tuid) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis._transformID = wid;\r\n\t\t\tthis._textureID = tuid;\r\n\r\n\t\t\tconst texture = this._texture;\r\n\t\t\tconst wt = this.proj.world.mat4;\r\n\t\t\tconst vertexData = this.vertexData;\r\n\t\t\tconst trim = texture.trim;\r\n\t\t\tconst orig = texture.orig;\r\n\t\t\tconst anchor = this._anchor;\r\n\r\n\t\t\tlet w0 = 0;\r\n\t\t\tlet w1 = 0;\r\n\t\t\tlet h0 = 0;\r\n\t\t\tlet h1 = 0;\r\n\r\n\t\t\tif (trim) {\r\n\t\t\t\tw1 = trim.x - (anchor._x * orig.width);\r\n\t\t\t\tw0 = w1 + trim.width;\r\n\r\n\t\t\t\th1 = trim.y - (anchor._y * orig.height);\r\n\t\t\t\th0 = h1 + trim.height;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tw1 = -anchor._x * orig.width;\r\n\t\t\t\tw0 = w1 + orig.width;\r\n\r\n\t\t\t\th1 = -anchor._y * orig.height;\r\n\t\t\t\th0 = h1 + orig.height;\r\n\t\t\t}\r\n\r\n\t\t\tlet culled = false;\r\n\r\n\t\t\tlet z;\r\n\r\n\t\t\tvertexData[0] = (wt[0] * w1) + (wt[4] * h1) + wt[12];\r\n\t\t\tvertexData[1] = (wt[1] * w1) + (wt[5] * h1) + wt[13];\r\n\t\t\tz = (wt[2] * w1) + (wt[6] * h1) + wt[14];\r\n\t\t\tvertexData[2] = (wt[3] * w1) + (wt[7] * h1) + wt[15];\r\n\t\t\tculled = culled || z < 0;\r\n\r\n\t\t\tvertexData[3] = (wt[0] * w0) + (wt[4] * h1) + wt[12];\r\n\t\t\tvertexData[4] = (wt[1] * w0) + (wt[5] * h1) + wt[13];\r\n\t\t\tz = (wt[2] * w0) + (wt[6] * h1) + wt[14];\r\n\t\t\tvertexData[5] = (wt[3] * w0) + (wt[7] * h1) + wt[15];\r\n\t\t\tculled = culled || z < 0;\r\n\r\n\t\t\tvertexData[6] = (wt[0] * w0) + (wt[4] * h0) + wt[12];\r\n\t\t\tvertexData[7] = (wt[1] * w0) + (wt[5] * h0) + wt[13];\r\n\t\t\tz = (wt[2] * w0) + (wt[6] * h0) + wt[14];\r\n\t\t\tvertexData[8] = (wt[3] * w0) + (wt[7] * h0) + wt[15];\r\n\t\t\tculled = culled || z < 0;\r\n\r\n\t\t\tvertexData[9] = (wt[0] * w1) + (wt[4] * h0) + wt[12];\r\n\t\t\tvertexData[10] = (wt[1] * w1) + (wt[5] * h0) + wt[13];\r\n\t\t\tz = (wt[2] * w1) + (wt[6] * h0) + wt[14];\r\n\t\t\tvertexData[11] = (wt[3] * w1) + (wt[7] * h0) + wt[15];\r\n\t\t\tculled = culled || z < 0;\r\n\r\n\t\t\tthis.culledByFrustrum = culled;\r\n\t\t}\r\n\r\n\t\tcalculateTrimmedVertices() {\r\n\t\t\tif (this.proj._affine) {\r\n\t\t\t\tsuper.calculateTrimmedVertices();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst wid = (this.transform as any)._worldID;\r\n\t\t\tconst tuid = (this._texture as any)._updateID;\r\n\t\t\tif (!this.vertexTrimmedData) {\r\n\t\t\t\tthis.vertexTrimmedData = new Float32Array(8);\r\n\t\t\t}\r\n\t\t\telse if (this._transformTrimmedID === wid && this._textureTrimmedID === tuid) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis._transformTrimmedID = wid;\r\n\t\t\tthis._textureTrimmedID = tuid;\r\n\r\n\t\t\t// lets do some special trim code!\r\n\t\t\tconst texture = this._texture;\r\n\t\t\tconst vertexData = this.vertexTrimmedData;\r\n\t\t\tconst orig = texture.orig;\r\n\t\t\tconst anchor = this._anchor;\r\n\r\n\t\t\t// lets calculate the new untrimmed bounds..\r\n\t\t\tconst wt = this.proj.world.mat4;\r\n\r\n\t\t\tconst w1 = -anchor._x * orig.width;\r\n\t\t\tconst w0 = w1 + orig.width;\r\n\r\n\t\t\tconst h1 = -anchor._y * orig.height;\r\n\t\t\tconst h0 = h1 + orig.height;\r\n\r\n\t\t\tlet culled = false;\r\n\r\n\t\t\tlet w = 1.0 / (wt[3] * w1 + wt[7] * h1 + wt[15]);\r\n\t\t\tvertexData[0] = w * ((wt[0] * w1) + (wt[4] * h1) + wt[12]);\r\n\t\t\tvertexData[1] = w * ((wt[1] * w1) + (wt[5] * h1) + wt[13]);\r\n\t\t\tlet z = (wt[2] * w1) + (wt[6] * h1) + wt[14];\r\n\t\t\tculled = culled || z < 0;\r\n\r\n\t\t\tw = 1.0 / (wt[3] * w0 + wt[7] * h1 + wt[15]);\r\n\t\t\tvertexData[2] = w * ((wt[0] * w0) + (wt[4] * h1) + wt[12]);\r\n\t\t\tvertexData[3] = w * ((wt[1] * w0) + (wt[5] * h1) + wt[13]);\r\n\t\t\tz = (wt[2] * w0) + (wt[6] * h1) + wt[14];\r\n\t\t\tculled = culled || z < 0;\r\n\r\n\t\t\tw = 1.0 / (wt[3] * w0 + wt[7] * h0 + wt[15]);\r\n\t\t\tvertexData[4] = w * ((wt[0] * w0) + (wt[4] * h0) + wt[12]);\r\n\t\t\tvertexData[5] = w * ((wt[1] * w0) + (wt[5] * h0) + wt[13]);\r\n\t\t\tz = (wt[2] * w0) + (wt[6] * h0) + wt[14];\r\n\t\t\tculled = culled || z < 0;\r\n\r\n\t\t\tw = 1.0 / (wt[3] * w1 + wt[7] * h0 + wt[15]);\r\n\t\t\tvertexData[6] = w * ((wt[0] * w1) + (wt[4] * h0) + wt[12]);\r\n\t\t\tvertexData[7] = w * ((wt[1] * w1) + (wt[5] * h0) + wt[13]);\r\n\t\t\tz = (wt[2] * w1) + (wt[6] * h0) + wt[14];\r\n\t\t\tculled = culled || z < 0;\r\n\r\n\t\t\tthis.trimmedCulledByFrustrum = culled;\r\n\t\t}\r\n\r\n\t\t_renderWebGL(renderer: PIXI.WebGLRenderer) {\r\n\t\t\tthis.calculateVertices();\r\n\r\n\t\t\tif (this.culledByFrustrum) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\trenderer.setObjectRenderer(renderer.plugins[this.pluginName]);\r\n\t\t\trenderer.plugins[this.pluginName].render(this);\r\n\t\t}\r\n\r\n\t\tcontainsPoint(point: PIXI.PointLike) {\r\n\t\t\tif (this.culledByFrustrum) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\treturn super.containsPoint(point as any);\r\n\t\t}\r\n\r\n\t\tget worldTransform() {\r\n\t\t\treturn this.proj.affine ? this.transform.worldTransform : this.proj.world as any;\r\n\t\t}\r\n\r\n\t\ttoLocal<T extends PIXI.PointLike>(position: PIXI.PointLike, from?: PIXI.DisplayObject,\r\n\t\t point?: T, skipUpdate?: boolean,\r\n\t\t step = TRANSFORM_STEP.ALL): T {\r\n\t\t\treturn container3dToLocal.call(this, position, from, point, skipUpdate, step);\r\n\t\t}\r\n\t\t\r\n\t\tisFrontFace(forceUpdate?: boolean) {\r\n\t\t\treturn container3dIsFrontFace.call(this, forceUpdate);\r\n\t\t}\r\n\r\n\t\tgetDepth(forceUpdate?: boolean) {\r\n\t\t\treturn container3dGetDepth.call(this, forceUpdate);\r\n\t\t}\r\n\r\n\t\tget position3d(): PIXI.PointLike {\r\n\t\t\treturn this.proj.position;\r\n\t\t}\r\n\t\tget scale3d(): PIXI.PointLike {\r\n\t\t\treturn this.proj.scale;\r\n\t\t}\r\n\t\tget euler(): Euler {\r\n\t\t\treturn this.proj.euler;\r\n\t\t}\r\n\t\tget pivot3d(): PIXI.PointLike {\r\n\t\t\treturn this.proj.pivot;\r\n\t\t}\r\n\t\tset position3d(value: PIXI.PointLike) {\r\n\t\t\tthis.proj.position.copy(value);\r\n\t\t}\r\n\t\tset scale3d(value: PIXI.PointLike) {\r\n\t\t\tthis.proj.scale.copy(value);\r\n\t\t}\r\n\t\tset euler(value: Euler) {\r\n\t\t\tthis.proj.euler.copy(value);\r\n\t\t}\r\n\t\tset pivot3d(value: PIXI.PointLike) {\r\n\t\t\tthis.proj.pivot.copy(value);\r\n\t\t}\r\n\t}\r\n}\r\n","namespace pixi_projection {\r\n export class Text3d extends PIXI.Text {\r\n constructor(text?: string, style?: PIXI.TextStyle, canvas?: HTMLCanvasElement) {\r\n super(text, style, canvas);\r\n this.proj = new Projection3d(this.transform);\r\n this.pluginName = 'sprite2d';\r\n this.vertexData = new Float32Array(12);\r\n }\r\n\r\n proj: Projection3d;\r\n\r\n get worldTransform() {\r\n\t return this.proj.affine ? this.transform.worldTransform : this.proj.world as any;\r\n }\r\n\r\n\t toLocal<T extends PIXI.PointLike>(position: PIXI.PointLike, from?: PIXI.DisplayObject,\r\n\t point?: T, skipUpdate?: boolean,\r\n\t step = TRANSFORM_STEP.ALL): T {\r\n\t\t return container3dToLocal.call(this, position, from, point, skipUpdate, step);\r\n\t }\r\n\r\n\t isFrontFace(forceUpdate?: boolean) {\r\n\t\t return container3dIsFrontFace.call(this, forceUpdate);\r\n\t }\r\n\r\n\t getDepth(forceUpdate?: boolean) {\r\n\t\t return container3dGetDepth.call(this, forceUpdate);\r\n\t }\r\n\r\n\t get position3d(): PIXI.PointLike {\r\n\t\t return this.proj.position;\r\n\t }\r\n\t get scale3d(): PIXI.PointLike {\r\n\t\t return this.proj.scale;\r\n\t }\r\n\t get euler(): Euler {\r\n\t\t return this.proj.euler;\r\n\t }\r\n\t get pivot3d(): PIXI.PointLike {\r\n\t\t return this.proj.pivot;\r\n\t }\r\n\t set position3d(value: PIXI.PointLike) {\r\n\t\t this.proj.position.copy(value);\r\n\t }\r\n\t set scale3d(value: PIXI.PointLike) {\r\n\t\t this.proj.scale.copy(value);\r\n\t }\r\n\t set euler(value: Euler) {\r\n\t\t this.proj.euler.copy(value);\r\n\t }\r\n\t set pivot3d(value: PIXI.PointLike) {\r\n\t\t this.proj.pivot.copy(value);\r\n\t }\r\n }\r\n\r\n Text3d.prototype.calculateVertices = Sprite3d.prototype.calculateVertices;\r\n (Text3d.prototype as any).calculateTrimmedVertices = Sprite3d.prototype.calculateTrimmedVertices;\r\n\t(Text3d.prototype as any)._calculateBounds = Sprite3d.prototype._calculateBounds;\r\n\t(Text3d.prototype as any).containsPoint = Sprite3d.prototype.containsPoint;\r\n\t(Text3d.prototype as any)._renderWebGL = Sprite3d.prototype._renderWebGL;\r\n}\r\n","declare module PIXI {\r\n interface Container {\r\n convertTo3d(): void;\r\n convertSubtreeTo3d(): void;\r\n }\r\n}\r\n\r\nnamespace pixi_projection {\r\n\r\n\tconst containerProps: any = {\r\n\t\tworldTransform: {\r\n\t\t\tget: container3dWorldTransform,\r\n\t\t\tenumerable: true,\r\n\t\t\tconfigurable: true\r\n\t\t},\r\n\t\tposition3d: {\r\n\t\t\tget: function() { return this.proj.position },\r\n\t\t\tset: function(value: any) { this.proj.position.copy(value) }\r\n\t\t},\r\n\t\tscale3d: {\r\n\t\t\tget: function() { return this.proj.scale },\r\n\t\t\tset: function(value: any) { this.proj.scale.copy(value) }\r\n\t\t},\r\n\t\tpivot3d: {\r\n\t\t\tget: function() { return this.proj.pivot },\r\n\t\t\tset: function(value: any) { this.proj.pivot.copy(value) }\r\n\t\t},\r\n\t\teuler: {\r\n\t\t\tget: function() { return this.proj.euler },\r\n\t\t\tset: function(value: any) { this.proj.euler.copy(value) }\r\n\t\t}\r\n\t};\r\n\r\n\tfunction convertTo3d() {\r\n\t\tif (this.proj) return;\r\n\t\tthis.proj = new Projection3d(this.transform);\r\n\t\tthis.toLocal = Container3d.prototype.toLocal;\r\n\t\tthis.isFrontFace = Container3d.prototype.isFrontFace;\r\n\t\tthis.getDepth = Container3d.prototype.getDepth;\r\n\t\tObject.defineProperties(this, containerProps);\r\n\t}\r\n\r\n\t(PIXI as any).Container.prototype.convertTo3d = convertTo3d;\r\n\r\n (PIXI as any).Sprite.prototype.convertTo3d = function () {\r\n if (this.proj) return;\r\n this.calculateVertices = Sprite3d.prototype.calculateVertices;\r\n this.calculateTrimmedVertices = Sprite3d.prototype.calculateTrimmedVertices;\r\n\t this._calculateBounds = Sprite3d.prototype._calculateBounds;\r\n\t this.containsPoint = Sprite3d.prototype.containsPoint;\r\n\t this.pluginName = 'sprite2d';\r\n\t this.vertexData = new Float32Array(12);\r\n\t\tconvertTo3d.call(this);\r\n };\r\n\r\n\r\n\t(PIXI as any).mesh.Mesh.prototype.convertTo3d = function () {\r\n\t\tif (this.proj) return;\r\n\t\tthis.pluginName = 'mesh2d';\r\n\t\tconvertTo3d.call(this);\r\n\r\n\t};\r\n\r\n (PIXI as any).Container.prototype.convertSubtreeTo3d = function () {\r\n this.convertTo3d();\r\n for (let i = 0; i < this.children.length; i++) {\r\n this.children[i].convertSubtreeTo3d();\r\n }\r\n };\r\n}\r\n","///<reference types=\"pixi-spine\"/>\r\nmodule pixi_projection {\r\n\texport interface Sprite2d {\r\n\t\tregion: PIXI.spine.core.TextureRegion;\r\n\t}\r\n\r\n\texport interface Mesh2d {\r\n\t\tregion: PIXI.spine.core.TextureRegion;\r\n\t}\r\n\r\n\texport class Spine2d extends PIXI.spine.Spine {\r\n\t\tconstructor(spineData: PIXI.spine.core.SkeletonData) {\r\n\t\t\tsuper(spineData);\r\n\r\n\t\t\tthis.convertTo2d();\r\n\t\t}\r\n\r\n\t\tproj: Projection2d;\r\n\r\n\t\tnewContainer() {\r\n\t\t\treturn new Container2d();\r\n\t\t}\r\n\r\n\t\tnewSprite(tex: PIXI.Texture) {\r\n\t\t\treturn new Sprite2d(tex);\r\n\t\t}\r\n\r\n\t\tnewGraphics() {\r\n\t\t\t//TODO: make Graphics2d\r\n\t\t\treturn new PIXI.Graphics();\r\n\t\t}\r\n\r\n\t\tnewMesh(texture: PIXI.Texture, vertices?: Float32Array, uvs?: Float32Array, indices?: Uint16Array, drawMode?: number) {\r\n\t\t\treturn new Mesh2d(texture, vertices, uvs, indices, drawMode);\r\n\t\t}\r\n\r\n\t\ttransformHack() {\r\n\t\t\treturn 2;\r\n\t\t}\r\n\t}\r\n}\r\n","///<reference types=\"pixi-spine\"/>\r\nmodule pixi_projection {\r\n\texport interface Sprite3d {\r\n\t\tregion: PIXI.spine.core.TextureRegion;\r\n\t}\r\n\r\n\texport interface Mesh3d {\r\n\t\tregion: PIXI.spine.core.TextureRegion;\r\n\t}\r\n\r\n\texport class Spine3d extends PIXI.spine.Spine {\r\n\t\tconstructor(spineData: PIXI.spine.core.SkeletonData) {\r\n\t\t\tsuper(spineData);\r\n\r\n\t\t\tthis.convertTo3d();\r\n\t\t}\r\n\r\n\t\tproj: Projection2d;\r\n\r\n\t\tnewContainer() {\r\n\t\t\treturn new Container3d();\r\n\t\t}\r\n\r\n\t\tnewSprite(tex: PIXI.Texture) {\r\n\t\t\treturn new Sprite3d(tex);\r\n\t\t}\r\n\r\n\t\tnewGraphics() {\r\n\t\t\t//TODO: make Graphics3d\r\n\t\t\treturn new PIXI.Graphics();\r\n\t\t}\r\n\r\n\t\tnewMesh(texture: PIXI.Texture, vertices?: Float32Array, uvs?: Float32Array, indices?: Uint16Array, drawMode?: number) {\r\n\t\t\treturn new Mesh3d(texture, vertices, uvs, indices, drawMode);\r\n\t\t}\r\n\r\n\t\ttransformHack() {\r\n\t\t\treturn 3;\r\n\t\t}\r\n\t}\r\n}\r\n"]}
@@ -0,0 +1,3931 @@
1
+ var pixi_projection;
2
+ (function (pixi_projection) {
3
+ var utils;
4
+ (function (utils) {
5
+ function createIndicesForQuads(size) {
6
+ var totalIndices = size * 6;
7
+ var indices = new Uint16Array(totalIndices);
8
+ for (var i = 0, j = 0; i < totalIndices; i += 6, j += 4) {
9
+ indices[i + 0] = j + 0;
10
+ indices[i + 1] = j + 1;
11
+ indices[i + 2] = j + 2;
12
+ indices[i + 3] = j + 0;
13
+ indices[i + 4] = j + 2;
14
+ indices[i + 5] = j + 3;
15
+ }
16
+ return indices;
17
+ }
18
+ utils.createIndicesForQuads = createIndicesForQuads;
19
+ function isPow2(v) {
20
+ return !(v & (v - 1)) && (!!v);
21
+ }
22
+ utils.isPow2 = isPow2;
23
+ function nextPow2(v) {
24
+ v += +(v === 0);
25
+ --v;
26
+ v |= v >>> 1;
27
+ v |= v >>> 2;
28
+ v |= v >>> 4;
29
+ v |= v >>> 8;
30
+ v |= v >>> 16;
31
+ return v + 1;
32
+ }
33
+ utils.nextPow2 = nextPow2;
34
+ function log2(v) {
35
+ var r, shift;
36
+ r = +(v > 0xFFFF) << 4;
37
+ v >>>= r;
38
+ shift = +(v > 0xFF) << 3;
39
+ v >>>= shift;
40
+ r |= shift;
41
+ shift = +(v > 0xF) << 2;
42
+ v >>>= shift;
43
+ r |= shift;
44
+ shift = +(v > 0x3) << 1;
45
+ v >>>= shift;
46
+ r |= shift;
47
+ return r | (v >> 1);
48
+ }
49
+ utils.log2 = log2;
50
+ function getIntersectionFactor(p1, p2, p3, p4, out) {
51
+ var A1 = p2.x - p1.x, B1 = p3.x - p4.x, C1 = p3.x - p1.x;
52
+ var A2 = p2.y - p1.y, B2 = p3.y - p4.y, C2 = p3.y - p1.y;
53
+ var D = A1 * B2 - A2 * B1;
54
+ if (Math.abs(D) < 1e-7) {
55
+ out.x = A1;
56
+ out.y = A2;
57
+ return 0;
58
+ }
59
+ var T = C1 * B2 - C2 * B1;
60
+ var U = A1 * C2 - A2 * C1;
61
+ var t = T / D, u = U / D;
62
+ if (u < (1e-6) || u - 1 > -1e-6) {
63
+ return -1;
64
+ }
65
+ out.x = p1.x + t * (p2.x - p1.x);
66
+ out.y = p1.y + t * (p2.y - p1.y);
67
+ return 1;
68
+ }
69
+ utils.getIntersectionFactor = getIntersectionFactor;
70
+ function getPositionFromQuad(p, anchor, out) {
71
+ out = out || new PIXI.Point();
72
+ var a1 = 1.0 - anchor.x, a2 = 1.0 - a1;
73
+ var b1 = 1.0 - anchor.y, b2 = 1.0 - b1;
74
+ out.x = (p[0].x * a1 + p[1].x * a2) * b1 + (p[3].x * a1 + p[2].x * a2) * b2;
75
+ out.y = (p[0].y * a1 + p[1].y * a2) * b1 + (p[3].y * a1 + p[2].y * a2) * b2;
76
+ return out;
77
+ }
78
+ utils.getPositionFromQuad = getPositionFromQuad;
79
+ })(utils = pixi_projection.utils || (pixi_projection.utils = {}));
80
+ })(pixi_projection || (pixi_projection = {}));
81
+ PIXI.projection = pixi_projection;
82
+ var pixi_projection;
83
+ (function (pixi_projection) {
84
+ var AbstractProjection = (function () {
85
+ function AbstractProjection(legacy, enable) {
86
+ if (enable === void 0) { enable = true; }
87
+ this._enabled = false;
88
+ this.legacy = legacy;
89
+ if (enable) {
90
+ this.enabled = true;
91
+ }
92
+ this.legacy.proj = this;
93
+ }
94
+ Object.defineProperty(AbstractProjection.prototype, "enabled", {
95
+ get: function () {
96
+ return this._enabled;
97
+ },
98
+ set: function (value) {
99
+ this._enabled = value;
100
+ },
101
+ enumerable: true,
102
+ configurable: true
103
+ });
104
+ AbstractProjection.prototype.clear = function () {
105
+ };
106
+ return AbstractProjection;
107
+ }());
108
+ pixi_projection.AbstractProjection = AbstractProjection;
109
+ var TRANSFORM_STEP;
110
+ (function (TRANSFORM_STEP) {
111
+ TRANSFORM_STEP[TRANSFORM_STEP["NONE"] = 0] = "NONE";
112
+ TRANSFORM_STEP[TRANSFORM_STEP["BEFORE_PROJ"] = 4] = "BEFORE_PROJ";
113
+ TRANSFORM_STEP[TRANSFORM_STEP["PROJ"] = 5] = "PROJ";
114
+ TRANSFORM_STEP[TRANSFORM_STEP["ALL"] = 9] = "ALL";
115
+ })(TRANSFORM_STEP = pixi_projection.TRANSFORM_STEP || (pixi_projection.TRANSFORM_STEP = {}));
116
+ })(pixi_projection || (pixi_projection = {}));
117
+ var __extends = (this && this.__extends) || (function () {
118
+ var extendStatics = Object.setPrototypeOf ||
119
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
120
+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
121
+ return function (d, b) {
122
+ extendStatics(d, b);
123
+ function __() { this.constructor = d; }
124
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
125
+ };
126
+ })();
127
+ var pixi_projection;
128
+ (function (pixi_projection) {
129
+ function transformHack(parentTransform) {
130
+ var proj = this.proj;
131
+ var ta = this;
132
+ var pwid = parentTransform._worldID;
133
+ var lt = ta.localTransform;
134
+ if (ta._localID !== ta._currentLocalID) {
135
+ lt.a = ta._cx * ta.scale._x;
136
+ lt.b = ta._sx * ta.scale._x;
137
+ lt.c = ta._cy * ta.scale._y;
138
+ lt.d = ta._sy * ta.scale._y;
139
+ lt.tx = ta.position._x - ((ta.pivot._x * lt.a) + (ta.pivot._y * lt.c));
140
+ lt.ty = ta.position._y - ((ta.pivot._x * lt.b) + (ta.pivot._y * lt.d));
141
+ ta._currentLocalID = ta._localID;
142
+ proj._currentProjID = -1;
143
+ }
144
+ var _matrixID = proj._projID;
145
+ if (proj._currentProjID !== _matrixID) {
146
+ proj._currentProjID = _matrixID;
147
+ proj.updateLocalTransform(lt);
148
+ ta._parentID = -1;
149
+ }
150
+ if (ta._parentID !== pwid) {
151
+ var pp = parentTransform.proj;
152
+ if (pp && !pp._affine) {
153
+ proj.world.setToMult(pp.world, proj.local);
154
+ }
155
+ else {
156
+ proj.world.setToMultLegacy(parentTransform.worldTransform, proj.local);
157
+ }
158
+ proj.world.copy(ta.worldTransform, proj._affine);
159
+ ta._parentID = pwid;
160
+ ta._worldID++;
161
+ }
162
+ }
163
+ var LinearProjection = (function (_super) {
164
+ __extends(LinearProjection, _super);
165
+ function LinearProjection() {
166
+ var _this = _super !== null && _super.apply(this, arguments) || this;
167
+ _this._projID = 0;
168
+ _this._currentProjID = -1;
169
+ _this._affine = pixi_projection.AFFINE.NONE;
170
+ return _this;
171
+ }
172
+ LinearProjection.prototype.updateLocalTransform = function (lt) {
173
+ };
174
+ Object.defineProperty(LinearProjection.prototype, "affine", {
175
+ get: function () {
176
+ return this._affine;
177
+ },
178
+ set: function (value) {
179
+ if (this._affine == value)
180
+ return;
181
+ this._affine = value;
182
+ this._currentProjID = -1;
183
+ },
184
+ enumerable: true,
185
+ configurable: true
186
+ });
187
+ Object.defineProperty(LinearProjection.prototype, "enabled", {
188
+ set: function (value) {
189
+ if (value === this._enabled) {
190
+ return;
191
+ }
192
+ this._enabled = value;
193
+ if (value) {
194
+ this.legacy.updateTransform = transformHack;
195
+ this.legacy._parentID = -1;
196
+ }
197
+ else {
198
+ this.legacy.updateTransform = PIXI.TransformStatic.prototype.updateTransform;
199
+ this.legacy._parentID = -1;
200
+ }
201
+ },
202
+ enumerable: true,
203
+ configurable: true
204
+ });
205
+ LinearProjection.prototype.clear = function () {
206
+ this._currentProjID = -1;
207
+ this._projID = 0;
208
+ };
209
+ return LinearProjection;
210
+ }(pixi_projection.AbstractProjection));
211
+ pixi_projection.LinearProjection = LinearProjection;
212
+ })(pixi_projection || (pixi_projection = {}));
213
+ var pixi_projection;
214
+ (function (pixi_projection) {
215
+ var webgl;
216
+ (function (webgl) {
217
+ var BatchBuffer = (function () {
218
+ function BatchBuffer(size) {
219
+ this.vertices = new ArrayBuffer(size);
220
+ this.float32View = new Float32Array(this.vertices);
221
+ this.uint32View = new Uint32Array(this.vertices);
222
+ }
223
+ BatchBuffer.prototype.destroy = function () {
224
+ this.vertices = null;
225
+ };
226
+ return BatchBuffer;
227
+ }());
228
+ webgl.BatchBuffer = BatchBuffer;
229
+ })(webgl = pixi_projection.webgl || (pixi_projection.webgl = {}));
230
+ })(pixi_projection || (pixi_projection = {}));
231
+ var pixi_projection;
232
+ (function (pixi_projection) {
233
+ var webgl;
234
+ (function (webgl) {
235
+ var ObjectRenderer = PIXI.ObjectRenderer;
236
+ var settings = PIXI.settings;
237
+ var GLBuffer = PIXI.glCore.GLBuffer;
238
+ var premultiplyTint = PIXI.utils.premultiplyTint;
239
+ var premultiplyBlendMode = PIXI.utils.premultiplyBlendMode;
240
+ var TICK = 0;
241
+ var BatchGroup = (function () {
242
+ function BatchGroup() {
243
+ this.textures = [];
244
+ this.textureCount = 0;
245
+ this.ids = [];
246
+ this.size = 0;
247
+ this.start = 0;
248
+ this.blend = PIXI.BLEND_MODES.NORMAL;
249
+ this.uniforms = null;
250
+ }
251
+ return BatchGroup;
252
+ }());
253
+ webgl.BatchGroup = BatchGroup;
254
+ var MultiTextureSpriteRenderer = (function (_super) {
255
+ __extends(MultiTextureSpriteRenderer, _super);
256
+ function MultiTextureSpriteRenderer(renderer) {
257
+ var _this = _super.call(this, renderer) || this;
258
+ _this.shaderVert = '';
259
+ _this.shaderFrag = '';
260
+ _this.MAX_TEXTURES_LOCAL = 32;
261
+ _this.vertSize = 5;
262
+ _this.vertByteSize = _this.vertSize * 4;
263
+ _this.size = settings.SPRITE_BATCH_SIZE;
264
+ _this.currentIndex = 0;
265
+ _this.sprites = [];
266
+ _this.vertexBuffers = [];
267
+ _this.vaos = [];
268
+ _this.vaoMax = 2;
269
+ _this.vertexCount = 0;
270
+ _this.MAX_TEXTURES = 1;
271
+ _this.indices = pixi_projection.utils.createIndicesForQuads(_this.size);
272
+ _this.groups = [];
273
+ for (var k = 0; k < _this.size; k++) {
274
+ _this.groups[k] = new BatchGroup();
275
+ }
276
+ _this.vaoMax = 2;
277
+ _this.vertexCount = 0;
278
+ _this.renderer.on('prerender', _this.onPrerender, _this);
279
+ return _this;
280
+ }
281
+ MultiTextureSpriteRenderer.prototype.getUniforms = function (spr) {
282
+ return null;
283
+ };
284
+ MultiTextureSpriteRenderer.prototype.syncUniforms = function (obj) {
285
+ if (!obj)
286
+ return;
287
+ var sh = this.shader;
288
+ for (var key in obj) {
289
+ sh.uniforms[key] = obj[key];
290
+ }
291
+ };
292
+ MultiTextureSpriteRenderer.prototype.onContextChange = function () {
293
+ var gl = this.renderer.gl;
294
+ this.MAX_TEXTURES = Math.min(this.MAX_TEXTURES_LOCAL, this.renderer.plugins['sprite'].MAX_TEXTURES);
295
+ this.shader = webgl.generateMultiTextureShader(this.shaderVert, this.shaderFrag, gl, this.MAX_TEXTURES);
296
+ this.indexBuffer = GLBuffer.createIndexBuffer(gl, this.indices, gl.STATIC_DRAW);
297
+ this.renderer.bindVao(null);
298
+ var attrs = this.shader.attributes;
299
+ for (var i = 0; i < this.vaoMax; i++) {
300
+ var vertexBuffer = this.vertexBuffers[i] = GLBuffer.createVertexBuffer(gl, null, gl.STREAM_DRAW);
301
+ this.vaos[i] = this.createVao(vertexBuffer);
302
+ }
303
+ if (!this.buffers) {
304
+ this.buffers = [];
305
+ for (var i = 1; i <= pixi_projection.utils.nextPow2(this.size); i *= 2) {
306
+ this.buffers.push(new webgl.BatchBuffer(i * 4 * this.vertByteSize));
307
+ }
308
+ }
309
+ this.vao = this.vaos[0];
310
+ };
311
+ MultiTextureSpriteRenderer.prototype.onPrerender = function () {
312
+ this.vertexCount = 0;
313
+ };
314
+ MultiTextureSpriteRenderer.prototype.render = function (sprite) {
315
+ if (this.currentIndex >= this.size) {
316
+ this.flush();
317
+ }
318
+ if (!sprite._texture._uvs) {
319
+ return;
320
+ }
321
+ if (!sprite._texture.baseTexture) {
322
+ return;
323
+ }
324
+ this.sprites[this.currentIndex++] = sprite;
325
+ };
326
+ MultiTextureSpriteRenderer.prototype.flush = function () {
327
+ if (this.currentIndex === 0) {
328
+ return;
329
+ }
330
+ var gl = this.renderer.gl;
331
+ var MAX_TEXTURES = this.MAX_TEXTURES;
332
+ var np2 = pixi_projection.utils.nextPow2(this.currentIndex);
333
+ var log2 = pixi_projection.utils.log2(np2);
334
+ var buffer = this.buffers[log2];
335
+ var sprites = this.sprites;
336
+ var groups = this.groups;
337
+ var float32View = buffer.float32View;
338
+ var uint32View = buffer.uint32View;
339
+ var index = 0;
340
+ var nextTexture;
341
+ var currentTexture;
342
+ var currentUniforms = null;
343
+ var groupCount = 1;
344
+ var textureCount = 0;
345
+ var currentGroup = groups[0];
346
+ var vertexData;
347
+ var uvs;
348
+ var blendMode = premultiplyBlendMode[sprites[0]._texture.baseTexture.premultipliedAlpha ? 1 : 0][sprites[0].blendMode];
349
+ currentGroup.textureCount = 0;
350
+ currentGroup.start = 0;
351
+ currentGroup.blend = blendMode;
352
+ TICK++;
353
+ var i;
354
+ for (i = 0; i < this.currentIndex; ++i) {
355
+ var sprite = sprites[i];
356
+ nextTexture = sprite._texture.baseTexture;
357
+ var spriteBlendMode = premultiplyBlendMode[Number(nextTexture.premultipliedAlpha)][sprite.blendMode];
358
+ if (blendMode !== spriteBlendMode) {
359
+ blendMode = spriteBlendMode;
360
+ currentTexture = null;
361
+ textureCount = MAX_TEXTURES;
362
+ TICK++;
363
+ }
364
+ var uniforms = this.getUniforms(sprite);
365
+ if (currentUniforms !== uniforms) {
366
+ currentUniforms = uniforms;
367
+ currentTexture = null;
368
+ textureCount = MAX_TEXTURES;
369
+ TICK++;
370
+ }
371
+ if (currentTexture !== nextTexture) {
372
+ currentTexture = nextTexture;
373
+ if (nextTexture._enabled !== TICK) {
374
+ if (textureCount === MAX_TEXTURES) {
375
+ TICK++;
376
+ textureCount = 0;
377
+ currentGroup.size = i - currentGroup.start;
378
+ currentGroup = groups[groupCount++];
379
+ currentGroup.textureCount = 0;
380
+ currentGroup.blend = blendMode;
381
+ currentGroup.start = i;
382
+ currentGroup.uniforms = currentUniforms;
383
+ }
384
+ nextTexture._enabled = TICK;
385
+ nextTexture._virtalBoundId = textureCount;
386
+ currentGroup.textures[currentGroup.textureCount++] = nextTexture;
387
+ textureCount++;
388
+ }
389
+ }
390
+ var alpha = Math.min(sprite.worldAlpha, 1.0);
391
+ var argb = alpha < 1.0 && nextTexture.premultipliedAlpha ? premultiplyTint(sprite._tintRGB, alpha)
392
+ : sprite._tintRGB + (alpha * 255 << 24);
393
+ this.fillVertices(float32View, uint32View, index, sprite, argb, nextTexture._virtalBoundId);
394
+ index += this.vertSize * 4;
395
+ }
396
+ currentGroup.size = i - currentGroup.start;
397
+ if (!settings.CAN_UPLOAD_SAME_BUFFER) {
398
+ if (this.vaoMax <= this.vertexCount) {
399
+ this.vaoMax++;
400
+ var attrs = this.shader.attributes;
401
+ var vertexBuffer = this.vertexBuffers[this.vertexCount] = GLBuffer.createVertexBuffer(gl, null, gl.STREAM_DRAW);
402
+ this.vaos[this.vertexCount] = this.createVao(vertexBuffer);
403
+ }
404
+ this.renderer.bindVao(this.vaos[this.vertexCount]);
405
+ this.vertexBuffers[this.vertexCount].upload(buffer.vertices, 0, false);
406
+ this.vertexCount++;
407
+ }
408
+ else {
409
+ this.vertexBuffers[this.vertexCount].upload(buffer.vertices, 0, true);
410
+ }
411
+ currentUniforms = null;
412
+ for (i = 0; i < groupCount; i++) {
413
+ var group = groups[i];
414
+ var groupTextureCount = group.textureCount;
415
+ if (group.uniforms !== currentUniforms) {
416
+ this.syncUniforms(group.uniforms);
417
+ }
418
+ for (var j = 0; j < groupTextureCount; j++) {
419
+ this.renderer.bindTexture(group.textures[j], j, true);
420
+ group.textures[j]._virtalBoundId = -1;
421
+ var v = this.shader.uniforms.samplerSize;
422
+ if (v) {
423
+ v[0] = group.textures[j].realWidth;
424
+ v[1] = group.textures[j].realHeight;
425
+ this.shader.uniforms.samplerSize = v;
426
+ }
427
+ }
428
+ this.renderer.state.setBlendMode(group.blend);
429
+ gl.drawElements(gl.TRIANGLES, group.size * 6, gl.UNSIGNED_SHORT, group.start * 6 * 2);
430
+ }
431
+ this.currentIndex = 0;
432
+ };
433
+ MultiTextureSpriteRenderer.prototype.start = function () {
434
+ this.renderer.bindShader(this.shader);
435
+ if (settings.CAN_UPLOAD_SAME_BUFFER) {
436
+ this.renderer.bindVao(this.vaos[this.vertexCount]);
437
+ this.vertexBuffers[this.vertexCount].bind();
438
+ }
439
+ };
440
+ MultiTextureSpriteRenderer.prototype.stop = function () {
441
+ this.flush();
442
+ };
443
+ MultiTextureSpriteRenderer.prototype.destroy = function () {
444
+ for (var i = 0; i < this.vaoMax; i++) {
445
+ if (this.vertexBuffers[i]) {
446
+ this.vertexBuffers[i].destroy();
447
+ }
448
+ if (this.vaos[i]) {
449
+ this.vaos[i].destroy();
450
+ }
451
+ }
452
+ if (this.indexBuffer) {
453
+ this.indexBuffer.destroy();
454
+ }
455
+ this.renderer.off('prerender', this.onPrerender, this);
456
+ _super.prototype.destroy.call(this);
457
+ if (this.shader) {
458
+ this.shader.destroy();
459
+ this.shader = null;
460
+ }
461
+ this.vertexBuffers = null;
462
+ this.vaos = null;
463
+ this.indexBuffer = null;
464
+ this.indices = null;
465
+ this.sprites = null;
466
+ for (var i = 0; i < this.buffers.length; ++i) {
467
+ this.buffers[i].destroy();
468
+ }
469
+ };
470
+ return MultiTextureSpriteRenderer;
471
+ }(ObjectRenderer));
472
+ webgl.MultiTextureSpriteRenderer = MultiTextureSpriteRenderer;
473
+ })(webgl = pixi_projection.webgl || (pixi_projection.webgl = {}));
474
+ })(pixi_projection || (pixi_projection = {}));
475
+ var pixi_projection;
476
+ (function (pixi_projection) {
477
+ var webgl;
478
+ (function (webgl) {
479
+ function generateMultiTextureShader(vertexSrc, fragmentSrc, gl, maxTextures) {
480
+ fragmentSrc = fragmentSrc.replace(/%count%/gi, maxTextures + '');
481
+ fragmentSrc = fragmentSrc.replace(/%forloop%/gi, generateSampleSrc(maxTextures));
482
+ var shader = new PIXI.Shader(gl, vertexSrc, fragmentSrc);
483
+ var sampleValues = new Int32Array(maxTextures);
484
+ for (var i = 0; i < maxTextures; i++) {
485
+ sampleValues[i] = i;
486
+ }
487
+ shader.bind();
488
+ shader.uniforms.uSamplers = sampleValues;
489
+ return shader;
490
+ }
491
+ webgl.generateMultiTextureShader = generateMultiTextureShader;
492
+ function generateSampleSrc(maxTextures) {
493
+ var src = '';
494
+ src += '\n';
495
+ src += '\n';
496
+ for (var i = 0; i < maxTextures; i++) {
497
+ if (i > 0) {
498
+ src += '\nelse ';
499
+ }
500
+ if (i < maxTextures - 1) {
501
+ src += "if(textureId == " + i + ".0)";
502
+ }
503
+ src += '\n{';
504
+ src += "\n\tcolor = texture2D(uSamplers[" + i + "], textureCoord);";
505
+ src += '\n}';
506
+ }
507
+ src += '\n';
508
+ src += '\n';
509
+ return src;
510
+ }
511
+ })(webgl = pixi_projection.webgl || (pixi_projection.webgl = {}));
512
+ })(pixi_projection || (pixi_projection = {}));
513
+ var pixi_projection;
514
+ (function (pixi_projection) {
515
+ var p = [new PIXI.Point(), new PIXI.Point(), new PIXI.Point(), new PIXI.Point()];
516
+ var a = [0, 0, 0, 0];
517
+ var Surface = (function () {
518
+ function Surface() {
519
+ this.surfaceID = "default";
520
+ this._updateID = 0;
521
+ this.vertexSrc = "";
522
+ this.fragmentSrc = "";
523
+ }
524
+ Surface.prototype.fillUniforms = function (uniforms) {
525
+ };
526
+ Surface.prototype.clear = function () {
527
+ };
528
+ Surface.prototype.boundsQuad = function (v, out, after) {
529
+ var minX = out[0], minY = out[1];
530
+ var maxX = out[0], maxY = out[1];
531
+ for (var i = 2; i < 8; i += 2) {
532
+ if (minX > out[i])
533
+ minX = out[i];
534
+ if (maxX < out[i])
535
+ maxX = out[i];
536
+ if (minY > out[i + 1])
537
+ minY = out[i + 1];
538
+ if (maxY < out[i + 1])
539
+ maxY = out[i + 1];
540
+ }
541
+ p[0].set(minX, minY);
542
+ this.apply(p[0], p[0]);
543
+ p[1].set(maxX, minY);
544
+ this.apply(p[1], p[1]);
545
+ p[2].set(maxX, maxY);
546
+ this.apply(p[2], p[2]);
547
+ p[3].set(minX, maxY);
548
+ this.apply(p[3], p[3]);
549
+ if (after) {
550
+ after.apply(p[0], p[0]);
551
+ after.apply(p[1], p[1]);
552
+ after.apply(p[2], p[2]);
553
+ after.apply(p[3], p[3]);
554
+ out[0] = p[0].x;
555
+ out[1] = p[0].y;
556
+ out[2] = p[1].x;
557
+ out[3] = p[1].y;
558
+ out[4] = p[2].x;
559
+ out[5] = p[2].y;
560
+ out[6] = p[3].x;
561
+ out[7] = p[3].y;
562
+ }
563
+ else {
564
+ for (var i = 1; i <= 3; i++) {
565
+ if (p[i].y < p[0].y || p[i].y == p[0].y && p[i].x < p[0].x) {
566
+ var t = p[0];
567
+ p[0] = p[i];
568
+ p[i] = t;
569
+ }
570
+ }
571
+ for (var i = 1; i <= 3; i++) {
572
+ a[i] = Math.atan2(p[i].y - p[0].y, p[i].x - p[0].x);
573
+ }
574
+ for (var i = 1; i <= 3; i++) {
575
+ for (var j = i + 1; j <= 3; j++) {
576
+ if (a[i] > a[j]) {
577
+ var t = p[i];
578
+ p[i] = p[j];
579
+ p[j] = t;
580
+ var t2 = a[i];
581
+ a[i] = a[j];
582
+ a[j] = t2;
583
+ }
584
+ }
585
+ }
586
+ out[0] = p[0].x;
587
+ out[1] = p[0].y;
588
+ out[2] = p[1].x;
589
+ out[3] = p[1].y;
590
+ out[4] = p[2].x;
591
+ out[5] = p[2].y;
592
+ out[6] = p[3].x;
593
+ out[7] = p[3].y;
594
+ 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) {
595
+ out[4] = p[3].x;
596
+ out[5] = p[3].y;
597
+ return;
598
+ }
599
+ }
600
+ };
601
+ return Surface;
602
+ }());
603
+ pixi_projection.Surface = Surface;
604
+ })(pixi_projection || (pixi_projection = {}));
605
+ var pixi_projection;
606
+ (function (pixi_projection) {
607
+ var tempMat = new PIXI.Matrix();
608
+ var tempRect = new PIXI.Rectangle();
609
+ var tempPoint = new PIXI.Point();
610
+ var BilinearSurface = (function (_super) {
611
+ __extends(BilinearSurface, _super);
612
+ function BilinearSurface() {
613
+ var _this = _super.call(this) || this;
614
+ _this.distortion = new PIXI.Point();
615
+ return _this;
616
+ }
617
+ BilinearSurface.prototype.clear = function () {
618
+ this.distortion.set(0, 0);
619
+ };
620
+ BilinearSurface.prototype.apply = function (pos, newPos) {
621
+ newPos = newPos || new PIXI.Point();
622
+ var d = this.distortion;
623
+ var m = pos.x * pos.y;
624
+ newPos.x = pos.x + d.x * m;
625
+ newPos.y = pos.y + d.y * m;
626
+ return newPos;
627
+ };
628
+ BilinearSurface.prototype.applyInverse = function (pos, newPos) {
629
+ newPos = newPos || new PIXI.Point();
630
+ var vx = pos.x, vy = pos.y;
631
+ var dx = this.distortion.x, dy = this.distortion.y;
632
+ if (dx == 0.0) {
633
+ newPos.x = vx;
634
+ newPos.y = vy / (1.0 + dy * vx);
635
+ }
636
+ else if (dy == 0.0) {
637
+ newPos.y = vy;
638
+ newPos.x = vx / (1.0 + dx * vy);
639
+ }
640
+ else {
641
+ var b = (vy * dx - vx * dy + 1.0) * 0.5 / dy;
642
+ var d = b * b + vx / dy;
643
+ if (d <= 0.00001) {
644
+ newPos.set(NaN, NaN);
645
+ return;
646
+ }
647
+ if (dy > 0.0) {
648
+ newPos.x = -b + Math.sqrt(d);
649
+ }
650
+ else {
651
+ newPos.x = -b - Math.sqrt(d);
652
+ }
653
+ newPos.y = (vx / newPos.x - 1.0) / dx;
654
+ }
655
+ return newPos;
656
+ };
657
+ BilinearSurface.prototype.mapSprite = function (sprite, quad, outTransform) {
658
+ var tex = sprite.texture;
659
+ tempRect.x = -sprite.anchor.x * tex.orig.width;
660
+ tempRect.y = -sprite.anchor.y * tex.orig.height;
661
+ tempRect.width = tex.orig.width;
662
+ tempRect.height = tex.orig.height;
663
+ return this.mapQuad(tempRect, quad, outTransform || sprite.transform);
664
+ };
665
+ BilinearSurface.prototype.mapQuad = function (rect, quad, outTransform) {
666
+ var ax = -rect.x / rect.width;
667
+ var ay = -rect.y / rect.height;
668
+ var ax2 = (1.0 - rect.x) / rect.width;
669
+ var ay2 = (1.0 - rect.y) / rect.height;
670
+ var up1x = (quad[0].x * (1.0 - ax) + quad[1].x * ax);
671
+ var up1y = (quad[0].y * (1.0 - ax) + quad[1].y * ax);
672
+ var up2x = (quad[0].x * (1.0 - ax2) + quad[1].x * ax2);
673
+ var up2y = (quad[0].y * (1.0 - ax2) + quad[1].y * ax2);
674
+ var down1x = (quad[3].x * (1.0 - ax) + quad[2].x * ax);
675
+ var down1y = (quad[3].y * (1.0 - ax) + quad[2].y * ax);
676
+ var down2x = (quad[3].x * (1.0 - ax2) + quad[2].x * ax2);
677
+ var down2y = (quad[3].y * (1.0 - ax2) + quad[2].y * ax2);
678
+ var x00 = up1x * (1.0 - ay) + down1x * ay;
679
+ var y00 = up1y * (1.0 - ay) + down1y * ay;
680
+ var x10 = up2x * (1.0 - ay) + down2x * ay;
681
+ var y10 = up2y * (1.0 - ay) + down2y * ay;
682
+ var x01 = up1x * (1.0 - ay2) + down1x * ay2;
683
+ var y01 = up1y * (1.0 - ay2) + down1y * ay2;
684
+ var x11 = up2x * (1.0 - ay2) + down2x * ay2;
685
+ var y11 = up2y * (1.0 - ay2) + down2y * ay2;
686
+ var mat = tempMat;
687
+ mat.tx = x00;
688
+ mat.ty = y00;
689
+ mat.a = x10 - x00;
690
+ mat.b = y10 - y00;
691
+ mat.c = x01 - x00;
692
+ mat.d = y01 - y00;
693
+ tempPoint.set(x11, y11);
694
+ mat.applyInverse(tempPoint, tempPoint);
695
+ this.distortion.set(tempPoint.x - 1, tempPoint.y - 1);
696
+ outTransform.setFromMatrix(mat);
697
+ return this;
698
+ };
699
+ BilinearSurface.prototype.fillUniforms = function (uniforms) {
700
+ uniforms.distortion = uniforms.distortion || new Float32Array([0, 0, 0, 0]);
701
+ var ax = Math.abs(this.distortion.x);
702
+ var ay = Math.abs(this.distortion.y);
703
+ uniforms.distortion[0] = ax * 10000 <= ay ? 0 : this.distortion.x;
704
+ uniforms.distortion[1] = ay * 10000 <= ax ? 0 : this.distortion.y;
705
+ uniforms.distortion[2] = 1.0 / uniforms.distortion[0];
706
+ uniforms.distortion[3] = 1.0 / uniforms.distortion[1];
707
+ };
708
+ return BilinearSurface;
709
+ }(pixi_projection.Surface));
710
+ pixi_projection.BilinearSurface = BilinearSurface;
711
+ })(pixi_projection || (pixi_projection = {}));
712
+ var pixi_projection;
713
+ (function (pixi_projection) {
714
+ var Container2s = (function (_super) {
715
+ __extends(Container2s, _super);
716
+ function Container2s() {
717
+ var _this = _super.call(this) || this;
718
+ _this.proj = new pixi_projection.ProjectionSurface(_this.transform);
719
+ return _this;
720
+ }
721
+ Object.defineProperty(Container2s.prototype, "worldTransform", {
722
+ get: function () {
723
+ return this.proj;
724
+ },
725
+ enumerable: true,
726
+ configurable: true
727
+ });
728
+ return Container2s;
729
+ }(PIXI.Container));
730
+ pixi_projection.Container2s = Container2s;
731
+ })(pixi_projection || (pixi_projection = {}));
732
+ var pixi_projection;
733
+ (function (pixi_projection) {
734
+ var fun = PIXI.TransformStatic.prototype.updateTransform;
735
+ function transformHack(parentTransform) {
736
+ var proj = this.proj;
737
+ var pp = parentTransform.proj;
738
+ var ta = this;
739
+ if (!pp) {
740
+ fun.call(this, parentTransform);
741
+ proj._activeProjection = null;
742
+ return;
743
+ }
744
+ if (pp._surface) {
745
+ proj._activeProjection = pp;
746
+ this.updateLocalTransform();
747
+ this.localTransform.copy(this.worldTransform);
748
+ if (ta._parentID < 0) {
749
+ ++ta._worldID;
750
+ }
751
+ return;
752
+ }
753
+ fun.call(this, parentTransform);
754
+ proj._activeProjection = pp._activeProjection;
755
+ }
756
+ var ProjectionSurface = (function (_super) {
757
+ __extends(ProjectionSurface, _super);
758
+ function ProjectionSurface(legacy, enable) {
759
+ var _this = _super.call(this, legacy, enable) || this;
760
+ _this._surface = null;
761
+ _this._activeProjection = null;
762
+ _this._currentSurfaceID = -1;
763
+ _this._currentLegacyID = -1;
764
+ _this._lastUniforms = null;
765
+ return _this;
766
+ }
767
+ Object.defineProperty(ProjectionSurface.prototype, "enabled", {
768
+ set: function (value) {
769
+ if (value === this._enabled) {
770
+ return;
771
+ }
772
+ this._enabled = value;
773
+ if (value) {
774
+ this.legacy.updateTransform = transformHack;
775
+ this.legacy._parentID = -1;
776
+ }
777
+ else {
778
+ this.legacy.updateTransform = PIXI.TransformStatic.prototype.updateTransform;
779
+ this.legacy._parentID = -1;
780
+ }
781
+ },
782
+ enumerable: true,
783
+ configurable: true
784
+ });
785
+ Object.defineProperty(ProjectionSurface.prototype, "surface", {
786
+ get: function () {
787
+ return this._surface;
788
+ },
789
+ set: function (value) {
790
+ if (this._surface == value) {
791
+ return;
792
+ }
793
+ this._surface = value || null;
794
+ this.legacy._parentID = -1;
795
+ },
796
+ enumerable: true,
797
+ configurable: true
798
+ });
799
+ ProjectionSurface.prototype.applyPartial = function (pos, newPos) {
800
+ if (this._activeProjection !== null) {
801
+ newPos = this.legacy.worldTransform.apply(pos, newPos);
802
+ return this._activeProjection.surface.apply(newPos, newPos);
803
+ }
804
+ if (this._surface !== null) {
805
+ return this.surface.apply(pos, newPos);
806
+ }
807
+ return this.legacy.worldTransform.apply(pos, newPos);
808
+ };
809
+ ProjectionSurface.prototype.apply = function (pos, newPos) {
810
+ if (this._activeProjection !== null) {
811
+ newPos = this.legacy.worldTransform.apply(pos, newPos);
812
+ this._activeProjection.surface.apply(newPos, newPos);
813
+ return this._activeProjection.legacy.worldTransform.apply(newPos, newPos);
814
+ }
815
+ if (this._surface !== null) {
816
+ newPos = this.surface.apply(pos, newPos);
817
+ return this.legacy.worldTransform.apply(newPos, newPos);
818
+ }
819
+ return this.legacy.worldTransform.apply(pos, newPos);
820
+ };
821
+ ProjectionSurface.prototype.applyInverse = function (pos, newPos) {
822
+ if (this._activeProjection !== null) {
823
+ newPos = this._activeProjection.legacy.worldTransform.applyInverse(pos, newPos);
824
+ this._activeProjection._surface.applyInverse(newPos, newPos);
825
+ return this.legacy.worldTransform.applyInverse(newPos, newPos);
826
+ }
827
+ if (this._surface !== null) {
828
+ newPos = this.legacy.worldTransform.applyInverse(pos, newPos);
829
+ return this._surface.applyInverse(newPos, newPos);
830
+ }
831
+ return this.legacy.worldTransform.applyInverse(pos, newPos);
832
+ };
833
+ ProjectionSurface.prototype.mapBilinearSprite = function (sprite, quad) {
834
+ if (!(this._surface instanceof pixi_projection.BilinearSurface)) {
835
+ this.surface = new pixi_projection.BilinearSurface();
836
+ }
837
+ this.surface.mapSprite(sprite, quad, this.legacy);
838
+ };
839
+ ProjectionSurface.prototype.clear = function () {
840
+ if (this.surface) {
841
+ this.surface.clear();
842
+ }
843
+ };
844
+ Object.defineProperty(ProjectionSurface.prototype, "uniforms", {
845
+ get: function () {
846
+ if (this._currentLegacyID === this.legacy._worldID &&
847
+ this._currentSurfaceID === this.surface._updateID) {
848
+ return this._lastUniforms;
849
+ }
850
+ this._lastUniforms = this._lastUniforms || {};
851
+ this._lastUniforms.worldTransform = this.legacy.worldTransform.toArray(true);
852
+ this._surface.fillUniforms(this._lastUniforms);
853
+ return this._lastUniforms;
854
+ },
855
+ enumerable: true,
856
+ configurable: true
857
+ });
858
+ return ProjectionSurface;
859
+ }(pixi_projection.AbstractProjection));
860
+ pixi_projection.ProjectionSurface = ProjectionSurface;
861
+ })(pixi_projection || (pixi_projection = {}));
862
+ var pixi_projection;
863
+ (function (pixi_projection) {
864
+ var MultiTextureSpriteRenderer = pixi_projection.webgl.MultiTextureSpriteRenderer;
865
+ var SpriteBilinearRenderer = (function (_super) {
866
+ __extends(SpriteBilinearRenderer, _super);
867
+ function SpriteBilinearRenderer() {
868
+ var _this = _super !== null && _super.apply(this, arguments) || this;
869
+ _this.size = 100;
870
+ _this.MAX_TEXTURES_LOCAL = 1;
871
+ _this.shaderVert = "precision highp float;\nattribute vec2 aVertexPosition;\nattribute vec3 aTrans1;\nattribute vec3 aTrans2;\nattribute vec4 aFrame;\nattribute vec4 aColor;\nattribute float aTextureId;\n\nuniform mat3 projectionMatrix;\nuniform mat3 worldTransform;\n\nvarying vec2 vTextureCoord;\nvarying vec3 vTrans1;\nvarying vec3 vTrans2;\nvarying vec4 vFrame;\nvarying vec4 vColor;\nvarying float vTextureId;\n\nvoid main(void){\n gl_Position.xyw = projectionMatrix * worldTransform * vec3(aVertexPosition, 1.0);\n gl_Position.z = 0.0;\n \n vTextureCoord = aVertexPosition;\n vTrans1 = aTrans1;\n vTrans2 = aTrans2;\n vTextureId = aTextureId;\n vColor = aColor;\n vFrame = aFrame;\n}\n";
872
+ _this.shaderFrag = "precision highp float;\nvarying vec2 vTextureCoord;\nvarying vec3 vTrans1;\nvarying vec3 vTrans2;\nvarying vec4 vFrame;\nvarying vec4 vColor;\nvarying float vTextureId;\n\nuniform sampler2D uSamplers[%count%];\nuniform vec2 samplerSize[%count%]; \nuniform vec4 distortion;\n\nvoid main(void){\nvec2 surface;\nvec2 surface2;\n\nfloat vx = vTextureCoord.x;\nfloat vy = vTextureCoord.y;\nfloat dx = distortion.x;\nfloat dy = distortion.y;\nfloat revx = distortion.z;\nfloat revy = distortion.w;\n\nif (distortion.x == 0.0) {\n surface.x = vx;\n surface.y = vy / (1.0 + dy * vx);\n surface2 = surface;\n} else\nif (distortion.y == 0.0) {\n surface.y = vy;\n surface.x = vx/ (1.0 + dx * vy);\n surface2 = surface;\n} else {\n float c = vy * dx - vx * dy;\n float b = (c + 1.0) * 0.5;\n float b2 = (-c + 1.0) * 0.5;\n float d = b * b + vx * dy;\n if (d < -0.00001) {\n discard;\n }\n d = sqrt(max(d, 0.0));\n surface.x = (- b + d) * revy;\n surface2.x = (- b - d) * revy;\n surface.y = (- b2 + d) * revx;\n surface2.y = (- b2 - d) * revx;\n}\n\nvec2 uv;\nuv.x = vTrans1.x * surface.x + vTrans1.y * surface.y + vTrans1.z;\nuv.y = vTrans2.x * surface.x + vTrans2.y * surface.y + vTrans2.z;\n\nvec2 pixels = uv * samplerSize[0];\n\nif (pixels.x < vFrame.x || pixels.x > vFrame.z ||\n pixels.y < vFrame.y || pixels.y > vFrame.w) {\n uv.x = vTrans1.x * surface2.x + vTrans1.y * surface2.y + vTrans1.z;\n uv.y = vTrans2.x * surface2.x + vTrans2.y * surface2.y + vTrans2.z;\n pixels = uv * samplerSize[0];\n \n if (pixels.x < vFrame.x || pixels.x > vFrame.z ||\n pixels.y < vFrame.y || pixels.y > vFrame.w) {\n discard;\n }\n}\n\nvec4 edge;\nedge.xy = clamp(pixels - vFrame.xy + 0.5, vec2(0.0, 0.0), vec2(1.0, 1.0));\nedge.zw = clamp(vFrame.zw - pixels + 0.5, vec2(0.0, 0.0), vec2(1.0, 1.0));\n\nfloat alpha = 1.0; //edge.x * edge.y * edge.z * edge.w;\nvec4 rColor = vColor * alpha;\n\nfloat textureId = floor(vTextureId+0.5);\nvec4 color;\nvec2 textureCoord = uv;\n%forloop%\ngl_FragColor = color * rColor;\n}";
873
+ _this.defUniforms = {
874
+ worldTransform: new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]),
875
+ distortion: new Float32Array([0, 0])
876
+ };
877
+ return _this;
878
+ }
879
+ SpriteBilinearRenderer.prototype.getUniforms = function (sprite) {
880
+ var proj = sprite.proj;
881
+ var shader = this.shader;
882
+ if (proj.surface !== null) {
883
+ return proj.uniforms;
884
+ }
885
+ if (proj._activeProjection !== null) {
886
+ return proj._activeProjection.uniforms;
887
+ }
888
+ return this.defUniforms;
889
+ };
890
+ SpriteBilinearRenderer.prototype.createVao = function (vertexBuffer) {
891
+ var attrs = this.shader.attributes;
892
+ this.vertSize = 14;
893
+ this.vertByteSize = this.vertSize * 4;
894
+ var gl = this.renderer.gl;
895
+ var vao = this.renderer.createVao()
896
+ .addIndex(this.indexBuffer)
897
+ .addAttribute(vertexBuffer, attrs.aVertexPosition, gl.FLOAT, false, this.vertByteSize, 0)
898
+ .addAttribute(vertexBuffer, attrs.aTrans1, gl.FLOAT, false, this.vertByteSize, 2 * 4)
899
+ .addAttribute(vertexBuffer, attrs.aTrans2, gl.FLOAT, false, this.vertByteSize, 5 * 4)
900
+ .addAttribute(vertexBuffer, attrs.aFrame, gl.FLOAT, false, this.vertByteSize, 8 * 4)
901
+ .addAttribute(vertexBuffer, attrs.aColor, gl.UNSIGNED_BYTE, true, this.vertByteSize, 12 * 4);
902
+ if (attrs.aTextureId) {
903
+ vao.addAttribute(vertexBuffer, attrs.aTextureId, gl.FLOAT, false, this.vertByteSize, 13 * 4);
904
+ }
905
+ return vao;
906
+ };
907
+ SpriteBilinearRenderer.prototype.fillVertices = function (float32View, uint32View, index, sprite, argb, textureId) {
908
+ var vertexData = sprite.vertexData;
909
+ var tex = sprite._texture;
910
+ var w = tex.orig.width;
911
+ var h = tex.orig.height;
912
+ var ax = sprite._anchor._x;
913
+ var ay = sprite._anchor._y;
914
+ var frame = tex._frame;
915
+ var aTrans = sprite.aTrans;
916
+ for (var i = 0; i < 4; i++) {
917
+ float32View[index] = vertexData[i * 2];
918
+ float32View[index + 1] = vertexData[i * 2 + 1];
919
+ float32View[index + 2] = aTrans.a;
920
+ float32View[index + 3] = aTrans.c;
921
+ float32View[index + 4] = aTrans.tx;
922
+ float32View[index + 5] = aTrans.b;
923
+ float32View[index + 6] = aTrans.d;
924
+ float32View[index + 7] = aTrans.ty;
925
+ float32View[index + 8] = frame.x;
926
+ float32View[index + 9] = frame.y;
927
+ float32View[index + 10] = frame.x + frame.width;
928
+ float32View[index + 11] = frame.y + frame.height;
929
+ uint32View[index + 12] = argb;
930
+ float32View[index + 13] = textureId;
931
+ index += 14;
932
+ }
933
+ };
934
+ return SpriteBilinearRenderer;
935
+ }(MultiTextureSpriteRenderer));
936
+ PIXI.WebGLRenderer.registerPlugin('sprite_bilinear', SpriteBilinearRenderer);
937
+ })(pixi_projection || (pixi_projection = {}));
938
+ var pixi_projection;
939
+ (function (pixi_projection) {
940
+ var MultiTextureSpriteRenderer = pixi_projection.webgl.MultiTextureSpriteRenderer;
941
+ var SpriteStrangeRenderer = (function (_super) {
942
+ __extends(SpriteStrangeRenderer, _super);
943
+ function SpriteStrangeRenderer() {
944
+ var _this = _super !== null && _super.apply(this, arguments) || this;
945
+ _this.size = 100;
946
+ _this.MAX_TEXTURES_LOCAL = 1;
947
+ _this.shaderVert = "precision highp float;\nattribute vec2 aVertexPosition;\nattribute vec3 aTrans1;\nattribute vec3 aTrans2;\nattribute vec4 aFrame;\nattribute vec4 aColor;\nattribute float aTextureId;\n\nuniform mat3 projectionMatrix;\nuniform mat3 worldTransform;\n\nvarying vec2 vTextureCoord;\nvarying vec3 vTrans1;\nvarying vec3 vTrans2;\nvarying vec4 vFrame;\nvarying vec4 vColor;\nvarying float vTextureId;\n\nvoid main(void){\n gl_Position.xyw = projectionMatrix * worldTransform * vec3(aVertexPosition, 1.0);\n gl_Position.z = 0.0;\n \n vTextureCoord = aVertexPosition;\n vTrans1 = aTrans1;\n vTrans2 = aTrans2;\n vTextureId = aTextureId;\n vColor = aColor;\n vFrame = aFrame;\n}\n";
948
+ _this.shaderFrag = "precision highp float;\nvarying vec2 vTextureCoord;\nvarying vec3 vTrans1;\nvarying vec3 vTrans2;\nvarying vec4 vFrame;\nvarying vec4 vColor;\nvarying float vTextureId;\n\nuniform sampler2D uSamplers[%count%];\nuniform vec2 samplerSize[%count%]; \nuniform vec4 params;\n\nvoid main(void){\nvec2 surface;\n\nfloat vx = vTextureCoord.x;\nfloat vy = vTextureCoord.y;\nfloat aleph = params.x;\nfloat bet = params.y;\nfloat A = params.z;\nfloat B = params.w;\n\nif (aleph == 0.0) {\n\tsurface.y = vy / (1.0 + vx * bet);\n\tsurface.x = vx;\n}\nelse if (bet == 0.0) {\n\tsurface.x = vx / (1.0 + vy * aleph);\n\tsurface.y = vy;\n} else {\n\tsurface.x = vx * (bet + 1.0) / (bet + 1.0 + vy * aleph);\n\tsurface.y = vy * (aleph + 1.0) / (aleph + 1.0 + vx * bet);\n}\n\nvec2 uv;\nuv.x = vTrans1.x * surface.x + vTrans1.y * surface.y + vTrans1.z;\nuv.y = vTrans2.x * surface.x + vTrans2.y * surface.y + vTrans2.z;\n\nvec2 pixels = uv * samplerSize[0];\n\nvec4 edge;\nedge.xy = clamp(pixels - vFrame.xy + 0.5, vec2(0.0, 0.0), vec2(1.0, 1.0));\nedge.zw = clamp(vFrame.zw - pixels + 0.5, vec2(0.0, 0.0), vec2(1.0, 1.0));\n\nfloat alpha = edge.x * edge.y * edge.z * edge.w;\nvec4 rColor = vColor * alpha;\n\nfloat textureId = floor(vTextureId+0.5);\nvec4 color;\nvec2 textureCoord = uv;\n%forloop%\ngl_FragColor = color * rColor;\n}";
949
+ _this.defUniforms = {
950
+ worldTransform: new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]),
951
+ distortion: new Float32Array([0, 0])
952
+ };
953
+ return _this;
954
+ }
955
+ SpriteStrangeRenderer.prototype.getUniforms = function (sprite) {
956
+ var proj = sprite.proj;
957
+ var shader = this.shader;
958
+ if (proj.surface !== null) {
959
+ return proj.uniforms;
960
+ }
961
+ if (proj._activeProjection !== null) {
962
+ return proj._activeProjection.uniforms;
963
+ }
964
+ return this.defUniforms;
965
+ };
966
+ SpriteStrangeRenderer.prototype.createVao = function (vertexBuffer) {
967
+ var attrs = this.shader.attributes;
968
+ this.vertSize = 14;
969
+ this.vertByteSize = this.vertSize * 4;
970
+ var gl = this.renderer.gl;
971
+ var vao = this.renderer.createVao()
972
+ .addIndex(this.indexBuffer)
973
+ .addAttribute(vertexBuffer, attrs.aVertexPosition, gl.FLOAT, false, this.vertByteSize, 0)
974
+ .addAttribute(vertexBuffer, attrs.aTrans1, gl.FLOAT, false, this.vertByteSize, 2 * 4)
975
+ .addAttribute(vertexBuffer, attrs.aTrans2, gl.FLOAT, false, this.vertByteSize, 5 * 4)
976
+ .addAttribute(vertexBuffer, attrs.aFrame, gl.FLOAT, false, this.vertByteSize, 8 * 4)
977
+ .addAttribute(vertexBuffer, attrs.aColor, gl.UNSIGNED_BYTE, true, this.vertByteSize, 12 * 4);
978
+ if (attrs.aTextureId) {
979
+ vao.addAttribute(vertexBuffer, attrs.aTextureId, gl.FLOAT, false, this.vertByteSize, 13 * 4);
980
+ }
981
+ return vao;
982
+ };
983
+ SpriteStrangeRenderer.prototype.fillVertices = function (float32View, uint32View, index, sprite, argb, textureId) {
984
+ var vertexData = sprite.vertexData;
985
+ var tex = sprite._texture;
986
+ var w = tex.orig.width;
987
+ var h = tex.orig.height;
988
+ var ax = sprite._anchor._x;
989
+ var ay = sprite._anchor._y;
990
+ var frame = tex._frame;
991
+ var aTrans = sprite.aTrans;
992
+ for (var i = 0; i < 4; i++) {
993
+ float32View[index] = vertexData[i * 2];
994
+ float32View[index + 1] = vertexData[i * 2 + 1];
995
+ float32View[index + 2] = aTrans.a;
996
+ float32View[index + 3] = aTrans.c;
997
+ float32View[index + 4] = aTrans.tx;
998
+ float32View[index + 5] = aTrans.b;
999
+ float32View[index + 6] = aTrans.d;
1000
+ float32View[index + 7] = aTrans.ty;
1001
+ float32View[index + 8] = frame.x;
1002
+ float32View[index + 9] = frame.y;
1003
+ float32View[index + 10] = frame.x + frame.width;
1004
+ float32View[index + 11] = frame.y + frame.height;
1005
+ uint32View[index + 12] = argb;
1006
+ float32View[index + 13] = textureId;
1007
+ index += 14;
1008
+ }
1009
+ };
1010
+ return SpriteStrangeRenderer;
1011
+ }(MultiTextureSpriteRenderer));
1012
+ PIXI.WebGLRenderer.registerPlugin('sprite_strange', SpriteStrangeRenderer);
1013
+ })(pixi_projection || (pixi_projection = {}));
1014
+ var pixi_projection;
1015
+ (function (pixi_projection) {
1016
+ var tempMat = new PIXI.Matrix();
1017
+ var tempRect = new PIXI.Rectangle();
1018
+ var tempPoint = new PIXI.Point();
1019
+ var StrangeSurface = (function (_super) {
1020
+ __extends(StrangeSurface, _super);
1021
+ function StrangeSurface() {
1022
+ var _this = _super.call(this) || this;
1023
+ _this.params = [0, 0, NaN, NaN];
1024
+ return _this;
1025
+ }
1026
+ StrangeSurface.prototype.clear = function () {
1027
+ var p = this.params;
1028
+ p[0] = 0;
1029
+ p[1] = 0;
1030
+ p[2] = NaN;
1031
+ p[3] = NaN;
1032
+ };
1033
+ StrangeSurface.prototype.setAxisX = function (pos, factor, outTransform) {
1034
+ var x = pos.x, y = pos.y;
1035
+ var d = Math.sqrt(x * x + y * y);
1036
+ var rot = outTransform.rotation;
1037
+ if (rot !== 0) {
1038
+ outTransform.skew._x -= rot;
1039
+ outTransform.skew._y += rot;
1040
+ outTransform.rotation = 0;
1041
+ }
1042
+ outTransform.skew.y = Math.atan2(y, x);
1043
+ var p = this.params;
1044
+ if (factor !== 0) {
1045
+ p[2] = -d * factor;
1046
+ }
1047
+ else {
1048
+ p[2] = NaN;
1049
+ }
1050
+ this._calc01();
1051
+ };
1052
+ StrangeSurface.prototype.setAxisY = function (pos, factor, outTransform) {
1053
+ var x = pos.x, y = pos.y;
1054
+ var d = Math.sqrt(x * x + y * y);
1055
+ var rot = outTransform.rotation;
1056
+ if (rot !== 0) {
1057
+ outTransform.skew._x -= rot;
1058
+ outTransform.skew._y += rot;
1059
+ outTransform.rotation = 0;
1060
+ }
1061
+ outTransform.skew.x = -Math.atan2(y, x) + Math.PI / 2;
1062
+ var p = this.params;
1063
+ if (factor !== 0) {
1064
+ p[3] = -d * factor;
1065
+ }
1066
+ else {
1067
+ p[3] = NaN;
1068
+ }
1069
+ this._calc01();
1070
+ };
1071
+ StrangeSurface.prototype._calc01 = function () {
1072
+ var p = this.params;
1073
+ if (isNaN(p[2])) {
1074
+ p[1] = 0;
1075
+ if (isNaN(p[3])) {
1076
+ p[0] = 0;
1077
+ }
1078
+ else {
1079
+ p[0] = 1.0 / p[3];
1080
+ }
1081
+ }
1082
+ else {
1083
+ if (isNaN(p[3])) {
1084
+ p[0] = 0;
1085
+ p[1] = 1.0 / p[2];
1086
+ }
1087
+ else {
1088
+ var d = 1.0 - p[2] * p[3];
1089
+ p[0] = (1.0 - p[2]) / d;
1090
+ p[1] = (1.0 - p[3]) / d;
1091
+ }
1092
+ }
1093
+ };
1094
+ StrangeSurface.prototype.apply = function (pos, newPos) {
1095
+ newPos = newPos || new PIXI.Point();
1096
+ var aleph = this.params[0], bet = this.params[1], A = this.params[2], B = this.params[3];
1097
+ var u = pos.x, v = pos.y;
1098
+ if (aleph === 0.0) {
1099
+ newPos.y = v * (1 + u * bet);
1100
+ newPos.x = u;
1101
+ }
1102
+ else if (bet === 0.0) {
1103
+ newPos.x = u * (1 + v * aleph);
1104
+ newPos.y = v;
1105
+ }
1106
+ else {
1107
+ var D = A * B - v * u;
1108
+ newPos.x = A * u * (B + v) / D;
1109
+ newPos.y = B * v * (A + u) / D;
1110
+ }
1111
+ return newPos;
1112
+ };
1113
+ StrangeSurface.prototype.applyInverse = function (pos, newPos) {
1114
+ newPos = newPos || new PIXI.Point();
1115
+ var aleph = this.params[0], bet = this.params[1], A = this.params[2], B = this.params[3];
1116
+ var x = pos.x, y = pos.y;
1117
+ if (aleph === 0.0) {
1118
+ newPos.y = y / (1 + x * bet);
1119
+ newPos.x = x;
1120
+ }
1121
+ else if (bet === 0.0) {
1122
+ newPos.x = x * (1 + y * aleph);
1123
+ newPos.y = y;
1124
+ }
1125
+ else {
1126
+ newPos.x = x * (bet + 1) / (bet + 1 + y * aleph);
1127
+ newPos.y = y * (aleph + 1) / (aleph + 1 + x * bet);
1128
+ }
1129
+ return newPos;
1130
+ };
1131
+ StrangeSurface.prototype.mapSprite = function (sprite, quad, outTransform) {
1132
+ var tex = sprite.texture;
1133
+ tempRect.x = -sprite.anchor.x * tex.orig.width;
1134
+ tempRect.y = -sprite.anchor.y * tex.orig.height;
1135
+ tempRect.width = tex.orig.width;
1136
+ tempRect.height = tex.orig.height;
1137
+ return this.mapQuad(tempRect, quad, outTransform || sprite.transform);
1138
+ };
1139
+ StrangeSurface.prototype.mapQuad = function (rect, quad, outTransform) {
1140
+ var ax = -rect.x / rect.width;
1141
+ var ay = -rect.y / rect.height;
1142
+ var ax2 = (1.0 - rect.x) / rect.width;
1143
+ var ay2 = (1.0 - rect.y) / rect.height;
1144
+ var up1x = (quad[0].x * (1.0 - ax) + quad[1].x * ax);
1145
+ var up1y = (quad[0].y * (1.0 - ax) + quad[1].y * ax);
1146
+ var up2x = (quad[0].x * (1.0 - ax2) + quad[1].x * ax2);
1147
+ var up2y = (quad[0].y * (1.0 - ax2) + quad[1].y * ax2);
1148
+ var down1x = (quad[3].x * (1.0 - ax) + quad[2].x * ax);
1149
+ var down1y = (quad[3].y * (1.0 - ax) + quad[2].y * ax);
1150
+ var down2x = (quad[3].x * (1.0 - ax2) + quad[2].x * ax2);
1151
+ var down2y = (quad[3].y * (1.0 - ax2) + quad[2].y * ax2);
1152
+ var x00 = up1x * (1.0 - ay) + down1x * ay;
1153
+ var y00 = up1y * (1.0 - ay) + down1y * ay;
1154
+ var x10 = up2x * (1.0 - ay) + down2x * ay;
1155
+ var y10 = up2y * (1.0 - ay) + down2y * ay;
1156
+ var x01 = up1x * (1.0 - ay2) + down1x * ay2;
1157
+ var y01 = up1y * (1.0 - ay2) + down1y * ay2;
1158
+ var x11 = up2x * (1.0 - ay2) + down2x * ay2;
1159
+ var y11 = up2y * (1.0 - ay2) + down2y * ay2;
1160
+ var mat = tempMat;
1161
+ mat.tx = x00;
1162
+ mat.ty = y00;
1163
+ mat.a = x10 - x00;
1164
+ mat.b = y10 - y00;
1165
+ mat.c = x01 - x00;
1166
+ mat.d = y01 - y00;
1167
+ tempPoint.set(x11, y11);
1168
+ mat.applyInverse(tempPoint, tempPoint);
1169
+ outTransform.setFromMatrix(mat);
1170
+ return this;
1171
+ };
1172
+ StrangeSurface.prototype.fillUniforms = function (uniforms) {
1173
+ var params = this.params;
1174
+ var distortion = uniforms.params || new Float32Array([0, 0, 0, 0]);
1175
+ uniforms.params = distortion;
1176
+ distortion[0] = params[0];
1177
+ distortion[1] = params[1];
1178
+ distortion[2] = params[2];
1179
+ distortion[3] = params[3];
1180
+ };
1181
+ return StrangeSurface;
1182
+ }(pixi_projection.Surface));
1183
+ pixi_projection.StrangeSurface = StrangeSurface;
1184
+ })(pixi_projection || (pixi_projection = {}));
1185
+ var pixi_projection;
1186
+ (function (pixi_projection) {
1187
+ var Sprite2s = (function (_super) {
1188
+ __extends(Sprite2s, _super);
1189
+ function Sprite2s(texture) {
1190
+ var _this = _super.call(this, texture) || this;
1191
+ _this.aTrans = new PIXI.Matrix();
1192
+ _this.proj = new pixi_projection.ProjectionSurface(_this.transform);
1193
+ _this.pluginName = 'sprite_bilinear';
1194
+ return _this;
1195
+ }
1196
+ Sprite2s.prototype._calculateBounds = function () {
1197
+ this.calculateTrimmedVertices();
1198
+ this._bounds.addQuad(this.vertexTrimmedData);
1199
+ };
1200
+ Sprite2s.prototype.calculateVertices = function () {
1201
+ var wid = this.transform._worldID;
1202
+ var tuid = this._texture._updateID;
1203
+ if (this._transformID === wid && this._textureID === tuid) {
1204
+ return;
1205
+ }
1206
+ this._transformID = wid;
1207
+ this._textureID = tuid;
1208
+ var texture = this._texture;
1209
+ var vertexData = this.vertexData;
1210
+ var trim = texture.trim;
1211
+ var orig = texture.orig;
1212
+ var anchor = this._anchor;
1213
+ var w0 = 0;
1214
+ var w1 = 0;
1215
+ var h0 = 0;
1216
+ var h1 = 0;
1217
+ if (trim) {
1218
+ w1 = trim.x - (anchor._x * orig.width);
1219
+ w0 = w1 + trim.width;
1220
+ h1 = trim.y - (anchor._y * orig.height);
1221
+ h0 = h1 + trim.height;
1222
+ }
1223
+ else {
1224
+ w1 = -anchor._x * orig.width;
1225
+ w0 = w1 + orig.width;
1226
+ h1 = -anchor._y * orig.height;
1227
+ h0 = h1 + orig.height;
1228
+ }
1229
+ if (this.proj._surface) {
1230
+ vertexData[0] = w1;
1231
+ vertexData[1] = h1;
1232
+ vertexData[2] = w0;
1233
+ vertexData[3] = h1;
1234
+ vertexData[4] = w0;
1235
+ vertexData[5] = h0;
1236
+ vertexData[6] = w1;
1237
+ vertexData[7] = h0;
1238
+ this.proj._surface.boundsQuad(vertexData, vertexData);
1239
+ }
1240
+ else {
1241
+ var wt = this.transform.worldTransform;
1242
+ var a = wt.a;
1243
+ var b = wt.b;
1244
+ var c = wt.c;
1245
+ var d = wt.d;
1246
+ var tx = wt.tx;
1247
+ var ty = wt.ty;
1248
+ vertexData[0] = (a * w1) + (c * h1) + tx;
1249
+ vertexData[1] = (d * h1) + (b * w1) + ty;
1250
+ vertexData[2] = (a * w0) + (c * h1) + tx;
1251
+ vertexData[3] = (d * h1) + (b * w0) + ty;
1252
+ vertexData[4] = (a * w0) + (c * h0) + tx;
1253
+ vertexData[5] = (d * h0) + (b * w0) + ty;
1254
+ vertexData[6] = (a * w1) + (c * h0) + tx;
1255
+ vertexData[7] = (d * h0) + (b * w1) + ty;
1256
+ if (this.proj._activeProjection) {
1257
+ this.proj._activeProjection.surface.boundsQuad(vertexData, vertexData);
1258
+ }
1259
+ }
1260
+ if (!texture.transform) {
1261
+ texture.transform = new PIXI.TextureMatrix(texture);
1262
+ }
1263
+ texture.transform.update();
1264
+ var aTrans = this.aTrans;
1265
+ aTrans.set(orig.width, 0, 0, orig.height, w1, h1);
1266
+ if (this.proj._surface === null) {
1267
+ aTrans.prepend(this.transform.worldTransform);
1268
+ }
1269
+ aTrans.invert();
1270
+ aTrans.prepend(texture.transform.mapCoord);
1271
+ };
1272
+ Sprite2s.prototype.calculateTrimmedVertices = function () {
1273
+ var wid = this.transform._worldID;
1274
+ var tuid = this._texture._updateID;
1275
+ if (!this.vertexTrimmedData) {
1276
+ this.vertexTrimmedData = new Float32Array(8);
1277
+ }
1278
+ else if (this._transformTrimmedID === wid && this._textureTrimmedID === tuid) {
1279
+ return;
1280
+ }
1281
+ this._transformTrimmedID = wid;
1282
+ this._textureTrimmedID = tuid;
1283
+ var texture = this._texture;
1284
+ var vertexData = this.vertexTrimmedData;
1285
+ var orig = texture.orig;
1286
+ var anchor = this._anchor;
1287
+ var w1 = -anchor._x * orig.width;
1288
+ var w0 = w1 + orig.width;
1289
+ var h1 = -anchor._y * orig.height;
1290
+ var h0 = h1 + orig.height;
1291
+ if (this.proj._surface) {
1292
+ vertexData[0] = w1;
1293
+ vertexData[1] = h1;
1294
+ vertexData[2] = w0;
1295
+ vertexData[3] = h1;
1296
+ vertexData[4] = w0;
1297
+ vertexData[5] = h0;
1298
+ vertexData[6] = w1;
1299
+ vertexData[7] = h0;
1300
+ this.proj._surface.boundsQuad(vertexData, vertexData, this.transform.worldTransform);
1301
+ }
1302
+ else {
1303
+ var wt = this.transform.worldTransform;
1304
+ var a = wt.a;
1305
+ var b = wt.b;
1306
+ var c = wt.c;
1307
+ var d = wt.d;
1308
+ var tx = wt.tx;
1309
+ var ty = wt.ty;
1310
+ vertexData[0] = (a * w1) + (c * h1) + tx;
1311
+ vertexData[1] = (d * h1) + (b * w1) + ty;
1312
+ vertexData[2] = (a * w0) + (c * h1) + tx;
1313
+ vertexData[3] = (d * h1) + (b * w0) + ty;
1314
+ vertexData[4] = (a * w0) + (c * h0) + tx;
1315
+ vertexData[5] = (d * h0) + (b * w0) + ty;
1316
+ vertexData[6] = (a * w1) + (c * h0) + tx;
1317
+ vertexData[7] = (d * h0) + (b * w1) + ty;
1318
+ if (this.proj._activeProjection) {
1319
+ this.proj._activeProjection.surface.boundsQuad(vertexData, vertexData, this.proj._activeProjection.legacy.worldTransform);
1320
+ }
1321
+ }
1322
+ };
1323
+ Object.defineProperty(Sprite2s.prototype, "worldTransform", {
1324
+ get: function () {
1325
+ return this.proj;
1326
+ },
1327
+ enumerable: true,
1328
+ configurable: true
1329
+ });
1330
+ return Sprite2s;
1331
+ }(PIXI.Sprite));
1332
+ pixi_projection.Sprite2s = Sprite2s;
1333
+ })(pixi_projection || (pixi_projection = {}));
1334
+ var pixi_projection;
1335
+ (function (pixi_projection) {
1336
+ var Text2s = (function (_super) {
1337
+ __extends(Text2s, _super);
1338
+ function Text2s(text, style, canvas) {
1339
+ var _this = _super.call(this, text, style, canvas) || this;
1340
+ _this.aTrans = new PIXI.Matrix();
1341
+ _this.proj = new pixi_projection.ProjectionSurface(_this.transform);
1342
+ _this.pluginName = 'sprite_bilinear';
1343
+ return _this;
1344
+ }
1345
+ Object.defineProperty(Text2s.prototype, "worldTransform", {
1346
+ get: function () {
1347
+ return this.proj;
1348
+ },
1349
+ enumerable: true,
1350
+ configurable: true
1351
+ });
1352
+ return Text2s;
1353
+ }(PIXI.Text));
1354
+ pixi_projection.Text2s = Text2s;
1355
+ Text2s.prototype.calculateVertices = pixi_projection.Sprite2s.prototype.calculateVertices;
1356
+ Text2s.prototype.calculateTrimmedVertices = pixi_projection.Sprite2s.prototype.calculateTrimmedVertices;
1357
+ Text2s.prototype._calculateBounds = pixi_projection.Sprite2s.prototype._calculateBounds;
1358
+ })(pixi_projection || (pixi_projection = {}));
1359
+ var pixi_projection;
1360
+ (function (pixi_projection) {
1361
+ PIXI.Sprite.prototype.convertTo2s = function () {
1362
+ if (this.proj)
1363
+ return;
1364
+ this.pluginName = 'sprite_bilinear';
1365
+ this.aTrans = new PIXI.Matrix();
1366
+ this.calculateVertices = pixi_projection.Sprite2s.prototype.calculateVertices;
1367
+ this.calculateTrimmedVertices = pixi_projection.Sprite2s.prototype.calculateTrimmedVertices;
1368
+ this._calculateBounds = pixi_projection.Sprite2s.prototype._calculateBounds;
1369
+ PIXI.Container.prototype.convertTo2s.call(this);
1370
+ };
1371
+ PIXI.Container.prototype.convertTo2s = function () {
1372
+ if (this.proj)
1373
+ return;
1374
+ this.proj = new pixi_projection.Projection2d(this.transform);
1375
+ Object.defineProperty(this, "worldTransform", {
1376
+ get: function () {
1377
+ return this.proj;
1378
+ },
1379
+ enumerable: true,
1380
+ configurable: true
1381
+ });
1382
+ };
1383
+ PIXI.Container.prototype.convertSubtreeTo2s = function () {
1384
+ this.convertTo2s();
1385
+ for (var i = 0; i < this.children.length; i++) {
1386
+ this.children[i].convertSubtreeTo2s();
1387
+ }
1388
+ };
1389
+ })(pixi_projection || (pixi_projection = {}));
1390
+ var pixi_projection;
1391
+ (function (pixi_projection) {
1392
+ function container2dWorldTransform() {
1393
+ return this.proj.affine ? this.transform.worldTransform : this.proj.world;
1394
+ }
1395
+ pixi_projection.container2dWorldTransform = container2dWorldTransform;
1396
+ var Container2d = (function (_super) {
1397
+ __extends(Container2d, _super);
1398
+ function Container2d() {
1399
+ var _this = _super.call(this) || this;
1400
+ _this.proj = new pixi_projection.Projection2d(_this.transform);
1401
+ return _this;
1402
+ }
1403
+ Container2d.prototype.toLocal = function (position, from, point, skipUpdate, step) {
1404
+ if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; }
1405
+ if (from) {
1406
+ position = from.toGlobal(position, point, skipUpdate);
1407
+ }
1408
+ if (!skipUpdate) {
1409
+ this._recursivePostUpdateTransform();
1410
+ }
1411
+ if (step >= pixi_projection.TRANSFORM_STEP.PROJ) {
1412
+ if (!skipUpdate) {
1413
+ this.displayObjectUpdateTransform();
1414
+ }
1415
+ if (this.proj.affine) {
1416
+ return this.transform.worldTransform.applyInverse(point, point);
1417
+ }
1418
+ return this.proj.world.applyInverse(point, point);
1419
+ }
1420
+ if (this.parent) {
1421
+ point = this.parent.worldTransform.applyInverse(position, point);
1422
+ }
1423
+ else {
1424
+ point.copy(position);
1425
+ }
1426
+ if (step === pixi_projection.TRANSFORM_STEP.NONE) {
1427
+ return point;
1428
+ }
1429
+ return this.transform.localTransform.applyInverse(point, point);
1430
+ };
1431
+ Object.defineProperty(Container2d.prototype, "worldTransform", {
1432
+ get: function () {
1433
+ return this.proj.affine ? this.transform.worldTransform : this.proj.world;
1434
+ },
1435
+ enumerable: true,
1436
+ configurable: true
1437
+ });
1438
+ return Container2d;
1439
+ }(PIXI.Container));
1440
+ pixi_projection.Container2d = Container2d;
1441
+ pixi_projection.container2dToLocal = Container2d.prototype.toLocal;
1442
+ })(pixi_projection || (pixi_projection = {}));
1443
+ var pixi_projection;
1444
+ (function (pixi_projection) {
1445
+ var Point = PIXI.Point;
1446
+ var mat3id = [1, 0, 0, 0, 1, 0, 0, 0, 1];
1447
+ var AFFINE;
1448
+ (function (AFFINE) {
1449
+ AFFINE[AFFINE["NONE"] = 0] = "NONE";
1450
+ AFFINE[AFFINE["FREE"] = 1] = "FREE";
1451
+ AFFINE[AFFINE["AXIS_X"] = 2] = "AXIS_X";
1452
+ AFFINE[AFFINE["AXIS_Y"] = 3] = "AXIS_Y";
1453
+ AFFINE[AFFINE["POINT"] = 4] = "POINT";
1454
+ })(AFFINE = pixi_projection.AFFINE || (pixi_projection.AFFINE = {}));
1455
+ var Matrix2d = (function () {
1456
+ function Matrix2d(backingArray) {
1457
+ this.floatArray = null;
1458
+ this.mat3 = new Float64Array(backingArray || mat3id);
1459
+ }
1460
+ Object.defineProperty(Matrix2d.prototype, "a", {
1461
+ get: function () {
1462
+ return this.mat3[0] / this.mat3[8];
1463
+ },
1464
+ set: function (value) {
1465
+ this.mat3[0] = value * this.mat3[8];
1466
+ },
1467
+ enumerable: true,
1468
+ configurable: true
1469
+ });
1470
+ Object.defineProperty(Matrix2d.prototype, "b", {
1471
+ get: function () {
1472
+ return this.mat3[1] / this.mat3[8];
1473
+ },
1474
+ set: function (value) {
1475
+ this.mat3[1] = value * this.mat3[8];
1476
+ },
1477
+ enumerable: true,
1478
+ configurable: true
1479
+ });
1480
+ Object.defineProperty(Matrix2d.prototype, "c", {
1481
+ get: function () {
1482
+ return this.mat3[3] / this.mat3[8];
1483
+ },
1484
+ set: function (value) {
1485
+ this.mat3[3] = value * this.mat3[8];
1486
+ },
1487
+ enumerable: true,
1488
+ configurable: true
1489
+ });
1490
+ Object.defineProperty(Matrix2d.prototype, "d", {
1491
+ get: function () {
1492
+ return this.mat3[4] / this.mat3[8];
1493
+ },
1494
+ set: function (value) {
1495
+ this.mat3[4] = value * this.mat3[8];
1496
+ },
1497
+ enumerable: true,
1498
+ configurable: true
1499
+ });
1500
+ Object.defineProperty(Matrix2d.prototype, "tx", {
1501
+ get: function () {
1502
+ return this.mat3[6] / this.mat3[8];
1503
+ },
1504
+ set: function (value) {
1505
+ this.mat3[6] = value * this.mat3[8];
1506
+ },
1507
+ enumerable: true,
1508
+ configurable: true
1509
+ });
1510
+ Object.defineProperty(Matrix2d.prototype, "ty", {
1511
+ get: function () {
1512
+ return this.mat3[7] / this.mat3[8];
1513
+ },
1514
+ set: function (value) {
1515
+ this.mat3[7] = value * this.mat3[8];
1516
+ },
1517
+ enumerable: true,
1518
+ configurable: true
1519
+ });
1520
+ Matrix2d.prototype.set = function (a, b, c, d, tx, ty) {
1521
+ var mat3 = this.mat3;
1522
+ mat3[0] = a;
1523
+ mat3[1] = b;
1524
+ mat3[2] = 0;
1525
+ mat3[3] = c;
1526
+ mat3[4] = d;
1527
+ mat3[5] = 0;
1528
+ mat3[6] = tx;
1529
+ mat3[7] = ty;
1530
+ mat3[8] = 1;
1531
+ return this;
1532
+ };
1533
+ Matrix2d.prototype.toArray = function (transpose, out) {
1534
+ if (!this.floatArray) {
1535
+ this.floatArray = new Float32Array(9);
1536
+ }
1537
+ var array = out || this.floatArray;
1538
+ var mat3 = this.mat3;
1539
+ if (transpose) {
1540
+ array[0] = mat3[0];
1541
+ array[1] = mat3[1];
1542
+ array[2] = mat3[2];
1543
+ array[3] = mat3[3];
1544
+ array[4] = mat3[4];
1545
+ array[5] = mat3[5];
1546
+ array[6] = mat3[6];
1547
+ array[7] = mat3[7];
1548
+ array[8] = mat3[8];
1549
+ }
1550
+ else {
1551
+ array[0] = mat3[0];
1552
+ array[1] = mat3[3];
1553
+ array[2] = mat3[6];
1554
+ array[3] = mat3[1];
1555
+ array[4] = mat3[4];
1556
+ array[5] = mat3[7];
1557
+ array[6] = mat3[2];
1558
+ array[7] = mat3[5];
1559
+ array[8] = mat3[8];
1560
+ }
1561
+ return array;
1562
+ };
1563
+ Matrix2d.prototype.apply = function (pos, newPos) {
1564
+ newPos = newPos || new PIXI.Point();
1565
+ var mat3 = this.mat3;
1566
+ var x = pos.x;
1567
+ var y = pos.y;
1568
+ var z = 1.0 / (mat3[2] * x + mat3[5] * y + mat3[8]);
1569
+ newPos.x = z * (mat3[0] * x + mat3[3] * y + mat3[6]);
1570
+ newPos.y = z * (mat3[1] * x + mat3[4] * y + mat3[7]);
1571
+ return newPos;
1572
+ };
1573
+ Matrix2d.prototype.translate = function (tx, ty) {
1574
+ var mat3 = this.mat3;
1575
+ mat3[0] += tx * mat3[2];
1576
+ mat3[1] += ty * mat3[2];
1577
+ mat3[3] += tx * mat3[5];
1578
+ mat3[4] += ty * mat3[5];
1579
+ mat3[6] += tx * mat3[8];
1580
+ mat3[7] += ty * mat3[8];
1581
+ return this;
1582
+ };
1583
+ Matrix2d.prototype.scale = function (x, y) {
1584
+ var mat3 = this.mat3;
1585
+ mat3[0] *= x;
1586
+ mat3[1] *= y;
1587
+ mat3[3] *= x;
1588
+ mat3[4] *= y;
1589
+ mat3[6] *= x;
1590
+ mat3[7] *= y;
1591
+ return this;
1592
+ };
1593
+ Matrix2d.prototype.scaleAndTranslate = function (scaleX, scaleY, tx, ty) {
1594
+ var mat3 = this.mat3;
1595
+ mat3[0] = scaleX * mat3[0] + tx * mat3[2];
1596
+ mat3[1] = scaleY * mat3[1] + ty * mat3[2];
1597
+ mat3[3] = scaleX * mat3[3] + tx * mat3[5];
1598
+ mat3[4] = scaleY * mat3[4] + ty * mat3[5];
1599
+ mat3[6] = scaleX * mat3[6] + tx * mat3[8];
1600
+ mat3[7] = scaleY * mat3[7] + ty * mat3[8];
1601
+ };
1602
+ Matrix2d.prototype.applyInverse = function (pos, newPos) {
1603
+ newPos = newPos || new Point();
1604
+ var a = this.mat3;
1605
+ var x = pos.x;
1606
+ var y = pos.y;
1607
+ var a00 = a[0], a01 = a[3], a02 = a[6], a10 = a[1], a11 = a[4], a12 = a[7], a20 = a[2], a21 = a[5], a22 = a[8];
1608
+ var newX = (a22 * a11 - a12 * a21) * x + (-a22 * a01 + a02 * a21) * y + (a12 * a01 - a02 * a11);
1609
+ var newY = (-a22 * a10 + a12 * a20) * x + (a22 * a00 - a02 * a20) * y + (-a12 * a00 + a02 * a10);
1610
+ var newZ = (a21 * a10 - a11 * a20) * x + (-a21 * a00 + a01 * a20) * y + (a11 * a00 - a01 * a10);
1611
+ newPos.x = newX / newZ;
1612
+ newPos.y = newY / newZ;
1613
+ return newPos;
1614
+ };
1615
+ Matrix2d.prototype.invert = function () {
1616
+ var a = this.mat3;
1617
+ var a00 = a[0], a01 = a[1], a02 = a[2], a10 = a[3], a11 = a[4], a12 = a[5], a20 = a[6], a21 = a[7], a22 = a[8], b01 = a22 * a11 - a12 * a21, b11 = -a22 * a10 + a12 * a20, b21 = a21 * a10 - a11 * a20;
1618
+ var det = a00 * b01 + a01 * b11 + a02 * b21;
1619
+ if (!det) {
1620
+ return this;
1621
+ }
1622
+ det = 1.0 / det;
1623
+ a[0] = b01 * det;
1624
+ a[1] = (-a22 * a01 + a02 * a21) * det;
1625
+ a[2] = (a12 * a01 - a02 * a11) * det;
1626
+ a[3] = b11 * det;
1627
+ a[4] = (a22 * a00 - a02 * a20) * det;
1628
+ a[5] = (-a12 * a00 + a02 * a10) * det;
1629
+ a[6] = b21 * det;
1630
+ a[7] = (-a21 * a00 + a01 * a20) * det;
1631
+ a[8] = (a11 * a00 - a01 * a10) * det;
1632
+ return this;
1633
+ };
1634
+ Matrix2d.prototype.identity = function () {
1635
+ var mat3 = this.mat3;
1636
+ mat3[0] = 1;
1637
+ mat3[1] = 0;
1638
+ mat3[2] = 0;
1639
+ mat3[3] = 0;
1640
+ mat3[4] = 1;
1641
+ mat3[5] = 0;
1642
+ mat3[6] = 0;
1643
+ mat3[7] = 0;
1644
+ mat3[8] = 1;
1645
+ return this;
1646
+ };
1647
+ Matrix2d.prototype.clone = function () {
1648
+ return new Matrix2d(this.mat3);
1649
+ };
1650
+ Matrix2d.prototype.copyTo = function (matrix) {
1651
+ var mat3 = this.mat3;
1652
+ var ar2 = matrix.mat3;
1653
+ ar2[0] = mat3[0];
1654
+ ar2[1] = mat3[1];
1655
+ ar2[2] = mat3[2];
1656
+ ar2[3] = mat3[3];
1657
+ ar2[4] = mat3[4];
1658
+ ar2[5] = mat3[5];
1659
+ ar2[6] = mat3[6];
1660
+ ar2[7] = mat3[7];
1661
+ ar2[8] = mat3[8];
1662
+ return matrix;
1663
+ };
1664
+ Matrix2d.prototype.copy = function (matrix, affine) {
1665
+ var mat3 = this.mat3;
1666
+ var d = 1.0 / mat3[8];
1667
+ var tx = mat3[6] * d, ty = mat3[7] * d;
1668
+ matrix.a = (mat3[0] - mat3[2] * tx) * d;
1669
+ matrix.b = (mat3[1] - mat3[2] * ty) * d;
1670
+ matrix.c = (mat3[3] - mat3[5] * tx) * d;
1671
+ matrix.d = (mat3[4] - mat3[5] * ty) * d;
1672
+ matrix.tx = tx;
1673
+ matrix.ty = ty;
1674
+ if (affine >= 2) {
1675
+ if (affine === AFFINE.POINT) {
1676
+ matrix.a = 1;
1677
+ matrix.b = 0;
1678
+ matrix.c = 0;
1679
+ matrix.d = 1;
1680
+ }
1681
+ else if (affine === AFFINE.AXIS_X) {
1682
+ matrix.c = -matrix.b;
1683
+ matrix.d = matrix.a;
1684
+ }
1685
+ else if (affine === AFFINE.AXIS_Y) {
1686
+ matrix.a = matrix.d;
1687
+ matrix.c = -matrix.b;
1688
+ }
1689
+ }
1690
+ };
1691
+ Matrix2d.prototype.copyFrom = function (matrix) {
1692
+ var mat3 = this.mat3;
1693
+ mat3[0] = matrix.a;
1694
+ mat3[1] = matrix.b;
1695
+ mat3[2] = 0;
1696
+ mat3[3] = matrix.c;
1697
+ mat3[4] = matrix.d;
1698
+ mat3[5] = 0;
1699
+ mat3[6] = matrix.tx;
1700
+ mat3[7] = matrix.ty;
1701
+ mat3[8] = 1.0;
1702
+ return this;
1703
+ };
1704
+ Matrix2d.prototype.setToMultLegacy = function (pt, lt) {
1705
+ var out = this.mat3;
1706
+ var b = lt.mat3;
1707
+ var a00 = pt.a, a01 = pt.b, a10 = pt.c, a11 = pt.d, a20 = pt.tx, a21 = pt.ty, b00 = b[0], b01 = b[1], b02 = b[2], b10 = b[3], b11 = b[4], b12 = b[5], b20 = b[6], b21 = b[7], b22 = b[8];
1708
+ out[0] = b00 * a00 + b01 * a10 + b02 * a20;
1709
+ out[1] = b00 * a01 + b01 * a11 + b02 * a21;
1710
+ out[2] = b02;
1711
+ out[3] = b10 * a00 + b11 * a10 + b12 * a20;
1712
+ out[4] = b10 * a01 + b11 * a11 + b12 * a21;
1713
+ out[5] = b12;
1714
+ out[6] = b20 * a00 + b21 * a10 + b22 * a20;
1715
+ out[7] = b20 * a01 + b21 * a11 + b22 * a21;
1716
+ out[8] = b22;
1717
+ return this;
1718
+ };
1719
+ Matrix2d.prototype.setToMultLegacy2 = function (pt, lt) {
1720
+ var out = this.mat3;
1721
+ var a = pt.mat3;
1722
+ var a00 = a[0], a01 = a[1], a02 = a[2], a10 = a[3], a11 = a[4], a12 = a[5], a20 = a[6], a21 = a[7], a22 = a[8], b00 = lt.a, b01 = lt.b, b10 = lt.c, b11 = lt.d, b20 = lt.tx, b21 = lt.ty;
1723
+ out[0] = b00 * a00 + b01 * a10;
1724
+ out[1] = b00 * a01 + b01 * a11;
1725
+ out[2] = b00 * a02 + b01 * a12;
1726
+ out[3] = b10 * a00 + b11 * a10;
1727
+ out[4] = b10 * a01 + b11 * a11;
1728
+ out[5] = b10 * a02 + b11 * a12;
1729
+ out[6] = b20 * a00 + b21 * a10 + a20;
1730
+ out[7] = b20 * a01 + b21 * a11 + a21;
1731
+ out[8] = b20 * a02 + b21 * a12 + a22;
1732
+ return this;
1733
+ };
1734
+ Matrix2d.prototype.setToMult = function (pt, lt) {
1735
+ var out = this.mat3;
1736
+ var a = pt.mat3, b = lt.mat3;
1737
+ var a00 = a[0], a01 = a[1], a02 = a[2], a10 = a[3], a11 = a[4], a12 = a[5], a20 = a[6], a21 = a[7], a22 = a[8], b00 = b[0], b01 = b[1], b02 = b[2], b10 = b[3], b11 = b[4], b12 = b[5], b20 = b[6], b21 = b[7], b22 = b[8];
1738
+ out[0] = b00 * a00 + b01 * a10 + b02 * a20;
1739
+ out[1] = b00 * a01 + b01 * a11 + b02 * a21;
1740
+ out[2] = b00 * a02 + b01 * a12 + b02 * a22;
1741
+ out[3] = b10 * a00 + b11 * a10 + b12 * a20;
1742
+ out[4] = b10 * a01 + b11 * a11 + b12 * a21;
1743
+ out[5] = b10 * a02 + b11 * a12 + b12 * a22;
1744
+ out[6] = b20 * a00 + b21 * a10 + b22 * a20;
1745
+ out[7] = b20 * a01 + b21 * a11 + b22 * a21;
1746
+ out[8] = b20 * a02 + b21 * a12 + b22 * a22;
1747
+ return this;
1748
+ };
1749
+ Matrix2d.prototype.prepend = function (lt) {
1750
+ if (lt.mat3) {
1751
+ this.setToMult(lt, this);
1752
+ }
1753
+ else {
1754
+ this.setToMultLegacy(lt, this);
1755
+ }
1756
+ };
1757
+ Matrix2d.IDENTITY = new Matrix2d();
1758
+ Matrix2d.TEMP_MATRIX = new Matrix2d();
1759
+ return Matrix2d;
1760
+ }());
1761
+ pixi_projection.Matrix2d = Matrix2d;
1762
+ })(pixi_projection || (pixi_projection = {}));
1763
+ var pixi_projection;
1764
+ (function (pixi_projection) {
1765
+ var t0 = new PIXI.Point();
1766
+ var tt = [new PIXI.Point(), new PIXI.Point(), new PIXI.Point(), new PIXI.Point()];
1767
+ var tempRect = new PIXI.Rectangle();
1768
+ var tempMat = new pixi_projection.Matrix2d();
1769
+ var Projection2d = (function (_super) {
1770
+ __extends(Projection2d, _super);
1771
+ function Projection2d(legacy, enable) {
1772
+ var _this = _super.call(this, legacy, enable) || this;
1773
+ _this.matrix = new pixi_projection.Matrix2d();
1774
+ _this.pivot = new PIXI.ObservablePoint(_this.onChange, _this, 0, 0);
1775
+ _this.reverseLocalOrder = false;
1776
+ _this.local = new pixi_projection.Matrix2d();
1777
+ _this.world = new pixi_projection.Matrix2d();
1778
+ return _this;
1779
+ }
1780
+ Projection2d.prototype.onChange = function () {
1781
+ var pivot = this.pivot;
1782
+ var mat3 = this.matrix.mat3;
1783
+ mat3[6] = -(pivot._x * mat3[0] + pivot._y * mat3[3]);
1784
+ mat3[7] = -(pivot._x * mat3[1] + pivot._y * mat3[4]);
1785
+ this._projID++;
1786
+ };
1787
+ Projection2d.prototype.setAxisX = function (p, factor) {
1788
+ if (factor === void 0) { factor = 1; }
1789
+ var x = p.x, y = p.y;
1790
+ var d = Math.sqrt(x * x + y * y);
1791
+ var mat3 = this.matrix.mat3;
1792
+ mat3[0] = x / d;
1793
+ mat3[1] = y / d;
1794
+ mat3[2] = factor / d;
1795
+ this.onChange();
1796
+ };
1797
+ Projection2d.prototype.setAxisY = function (p, factor) {
1798
+ if (factor === void 0) { factor = 1; }
1799
+ var x = p.x, y = p.y;
1800
+ var d = Math.sqrt(x * x + y * y);
1801
+ var mat3 = this.matrix.mat3;
1802
+ mat3[3] = x / d;
1803
+ mat3[4] = y / d;
1804
+ mat3[5] = factor / d;
1805
+ this.onChange();
1806
+ };
1807
+ Projection2d.prototype.mapSprite = function (sprite, quad) {
1808
+ var tex = sprite.texture;
1809
+ tempRect.x = -sprite.anchor.x * tex.orig.width;
1810
+ tempRect.y = -sprite.anchor.y * tex.orig.height;
1811
+ tempRect.width = tex.orig.width;
1812
+ tempRect.height = tex.orig.height;
1813
+ return this.mapQuad(tempRect, quad);
1814
+ };
1815
+ Projection2d.prototype.mapQuad = function (rect, p) {
1816
+ tt[0].set(rect.x, rect.y);
1817
+ tt[1].set(rect.x + rect.width, rect.y);
1818
+ tt[2].set(rect.x + rect.width, rect.y + rect.height);
1819
+ tt[3].set(rect.x, rect.y + rect.height);
1820
+ var k1 = 1, k2 = 2, k3 = 3;
1821
+ var f = pixi_projection.utils.getIntersectionFactor(p[0], p[2], p[1], p[3], t0);
1822
+ if (f !== 0) {
1823
+ k1 = 1;
1824
+ k2 = 3;
1825
+ k3 = 2;
1826
+ }
1827
+ else {
1828
+ return;
1829
+ }
1830
+ var d0 = Math.sqrt((p[0].x - t0.x) * (p[0].x - t0.x) + (p[0].y - t0.y) * (p[0].y - t0.y));
1831
+ var d1 = Math.sqrt((p[k1].x - t0.x) * (p[k1].x - t0.x) + (p[k1].y - t0.y) * (p[k1].y - t0.y));
1832
+ var d2 = Math.sqrt((p[k2].x - t0.x) * (p[k2].x - t0.x) + (p[k2].y - t0.y) * (p[k2].y - t0.y));
1833
+ var d3 = Math.sqrt((p[k3].x - t0.x) * (p[k3].x - t0.x) + (p[k3].y - t0.y) * (p[k3].y - t0.y));
1834
+ var q0 = (d0 + d3) / d3;
1835
+ var q1 = (d1 + d2) / d2;
1836
+ var q2 = (d1 + d2) / d1;
1837
+ var mat3 = this.matrix.mat3;
1838
+ mat3[0] = tt[0].x * q0;
1839
+ mat3[1] = tt[0].y * q0;
1840
+ mat3[2] = q0;
1841
+ mat3[3] = tt[k1].x * q1;
1842
+ mat3[4] = tt[k1].y * q1;
1843
+ mat3[5] = q1;
1844
+ mat3[6] = tt[k2].x * q2;
1845
+ mat3[7] = tt[k2].y * q2;
1846
+ mat3[8] = q2;
1847
+ this.matrix.invert();
1848
+ mat3 = tempMat.mat3;
1849
+ mat3[0] = p[0].x;
1850
+ mat3[1] = p[0].y;
1851
+ mat3[2] = 1;
1852
+ mat3[3] = p[k1].x;
1853
+ mat3[4] = p[k1].y;
1854
+ mat3[5] = 1;
1855
+ mat3[6] = p[k2].x;
1856
+ mat3[7] = p[k2].y;
1857
+ mat3[8] = 1;
1858
+ this.matrix.setToMult(tempMat, this.matrix);
1859
+ this._projID++;
1860
+ };
1861
+ Projection2d.prototype.updateLocalTransform = function (lt) {
1862
+ if (this._projID !== 0) {
1863
+ if (this.reverseLocalOrder) {
1864
+ this.local.setToMultLegacy2(this.matrix, lt);
1865
+ }
1866
+ else {
1867
+ this.local.setToMultLegacy(lt, this.matrix);
1868
+ }
1869
+ }
1870
+ else {
1871
+ this.local.copyFrom(lt);
1872
+ }
1873
+ };
1874
+ Projection2d.prototype.clear = function () {
1875
+ _super.prototype.clear.call(this);
1876
+ this.matrix.identity();
1877
+ this.pivot.set(0, 0);
1878
+ };
1879
+ return Projection2d;
1880
+ }(pixi_projection.LinearProjection));
1881
+ pixi_projection.Projection2d = Projection2d;
1882
+ })(pixi_projection || (pixi_projection = {}));
1883
+ var pixi_projection;
1884
+ (function (pixi_projection) {
1885
+ var Mesh2d = (function (_super) {
1886
+ __extends(Mesh2d, _super);
1887
+ function Mesh2d(texture, vertices, uvs, indices, drawMode) {
1888
+ var _this = _super.call(this, texture, vertices, uvs, indices, drawMode) || this;
1889
+ _this.proj = new pixi_projection.Projection2d(_this.transform);
1890
+ _this.pluginName = 'mesh2d';
1891
+ return _this;
1892
+ }
1893
+ Mesh2d.prototype.toLocal = function (position, from, point, skipUpdate, step) {
1894
+ if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; }
1895
+ return pixi_projection.container2dToLocal.call(this, position, from, point, skipUpdate, step);
1896
+ };
1897
+ Object.defineProperty(Mesh2d.prototype, "worldTransform", {
1898
+ get: function () {
1899
+ return this.proj.affine ? this.transform.worldTransform : this.proj.world;
1900
+ },
1901
+ enumerable: true,
1902
+ configurable: true
1903
+ });
1904
+ return Mesh2d;
1905
+ }(PIXI.mesh.Mesh));
1906
+ pixi_projection.Mesh2d = Mesh2d;
1907
+ })(pixi_projection || (pixi_projection = {}));
1908
+ var pixi_projection;
1909
+ (function (pixi_projection) {
1910
+ var shaderVert = "precision highp float;\nattribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 translationMatrix;\nuniform mat3 uTransform;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position.xyw = projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0);\n gl_Position.z = 0.0;\n\n vTextureCoord = (uTransform * vec3(aTextureCoord, 1.0)).xy;\n}\n";
1911
+ var shaderFrag = "\nvarying vec2 vTextureCoord;\nuniform vec4 uColor;\n\nuniform sampler2D uSampler;\n\nvoid main(void)\n{\n gl_FragColor = texture2D(uSampler, vTextureCoord) * uColor;\n}";
1912
+ var Mesh2dRenderer = (function (_super) {
1913
+ __extends(Mesh2dRenderer, _super);
1914
+ function Mesh2dRenderer() {
1915
+ return _super !== null && _super.apply(this, arguments) || this;
1916
+ }
1917
+ Mesh2dRenderer.prototype.onContextChange = function () {
1918
+ var gl = this.renderer.gl;
1919
+ this.shader = new PIXI.Shader(gl, shaderVert, shaderFrag);
1920
+ };
1921
+ return Mesh2dRenderer;
1922
+ }(PIXI.mesh.MeshRenderer));
1923
+ pixi_projection.Mesh2dRenderer = Mesh2dRenderer;
1924
+ PIXI.WebGLRenderer.registerPlugin('mesh2d', Mesh2dRenderer);
1925
+ })(pixi_projection || (pixi_projection = {}));
1926
+ var pixi_projection;
1927
+ (function (pixi_projection) {
1928
+ var Sprite2d = (function (_super) {
1929
+ __extends(Sprite2d, _super);
1930
+ function Sprite2d(texture) {
1931
+ var _this = _super.call(this, texture) || this;
1932
+ _this.proj = new pixi_projection.Projection2d(_this.transform);
1933
+ _this.pluginName = 'sprite2d';
1934
+ _this.vertexData = new Float32Array(12);
1935
+ return _this;
1936
+ }
1937
+ Sprite2d.prototype._calculateBounds = function () {
1938
+ this.calculateTrimmedVertices();
1939
+ this._bounds.addQuad(this.vertexTrimmedData);
1940
+ };
1941
+ Sprite2d.prototype.calculateVertices = function () {
1942
+ if (this.proj._affine) {
1943
+ if (this.vertexData.length != 8) {
1944
+ this.vertexData = new Float32Array(8);
1945
+ }
1946
+ _super.prototype.calculateVertices.call(this);
1947
+ return;
1948
+ }
1949
+ if (this.vertexData.length != 12) {
1950
+ this.vertexData = new Float32Array(12);
1951
+ }
1952
+ var wid = this.transform._worldID;
1953
+ var tuid = this._texture._updateID;
1954
+ if (this._transformID === wid && this._textureID === tuid) {
1955
+ return;
1956
+ }
1957
+ this._transformID = wid;
1958
+ this._textureID = tuid;
1959
+ var texture = this._texture;
1960
+ var wt = this.proj.world.mat3;
1961
+ var vertexData = this.vertexData;
1962
+ var trim = texture.trim;
1963
+ var orig = texture.orig;
1964
+ var anchor = this._anchor;
1965
+ var w0 = 0;
1966
+ var w1 = 0;
1967
+ var h0 = 0;
1968
+ var h1 = 0;
1969
+ if (trim) {
1970
+ w1 = trim.x - (anchor._x * orig.width);
1971
+ w0 = w1 + trim.width;
1972
+ h1 = trim.y - (anchor._y * orig.height);
1973
+ h0 = h1 + trim.height;
1974
+ }
1975
+ else {
1976
+ w1 = -anchor._x * orig.width;
1977
+ w0 = w1 + orig.width;
1978
+ h1 = -anchor._y * orig.height;
1979
+ h0 = h1 + orig.height;
1980
+ }
1981
+ vertexData[0] = (wt[0] * w1) + (wt[3] * h1) + wt[6];
1982
+ vertexData[1] = (wt[1] * w1) + (wt[4] * h1) + wt[7];
1983
+ vertexData[2] = (wt[2] * w1) + (wt[5] * h1) + wt[8];
1984
+ vertexData[3] = (wt[0] * w0) + (wt[3] * h1) + wt[6];
1985
+ vertexData[4] = (wt[1] * w0) + (wt[4] * h1) + wt[7];
1986
+ vertexData[5] = (wt[2] * w0) + (wt[5] * h1) + wt[8];
1987
+ vertexData[6] = (wt[0] * w0) + (wt[3] * h0) + wt[6];
1988
+ vertexData[7] = (wt[1] * w0) + (wt[4] * h0) + wt[7];
1989
+ vertexData[8] = (wt[2] * w0) + (wt[5] * h0) + wt[8];
1990
+ vertexData[9] = (wt[0] * w1) + (wt[3] * h0) + wt[6];
1991
+ vertexData[10] = (wt[1] * w1) + (wt[4] * h0) + wt[7];
1992
+ vertexData[11] = (wt[2] * w1) + (wt[5] * h0) + wt[8];
1993
+ };
1994
+ Sprite2d.prototype.calculateTrimmedVertices = function () {
1995
+ if (this.proj._affine) {
1996
+ _super.prototype.calculateTrimmedVertices.call(this);
1997
+ return;
1998
+ }
1999
+ var wid = this.transform._worldID;
2000
+ var tuid = this._texture._updateID;
2001
+ if (!this.vertexTrimmedData) {
2002
+ this.vertexTrimmedData = new Float32Array(8);
2003
+ }
2004
+ else if (this._transformTrimmedID === wid && this._textureTrimmedID === tuid) {
2005
+ return;
2006
+ }
2007
+ this._transformTrimmedID = wid;
2008
+ this._textureTrimmedID = tuid;
2009
+ var texture = this._texture;
2010
+ var vertexData = this.vertexTrimmedData;
2011
+ var orig = texture.orig;
2012
+ var anchor = this._anchor;
2013
+ var wt = this.proj.world.mat3;
2014
+ var w1 = -anchor._x * orig.width;
2015
+ var w0 = w1 + orig.width;
2016
+ var h1 = -anchor._y * orig.height;
2017
+ var h0 = h1 + orig.height;
2018
+ var z = 1.0 / (wt[2] * w1 + wt[5] * h1 + wt[8]);
2019
+ vertexData[0] = z * ((wt[0] * w1) + (wt[3] * h1) + wt[6]);
2020
+ vertexData[1] = z * ((wt[1] * w1) + (wt[4] * h1) + wt[7]);
2021
+ z = 1.0 / (wt[2] * w0 + wt[5] * h1 + wt[8]);
2022
+ vertexData[2] = z * ((wt[0] * w0) + (wt[3] * h1) + wt[6]);
2023
+ vertexData[3] = z * ((wt[1] * w0) + (wt[4] * h1) + wt[7]);
2024
+ z = 1.0 / (wt[2] * w0 + wt[5] * h0 + wt[8]);
2025
+ vertexData[4] = z * ((wt[0] * w0) + (wt[3] * h0) + wt[6]);
2026
+ vertexData[5] = z * ((wt[1] * w0) + (wt[4] * h0) + wt[7]);
2027
+ z = 1.0 / (wt[2] * w1 + wt[5] * h0 + wt[8]);
2028
+ vertexData[6] = z * ((wt[0] * w1) + (wt[3] * h0) + wt[6]);
2029
+ vertexData[7] = z * ((wt[1] * w1) + (wt[4] * h0) + wt[7]);
2030
+ };
2031
+ Sprite2d.prototype.toLocal = function (position, from, point, skipUpdate, step) {
2032
+ if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; }
2033
+ return pixi_projection.container2dToLocal.call(this, position, from, point, skipUpdate, step);
2034
+ };
2035
+ Object.defineProperty(Sprite2d.prototype, "worldTransform", {
2036
+ get: function () {
2037
+ return this.proj.affine ? this.transform.worldTransform : this.proj.world;
2038
+ },
2039
+ enumerable: true,
2040
+ configurable: true
2041
+ });
2042
+ return Sprite2d;
2043
+ }(PIXI.Sprite));
2044
+ pixi_projection.Sprite2d = Sprite2d;
2045
+ })(pixi_projection || (pixi_projection = {}));
2046
+ var pixi_projection;
2047
+ (function (pixi_projection) {
2048
+ var MultiTextureSpriteRenderer = pixi_projection.webgl.MultiTextureSpriteRenderer;
2049
+ var Sprite2dRenderer = (function (_super) {
2050
+ __extends(Sprite2dRenderer, _super);
2051
+ function Sprite2dRenderer() {
2052
+ var _this = _super !== null && _super.apply(this, arguments) || this;
2053
+ _this.shaderVert = "precision highp float;\nattribute vec3 aVertexPosition;\nattribute vec2 aTextureCoord;\nattribute vec4 aColor;\nattribute float aTextureId;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\nvarying float vTextureId;\n\nvoid main(void){\n gl_Position.xyw = projectionMatrix * aVertexPosition;\n gl_Position.z = 0.0;\n \n vTextureCoord = aTextureCoord;\n vTextureId = aTextureId;\n vColor = aColor;\n}\n";
2054
+ _this.shaderFrag = "\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\nvarying float vTextureId;\nuniform sampler2D uSamplers[%count%];\n\nvoid main(void){\nvec4 color;\nvec2 textureCoord = vTextureCoord;\nfloat textureId = floor(vTextureId+0.5);\n%forloop%\ngl_FragColor = color * vColor;\n}";
2055
+ return _this;
2056
+ }
2057
+ Sprite2dRenderer.prototype.createVao = function (vertexBuffer) {
2058
+ var attrs = this.shader.attributes;
2059
+ this.vertSize = 6;
2060
+ this.vertByteSize = this.vertSize * 4;
2061
+ var gl = this.renderer.gl;
2062
+ var vao = this.renderer.createVao()
2063
+ .addIndex(this.indexBuffer)
2064
+ .addAttribute(vertexBuffer, attrs.aVertexPosition, gl.FLOAT, false, this.vertByteSize, 0)
2065
+ .addAttribute(vertexBuffer, attrs.aTextureCoord, gl.UNSIGNED_SHORT, true, this.vertByteSize, 3 * 4)
2066
+ .addAttribute(vertexBuffer, attrs.aColor, gl.UNSIGNED_BYTE, true, this.vertByteSize, 4 * 4);
2067
+ if (attrs.aTextureId) {
2068
+ vao.addAttribute(vertexBuffer, attrs.aTextureId, gl.FLOAT, false, this.vertByteSize, 5 * 4);
2069
+ }
2070
+ return vao;
2071
+ };
2072
+ Sprite2dRenderer.prototype.fillVertices = function (float32View, uint32View, index, sprite, argb, textureId) {
2073
+ var vertexData = sprite.vertexData;
2074
+ var uvs = sprite._texture._uvs.uvsUint32;
2075
+ if (vertexData.length === 8) {
2076
+ if (this.renderer.roundPixels) {
2077
+ var resolution = this.renderer.resolution;
2078
+ float32View[index] = ((vertexData[0] * resolution) | 0) / resolution;
2079
+ float32View[index + 1] = ((vertexData[1] * resolution) | 0) / resolution;
2080
+ float32View[index + 2] = 1.0;
2081
+ float32View[index + 6] = ((vertexData[2] * resolution) | 0) / resolution;
2082
+ float32View[index + 7] = ((vertexData[3] * resolution) | 0) / resolution;
2083
+ float32View[index + 8] = 1.0;
2084
+ float32View[index + 12] = ((vertexData[4] * resolution) | 0) / resolution;
2085
+ float32View[index + 13] = ((vertexData[5] * resolution) | 0) / resolution;
2086
+ float32View[index + 14] = 1.0;
2087
+ float32View[index + 18] = ((vertexData[6] * resolution) | 0) / resolution;
2088
+ float32View[index + 19] = ((vertexData[7] * resolution) | 0) / resolution;
2089
+ float32View[index + 20] = 1.0;
2090
+ }
2091
+ else {
2092
+ float32View[index] = vertexData[0];
2093
+ float32View[index + 1] = vertexData[1];
2094
+ float32View[index + 2] = 1.0;
2095
+ float32View[index + 6] = vertexData[2];
2096
+ float32View[index + 7] = vertexData[3];
2097
+ float32View[index + 8] = 1.0;
2098
+ float32View[index + 12] = vertexData[4];
2099
+ float32View[index + 13] = vertexData[5];
2100
+ float32View[index + 14] = 1.0;
2101
+ float32View[index + 18] = vertexData[6];
2102
+ float32View[index + 19] = vertexData[7];
2103
+ float32View[index + 20] = 1.0;
2104
+ }
2105
+ }
2106
+ else {
2107
+ float32View[index] = vertexData[0];
2108
+ float32View[index + 1] = vertexData[1];
2109
+ float32View[index + 2] = vertexData[2];
2110
+ float32View[index + 6] = vertexData[3];
2111
+ float32View[index + 7] = vertexData[4];
2112
+ float32View[index + 8] = vertexData[5];
2113
+ float32View[index + 12] = vertexData[6];
2114
+ float32View[index + 13] = vertexData[7];
2115
+ float32View[index + 14] = vertexData[8];
2116
+ float32View[index + 18] = vertexData[9];
2117
+ float32View[index + 19] = vertexData[10];
2118
+ float32View[index + 20] = vertexData[11];
2119
+ }
2120
+ uint32View[index + 3] = uvs[0];
2121
+ uint32View[index + 9] = uvs[1];
2122
+ uint32View[index + 15] = uvs[2];
2123
+ uint32View[index + 21] = uvs[3];
2124
+ uint32View[index + 4] = uint32View[index + 10] = uint32View[index + 16] = uint32View[index + 22] = argb;
2125
+ float32View[index + 5] = float32View[index + 11] = float32View[index + 17] = float32View[index + 23] = textureId;
2126
+ };
2127
+ return Sprite2dRenderer;
2128
+ }(MultiTextureSpriteRenderer));
2129
+ PIXI.WebGLRenderer.registerPlugin('sprite2d', Sprite2dRenderer);
2130
+ })(pixi_projection || (pixi_projection = {}));
2131
+ var pixi_projection;
2132
+ (function (pixi_projection) {
2133
+ var Text2d = (function (_super) {
2134
+ __extends(Text2d, _super);
2135
+ function Text2d(text, style, canvas) {
2136
+ var _this = _super.call(this, text, style, canvas) || this;
2137
+ _this.proj = new pixi_projection.Projection2d(_this.transform);
2138
+ _this.pluginName = 'sprite2d';
2139
+ _this.vertexData = new Float32Array(12);
2140
+ return _this;
2141
+ }
2142
+ Object.defineProperty(Text2d.prototype, "worldTransform", {
2143
+ get: function () {
2144
+ return this.proj.affine ? this.transform.worldTransform : this.proj.world;
2145
+ },
2146
+ enumerable: true,
2147
+ configurable: true
2148
+ });
2149
+ return Text2d;
2150
+ }(PIXI.Text));
2151
+ pixi_projection.Text2d = Text2d;
2152
+ Text2d.prototype.calculateVertices = pixi_projection.Sprite2d.prototype.calculateVertices;
2153
+ Text2d.prototype.calculateTrimmedVertices = pixi_projection.Sprite2d.prototype.calculateTrimmedVertices;
2154
+ Text2d.prototype._calculateBounds = pixi_projection.Sprite2d.prototype._calculateBounds;
2155
+ })(pixi_projection || (pixi_projection = {}));
2156
+ var pixi_projection;
2157
+ (function (pixi_projection) {
2158
+ function convertTo2d() {
2159
+ if (this.proj)
2160
+ return;
2161
+ this.proj = new pixi_projection.Projection2d(this.transform);
2162
+ this.toLocal = pixi_projection.Container2d.prototype.toLocal;
2163
+ Object.defineProperty(this, "worldTransform", {
2164
+ get: pixi_projection.container2dWorldTransform,
2165
+ enumerable: true,
2166
+ configurable: true
2167
+ });
2168
+ }
2169
+ PIXI.Container.prototype.convertTo2d = convertTo2d;
2170
+ PIXI.Sprite.prototype.convertTo2d = function () {
2171
+ if (this.proj)
2172
+ return;
2173
+ this.calculateVertices = pixi_projection.Sprite2d.prototype.calculateVertices;
2174
+ this.calculateTrimmedVertices = pixi_projection.Sprite2d.prototype.calculateTrimmedVertices;
2175
+ this._calculateBounds = pixi_projection.Sprite2d.prototype._calculateBounds;
2176
+ this.pluginName = 'sprite2d';
2177
+ this.vertexData = new Float32Array(12);
2178
+ convertTo2d.call(this);
2179
+ };
2180
+ PIXI.mesh.Mesh.prototype.convertTo2d = function () {
2181
+ if (this.proj)
2182
+ return;
2183
+ this.pluginName = 'mesh2d';
2184
+ convertTo2d.call(this);
2185
+ };
2186
+ PIXI.Container.prototype.convertSubtreeTo2d = function () {
2187
+ this.convertTo2d();
2188
+ for (var i = 0; i < this.children.length; i++) {
2189
+ this.children[i].convertSubtreeTo2d();
2190
+ }
2191
+ };
2192
+ })(pixi_projection || (pixi_projection = {}));
2193
+ var pixi_projection;
2194
+ (function (pixi_projection) {
2195
+ var tempTransform = new PIXI.TransformStatic();
2196
+ var TilingSprite2d = (function (_super) {
2197
+ __extends(TilingSprite2d, _super);
2198
+ function TilingSprite2d(texture, width, height) {
2199
+ var _this = _super.call(this, texture, width, height) || this;
2200
+ _this.tileProj = new pixi_projection.Projection2d(_this.tileTransform);
2201
+ _this.tileProj.reverseLocalOrder = true;
2202
+ _this.proj = new pixi_projection.Projection2d(_this.transform);
2203
+ _this.pluginName = 'tilingSprite2d';
2204
+ _this.uvRespectAnchor = true;
2205
+ return _this;
2206
+ }
2207
+ Object.defineProperty(TilingSprite2d.prototype, "worldTransform", {
2208
+ get: function () {
2209
+ return this.proj.affine ? this.transform.worldTransform : this.proj.world;
2210
+ },
2211
+ enumerable: true,
2212
+ configurable: true
2213
+ });
2214
+ TilingSprite2d.prototype.toLocal = function (position, from, point, skipUpdate, step) {
2215
+ if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; }
2216
+ return pixi_projection.container2dToLocal.call(this, position, from, point, skipUpdate, step);
2217
+ };
2218
+ TilingSprite2d.prototype._renderWebGL = function (renderer) {
2219
+ var texture = this._texture;
2220
+ if (!texture || !texture.valid) {
2221
+ return;
2222
+ }
2223
+ this.tileTransform.updateTransform(tempTransform);
2224
+ this.uvTransform.update();
2225
+ renderer.setObjectRenderer(renderer.plugins[this.pluginName]);
2226
+ renderer.plugins[this.pluginName].render(this);
2227
+ };
2228
+ return TilingSprite2d;
2229
+ }(PIXI.extras.TilingSprite));
2230
+ pixi_projection.TilingSprite2d = TilingSprite2d;
2231
+ })(pixi_projection || (pixi_projection = {}));
2232
+ var pixi_projection;
2233
+ (function (pixi_projection) {
2234
+ var shaderVert = "attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 translationMatrix;\nuniform mat3 uTransform;\n\nvarying vec3 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position.xyw = projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0);\n\n vTextureCoord = uTransform * vec3(aTextureCoord, 1.0);\n}\n";
2235
+ var shaderFrag = "\nvarying vec3 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform vec4 uColor;\nuniform mat3 uMapCoord;\nuniform vec4 uClampFrame;\nuniform vec2 uClampOffset;\n\nvoid main(void)\n{\n vec2 coord = mod(vTextureCoord.xy / vTextureCoord.z - uClampOffset, vec2(1.0, 1.0)) + uClampOffset;\n coord = (uMapCoord * vec3(coord, 1.0)).xy;\n coord = clamp(coord, uClampFrame.xy, uClampFrame.zw);\n\n vec4 sample = texture2D(uSampler, coord);\n gl_FragColor = sample * uColor;\n}\n";
2236
+ var shaderSimpleFrag = "\n\tvarying vec3 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform vec4 uColor;\n\nvoid main(void)\n{\n vec4 sample = texture2D(uSampler, vTextureCoord.xy / vTextureCoord.z);\n gl_FragColor = sample * uColor;\n}\n";
2237
+ var tempMat = new pixi_projection.Matrix2d();
2238
+ var WRAP_MODES = PIXI.WRAP_MODES;
2239
+ var utils = PIXI.utils;
2240
+ var TilingSprite2dRenderer = (function (_super) {
2241
+ __extends(TilingSprite2dRenderer, _super);
2242
+ function TilingSprite2dRenderer() {
2243
+ return _super !== null && _super.apply(this, arguments) || this;
2244
+ }
2245
+ TilingSprite2dRenderer.prototype.onContextChange = function () {
2246
+ var gl = this.renderer.gl;
2247
+ this.shader = new PIXI.Shader(gl, shaderVert, shaderFrag);
2248
+ this.simpleShader = new PIXI.Shader(gl, shaderVert, shaderSimpleFrag);
2249
+ this.renderer.bindVao(null);
2250
+ this.quad = new PIXI.Quad(gl, this.renderer.state.attribState);
2251
+ this.quad.initVao(this.shader);
2252
+ };
2253
+ TilingSprite2dRenderer.prototype.render = function (ts) {
2254
+ var renderer = this.renderer;
2255
+ var quad = this.quad;
2256
+ renderer.bindVao(quad.vao);
2257
+ var vertices = quad.vertices;
2258
+ vertices[0] = vertices[6] = (ts._width) * -ts.anchor.x;
2259
+ vertices[1] = vertices[3] = ts._height * -ts.anchor.y;
2260
+ vertices[2] = vertices[4] = (ts._width) * (1.0 - ts.anchor.x);
2261
+ vertices[5] = vertices[7] = ts._height * (1.0 - ts.anchor.y);
2262
+ if (ts.uvRespectAnchor) {
2263
+ vertices = quad.uvs;
2264
+ vertices[0] = vertices[6] = -ts.anchor.x;
2265
+ vertices[1] = vertices[3] = -ts.anchor.y;
2266
+ vertices[2] = vertices[4] = 1.0 - ts.anchor.x;
2267
+ vertices[5] = vertices[7] = 1.0 - ts.anchor.y;
2268
+ }
2269
+ quad.upload();
2270
+ var tex = ts._texture;
2271
+ var baseTex = tex.baseTexture;
2272
+ var lt = ts.tileProj.world;
2273
+ var uv = ts.uvTransform;
2274
+ var isSimple = baseTex.isPowerOfTwo
2275
+ && tex.frame.width === baseTex.width && tex.frame.height === baseTex.height;
2276
+ if (isSimple) {
2277
+ if (!baseTex._glTextures[renderer.CONTEXT_UID]) {
2278
+ if (baseTex.wrapMode === WRAP_MODES.CLAMP) {
2279
+ baseTex.wrapMode = WRAP_MODES.REPEAT;
2280
+ }
2281
+ }
2282
+ else {
2283
+ isSimple = baseTex.wrapMode !== WRAP_MODES.CLAMP;
2284
+ }
2285
+ }
2286
+ var shader = isSimple ? this.simpleShader : this.shader;
2287
+ renderer.bindShader(shader);
2288
+ tempMat.identity();
2289
+ tempMat.scale(tex.width, tex.height);
2290
+ tempMat.prepend(lt);
2291
+ tempMat.scale(1.0 / ts._width, 1.0 / ts._height);
2292
+ tempMat.invert();
2293
+ if (isSimple) {
2294
+ tempMat.prepend(uv.mapCoord);
2295
+ }
2296
+ else {
2297
+ shader.uniforms.uMapCoord = uv.mapCoord.toArray(true);
2298
+ shader.uniforms.uClampFrame = uv.uClampFrame;
2299
+ shader.uniforms.uClampOffset = uv.uClampOffset;
2300
+ }
2301
+ shader.uniforms.uTransform = tempMat.toArray(true);
2302
+ shader.uniforms.uColor = utils.premultiplyTintToRgba(ts.tint, ts.worldAlpha, shader.uniforms.uColor, baseTex.premultipliedAlpha);
2303
+ shader.uniforms.translationMatrix = ts.proj.world.toArray(true);
2304
+ shader.uniforms.uSampler = renderer.bindTexture(tex);
2305
+ renderer.setBlendMode(utils.correctBlendMode(ts.blendMode, baseTex.premultipliedAlpha));
2306
+ quad.vao.draw(this.renderer.gl.TRIANGLES, 6, 0);
2307
+ };
2308
+ return TilingSprite2dRenderer;
2309
+ }(PIXI.extras.TilingSpriteRenderer));
2310
+ pixi_projection.TilingSprite2dRenderer = TilingSprite2dRenderer;
2311
+ PIXI.WebGLRenderer.registerPlugin('tilingSprite2d', TilingSprite2dRenderer);
2312
+ })(pixi_projection || (pixi_projection = {}));
2313
+ var pixi_projection;
2314
+ (function (pixi_projection) {
2315
+ var ProjectionsManager = (function () {
2316
+ function ProjectionsManager(renderer) {
2317
+ var _this = this;
2318
+ this.onContextChange = function (gl) {
2319
+ _this.gl = gl;
2320
+ _this.renderer.maskManager.pushSpriteMask = pushSpriteMask;
2321
+ };
2322
+ this.renderer = renderer;
2323
+ renderer.on('context', this.onContextChange);
2324
+ }
2325
+ ProjectionsManager.prototype.destroy = function () {
2326
+ this.renderer.off('context', this.onContextChange);
2327
+ };
2328
+ return ProjectionsManager;
2329
+ }());
2330
+ pixi_projection.ProjectionsManager = ProjectionsManager;
2331
+ function pushSpriteMask(target, maskData) {
2332
+ var alphaMaskFilter = this.alphaMaskPool[this.alphaMaskIndex];
2333
+ if (!alphaMaskFilter) {
2334
+ alphaMaskFilter = this.alphaMaskPool[this.alphaMaskIndex] = [new pixi_projection.SpriteMaskFilter2d(maskData)];
2335
+ }
2336
+ alphaMaskFilter[0].resolution = this.renderer.resolution;
2337
+ alphaMaskFilter[0].maskSprite = maskData;
2338
+ target.filterArea = maskData.getBounds(true);
2339
+ this.renderer.filterManager.pushFilter(target, alphaMaskFilter);
2340
+ this.alphaMaskIndex++;
2341
+ }
2342
+ PIXI.WebGLRenderer.registerPlugin('projections', ProjectionsManager);
2343
+ })(pixi_projection || (pixi_projection = {}));
2344
+ var pixi_projection;
2345
+ (function (pixi_projection) {
2346
+ var spriteMaskVert = "\nattribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 otherMatrix;\n\nvarying vec3 vMaskCoord;\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n\tgl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n\n\tvTextureCoord = aTextureCoord;\n\tvMaskCoord = otherMatrix * vec3( aTextureCoord, 1.0);\n}\n";
2347
+ var spriteMaskFrag = "\nvarying vec3 vMaskCoord;\nvarying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform float alpha;\nuniform sampler2D mask;\n\nvoid main(void)\n{\n vec2 uv = vMaskCoord.xy / vMaskCoord.z;\n \n vec2 text = abs( uv - 0.5 );\n text = step(0.5, text);\n\n float clip = 1.0 - max(text.y, text.x);\n vec4 original = texture2D(uSampler, vTextureCoord);\n vec4 masky = texture2D(mask, uv);\n\n original *= (masky.r * masky.a * alpha * clip);\n\n gl_FragColor = original;\n}\n";
2348
+ var tempMat = new pixi_projection.Matrix2d();
2349
+ var SpriteMaskFilter2d = (function (_super) {
2350
+ __extends(SpriteMaskFilter2d, _super);
2351
+ function SpriteMaskFilter2d(sprite) {
2352
+ var _this = _super.call(this, spriteMaskVert, spriteMaskFrag) || this;
2353
+ _this.maskMatrix = new pixi_projection.Matrix2d();
2354
+ sprite.renderable = false;
2355
+ _this.maskSprite = sprite;
2356
+ return _this;
2357
+ }
2358
+ SpriteMaskFilter2d.prototype.apply = function (filterManager, input, output, clear, currentState) {
2359
+ var maskSprite = this.maskSprite;
2360
+ this.uniforms.mask = maskSprite.texture;
2361
+ this.uniforms.otherMatrix = SpriteMaskFilter2d.calculateSpriteMatrix(currentState, this.maskMatrix, maskSprite);
2362
+ this.uniforms.alpha = maskSprite.worldAlpha;
2363
+ filterManager.applyFilter(this, input, output);
2364
+ };
2365
+ SpriteMaskFilter2d.calculateSpriteMatrix = function (currentState, mappedMatrix, sprite) {
2366
+ var proj = sprite.proj;
2367
+ var filterArea = currentState.sourceFrame;
2368
+ var textureSize = currentState.renderTarget.size;
2369
+ var worldTransform = proj && !proj._affine ? proj.world.copyTo(tempMat) : tempMat.copyFrom(sprite.transform.worldTransform);
2370
+ var texture = sprite.texture.orig;
2371
+ mappedMatrix.set(textureSize.width, 0, 0, textureSize.height, filterArea.x, filterArea.y);
2372
+ worldTransform.invert();
2373
+ mappedMatrix.setToMult(worldTransform, mappedMatrix);
2374
+ mappedMatrix.scaleAndTranslate(1.0 / texture.width, 1.0 / texture.height, sprite.anchor.x, sprite.anchor.y);
2375
+ return mappedMatrix;
2376
+ };
2377
+ return SpriteMaskFilter2d;
2378
+ }(PIXI.Filter));
2379
+ pixi_projection.SpriteMaskFilter2d = SpriteMaskFilter2d;
2380
+ })(pixi_projection || (pixi_projection = {}));
2381
+ var pixi_projection;
2382
+ (function (pixi_projection) {
2383
+ function container3dWorldTransform() {
2384
+ return this.proj.affine ? this.transform.worldTransform : this.proj.world;
2385
+ }
2386
+ pixi_projection.container3dWorldTransform = container3dWorldTransform;
2387
+ var Container3d = (function (_super) {
2388
+ __extends(Container3d, _super);
2389
+ function Container3d() {
2390
+ var _this = _super.call(this) || this;
2391
+ _this.proj = new pixi_projection.Projection3d(_this.transform);
2392
+ return _this;
2393
+ }
2394
+ Container3d.prototype.isFrontFace = function (forceUpdate) {
2395
+ if (forceUpdate === void 0) { forceUpdate = false; }
2396
+ if (forceUpdate) {
2397
+ this._recursivePostUpdateTransform();
2398
+ this.displayObjectUpdateTransform();
2399
+ }
2400
+ var mat = this.proj.world.mat4;
2401
+ var dx1 = mat[0] * mat[15] - mat[3] * mat[12];
2402
+ var dy1 = mat[1] * mat[15] - mat[3] * mat[13];
2403
+ var dx2 = mat[4] * mat[15] - mat[7] * mat[12];
2404
+ var dy2 = mat[5] * mat[15] - mat[7] * mat[13];
2405
+ return dx1 * dy2 - dx2 * dy1 > 0;
2406
+ };
2407
+ Container3d.prototype.getDepth = function (forceUpdate) {
2408
+ if (forceUpdate === void 0) { forceUpdate = false; }
2409
+ if (forceUpdate) {
2410
+ this._recursivePostUpdateTransform();
2411
+ this.displayObjectUpdateTransform();
2412
+ }
2413
+ var mat4 = this.proj.world.mat4;
2414
+ return mat4[14] / mat4[15];
2415
+ };
2416
+ Container3d.prototype.toLocal = function (position, from, point, skipUpdate, step) {
2417
+ if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; }
2418
+ if (from) {
2419
+ position = from.toGlobal(position, point, skipUpdate);
2420
+ }
2421
+ if (!skipUpdate) {
2422
+ this._recursivePostUpdateTransform();
2423
+ }
2424
+ if (step === pixi_projection.TRANSFORM_STEP.ALL) {
2425
+ if (!skipUpdate) {
2426
+ this.displayObjectUpdateTransform();
2427
+ }
2428
+ if (this.proj.affine) {
2429
+ return this.transform.worldTransform.applyInverse(point, point);
2430
+ }
2431
+ return this.proj.world.applyInverse(point, point);
2432
+ }
2433
+ if (this.parent) {
2434
+ point = this.parent.worldTransform.applyInverse(position, point);
2435
+ }
2436
+ else {
2437
+ point.copy(position);
2438
+ }
2439
+ if (step === pixi_projection.TRANSFORM_STEP.NONE) {
2440
+ return point;
2441
+ }
2442
+ point = this.transform.localTransform.applyInverse(point, point);
2443
+ if (step === pixi_projection.TRANSFORM_STEP.PROJ && this.proj.cameraMode) {
2444
+ point = this.proj.cameraMatrix.applyInverse(point, point);
2445
+ }
2446
+ return point;
2447
+ };
2448
+ Object.defineProperty(Container3d.prototype, "worldTransform", {
2449
+ get: function () {
2450
+ return this.proj.affine ? this.transform.worldTransform : this.proj.world;
2451
+ },
2452
+ enumerable: true,
2453
+ configurable: true
2454
+ });
2455
+ Object.defineProperty(Container3d.prototype, "position3d", {
2456
+ get: function () {
2457
+ return this.proj.position;
2458
+ },
2459
+ set: function (value) {
2460
+ this.proj.position.copy(value);
2461
+ },
2462
+ enumerable: true,
2463
+ configurable: true
2464
+ });
2465
+ Object.defineProperty(Container3d.prototype, "scale3d", {
2466
+ get: function () {
2467
+ return this.proj.scale;
2468
+ },
2469
+ set: function (value) {
2470
+ this.proj.scale.copy(value);
2471
+ },
2472
+ enumerable: true,
2473
+ configurable: true
2474
+ });
2475
+ Object.defineProperty(Container3d.prototype, "euler", {
2476
+ get: function () {
2477
+ return this.proj.euler;
2478
+ },
2479
+ set: function (value) {
2480
+ this.proj.euler.copy(value);
2481
+ },
2482
+ enumerable: true,
2483
+ configurable: true
2484
+ });
2485
+ Object.defineProperty(Container3d.prototype, "pivot3d", {
2486
+ get: function () {
2487
+ return this.proj.pivot;
2488
+ },
2489
+ set: function (value) {
2490
+ this.proj.pivot.copy(value);
2491
+ },
2492
+ enumerable: true,
2493
+ configurable: true
2494
+ });
2495
+ return Container3d;
2496
+ }(PIXI.Container));
2497
+ pixi_projection.Container3d = Container3d;
2498
+ pixi_projection.container3dToLocal = Container3d.prototype.toLocal;
2499
+ pixi_projection.container3dGetDepth = Container3d.prototype.getDepth;
2500
+ pixi_projection.container3dIsFrontFace = Container3d.prototype.isFrontFace;
2501
+ })(pixi_projection || (pixi_projection = {}));
2502
+ var pixi_projection;
2503
+ (function (pixi_projection) {
2504
+ var Camera3d = (function (_super) {
2505
+ __extends(Camera3d, _super);
2506
+ function Camera3d() {
2507
+ var _this = _super.call(this) || this;
2508
+ _this._far = 0;
2509
+ _this._near = 0;
2510
+ _this._focus = 0;
2511
+ _this._orthographic = false;
2512
+ _this.proj.cameraMode = true;
2513
+ _this.setPlanes(400, 10, 10000, false);
2514
+ return _this;
2515
+ }
2516
+ Object.defineProperty(Camera3d.prototype, "far", {
2517
+ get: function () {
2518
+ return this._far;
2519
+ },
2520
+ enumerable: true,
2521
+ configurable: true
2522
+ });
2523
+ Object.defineProperty(Camera3d.prototype, "near", {
2524
+ get: function () {
2525
+ return this._near;
2526
+ },
2527
+ enumerable: true,
2528
+ configurable: true
2529
+ });
2530
+ Object.defineProperty(Camera3d.prototype, "focus", {
2531
+ get: function () {
2532
+ return this._focus;
2533
+ },
2534
+ enumerable: true,
2535
+ configurable: true
2536
+ });
2537
+ Object.defineProperty(Camera3d.prototype, "ortographic", {
2538
+ get: function () {
2539
+ return this._orthographic;
2540
+ },
2541
+ enumerable: true,
2542
+ configurable: true
2543
+ });
2544
+ Camera3d.prototype.setPlanes = function (focus, near, far, orthographic) {
2545
+ if (near === void 0) { near = 10; }
2546
+ if (far === void 0) { far = 10000; }
2547
+ if (orthographic === void 0) { orthographic = false; }
2548
+ this._focus = focus;
2549
+ this._near = near;
2550
+ this._far = far;
2551
+ this._orthographic = orthographic;
2552
+ var proj = this.proj;
2553
+ var mat4 = proj.cameraMatrix.mat4;
2554
+ proj._projID++;
2555
+ mat4[10] = 1.0 / (far - near);
2556
+ mat4[14] = (focus - near) / (far - near);
2557
+ if (this._orthographic) {
2558
+ mat4[11] = 0;
2559
+ }
2560
+ else {
2561
+ mat4[11] = 1.0 / focus;
2562
+ }
2563
+ };
2564
+ return Camera3d;
2565
+ }(pixi_projection.Container3d));
2566
+ pixi_projection.Camera3d = Camera3d;
2567
+ })(pixi_projection || (pixi_projection = {}));
2568
+ var pixi_projection;
2569
+ (function (pixi_projection) {
2570
+ var Euler = (function () {
2571
+ function Euler(x, y, z) {
2572
+ this._quatUpdateId = -1;
2573
+ this._quatDirtyId = 0;
2574
+ this._sign = 1;
2575
+ this._x = x || 0;
2576
+ this._y = y || 0;
2577
+ this._z = z || 0;
2578
+ this.quaternion = new Float64Array(4);
2579
+ this.quaternion[3] = 1;
2580
+ this.update();
2581
+ }
2582
+ Object.defineProperty(Euler.prototype, "x", {
2583
+ get: function () {
2584
+ return this._x;
2585
+ },
2586
+ set: function (value) {
2587
+ if (this._x !== value) {
2588
+ this._x = value;
2589
+ this._quatDirtyId++;
2590
+ }
2591
+ },
2592
+ enumerable: true,
2593
+ configurable: true
2594
+ });
2595
+ Object.defineProperty(Euler.prototype, "y", {
2596
+ get: function () {
2597
+ return this._y;
2598
+ },
2599
+ set: function (value) {
2600
+ if (this._y !== value) {
2601
+ this._y = value;
2602
+ this._quatDirtyId++;
2603
+ }
2604
+ },
2605
+ enumerable: true,
2606
+ configurable: true
2607
+ });
2608
+ Object.defineProperty(Euler.prototype, "z", {
2609
+ get: function () {
2610
+ return this._z;
2611
+ },
2612
+ set: function (value) {
2613
+ if (this._z !== value) {
2614
+ this._z = value;
2615
+ this._quatDirtyId++;
2616
+ }
2617
+ },
2618
+ enumerable: true,
2619
+ configurable: true
2620
+ });
2621
+ Object.defineProperty(Euler.prototype, "pitch", {
2622
+ get: function () {
2623
+ return this._x;
2624
+ },
2625
+ set: function (value) {
2626
+ if (this._x !== value) {
2627
+ this._x = value;
2628
+ this._quatDirtyId++;
2629
+ }
2630
+ },
2631
+ enumerable: true,
2632
+ configurable: true
2633
+ });
2634
+ Object.defineProperty(Euler.prototype, "yaw", {
2635
+ get: function () {
2636
+ return this._y;
2637
+ },
2638
+ set: function (value) {
2639
+ if (this._y !== value) {
2640
+ this._y = value;
2641
+ this._quatDirtyId++;
2642
+ }
2643
+ },
2644
+ enumerable: true,
2645
+ configurable: true
2646
+ });
2647
+ Object.defineProperty(Euler.prototype, "roll", {
2648
+ get: function () {
2649
+ return this._z;
2650
+ },
2651
+ set: function (value) {
2652
+ if (this._z !== value) {
2653
+ this._z = value;
2654
+ this._quatDirtyId++;
2655
+ }
2656
+ },
2657
+ enumerable: true,
2658
+ configurable: true
2659
+ });
2660
+ Euler.prototype.set = function (x, y, z) {
2661
+ var _x = x || 0;
2662
+ var _y = y || 0;
2663
+ var _z = z || 0;
2664
+ if (this._x !== _x || this._y !== _y || this._z !== _z) {
2665
+ this._x = _x;
2666
+ this._y = _y;
2667
+ this._z = _z;
2668
+ this._quatDirtyId++;
2669
+ }
2670
+ };
2671
+ ;
2672
+ Euler.prototype.copy = function (euler) {
2673
+ var _x = euler.x;
2674
+ var _y = euler.y;
2675
+ var _z = euler.z;
2676
+ if (this._x !== _x || this._y !== _y || this._z !== _z) {
2677
+ this._x = _x;
2678
+ this._y = _y;
2679
+ this._z = _z;
2680
+ this._quatDirtyId++;
2681
+ }
2682
+ };
2683
+ Euler.prototype.clone = function () {
2684
+ return new Euler(this._x, this._y, this._z);
2685
+ };
2686
+ Euler.prototype.update = function () {
2687
+ if (this._quatUpdateId === this._quatDirtyId) {
2688
+ return false;
2689
+ }
2690
+ this._quatUpdateId = this._quatDirtyId;
2691
+ var c1 = Math.cos(this._x / 2);
2692
+ var c2 = Math.cos(this._y / 2);
2693
+ var c3 = Math.cos(this._z / 2);
2694
+ var s = this._sign;
2695
+ var s1 = s * Math.sin(this._x / 2);
2696
+ var s2 = s * Math.sin(this._y / 2);
2697
+ var s3 = s * Math.sin(this._z / 2);
2698
+ var q = this.quaternion;
2699
+ q[0] = s1 * c2 * c3 + c1 * s2 * s3;
2700
+ q[1] = c1 * s2 * c3 - s1 * c2 * s3;
2701
+ q[2] = c1 * c2 * s3 + s1 * s2 * c3;
2702
+ q[3] = c1 * c2 * c3 - s1 * s2 * s3;
2703
+ return true;
2704
+ };
2705
+ return Euler;
2706
+ }());
2707
+ pixi_projection.Euler = Euler;
2708
+ })(pixi_projection || (pixi_projection = {}));
2709
+ var pixi_projection;
2710
+ (function (pixi_projection) {
2711
+ var mat4id = [1, 0, 0, 0,
2712
+ 0, 1, 0, 0,
2713
+ 0, 0, 1, 0,
2714
+ 0, 0, 0, 1];
2715
+ var Matrix3d = (function () {
2716
+ function Matrix3d(backingArray) {
2717
+ this.floatArray = null;
2718
+ this._dirtyId = 0;
2719
+ this._updateId = -1;
2720
+ this._mat4inv = null;
2721
+ this.cacheInverse = false;
2722
+ this.mat4 = new Float64Array(backingArray || mat4id);
2723
+ }
2724
+ Object.defineProperty(Matrix3d.prototype, "a", {
2725
+ get: function () {
2726
+ return this.mat4[0] / this.mat4[15];
2727
+ },
2728
+ set: function (value) {
2729
+ this.mat4[0] = value * this.mat4[15];
2730
+ },
2731
+ enumerable: true,
2732
+ configurable: true
2733
+ });
2734
+ Object.defineProperty(Matrix3d.prototype, "b", {
2735
+ get: function () {
2736
+ return this.mat4[1] / this.mat4[15];
2737
+ },
2738
+ set: function (value) {
2739
+ this.mat4[1] = value * this.mat4[15];
2740
+ },
2741
+ enumerable: true,
2742
+ configurable: true
2743
+ });
2744
+ Object.defineProperty(Matrix3d.prototype, "c", {
2745
+ get: function () {
2746
+ return this.mat4[4] / this.mat4[15];
2747
+ },
2748
+ set: function (value) {
2749
+ this.mat4[4] = value * this.mat4[15];
2750
+ },
2751
+ enumerable: true,
2752
+ configurable: true
2753
+ });
2754
+ Object.defineProperty(Matrix3d.prototype, "d", {
2755
+ get: function () {
2756
+ return this.mat4[5] / this.mat4[15];
2757
+ },
2758
+ set: function (value) {
2759
+ this.mat4[5] = value * this.mat4[15];
2760
+ },
2761
+ enumerable: true,
2762
+ configurable: true
2763
+ });
2764
+ Object.defineProperty(Matrix3d.prototype, "tx", {
2765
+ get: function () {
2766
+ return this.mat4[12] / this.mat4[15];
2767
+ },
2768
+ set: function (value) {
2769
+ this.mat4[12] = value * this.mat4[15];
2770
+ },
2771
+ enumerable: true,
2772
+ configurable: true
2773
+ });
2774
+ Object.defineProperty(Matrix3d.prototype, "ty", {
2775
+ get: function () {
2776
+ return this.mat4[13] / this.mat4[15];
2777
+ },
2778
+ set: function (value) {
2779
+ this.mat4[13] = value * this.mat4[15];
2780
+ },
2781
+ enumerable: true,
2782
+ configurable: true
2783
+ });
2784
+ Matrix3d.prototype.set = function (a, b, c, d, tx, ty) {
2785
+ var mat4 = this.mat4;
2786
+ mat4[0] = a;
2787
+ mat4[1] = b;
2788
+ mat4[2] = 0;
2789
+ mat4[3] = 0;
2790
+ mat4[4] = c;
2791
+ mat4[5] = d;
2792
+ mat4[6] = 0;
2793
+ mat4[7] = 0;
2794
+ mat4[8] = 0;
2795
+ mat4[9] = 0;
2796
+ mat4[10] = 1;
2797
+ mat4[11] = 0;
2798
+ mat4[12] = tx;
2799
+ mat4[13] = ty;
2800
+ mat4[14] = 0;
2801
+ mat4[15] = 1;
2802
+ return this;
2803
+ };
2804
+ Matrix3d.prototype.toArray = function (transpose, out) {
2805
+ if (!this.floatArray) {
2806
+ this.floatArray = new Float32Array(9);
2807
+ }
2808
+ var array = out || this.floatArray;
2809
+ var mat3 = this.mat4;
2810
+ if (transpose) {
2811
+ array[0] = mat3[0];
2812
+ array[1] = mat3[1];
2813
+ array[2] = mat3[3];
2814
+ array[3] = mat3[4];
2815
+ array[4] = mat3[5];
2816
+ array[5] = mat3[7];
2817
+ array[6] = mat3[12];
2818
+ array[7] = mat3[13];
2819
+ array[8] = mat3[15];
2820
+ }
2821
+ else {
2822
+ array[0] = mat3[0];
2823
+ array[1] = mat3[4];
2824
+ array[2] = mat3[12];
2825
+ array[3] = mat3[2];
2826
+ array[4] = mat3[6];
2827
+ array[5] = mat3[13];
2828
+ array[6] = mat3[3];
2829
+ array[7] = mat3[7];
2830
+ array[8] = mat3[15];
2831
+ }
2832
+ return array;
2833
+ };
2834
+ Matrix3d.prototype.setToTranslation = function (tx, ty, tz) {
2835
+ var mat4 = this.mat4;
2836
+ mat4[0] = 1;
2837
+ mat4[1] = 0;
2838
+ mat4[2] = 0;
2839
+ mat4[3] = 0;
2840
+ mat4[4] = 0;
2841
+ mat4[5] = 1;
2842
+ mat4[6] = 0;
2843
+ mat4[7] = 0;
2844
+ mat4[8] = 0;
2845
+ mat4[9] = 0;
2846
+ mat4[10] = 1;
2847
+ mat4[11] = 0;
2848
+ mat4[12] = tx;
2849
+ mat4[13] = ty;
2850
+ mat4[14] = tz;
2851
+ mat4[15] = 1;
2852
+ };
2853
+ Matrix3d.prototype.setToRotationTranslationScale = function (quat, tx, ty, tz, sx, sy, sz) {
2854
+ var out = this.mat4;
2855
+ var x = quat[0], y = quat[1], z = quat[2], w = quat[3];
2856
+ var x2 = x + x;
2857
+ var y2 = y + y;
2858
+ var z2 = z + z;
2859
+ var xx = x * x2;
2860
+ var xy = x * y2;
2861
+ var xz = x * z2;
2862
+ var yy = y * y2;
2863
+ var yz = y * z2;
2864
+ var zz = z * z2;
2865
+ var wx = w * x2;
2866
+ var wy = w * y2;
2867
+ var wz = w * z2;
2868
+ out[0] = (1 - (yy + zz)) * sx;
2869
+ out[1] = (xy + wz) * sx;
2870
+ out[2] = (xz - wy) * sx;
2871
+ out[3] = 0;
2872
+ out[4] = (xy - wz) * sy;
2873
+ out[5] = (1 - (xx + zz)) * sy;
2874
+ out[6] = (yz + wx) * sy;
2875
+ out[7] = 0;
2876
+ out[8] = (xz + wy) * sz;
2877
+ out[9] = (yz - wx) * sz;
2878
+ out[10] = (1 - (xx + yy)) * sz;
2879
+ out[11] = 0;
2880
+ out[12] = tx;
2881
+ out[13] = ty;
2882
+ out[14] = tz;
2883
+ out[15] = 1;
2884
+ return out;
2885
+ };
2886
+ Matrix3d.prototype.apply = function (pos, newPos) {
2887
+ newPos = newPos || new PIXI.Point();
2888
+ var mat4 = this.mat4;
2889
+ var x = pos.x;
2890
+ var y = pos.y;
2891
+ var z = pos.z;
2892
+ var w = 1.0 / (mat4[3] * x + mat4[7] * y + mat4[11] * z + mat4[15]);
2893
+ newPos.x = w * (mat4[0] * x + mat4[4] * y + mat4[8] * z + mat4[12]);
2894
+ newPos.y = w * (mat4[1] * x + mat4[5] * y + mat4[9] * z + mat4[13]);
2895
+ newPos.z = w * (mat4[2] * x + mat4[6] * y + mat4[10] * z + mat4[14]);
2896
+ return newPos;
2897
+ };
2898
+ Matrix3d.prototype.translate = function (tx, ty, tz) {
2899
+ var a = this.mat4;
2900
+ a[12] = a[0] * tx + a[4] * ty + a[8] * tz + a[12];
2901
+ a[13] = a[1] * tx + a[5] * ty + a[9] * tz + a[13];
2902
+ a[14] = a[2] * tx + a[6] * ty + a[10] * tz + a[14];
2903
+ a[15] = a[3] * tx + a[7] * ty + a[11] * tz + a[15];
2904
+ return this;
2905
+ };
2906
+ Matrix3d.prototype.scale = function (x, y, z) {
2907
+ var mat4 = this.mat4;
2908
+ mat4[0] *= x;
2909
+ mat4[1] *= x;
2910
+ mat4[2] *= x;
2911
+ mat4[3] *= x;
2912
+ mat4[4] *= y;
2913
+ mat4[5] *= y;
2914
+ mat4[6] *= y;
2915
+ mat4[7] *= y;
2916
+ if (z !== undefined) {
2917
+ mat4[8] *= z;
2918
+ mat4[9] *= z;
2919
+ mat4[10] *= z;
2920
+ mat4[11] *= z;
2921
+ }
2922
+ return this;
2923
+ };
2924
+ Matrix3d.prototype.scaleAndTranslate = function (scaleX, scaleY, scaleZ, tx, ty, tz) {
2925
+ var mat4 = this.mat4;
2926
+ mat4[0] = scaleX * mat4[0] + tx * mat4[3];
2927
+ mat4[1] = scaleY * mat4[1] + ty * mat4[3];
2928
+ mat4[2] = scaleZ * mat4[2] + tz * mat4[3];
2929
+ mat4[4] = scaleX * mat4[4] + tx * mat4[7];
2930
+ mat4[5] = scaleY * mat4[5] + ty * mat4[7];
2931
+ mat4[6] = scaleZ * mat4[6] + tz * mat4[7];
2932
+ mat4[8] = scaleX * mat4[8] + tx * mat4[11];
2933
+ mat4[9] = scaleY * mat4[9] + ty * mat4[11];
2934
+ mat4[10] = scaleZ * mat4[10] + tz * mat4[11];
2935
+ mat4[12] = scaleX * mat4[12] + tx * mat4[15];
2936
+ mat4[13] = scaleY * mat4[13] + ty * mat4[15];
2937
+ mat4[14] = scaleZ * mat4[14] + tz * mat4[15];
2938
+ };
2939
+ Matrix3d.prototype.applyInverse = function (pos, newPos) {
2940
+ newPos = newPos || new pixi_projection.Point3d();
2941
+ if (!this._mat4inv) {
2942
+ this._mat4inv = new Float64Array(16);
2943
+ }
2944
+ var mat4 = this._mat4inv;
2945
+ var a = this.mat4;
2946
+ var x = pos.x;
2947
+ var y = pos.y;
2948
+ var z = pos.z;
2949
+ if (!this.cacheInverse || this._updateId !== this._dirtyId) {
2950
+ this._updateId = this._dirtyId;
2951
+ Matrix3d.glMatrixMat4Invert(mat4, a);
2952
+ }
2953
+ var w1 = 1.0 / (mat4[3] * x + mat4[7] * y + mat4[11] * z + mat4[15]);
2954
+ var x1 = w1 * (mat4[0] * x + mat4[4] * y + mat4[8] * z + mat4[12]);
2955
+ var y1 = w1 * (mat4[1] * x + mat4[5] * y + mat4[9] * z + mat4[13]);
2956
+ var z1 = w1 * (mat4[2] * x + mat4[6] * y + mat4[10] * z + mat4[14]);
2957
+ z += 1.0;
2958
+ var w2 = 1.0 / (mat4[3] * x + mat4[7] * y + mat4[11] * z + mat4[15]);
2959
+ var x2 = w2 * (mat4[0] * x + mat4[4] * y + mat4[8] * z + mat4[12]);
2960
+ var y2 = w2 * (mat4[1] * x + mat4[5] * y + mat4[9] * z + mat4[13]);
2961
+ var z2 = w2 * (mat4[2] * x + mat4[6] * y + mat4[10] * z + mat4[14]);
2962
+ if (Math.abs(z1 - z2) < 1e-10) {
2963
+ newPos.set(NaN, NaN, 0);
2964
+ }
2965
+ var alpha = (0 - z1) / (z2 - z1);
2966
+ newPos.set((x2 - x1) * alpha + x1, (y2 - y1) * alpha + y1, 0.0);
2967
+ return newPos;
2968
+ };
2969
+ Matrix3d.prototype.invert = function () {
2970
+ Matrix3d.glMatrixMat4Invert(this.mat4, this.mat4);
2971
+ return this;
2972
+ };
2973
+ Matrix3d.prototype.invertCopyTo = function (matrix) {
2974
+ if (!this._mat4inv) {
2975
+ this._mat4inv = new Float64Array(16);
2976
+ }
2977
+ var mat4 = this._mat4inv;
2978
+ var a = this.mat4;
2979
+ if (!this.cacheInverse || this._updateId !== this._dirtyId) {
2980
+ this._updateId = this._dirtyId;
2981
+ Matrix3d.glMatrixMat4Invert(mat4, a);
2982
+ }
2983
+ matrix.mat4.set(mat4);
2984
+ };
2985
+ Matrix3d.prototype.identity = function () {
2986
+ var mat3 = this.mat4;
2987
+ mat3[0] = 1;
2988
+ mat3[1] = 0;
2989
+ mat3[2] = 0;
2990
+ mat3[3] = 0;
2991
+ mat3[4] = 0;
2992
+ mat3[5] = 1;
2993
+ mat3[6] = 0;
2994
+ mat3[7] = 0;
2995
+ mat3[8] = 0;
2996
+ mat3[9] = 0;
2997
+ mat3[10] = 1;
2998
+ mat3[11] = 0;
2999
+ mat3[12] = 0;
3000
+ mat3[13] = 0;
3001
+ mat3[14] = 0;
3002
+ mat3[15] = 1;
3003
+ return this;
3004
+ };
3005
+ Matrix3d.prototype.clone = function () {
3006
+ return new Matrix3d(this.mat4);
3007
+ };
3008
+ Matrix3d.prototype.copyTo = function (matrix) {
3009
+ var mat3 = this.mat4;
3010
+ var ar2 = matrix.mat4;
3011
+ ar2[0] = mat3[0];
3012
+ ar2[1] = mat3[1];
3013
+ ar2[2] = mat3[2];
3014
+ ar2[3] = mat3[3];
3015
+ ar2[4] = mat3[4];
3016
+ ar2[5] = mat3[5];
3017
+ ar2[6] = mat3[6];
3018
+ ar2[7] = mat3[7];
3019
+ ar2[8] = mat3[8];
3020
+ return matrix;
3021
+ };
3022
+ Matrix3d.prototype.copy = function (matrix, affine) {
3023
+ var mat3 = this.mat4;
3024
+ var d = 1.0 / mat3[15];
3025
+ var tx = mat3[12] * d, ty = mat3[13] * d;
3026
+ matrix.a = (mat3[0] - mat3[3] * tx) * d;
3027
+ matrix.b = (mat3[1] - mat3[3] * ty) * d;
3028
+ matrix.c = (mat3[4] - mat3[7] * tx) * d;
3029
+ matrix.d = (mat3[5] - mat3[7] * ty) * d;
3030
+ matrix.tx = tx;
3031
+ matrix.ty = ty;
3032
+ if (affine >= 2) {
3033
+ if (affine === pixi_projection.AFFINE.POINT) {
3034
+ matrix.a = 1;
3035
+ matrix.b = 0;
3036
+ matrix.c = 0;
3037
+ matrix.d = 1;
3038
+ }
3039
+ else if (affine === pixi_projection.AFFINE.AXIS_X) {
3040
+ matrix.c = -matrix.b;
3041
+ matrix.d = matrix.a;
3042
+ }
3043
+ else if (affine === pixi_projection.AFFINE.AXIS_Y) {
3044
+ matrix.a = matrix.d;
3045
+ matrix.c = -matrix.b;
3046
+ }
3047
+ }
3048
+ };
3049
+ Matrix3d.prototype.copyFrom = function (matrix) {
3050
+ var mat3 = this.mat4;
3051
+ mat3[0] = matrix.a;
3052
+ mat3[1] = matrix.b;
3053
+ mat3[2] = 0;
3054
+ mat3[3] = 0;
3055
+ mat3[4] = matrix.c;
3056
+ mat3[5] = matrix.d;
3057
+ mat3[6] = 0;
3058
+ mat3[7] = 0;
3059
+ mat3[8] = 0;
3060
+ mat3[9] = 0;
3061
+ mat3[10] = 1;
3062
+ mat3[11] = 0;
3063
+ mat3[12] = matrix.tx;
3064
+ mat3[13] = matrix.ty;
3065
+ mat3[14] = 0;
3066
+ mat3[15] = 1;
3067
+ this._dirtyId++;
3068
+ return this;
3069
+ };
3070
+ Matrix3d.prototype.setToMultLegacy = function (pt, lt) {
3071
+ var out = this.mat4;
3072
+ var b = lt.mat4;
3073
+ var a00 = pt.a, a01 = pt.b, a10 = pt.c, a11 = pt.d, a30 = pt.tx, a31 = pt.ty;
3074
+ var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];
3075
+ out[0] = b0 * a00 + b1 * a10 + b3 * a30;
3076
+ out[1] = b0 * a01 + b1 * a11 + b3 * a31;
3077
+ out[2] = b2;
3078
+ out[3] = b3;
3079
+ b0 = b[4];
3080
+ b1 = b[5];
3081
+ b2 = b[6];
3082
+ b3 = b[7];
3083
+ out[4] = b0 * a00 + b1 * a10 + b3 * a30;
3084
+ out[5] = b0 * a01 + b1 * a11 + b3 * a31;
3085
+ out[6] = b2;
3086
+ out[7] = b3;
3087
+ b0 = b[8];
3088
+ b1 = b[9];
3089
+ b2 = b[10];
3090
+ b3 = b[11];
3091
+ out[8] = b0 * a00 + b1 * a10 + b3 * a30;
3092
+ out[9] = b0 * a01 + b1 * a11 + b3 * a31;
3093
+ out[10] = b2;
3094
+ out[11] = b3;
3095
+ b0 = b[12];
3096
+ b1 = b[13];
3097
+ b2 = b[14];
3098
+ b3 = b[15];
3099
+ out[12] = b0 * a00 + b1 * a10 + b3 * a30;
3100
+ out[13] = b0 * a01 + b1 * a11 + b3 * a31;
3101
+ out[14] = b2;
3102
+ out[15] = b3;
3103
+ this._dirtyId++;
3104
+ return this;
3105
+ };
3106
+ Matrix3d.prototype.setToMultLegacy2 = function (pt, lt) {
3107
+ var out = this.mat4;
3108
+ var a = pt.mat4;
3109
+ var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];
3110
+ var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];
3111
+ var b00 = lt.a, b01 = lt.b, b10 = lt.c, b11 = lt.d, b30 = lt.tx, b31 = lt.ty;
3112
+ out[0] = b00 * a00 + b01 * a10;
3113
+ out[1] = b00 * a01 + b01 * a11;
3114
+ out[2] = b00 * a02 + b01 * a12;
3115
+ out[3] = b00 * a03 + b01 * a13;
3116
+ out[4] = b10 * a00 + b11 * a10;
3117
+ out[5] = b10 * a01 + b11 * a11;
3118
+ out[6] = b10 * a02 + b11 * a12;
3119
+ out[7] = b10 * a03 + b11 * a13;
3120
+ out[8] = a[8];
3121
+ out[9] = a[9];
3122
+ out[10] = a[10];
3123
+ out[11] = a[11];
3124
+ out[12] = b30 * a00 + b31 * a10 + a[12];
3125
+ out[13] = b30 * a01 + b31 * a11 + a[13];
3126
+ out[14] = b30 * a02 + b31 * a12 + a[14];
3127
+ out[15] = b30 * a03 + b31 * a13 + a[15];
3128
+ this._dirtyId++;
3129
+ return this;
3130
+ };
3131
+ Matrix3d.prototype.setToMult = function (pt, lt) {
3132
+ Matrix3d.glMatrixMat4Multiply(this.mat4, pt.mat4, lt.mat4);
3133
+ this._dirtyId++;
3134
+ return this;
3135
+ };
3136
+ Matrix3d.prototype.prepend = function (lt) {
3137
+ if (lt.mat4) {
3138
+ this.setToMult(lt, this);
3139
+ }
3140
+ else {
3141
+ this.setToMultLegacy(lt, this);
3142
+ }
3143
+ };
3144
+ Matrix3d.glMatrixMat4Invert = function (out, a) {
3145
+ var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];
3146
+ var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];
3147
+ var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];
3148
+ var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];
3149
+ var b00 = a00 * a11 - a01 * a10;
3150
+ var b01 = a00 * a12 - a02 * a10;
3151
+ var b02 = a00 * a13 - a03 * a10;
3152
+ var b03 = a01 * a12 - a02 * a11;
3153
+ var b04 = a01 * a13 - a03 * a11;
3154
+ var b05 = a02 * a13 - a03 * a12;
3155
+ var b06 = a20 * a31 - a21 * a30;
3156
+ var b07 = a20 * a32 - a22 * a30;
3157
+ var b08 = a20 * a33 - a23 * a30;
3158
+ var b09 = a21 * a32 - a22 * a31;
3159
+ var b10 = a21 * a33 - a23 * a31;
3160
+ var b11 = a22 * a33 - a23 * a32;
3161
+ var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;
3162
+ if (!det) {
3163
+ return null;
3164
+ }
3165
+ det = 1.0 / det;
3166
+ out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;
3167
+ out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;
3168
+ out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;
3169
+ out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;
3170
+ out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;
3171
+ out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;
3172
+ out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;
3173
+ out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;
3174
+ out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;
3175
+ out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;
3176
+ out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;
3177
+ out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;
3178
+ out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;
3179
+ out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;
3180
+ out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;
3181
+ out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;
3182
+ return out;
3183
+ };
3184
+ Matrix3d.glMatrixMat4Multiply = function (out, a, b) {
3185
+ var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];
3186
+ var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];
3187
+ var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];
3188
+ var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];
3189
+ var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];
3190
+ out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
3191
+ out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
3192
+ out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
3193
+ out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
3194
+ b0 = b[4];
3195
+ b1 = b[5];
3196
+ b2 = b[6];
3197
+ b3 = b[7];
3198
+ out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
3199
+ out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
3200
+ out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
3201
+ out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
3202
+ b0 = b[8];
3203
+ b1 = b[9];
3204
+ b2 = b[10];
3205
+ b3 = b[11];
3206
+ out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
3207
+ out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
3208
+ out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
3209
+ out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
3210
+ b0 = b[12];
3211
+ b1 = b[13];
3212
+ b2 = b[14];
3213
+ b3 = b[15];
3214
+ out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
3215
+ out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
3216
+ out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
3217
+ out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
3218
+ return out;
3219
+ };
3220
+ Matrix3d.IDENTITY = new Matrix3d();
3221
+ Matrix3d.TEMP_MATRIX = new Matrix3d();
3222
+ return Matrix3d;
3223
+ }());
3224
+ pixi_projection.Matrix3d = Matrix3d;
3225
+ })(pixi_projection || (pixi_projection = {}));
3226
+ var pixi_projection;
3227
+ (function (pixi_projection) {
3228
+ var ObservableEuler = (function () {
3229
+ function ObservableEuler(cb, scope, x, y, z) {
3230
+ this.cb = cb;
3231
+ this.scope = scope;
3232
+ this._quatUpdateId = -1;
3233
+ this._quatDirtyId = 0;
3234
+ this._sign = 1;
3235
+ this._x = x || 0;
3236
+ this._y = y || 0;
3237
+ this._z = z || 0;
3238
+ this.quaternion = new Float64Array(4);
3239
+ this.quaternion[3] = 1;
3240
+ this.update();
3241
+ }
3242
+ Object.defineProperty(ObservableEuler.prototype, "x", {
3243
+ get: function () {
3244
+ return this._x;
3245
+ },
3246
+ set: function (value) {
3247
+ if (this._x !== value) {
3248
+ this._x = value;
3249
+ this._quatDirtyId++;
3250
+ this.cb.call(this.scope);
3251
+ }
3252
+ },
3253
+ enumerable: true,
3254
+ configurable: true
3255
+ });
3256
+ Object.defineProperty(ObservableEuler.prototype, "y", {
3257
+ get: function () {
3258
+ return this._y;
3259
+ },
3260
+ set: function (value) {
3261
+ if (this._y !== value) {
3262
+ this._y = value;
3263
+ this._quatDirtyId++;
3264
+ this.cb.call(this.scope);
3265
+ }
3266
+ },
3267
+ enumerable: true,
3268
+ configurable: true
3269
+ });
3270
+ Object.defineProperty(ObservableEuler.prototype, "z", {
3271
+ get: function () {
3272
+ return this._z;
3273
+ },
3274
+ set: function (value) {
3275
+ if (this._z !== value) {
3276
+ this._z = value;
3277
+ this._quatDirtyId++;
3278
+ this.cb.call(this.scope);
3279
+ }
3280
+ },
3281
+ enumerable: true,
3282
+ configurable: true
3283
+ });
3284
+ Object.defineProperty(ObservableEuler.prototype, "pitch", {
3285
+ get: function () {
3286
+ return this._x;
3287
+ },
3288
+ set: function (value) {
3289
+ if (this._x !== value) {
3290
+ this._x = value;
3291
+ this._quatDirtyId++;
3292
+ this.cb.call(this.scope);
3293
+ }
3294
+ },
3295
+ enumerable: true,
3296
+ configurable: true
3297
+ });
3298
+ Object.defineProperty(ObservableEuler.prototype, "yaw", {
3299
+ get: function () {
3300
+ return this._y;
3301
+ },
3302
+ set: function (value) {
3303
+ if (this._y !== value) {
3304
+ this._y = value;
3305
+ this._quatDirtyId++;
3306
+ this.cb.call(this.scope);
3307
+ }
3308
+ },
3309
+ enumerable: true,
3310
+ configurable: true
3311
+ });
3312
+ Object.defineProperty(ObservableEuler.prototype, "roll", {
3313
+ get: function () {
3314
+ return this._z;
3315
+ },
3316
+ set: function (value) {
3317
+ if (this._z !== value) {
3318
+ this._z = value;
3319
+ this._quatDirtyId++;
3320
+ this.cb.call(this.scope);
3321
+ }
3322
+ },
3323
+ enumerable: true,
3324
+ configurable: true
3325
+ });
3326
+ ObservableEuler.prototype.set = function (x, y, z) {
3327
+ var _x = x || 0;
3328
+ var _y = y || 0;
3329
+ var _z = z || 0;
3330
+ if (this._x !== _x || this._y !== _y || this._z !== _z) {
3331
+ this._x = _x;
3332
+ this._y = _y;
3333
+ this._z = _z;
3334
+ this._quatDirtyId++;
3335
+ this.cb.call(this.scope);
3336
+ }
3337
+ };
3338
+ ;
3339
+ ObservableEuler.prototype.copy = function (euler) {
3340
+ var _x = euler.x;
3341
+ var _y = euler.y;
3342
+ var _z = euler.z;
3343
+ if (this._x !== _x || this._y !== _y || this._z !== _z) {
3344
+ this._x = _x;
3345
+ this._y = _y;
3346
+ this._z = _z;
3347
+ this._quatDirtyId++;
3348
+ this.cb.call(this.scope);
3349
+ }
3350
+ };
3351
+ ObservableEuler.prototype.clone = function () {
3352
+ return new pixi_projection.Euler(this._x, this._y, this._z);
3353
+ };
3354
+ ObservableEuler.prototype.update = function () {
3355
+ if (this._quatUpdateId === this._quatDirtyId) {
3356
+ return false;
3357
+ }
3358
+ this._quatUpdateId = this._quatDirtyId;
3359
+ var c1 = Math.cos(this._x / 2);
3360
+ var c2 = Math.cos(this._y / 2);
3361
+ var c3 = Math.cos(this._z / 2);
3362
+ var s = this._sign;
3363
+ var s1 = s * Math.sin(this._x / 2);
3364
+ var s2 = s * Math.sin(this._y / 2);
3365
+ var s3 = s * Math.sin(this._z / 2);
3366
+ var q = this.quaternion;
3367
+ q[0] = s1 * c2 * c3 + c1 * s2 * s3;
3368
+ q[1] = c1 * s2 * c3 - s1 * c2 * s3;
3369
+ q[2] = c1 * c2 * s3 + s1 * s2 * c3;
3370
+ q[3] = c1 * c2 * c3 - s1 * s2 * s3;
3371
+ return true;
3372
+ };
3373
+ return ObservableEuler;
3374
+ }());
3375
+ pixi_projection.ObservableEuler = ObservableEuler;
3376
+ })(pixi_projection || (pixi_projection = {}));
3377
+ var pixi_projection;
3378
+ (function (pixi_projection) {
3379
+ PIXI.Point.prototype.z = 0;
3380
+ PIXI.Point.prototype.set = function (x, y, z) {
3381
+ this.x = x || 0;
3382
+ this.y = (y === undefined) ? this.x : (y || 0);
3383
+ this.z = (y === undefined) ? this.x : (z || 0);
3384
+ };
3385
+ PIXI.Point.prototype.copy = function (p) {
3386
+ this.set(p.x, p.y, p.z);
3387
+ };
3388
+ PIXI.ObservablePoint.prototype._z = 0;
3389
+ PIXI.ObservablePoint.prototype.set = function (x, y, z) {
3390
+ var _x = x || 0;
3391
+ var _y = (y === undefined) ? _x : (y || 0);
3392
+ var _z = (y === undefined) ? _x : (z || 0);
3393
+ if (this._x !== _x || this._y !== _y || this._z !== _z) {
3394
+ this._x = _x;
3395
+ this._y = _y;
3396
+ this._z = _z;
3397
+ this.cb.call(this.scope);
3398
+ }
3399
+ };
3400
+ Object.defineProperty(PIXI.ObservablePoint.prototype, "z", {
3401
+ get: function () {
3402
+ return this._z;
3403
+ },
3404
+ set: function (value) {
3405
+ if (this._z !== value) {
3406
+ this._z = value;
3407
+ this.cb.call(this.scope);
3408
+ }
3409
+ },
3410
+ enumerable: true,
3411
+ configurable: true
3412
+ });
3413
+ PIXI.ObservablePoint.prototype.copy = function (point) {
3414
+ if (this._x !== point.x || this._y !== point.y || this._z !== point.z) {
3415
+ this._x = point.x;
3416
+ this._y = point.y;
3417
+ this._z = point.z;
3418
+ this.cb.call(this.scope);
3419
+ }
3420
+ };
3421
+ var Point3d = (function (_super) {
3422
+ __extends(Point3d, _super);
3423
+ function Point3d(x, y, z) {
3424
+ var _this = _super.call(this, x, y) || this;
3425
+ _this.z = z;
3426
+ return _this;
3427
+ }
3428
+ return Point3d;
3429
+ }(PIXI.Point));
3430
+ pixi_projection.Point3d = Point3d;
3431
+ PIXI.Point = Point3d;
3432
+ })(pixi_projection || (pixi_projection = {}));
3433
+ var pixi_projection;
3434
+ (function (pixi_projection) {
3435
+ var tempMat = new pixi_projection.Matrix3d();
3436
+ var Projection3d = (function (_super) {
3437
+ __extends(Projection3d, _super);
3438
+ function Projection3d(legacy, enable) {
3439
+ var _this = _super.call(this, legacy, enable) || this;
3440
+ _this.cameraMatrix = null;
3441
+ _this._cameraMode = false;
3442
+ _this.position = new PIXI.ObservablePoint(_this.onChange, _this, 0, 0);
3443
+ _this.scale = new PIXI.ObservablePoint(_this.onChange, _this, 1, 1);
3444
+ _this.euler = new pixi_projection.ObservableEuler(_this.onChange, _this, 0, 0, 0);
3445
+ _this.pivot = new PIXI.ObservablePoint(_this.onChange, _this, 0, 0);
3446
+ _this.local = new pixi_projection.Matrix3d();
3447
+ _this.world = new pixi_projection.Matrix3d();
3448
+ _this.local.cacheInverse = true;
3449
+ _this.world.cacheInverse = true;
3450
+ _this.position._z = 0;
3451
+ _this.scale._z = 1;
3452
+ _this.pivot._z = 0;
3453
+ return _this;
3454
+ }
3455
+ Object.defineProperty(Projection3d.prototype, "cameraMode", {
3456
+ get: function () {
3457
+ return this._cameraMode;
3458
+ },
3459
+ set: function (value) {
3460
+ if (this._cameraMode === value) {
3461
+ return;
3462
+ }
3463
+ this._cameraMode = value;
3464
+ this.euler._sign = this._cameraMode ? -1 : 1;
3465
+ this.euler._quatDirtyId++;
3466
+ if (value) {
3467
+ this.cameraMatrix = new pixi_projection.Matrix3d();
3468
+ }
3469
+ },
3470
+ enumerable: true,
3471
+ configurable: true
3472
+ });
3473
+ Projection3d.prototype.onChange = function () {
3474
+ this._projID++;
3475
+ };
3476
+ Projection3d.prototype.clear = function () {
3477
+ if (this.cameraMatrix) {
3478
+ this.cameraMatrix.identity();
3479
+ }
3480
+ this.position.set(0, 0, 0);
3481
+ this.scale.set(1, 1, 1);
3482
+ this.euler.set(0, 0, 0);
3483
+ this.pivot.set(0, 0, 0);
3484
+ _super.prototype.clear.call(this);
3485
+ };
3486
+ Projection3d.prototype.updateLocalTransform = function (lt) {
3487
+ if (this._projID === 0) {
3488
+ this.local.copyFrom(lt);
3489
+ return;
3490
+ }
3491
+ var matrix = this.local;
3492
+ var euler = this.euler;
3493
+ var pos = this.position;
3494
+ var scale = this.scale;
3495
+ var pivot = this.pivot;
3496
+ euler.update();
3497
+ if (!this.cameraMode) {
3498
+ matrix.setToRotationTranslationScale(euler.quaternion, pos._x, pos._y, pos._z, scale._x, scale._y, scale._z);
3499
+ matrix.translate(-pivot._x, -pivot._y, -pivot._z);
3500
+ matrix.setToMultLegacy(lt, matrix);
3501
+ return;
3502
+ }
3503
+ matrix.setToMultLegacy(lt, this.cameraMatrix);
3504
+ matrix.translate(pivot._x, pivot._y, pivot._z);
3505
+ matrix.scale(1.0 / scale._x, 1.0 / scale._y, 1.0 / scale._z);
3506
+ tempMat.setToRotationTranslationScale(euler.quaternion, 0, 0, 0, 1, 1, 1);
3507
+ matrix.setToMult(matrix, tempMat);
3508
+ matrix.translate(-pos._x, -pos._y, -pos._z);
3509
+ this.local._dirtyId++;
3510
+ };
3511
+ return Projection3d;
3512
+ }(pixi_projection.LinearProjection));
3513
+ pixi_projection.Projection3d = Projection3d;
3514
+ })(pixi_projection || (pixi_projection = {}));
3515
+ var pixi_projection;
3516
+ (function (pixi_projection) {
3517
+ var Mesh3d = (function (_super) {
3518
+ __extends(Mesh3d, _super);
3519
+ function Mesh3d(texture, vertices, uvs, indices, drawMode) {
3520
+ var _this = _super.call(this, texture, vertices, uvs, indices, drawMode) || this;
3521
+ _this.proj = new pixi_projection.Projection3d(_this.transform);
3522
+ _this.pluginName = 'mesh2d';
3523
+ return _this;
3524
+ }
3525
+ Object.defineProperty(Mesh3d.prototype, "worldTransform", {
3526
+ get: function () {
3527
+ return this.proj.affine ? this.transform.worldTransform : this.proj.world;
3528
+ },
3529
+ enumerable: true,
3530
+ configurable: true
3531
+ });
3532
+ Mesh3d.prototype.toLocal = function (position, from, point, skipUpdate, step) {
3533
+ if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; }
3534
+ return pixi_projection.container3dToLocal.call(this, position, from, point, skipUpdate, step);
3535
+ };
3536
+ Mesh3d.prototype.isFrontFace = function (forceUpdate) {
3537
+ return pixi_projection.container3dIsFrontFace.call(this, forceUpdate);
3538
+ };
3539
+ Mesh3d.prototype.getDepth = function (forceUpdate) {
3540
+ return pixi_projection.container3dGetDepth.call(this, forceUpdate);
3541
+ };
3542
+ Object.defineProperty(Mesh3d.prototype, "position3d", {
3543
+ get: function () {
3544
+ return this.proj.position;
3545
+ },
3546
+ set: function (value) {
3547
+ this.proj.position.copy(value);
3548
+ },
3549
+ enumerable: true,
3550
+ configurable: true
3551
+ });
3552
+ Object.defineProperty(Mesh3d.prototype, "scale3d", {
3553
+ get: function () {
3554
+ return this.proj.scale;
3555
+ },
3556
+ set: function (value) {
3557
+ this.proj.scale.copy(value);
3558
+ },
3559
+ enumerable: true,
3560
+ configurable: true
3561
+ });
3562
+ Object.defineProperty(Mesh3d.prototype, "euler", {
3563
+ get: function () {
3564
+ return this.proj.euler;
3565
+ },
3566
+ set: function (value) {
3567
+ this.proj.euler.copy(value);
3568
+ },
3569
+ enumerable: true,
3570
+ configurable: true
3571
+ });
3572
+ Object.defineProperty(Mesh3d.prototype, "pivot3d", {
3573
+ get: function () {
3574
+ return this.proj.pivot;
3575
+ },
3576
+ set: function (value) {
3577
+ this.proj.pivot.copy(value);
3578
+ },
3579
+ enumerable: true,
3580
+ configurable: true
3581
+ });
3582
+ return Mesh3d;
3583
+ }(PIXI.mesh.Mesh));
3584
+ pixi_projection.Mesh3d = Mesh3d;
3585
+ })(pixi_projection || (pixi_projection = {}));
3586
+ var pixi_projection;
3587
+ (function (pixi_projection) {
3588
+ var Sprite3d = (function (_super) {
3589
+ __extends(Sprite3d, _super);
3590
+ function Sprite3d(texture) {
3591
+ var _this = _super.call(this, texture) || this;
3592
+ _this.culledByFrustrum = false;
3593
+ _this.trimmedCulledByFrustrum = false;
3594
+ _this.proj = new pixi_projection.Projection3d(_this.transform);
3595
+ _this.pluginName = 'sprite2d';
3596
+ _this.vertexData = new Float32Array(12);
3597
+ return _this;
3598
+ }
3599
+ Sprite3d.prototype._calculateBounds = function () {
3600
+ this.calculateVertices();
3601
+ if (this.culledByFrustrum) {
3602
+ return;
3603
+ }
3604
+ this.calculateTrimmedVertices();
3605
+ if (!this.trimmedCulledByFrustrum) {
3606
+ this._bounds.addQuad(this.vertexTrimmedData);
3607
+ }
3608
+ };
3609
+ Sprite3d.prototype.calculateVertices = function () {
3610
+ if (this.proj._affine) {
3611
+ if (this.vertexData.length != 8) {
3612
+ this.vertexData = new Float32Array(8);
3613
+ }
3614
+ _super.prototype.calculateVertices.call(this);
3615
+ return;
3616
+ }
3617
+ if (this.vertexData.length != 12) {
3618
+ this.vertexData = new Float32Array(12);
3619
+ }
3620
+ var wid = this.transform._worldID;
3621
+ var tuid = this._texture._updateID;
3622
+ if (this._transformID === wid && this._textureID === tuid) {
3623
+ return;
3624
+ }
3625
+ this._transformID = wid;
3626
+ this._textureID = tuid;
3627
+ var texture = this._texture;
3628
+ var wt = this.proj.world.mat4;
3629
+ var vertexData = this.vertexData;
3630
+ var trim = texture.trim;
3631
+ var orig = texture.orig;
3632
+ var anchor = this._anchor;
3633
+ var w0 = 0;
3634
+ var w1 = 0;
3635
+ var h0 = 0;
3636
+ var h1 = 0;
3637
+ if (trim) {
3638
+ w1 = trim.x - (anchor._x * orig.width);
3639
+ w0 = w1 + trim.width;
3640
+ h1 = trim.y - (anchor._y * orig.height);
3641
+ h0 = h1 + trim.height;
3642
+ }
3643
+ else {
3644
+ w1 = -anchor._x * orig.width;
3645
+ w0 = w1 + orig.width;
3646
+ h1 = -anchor._y * orig.height;
3647
+ h0 = h1 + orig.height;
3648
+ }
3649
+ var culled = false;
3650
+ var z;
3651
+ vertexData[0] = (wt[0] * w1) + (wt[4] * h1) + wt[12];
3652
+ vertexData[1] = (wt[1] * w1) + (wt[5] * h1) + wt[13];
3653
+ z = (wt[2] * w1) + (wt[6] * h1) + wt[14];
3654
+ vertexData[2] = (wt[3] * w1) + (wt[7] * h1) + wt[15];
3655
+ culled = culled || z < 0;
3656
+ vertexData[3] = (wt[0] * w0) + (wt[4] * h1) + wt[12];
3657
+ vertexData[4] = (wt[1] * w0) + (wt[5] * h1) + wt[13];
3658
+ z = (wt[2] * w0) + (wt[6] * h1) + wt[14];
3659
+ vertexData[5] = (wt[3] * w0) + (wt[7] * h1) + wt[15];
3660
+ culled = culled || z < 0;
3661
+ vertexData[6] = (wt[0] * w0) + (wt[4] * h0) + wt[12];
3662
+ vertexData[7] = (wt[1] * w0) + (wt[5] * h0) + wt[13];
3663
+ z = (wt[2] * w0) + (wt[6] * h0) + wt[14];
3664
+ vertexData[8] = (wt[3] * w0) + (wt[7] * h0) + wt[15];
3665
+ culled = culled || z < 0;
3666
+ vertexData[9] = (wt[0] * w1) + (wt[4] * h0) + wt[12];
3667
+ vertexData[10] = (wt[1] * w1) + (wt[5] * h0) + wt[13];
3668
+ z = (wt[2] * w1) + (wt[6] * h0) + wt[14];
3669
+ vertexData[11] = (wt[3] * w1) + (wt[7] * h0) + wt[15];
3670
+ culled = culled || z < 0;
3671
+ this.culledByFrustrum = culled;
3672
+ };
3673
+ Sprite3d.prototype.calculateTrimmedVertices = function () {
3674
+ if (this.proj._affine) {
3675
+ _super.prototype.calculateTrimmedVertices.call(this);
3676
+ return;
3677
+ }
3678
+ var wid = this.transform._worldID;
3679
+ var tuid = this._texture._updateID;
3680
+ if (!this.vertexTrimmedData) {
3681
+ this.vertexTrimmedData = new Float32Array(8);
3682
+ }
3683
+ else if (this._transformTrimmedID === wid && this._textureTrimmedID === tuid) {
3684
+ return;
3685
+ }
3686
+ this._transformTrimmedID = wid;
3687
+ this._textureTrimmedID = tuid;
3688
+ var texture = this._texture;
3689
+ var vertexData = this.vertexTrimmedData;
3690
+ var orig = texture.orig;
3691
+ var anchor = this._anchor;
3692
+ var wt = this.proj.world.mat4;
3693
+ var w1 = -anchor._x * orig.width;
3694
+ var w0 = w1 + orig.width;
3695
+ var h1 = -anchor._y * orig.height;
3696
+ var h0 = h1 + orig.height;
3697
+ var culled = false;
3698
+ var w = 1.0 / (wt[3] * w1 + wt[7] * h1 + wt[15]);
3699
+ vertexData[0] = w * ((wt[0] * w1) + (wt[4] * h1) + wt[12]);
3700
+ vertexData[1] = w * ((wt[1] * w1) + (wt[5] * h1) + wt[13]);
3701
+ var z = (wt[2] * w1) + (wt[6] * h1) + wt[14];
3702
+ culled = culled || z < 0;
3703
+ w = 1.0 / (wt[3] * w0 + wt[7] * h1 + wt[15]);
3704
+ vertexData[2] = w * ((wt[0] * w0) + (wt[4] * h1) + wt[12]);
3705
+ vertexData[3] = w * ((wt[1] * w0) + (wt[5] * h1) + wt[13]);
3706
+ z = (wt[2] * w0) + (wt[6] * h1) + wt[14];
3707
+ culled = culled || z < 0;
3708
+ w = 1.0 / (wt[3] * w0 + wt[7] * h0 + wt[15]);
3709
+ vertexData[4] = w * ((wt[0] * w0) + (wt[4] * h0) + wt[12]);
3710
+ vertexData[5] = w * ((wt[1] * w0) + (wt[5] * h0) + wt[13]);
3711
+ z = (wt[2] * w0) + (wt[6] * h0) + wt[14];
3712
+ culled = culled || z < 0;
3713
+ w = 1.0 / (wt[3] * w1 + wt[7] * h0 + wt[15]);
3714
+ vertexData[6] = w * ((wt[0] * w1) + (wt[4] * h0) + wt[12]);
3715
+ vertexData[7] = w * ((wt[1] * w1) + (wt[5] * h0) + wt[13]);
3716
+ z = (wt[2] * w1) + (wt[6] * h0) + wt[14];
3717
+ culled = culled || z < 0;
3718
+ this.trimmedCulledByFrustrum = culled;
3719
+ };
3720
+ Sprite3d.prototype._renderWebGL = function (renderer) {
3721
+ this.calculateVertices();
3722
+ if (this.culledByFrustrum) {
3723
+ return;
3724
+ }
3725
+ renderer.setObjectRenderer(renderer.plugins[this.pluginName]);
3726
+ renderer.plugins[this.pluginName].render(this);
3727
+ };
3728
+ Sprite3d.prototype.containsPoint = function (point) {
3729
+ if (this.culledByFrustrum) {
3730
+ return false;
3731
+ }
3732
+ return _super.prototype.containsPoint.call(this, point);
3733
+ };
3734
+ Object.defineProperty(Sprite3d.prototype, "worldTransform", {
3735
+ get: function () {
3736
+ return this.proj.affine ? this.transform.worldTransform : this.proj.world;
3737
+ },
3738
+ enumerable: true,
3739
+ configurable: true
3740
+ });
3741
+ Sprite3d.prototype.toLocal = function (position, from, point, skipUpdate, step) {
3742
+ if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; }
3743
+ return pixi_projection.container3dToLocal.call(this, position, from, point, skipUpdate, step);
3744
+ };
3745
+ Sprite3d.prototype.isFrontFace = function (forceUpdate) {
3746
+ return pixi_projection.container3dIsFrontFace.call(this, forceUpdate);
3747
+ };
3748
+ Sprite3d.prototype.getDepth = function (forceUpdate) {
3749
+ return pixi_projection.container3dGetDepth.call(this, forceUpdate);
3750
+ };
3751
+ Object.defineProperty(Sprite3d.prototype, "position3d", {
3752
+ get: function () {
3753
+ return this.proj.position;
3754
+ },
3755
+ set: function (value) {
3756
+ this.proj.position.copy(value);
3757
+ },
3758
+ enumerable: true,
3759
+ configurable: true
3760
+ });
3761
+ Object.defineProperty(Sprite3d.prototype, "scale3d", {
3762
+ get: function () {
3763
+ return this.proj.scale;
3764
+ },
3765
+ set: function (value) {
3766
+ this.proj.scale.copy(value);
3767
+ },
3768
+ enumerable: true,
3769
+ configurable: true
3770
+ });
3771
+ Object.defineProperty(Sprite3d.prototype, "euler", {
3772
+ get: function () {
3773
+ return this.proj.euler;
3774
+ },
3775
+ set: function (value) {
3776
+ this.proj.euler.copy(value);
3777
+ },
3778
+ enumerable: true,
3779
+ configurable: true
3780
+ });
3781
+ Object.defineProperty(Sprite3d.prototype, "pivot3d", {
3782
+ get: function () {
3783
+ return this.proj.pivot;
3784
+ },
3785
+ set: function (value) {
3786
+ this.proj.pivot.copy(value);
3787
+ },
3788
+ enumerable: true,
3789
+ configurable: true
3790
+ });
3791
+ return Sprite3d;
3792
+ }(PIXI.Sprite));
3793
+ pixi_projection.Sprite3d = Sprite3d;
3794
+ })(pixi_projection || (pixi_projection = {}));
3795
+ var pixi_projection;
3796
+ (function (pixi_projection) {
3797
+ var Text3d = (function (_super) {
3798
+ __extends(Text3d, _super);
3799
+ function Text3d(text, style, canvas) {
3800
+ var _this = _super.call(this, text, style, canvas) || this;
3801
+ _this.proj = new pixi_projection.Projection3d(_this.transform);
3802
+ _this.pluginName = 'sprite2d';
3803
+ _this.vertexData = new Float32Array(12);
3804
+ return _this;
3805
+ }
3806
+ Object.defineProperty(Text3d.prototype, "worldTransform", {
3807
+ get: function () {
3808
+ return this.proj.affine ? this.transform.worldTransform : this.proj.world;
3809
+ },
3810
+ enumerable: true,
3811
+ configurable: true
3812
+ });
3813
+ Text3d.prototype.toLocal = function (position, from, point, skipUpdate, step) {
3814
+ if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; }
3815
+ return pixi_projection.container3dToLocal.call(this, position, from, point, skipUpdate, step);
3816
+ };
3817
+ Text3d.prototype.isFrontFace = function (forceUpdate) {
3818
+ return pixi_projection.container3dIsFrontFace.call(this, forceUpdate);
3819
+ };
3820
+ Text3d.prototype.getDepth = function (forceUpdate) {
3821
+ return pixi_projection.container3dGetDepth.call(this, forceUpdate);
3822
+ };
3823
+ Object.defineProperty(Text3d.prototype, "position3d", {
3824
+ get: function () {
3825
+ return this.proj.position;
3826
+ },
3827
+ set: function (value) {
3828
+ this.proj.position.copy(value);
3829
+ },
3830
+ enumerable: true,
3831
+ configurable: true
3832
+ });
3833
+ Object.defineProperty(Text3d.prototype, "scale3d", {
3834
+ get: function () {
3835
+ return this.proj.scale;
3836
+ },
3837
+ set: function (value) {
3838
+ this.proj.scale.copy(value);
3839
+ },
3840
+ enumerable: true,
3841
+ configurable: true
3842
+ });
3843
+ Object.defineProperty(Text3d.prototype, "euler", {
3844
+ get: function () {
3845
+ return this.proj.euler;
3846
+ },
3847
+ set: function (value) {
3848
+ this.proj.euler.copy(value);
3849
+ },
3850
+ enumerable: true,
3851
+ configurable: true
3852
+ });
3853
+ Object.defineProperty(Text3d.prototype, "pivot3d", {
3854
+ get: function () {
3855
+ return this.proj.pivot;
3856
+ },
3857
+ set: function (value) {
3858
+ this.proj.pivot.copy(value);
3859
+ },
3860
+ enumerable: true,
3861
+ configurable: true
3862
+ });
3863
+ return Text3d;
3864
+ }(PIXI.Text));
3865
+ pixi_projection.Text3d = Text3d;
3866
+ Text3d.prototype.calculateVertices = pixi_projection.Sprite3d.prototype.calculateVertices;
3867
+ Text3d.prototype.calculateTrimmedVertices = pixi_projection.Sprite3d.prototype.calculateTrimmedVertices;
3868
+ Text3d.prototype._calculateBounds = pixi_projection.Sprite3d.prototype._calculateBounds;
3869
+ Text3d.prototype.containsPoint = pixi_projection.Sprite3d.prototype.containsPoint;
3870
+ Text3d.prototype._renderWebGL = pixi_projection.Sprite3d.prototype._renderWebGL;
3871
+ })(pixi_projection || (pixi_projection = {}));
3872
+ var pixi_projection;
3873
+ (function (pixi_projection) {
3874
+ var containerProps = {
3875
+ worldTransform: {
3876
+ get: pixi_projection.container3dWorldTransform,
3877
+ enumerable: true,
3878
+ configurable: true
3879
+ },
3880
+ position3d: {
3881
+ get: function () { return this.proj.position; },
3882
+ set: function (value) { this.proj.position.copy(value); }
3883
+ },
3884
+ scale3d: {
3885
+ get: function () { return this.proj.scale; },
3886
+ set: function (value) { this.proj.scale.copy(value); }
3887
+ },
3888
+ pivot3d: {
3889
+ get: function () { return this.proj.pivot; },
3890
+ set: function (value) { this.proj.pivot.copy(value); }
3891
+ },
3892
+ euler: {
3893
+ get: function () { return this.proj.euler; },
3894
+ set: function (value) { this.proj.euler.copy(value); }
3895
+ }
3896
+ };
3897
+ function convertTo3d() {
3898
+ if (this.proj)
3899
+ return;
3900
+ this.proj = new pixi_projection.Projection3d(this.transform);
3901
+ this.toLocal = pixi_projection.Container3d.prototype.toLocal;
3902
+ this.isFrontFace = pixi_projection.Container3d.prototype.isFrontFace;
3903
+ this.getDepth = pixi_projection.Container3d.prototype.getDepth;
3904
+ Object.defineProperties(this, containerProps);
3905
+ }
3906
+ PIXI.Container.prototype.convertTo3d = convertTo3d;
3907
+ PIXI.Sprite.prototype.convertTo3d = function () {
3908
+ if (this.proj)
3909
+ return;
3910
+ this.calculateVertices = pixi_projection.Sprite3d.prototype.calculateVertices;
3911
+ this.calculateTrimmedVertices = pixi_projection.Sprite3d.prototype.calculateTrimmedVertices;
3912
+ this._calculateBounds = pixi_projection.Sprite3d.prototype._calculateBounds;
3913
+ this.containsPoint = pixi_projection.Sprite3d.prototype.containsPoint;
3914
+ this.pluginName = 'sprite2d';
3915
+ this.vertexData = new Float32Array(12);
3916
+ convertTo3d.call(this);
3917
+ };
3918
+ PIXI.mesh.Mesh.prototype.convertTo3d = function () {
3919
+ if (this.proj)
3920
+ return;
3921
+ this.pluginName = 'mesh2d';
3922
+ convertTo3d.call(this);
3923
+ };
3924
+ PIXI.Container.prototype.convertSubtreeTo3d = function () {
3925
+ this.convertTo3d();
3926
+ for (var i = 0; i < this.children.length; i++) {
3927
+ this.children[i].convertSubtreeTo3d();
3928
+ }
3929
+ };
3930
+ })(pixi_projection || (pixi_projection = {}));
3931
+ //# sourceMappingURL=pixi-projection.js.map