diff --git a/packages/core/src/schema/nodes/column.ts b/packages/core/src/schema/nodes/column.ts index 78a52126..de411604 100644 --- a/packages/core/src/schema/nodes/column.ts +++ b/packages/core/src/schema/nodes/column.ts @@ -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 diff --git a/packages/core/src/schema/nodes/elevator.ts b/packages/core/src/schema/nodes/elevator.ts index 75639387..d1c97b49 100644 --- a/packages/core/src/schema/nodes/elevator.ts +++ b/packages/core/src/schema/nodes/elevator.ts @@ -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), diff --git a/packages/core/src/schema/nodes/fence.ts b/packages/core/src/schema/nodes/fence.ts index 40875717..1818d007 100644 --- a/packages/core/src/schema/nodes/fence.ts +++ b/packages/core/src/schema/nodes/fence.ts @@ -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), diff --git a/packages/core/src/schema/nodes/stair.ts b/packages/core/src/schema/nodes/stair.ts index a0c68fe1..abc1fe54 100644 --- a/packages/core/src/schema/nodes/stair.ts +++ b/packages/core/src/schema/nodes/stair.ts @@ -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),