slab renderer

This commit is contained in:
wass08
2026-01-27 07:32:46 +09:00
parent 8b1fbb4c1d
commit 8940f70117
7 changed files with 467 additions and 1 deletions
@@ -4,6 +4,7 @@ import { type AnyNode, useScene } from '@pascal-app/core'
import { BuildingRenderer } from './building/building-renderer'
import { ItemRenderer } from './item/item-renderer'
import { LevelRenderer } from './level/level-renderer'
import { SlabRenderer } from './slab/slab-renderer'
import { WallRenderer } from './wall/wall-renderer'
import { ZoneRenderer } from './zone/zone-renderer'
@@ -17,6 +18,7 @@ export const NodeRenderer = ({ nodeId }: { nodeId: AnyNode['id'] }) => {
{node.type === 'building' && <BuildingRenderer node={node} />}
{node.type === 'level' && <LevelRenderer node={node} />}
{node.type === 'item' && <ItemRenderer node={node} />}
{node.type === 'slab' && <SlabRenderer node={node} />}
{node.type === 'wall' && <WallRenderer node={node} />}
{node.type === 'zone' && <ZoneRenderer node={node} />}
</>
@@ -0,0 +1,17 @@
import { useRegistry, type SlabNode } from '@pascal-app/core'
import { useRef } from 'react'
import type { Mesh } from 'three'
export const SlabRenderer = ({ node }: { node: SlabNode }) => {
const ref = useRef<Mesh>(null!)
useRegistry(node.id, 'slab', ref)
return (
<mesh ref={ref} castShadow receiveShadow>
{/* SlabSystem will replace this geometry in the next frame */}
<boxGeometry args={[0, 0, 0]} />
<meshStandardMaterial color="#e5e5e5" />
</mesh>
)
}
@@ -1,6 +1,6 @@
'use client'
import { WallSystem } from '@pascal-app/core'
import { SlabSystem, WallSystem } from '@pascal-app/core'
import { Bvh, Environment } from '@react-three/drei'
import { Canvas, extend, type ThreeToJSXElements } from '@react-three/fiber'
import * as THREE from 'three/webgpu'
@@ -40,6 +40,7 @@ const Viewer: React.FC<ViewerProps> = ({ children }) => {
{/* Default Systems */}
<LevelSystem />
<SlabSystem />
<WallSystem />
<PostProcessing />