UNPKG

1.48 kBJavaScriptView Raw
1import { ExtensionType, extensions } from '@pixi/extensions';
2import { Transform, Matrix } from '@pixi/math';
3import { RenderTexture } from './RenderTexture.mjs';
4
5const tempTransform = new Transform();
6class GenerateTextureSystem {
7 constructor(renderer) {
8 this.renderer = renderer;
9 this._tempMatrix = new Matrix();
10 }
11 generateTexture(displayObject, options) {
12 const { region: manualRegion, ...textureOptions } = options || {};
13 const region = manualRegion || displayObject.getLocalBounds(null, true);
14 if (region.width === 0)
15 region.width = 1;
16 if (region.height === 0)
17 region.height = 1;
18 const renderTexture = RenderTexture.create({
19 width: region.width,
20 height: region.height,
21 ...textureOptions
22 });
23 this._tempMatrix.tx = -region.x;
24 this._tempMatrix.ty = -region.y;
25 const transform = displayObject.transform;
26 displayObject.transform = tempTransform;
27 this.renderer.render(displayObject, {
28 renderTexture,
29 transform: this._tempMatrix,
30 skipUpdateTransform: !!displayObject.parent,
31 blit: true
32 });
33 displayObject.transform = transform;
34 return renderTexture;
35 }
36 destroy() {
37 }
38}
39GenerateTextureSystem.extension = {
40 type: [
41 ExtensionType.RendererSystem,
42 ExtensionType.CanvasRendererSystem
43 ],
44 name: "textureGenerator"
45};
46extensions.add(GenerateTextureSystem);
47
48export { GenerateTextureSystem };
49//# sourceMappingURL=GenerateTextureSystem.mjs.map