'use client' import { type DoorNode, useLiveNodeOverrides, useRegistry, useScene } from '@pascal-app/core' import { useNodeEvents } from '@pascal-app/viewer' import { useLayoutEffect, useRef } from 'react' import { type Mesh, MeshBasicMaterial } from 'three' import { RoofFaceHostFrame } from '../shared/roof-face-host' const doorHitboxMaterial = new MeshBasicMaterial({ visible: false }) export const DoorRenderer = ({ node }: { node: DoorNode }) => { const ref = useRef(null!) useRegistry(node.id, 'door', ref) useLayoutEffect(() => { useScene.getState().markDirty(node.id) }, [node.id]) const handlers = useNodeEvents(node, 'door') const liveVisible = useLiveNodeOverrides((s) => { const visible = s.get(node.id)?.visible return typeof visible === 'boolean' ? visible : undefined }) const isTransient = !!(node.metadata as Record | null)?.isTransient const mesh = ( ) if (!node.roofSegmentId) return mesh return ( {mesh} ) } export default DoorRenderer