feat(paint-slots): add node.slots field to fence/stair/column/elevator schemas
Pre-adds the unified slot-ref field (Record<slotId, MaterialRef>) to the four kinds being migrated onto the paint-slot model, so per-kind work can proceed in parallel worktrees without cross-package core edits. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
4c27558a4f
commit
a8f32dd47a
@@ -159,6 +159,9 @@ export const ColumnNode = BaseNode.extend({
|
||||
bracePlateEnabled: z.boolean().default(true),
|
||||
material: MaterialSchema.optional(),
|
||||
materialPreset: z.string().optional(),
|
||||
// Unified paint-slot refs (`scene:`/`library:` MaterialRef per slot id),
|
||||
// matching the slot model items/slab/shelf use. Absent = declared default.
|
||||
slots: z.record(z.string(), z.string()).optional(),
|
||||
}).describe(dedent`
|
||||
Column node - used to represent structural or decorative pillars/columns.
|
||||
- style: visual approach such as plain, lathe-turned, carved, or cluster
|
||||
|
||||
@@ -16,6 +16,9 @@ export const ElevatorNode = BaseNode.extend({
|
||||
type: nodeType('elevator'),
|
||||
material: MaterialSchema.optional(),
|
||||
materialPreset: z.string().optional(),
|
||||
// Unified paint-slot refs (`scene:`/`library:` MaterialRef per slot id),
|
||||
// matching the slot model items/slab/shelf use. Absent = declared default.
|
||||
slots: z.record(z.string(), z.string()).optional(),
|
||||
position: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
|
||||
// Rotation around the Y axis in radians.
|
||||
rotation: z.number().default(0),
|
||||
|
||||
@@ -11,6 +11,9 @@ export const FenceNode = BaseNode.extend({
|
||||
type: nodeType('fence'),
|
||||
material: MaterialSchema.optional(),
|
||||
materialPreset: z.string().optional(),
|
||||
// Unified paint-slot refs (`scene:`/`library:` MaterialRef per slot id),
|
||||
// matching the slot model items/slab/shelf use. Absent = declared default.
|
||||
slots: z.record(z.string(), z.string()).optional(),
|
||||
start: z.tuple([z.number(), z.number()]),
|
||||
end: z.tuple([z.number(), z.number()]),
|
||||
height: z.number().default(1.8),
|
||||
|
||||
@@ -31,6 +31,9 @@ export const StairNode = BaseNode.extend({
|
||||
treadMaterialPreset: z.string().optional(),
|
||||
sideMaterial: MaterialSchema.optional(),
|
||||
sideMaterialPreset: z.string().optional(),
|
||||
// Unified paint-slot refs (`scene:`/`library:` MaterialRef per slot id),
|
||||
// matching the slot model items/slab/shelf use. Absent = declared default.
|
||||
slots: z.record(z.string(), z.string()).optional(),
|
||||
position: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
|
||||
// Rotation around Y axis in radians
|
||||
rotation: z.number().default(0),
|
||||
|
||||
Reference in New Issue
Block a user