{"version":3,"file":"BatchableGraphics.mjs","sources":["../../../../src/scene/graphics/shared/BatchableGraphics.ts"],"sourcesContent":["import { Matrix } from '../../../maths/matrix/Matrix';\nimport { multiplyHexColors } from '../../container/utils/multiplyHexColors';\n\nimport type { Batch, Batcher } from '../../../rendering/batcher/shared/Batcher';\nimport type { DefaultBatchableMeshElement } from '../../../rendering/batcher/shared/DefaultBatcher';\nimport type { Topology } from '../../../rendering/renderers/shared/geometry/const';\nimport type { Texture } from '../../../rendering/renderers/shared/texture/Texture';\nimport type { Graphics } from './Graphics';\n\nconst identityMatrix = new Matrix();\n\n/**\n * A batchable graphics object.\n * @ignore\n */\nexport class BatchableGraphics implements DefaultBatchableMeshElement\n{\n    public readonly packAsQuad = false;\n    public batcherName = 'default';\n\n    public texture: Texture;\n\n    public topology: Topology = 'triangle-list';\n    public renderable: Graphics;\n    public indexOffset: number;\n    public indexSize: number;\n    public attributeOffset: number;\n    public attributeSize: number;\n    public baseColor: number;\n    public alpha: number;\n    public applyTransform = true;\n    public roundPixels: 0 | 1 = 0;\n\n    public _indexStart: number;\n    public _textureId: number;\n    public _attributeStart: number;\n    public _batcher: Batcher = null;\n    public _batch: Batch = null;\n\n    public geometryData: { vertices: number[]; uvs: number[]; indices: number[]; };\n\n    get uvs()\n    {\n        return this.geometryData.uvs;\n    }\n\n    get positions()\n    {\n        return this.geometryData.vertices;\n    }\n\n    get indices()\n    {\n        return this.geometryData.indices;\n    }\n\n    get blendMode()\n    {\n        if (this.renderable && this.applyTransform)\n        {\n            return this.renderable.groupBlendMode;\n        }\n\n        return 'normal';\n    }\n\n    get color()\n    {\n        const rgb = this.baseColor;\n        const bgr = (rgb >> 16) | (rgb & 0xff00) | ((rgb & 0xff) << 16);\n        const renderable = this.renderable;\n\n        if (renderable)\n        {\n            return multiplyHexColors(bgr, renderable.groupColor)\n            + ((this.alpha * renderable.groupAlpha * 255) << 24);\n        }\n\n        return bgr + ((this.alpha * 255) << 24);\n    }\n\n    get transform()\n    {\n        return this.renderable?.groupTransform || identityMatrix;\n    }\n\n    public copyTo(gpuBuffer: BatchableGraphics)\n    {\n        gpuBuffer.indexOffset = this.indexOffset;\n        gpuBuffer.indexSize = this.indexSize;\n\n        gpuBuffer.attributeOffset = this.attributeOffset;\n        gpuBuffer.attributeSize = this.attributeSize;\n\n        gpuBuffer.baseColor = this.baseColor;\n        gpuBuffer.alpha = this.alpha;\n\n        gpuBuffer.texture = this.texture;\n        gpuBuffer.geometryData = this.geometryData;\n\n        gpuBuffer.topology = this.topology;\n    }\n\n    public reset()\n    {\n        this.applyTransform = true;\n        this.renderable = null;\n        this.topology = 'triangle-list';\n    }\n\n    public destroy()\n    {\n        this.renderable = null;\n        this.texture = null;\n        this.geometryData = null;\n        this._batcher = null;\n        this._batch = null;\n    }\n}\n"],"names":[],"mappings":";;;;AASA,MAAM,cAAA,GAAiB,IAAI,MAAA,EAAO;AAM3B,MAAM,iBAAA,CACb;AAAA,EADO,WAAA,GAAA;AAEH,IAAA,IAAA,CAAgB,UAAA,GAAa,KAAA;AAC7B,IAAA,IAAA,CAAO,WAAA,GAAc,SAAA;AAIrB,IAAA,IAAA,CAAO,QAAA,GAAqB,eAAA;AAQ5B,IAAA,IAAA,CAAO,cAAA,GAAiB,IAAA;AACxB,IAAA,IAAA,CAAO,WAAA,GAAqB,CAAA;AAK5B,IAAA,IAAA,CAAO,QAAA,GAAoB,IAAA;AAC3B,IAAA,IAAA,CAAO,MAAA,GAAgB,IAAA;AAAA,EAAA;AAAA,EAIvB,IAAI,GAAA,GACJ;AACI,IAAA,OAAO,KAAK,YAAA,CAAa,GAAA;AAAA,EAC7B;AAAA,EAEA,IAAI,SAAA,GACJ;AACI,IAAA,OAAO,KAAK,YAAA,CAAa,QAAA;AAAA,EAC7B;AAAA,EAEA,IAAI,OAAA,GACJ;AACI,IAAA,OAAO,KAAK,YAAA,CAAa,OAAA;AAAA,EAC7B;AAAA,EAEA,IAAI,SAAA,GACJ;AACI,IAAA,IAAI,IAAA,CAAK,UAAA,IAAc,IAAA,CAAK,cAAA,EAC5B;AACI,MAAA,OAAO,KAAK,UAAA,CAAW,cAAA;AAAA,IAC3B;AAEA,IAAA,OAAO,QAAA;AAAA,EACX;AAAA,EAEA,IAAI,KAAA,GACJ;AACI,IAAA,MAAM,MAAM,IAAA,CAAK,SAAA;AACjB,IAAA,MAAM,MAAO,GAAA,IAAO,EAAA,GAAO,GAAA,GAAM,KAAA,GAAA,CAAY,MAAM,GAAA,KAAS,EAAA;AAC5D,IAAA,MAAM,aAAa,IAAA,CAAK,UAAA;AAExB,IAAA,IAAI,UAAA,EACJ;AACI,MAAA,OAAO,iBAAA,CAAkB,KAAK,UAAA,CAAW,UAAU,KAC/C,IAAA,CAAK,KAAA,GAAQ,UAAA,CAAW,UAAA,GAAa,GAAA,IAAQ,EAAA,CAAA;AAAA,IACrD;AAEA,IAAA,OAAO,GAAA,IAAQ,IAAA,CAAK,KAAA,GAAQ,GAAA,IAAQ,EAAA,CAAA;AAAA,EACxC;AAAA,EAEA,IAAI,SAAA,GACJ;AACI,IAAA,OAAO,IAAA,CAAK,YAAY,cAAA,IAAkB,cAAA;AAAA,EAC9C;AAAA,EAEO,OAAO,SAAA,EACd;AACI,IAAA,SAAA,CAAU,cAAc,IAAA,CAAK,WAAA;AAC7B,IAAA,SAAA,CAAU,YAAY,IAAA,CAAK,SAAA;AAE3B,IAAA,SAAA,CAAU,kBAAkB,IAAA,CAAK,eAAA;AACjC,IAAA,SAAA,CAAU,gBAAgB,IAAA,CAAK,aAAA;AAE/B,IAAA,SAAA,CAAU,YAAY,IAAA,CAAK,SAAA;AAC3B,IAAA,SAAA,CAAU,QAAQ,IAAA,CAAK,KAAA;AAEvB,IAAA,SAAA,CAAU,UAAU,IAAA,CAAK,OAAA;AACzB,IAAA,SAAA,CAAU,eAAe,IAAA,CAAK,YAAA;AAE9B,IAAA,SAAA,CAAU,WAAW,IAAA,CAAK,QAAA;AAAA,EAC9B;AAAA,EAEO,KAAA,GACP;AACI,IAAA,IAAA,CAAK,cAAA,GAAiB,IAAA;AACtB,IAAA,IAAA,CAAK,UAAA,GAAa,IAAA;AAClB,IAAA,IAAA,CAAK,QAAA,GAAW,eAAA;AAAA,EACpB;AAAA,EAEO,OAAA,GACP;AACI,IAAA,IAAA,CAAK,UAAA,GAAa,IAAA;AAClB,IAAA,IAAA,CAAK,OAAA,GAAU,IAAA;AACf,IAAA,IAAA,CAAK,YAAA,GAAe,IAAA;AACpB,IAAA,IAAA,CAAK,QAAA,GAAW,IAAA;AAChB,IAAA,IAAA,CAAK,MAAA,GAAS,IAAA;AAAA,EAClB;AACJ;;;;"}