UNPKG

@pixi/core

Version:
36 lines (35 loc) 1.84 kB
import { ExtensionType, extensions } from "@pixi/extensions"; class ObjectRendererSystem { // renderers scene graph! constructor(renderer) { this.renderer = renderer; } /** * Renders the object to its WebGL view. * @param displayObject - The object to be rendered. * @param options - the options to be passed to the renderer */ render(displayObject, options) { const renderer = this.renderer; let renderTexture, clear, transform, skipUpdateTransform; if (options && (renderTexture = options.renderTexture, clear = options.clear, transform = options.transform, skipUpdateTransform = options.skipUpdateTransform), this.renderingToScreen = !renderTexture, renderer.runners.prerender.emit(), renderer.emit("prerender"), renderer.projection.transform = transform, !renderer.context.isLost) { if (renderTexture || (this.lastObjectRendered = displayObject), !skipUpdateTransform) { const cacheParent = displayObject.enableTempParent(); displayObject.updateTransform(), displayObject.disableTempParent(cacheParent); } renderer.renderTexture.bind(renderTexture), renderer.batch.currentRenderer.start(), (clear ?? renderer.background.clearBeforeRender) && renderer.renderTexture.clear(), displayObject.render(renderer), renderer.batch.currentRenderer.flush(), renderTexture && (options.blit && renderer.framebuffer.blit(), renderTexture.baseTexture.update()), renderer.runners.postrender.emit(), renderer.projection.transform = null, renderer.emit("postrender"); } } destroy() { this.renderer = null, this.lastObjectRendered = null; } } ObjectRendererSystem.extension = { type: ExtensionType.RendererSystem, name: "objectRenderer" }; extensions.add(ObjectRendererSystem); export { ObjectRendererSystem }; //# sourceMappingURL=ObjectRendererSystem.mjs.map