@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
32 lines (31 loc) • 1.03 kB
JavaScript
;
import { RopType } from "../../engine/poly/registers/nodes/types/Rop";
import { CameraAttribute } from "./CoreCamera";
import { isNumber } from "../Type";
import { coreObjectClassFactory } from "../geometry/CoreObjectFactory";
export class CoreCameraCSSRendererController {
static isCSSRendererNode(node) {
return node.type() == RopType.CSS2D || node.type() == RopType.CSS3D;
}
static cssRendererConfig(options) {
const { canvas, scene, camera } = options;
const nodeId = coreObjectClassFactory(camera).attribValue(camera, CameraAttribute.CSS_RENDERER_NODE_ID);
if (nodeId == null) {
return;
}
if (!isNumber(nodeId)) {
return;
}
const foundNode = scene.graph.nodeFromId(nodeId);
if (!foundNode) {
return;
}
if (!this.isCSSRendererNode(foundNode)) {
return;
}
const cssRendererNode = foundNode;
cssRendererNode.compute();
const cssRenderer = cssRendererNode.renderer(canvas);
return { cssRenderer, cssRendererNode };
}
}