Phase 5 batch kind: ceiling migrates to registry (always-on)
Structurally identical to slab. Stage A migration: registers the kind, wraps the legacy renderer + system, applies the panel slider-drag fix recipe. Files added (packages/nodes/src/ceiling/): - schema.ts: re-exports CeilingNode from core. - parametrics.ts: height slider only. Polygon + holes via floor-plan editors. - definition.ts: capabilities (no `movable`, `surfaces.top` mapped to `height`), relations (hosts: ['item'] for ceiling-mounted lights / fans, cascadeDelete: 'descendants'), toolHints, parametrics. - renderer.tsx: wrap-export of legacy CeilingRenderer. The legacy renderer uses TSL shader code for grid-line patterns (~100 lines); not worth duplicating at Stage A. Per-stage migration plan in plans/editor-node-registry.md moves the renderer body into this folder at Stage B/F. - system.tsx: re-exports legacy CeilingSystem. - index.ts: barrel. Files changed: - packages/viewer/src/index.ts: new public exports for CeilingRenderer + CeilingSystem. - packages/nodes/src/index.ts: appends ceilingDefinition. - packages/editor/src/components/ui/panels/ceiling-panel.tsx: panel slider-drag fix recipe applied (nodeRef pattern, useScene.getState() inside handler, drop subscribed updateNode dep) so the height slider doesn't trigger the same cascade fence + wall + slab fixed. Phase 5 progress: shelf ✅, spawn ✅, wall ✅, fence ✅, slab ✅, ceiling ✅. Six kinds on the registry. Door / window / item / stair / roof / zone follow. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.7
parent
4891f681f3
commit
2dd50fa5be
@@ -2,6 +2,12 @@
|
||||
// renderers (wall renders doors/windows, slab renders hosted items).
|
||||
// Public so registry-driven kinds can compose children without reaching
|
||||
// into viewer's internal paths.
|
||||
|
||||
// Ceiling internals re-exported for the registry-driven ceiling definition.
|
||||
// The ceiling renderer uses TSL shaders for a grid pattern — too much code
|
||||
// to duplicate at Stage A. Wrap-exported here, ported into the nodes
|
||||
// folder in a later stage.
|
||||
export { CeilingRenderer } from './components/renderers/ceiling/ceiling-renderer'
|
||||
export { NodeRenderer } from './components/renderers/node-renderer'
|
||||
export { default as Viewer } from './components/viewer'
|
||||
export type { HoverStyle, HoverStyles } from './components/viewer/post-processing'
|
||||
@@ -31,6 +37,7 @@ export {
|
||||
} from './lib/materials'
|
||||
export { mergedOutline } from './lib/merged-outline-node'
|
||||
export { default as useViewer } from './store/use-viewer'
|
||||
export { CeilingSystem } from './systems/ceiling/ceiling-system'
|
||||
// Fence system follows the wall re-export pattern — composed into the
|
||||
// registry-driven fence definition's `def.system`. Removed in Phase 6
|
||||
// alongside the legacy fence mount point.
|
||||
|
||||
Reference in New Issue
Block a user