UNPKG

1.83 kBJavaScriptView Raw
1import { ExtensionType, extensions } from '@pixi/extensions';
2
3class ObjectRendererSystem {
4 constructor(renderer) {
5 this.renderer = renderer;
6 }
7 render(displayObject, options) {
8 const renderer = this.renderer;
9 let renderTexture;
10 let clear;
11 let transform;
12 let skipUpdateTransform;
13 if (options) {
14 renderTexture = options.renderTexture;
15 clear = options.clear;
16 transform = options.transform;
17 skipUpdateTransform = options.skipUpdateTransform;
18 }
19 this.renderingToScreen = !renderTexture;
20 renderer.runners.prerender.emit();
21 renderer.emit("prerender");
22 renderer.projection.transform = transform;
23 if (renderer.context.isLost) {
24 return;
25 }
26 if (!renderTexture) {
27 this.lastObjectRendered = displayObject;
28 }
29 if (!skipUpdateTransform) {
30 const cacheParent = displayObject.enableTempParent();
31 displayObject.updateTransform();
32 displayObject.disableTempParent(cacheParent);
33 }
34 renderer.renderTexture.bind(renderTexture);
35 renderer.batch.currentRenderer.start();
36 if (clear ?? renderer.background.clearBeforeRender) {
37 renderer.renderTexture.clear();
38 }
39 displayObject.render(renderer);
40 renderer.batch.currentRenderer.flush();
41 if (renderTexture) {
42 if (options.blit) {
43 renderer.framebuffer.blit();
44 }
45 renderTexture.baseTexture.update();
46 }
47 renderer.runners.postrender.emit();
48 renderer.projection.transform = null;
49 renderer.emit("postrender");
50 }
51 destroy() {
52 this.renderer = null;
53 this.lastObjectRendered = null;
54 }
55}
56ObjectRendererSystem.extension = {
57 type: ExtensionType.RendererSystem,
58 name: "objectRenderer"
59};
60extensions.add(ObjectRendererSystem);
61
62export { ObjectRendererSystem };
63//# sourceMappingURL=ObjectRendererSystem.mjs.map