"use client"; import { AnyNode, LevelNode, useScene, WallNode } from "@pascal-app/core"; import { useRef } from "react"; import * as THREE from "three/webgpu"; export const SceneRenderer = () => { const rootNodes = useScene((state) => state.rootNodeIds); return rootNodes.map((nodeId) => ( )); }; const NodeRenderer = ({ nodeId }: { nodeId: AnyNode["id"] }) => { const node = useScene((state) => state.nodes[nodeId]); if (!node) return null; return ( <> {node.type === "level" && } {/* {node.type === "item" && } */} {node.type === "wall" && } ); }; const LevelRenderer = ({ node }: { node: LevelNode }) => { const ref = useRef(null!); // useRegistry(node.id, node.type, ref); return ( {node.children.map((childId) => ( ))} ); }; const WallRenderer = ({ node }: { node: WallNode }) => { const ref = useRef(null!); console.log("node", node); // useRegistry(node.id, "wall", ref); return ( {/* WallSystem will replace this geometry in the next frame */} {/* If you want windows to be inside the wall's local coordinate system: render children here. */} {/* {node.children.map((childId) => ( ))} */} ); };