@pixi/core
Version:
Core PixiJS
64 lines (61 loc) • 1.83 kB
JavaScript
import { ExtensionType, extensions } from '@pixi/extensions';
class ObjectRendererSystem {
constructor(renderer) {
this.renderer = renderer;
}
render(displayObject, options) {
const renderer = this.renderer;
let renderTexture;
let clear;
let transform;
let 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;
if (renderer.context.isLost) {
return;
}
if (!renderTexture) {
this.lastObjectRendered = displayObject;
}
if (!skipUpdateTransform) {
const cacheParent = displayObject.enableTempParent();
displayObject.updateTransform();
displayObject.disableTempParent(cacheParent);
}
renderer.renderTexture.bind(renderTexture);
renderer.batch.currentRenderer.start();
if (clear ?? renderer.background.clearBeforeRender) {
renderer.renderTexture.clear();
}
displayObject.render(renderer);
renderer.batch.currentRenderer.flush();
if (renderTexture) {
if (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