feat(paint-slots): prepared-drywall finish + fence 4 slots matching build options

- Add 'concrete-drywall' (Prepared Drywall) catalog finish + 512 KTX2/webp
  runtime assets; default walls (WALL_SLOT_DEFAULT interior+exterior) and the
  roof wall/trim band to it so roofs read continuous with walls.
- fence: replace the 2-slot panel/rail split with 4 slots that match the panel's
  build options — posts / infill (showInfill) / base (grounded only) / rail —
  each its own mesh with userData.slotId; conditional slots track the build
  state. Defaults: posts/infill/base charcoal, rail wood-finewood27.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Wassim SAMAD
2026-06-17 20:51:49 -04:00
co-authored by Claude Opus 4.8
parent e92ee05702
commit bba0cc5f68
14 changed files with 115 additions and 52 deletions
+2 -2
View File
@@ -22,9 +22,9 @@ export function getRoofMaterials(
const materials = textures
? [
// Mirrors getRoofMaterialArray's catalog defaults (wall/trim concrete,
// Mirrors getRoofMaterialArray's catalog defaults (wall/trim drywall,
// soft-white deck + soffit, terracotta shingle) for the no-parent path.
resolveSlotDefaultMaterial('library:concrete-plate', shading), // 0: Wall/Trim
resolveSlotDefaultMaterial('library:concrete-drywall', shading), // 0: Wall/Trim
resolveSlotDefaultMaterial('library:preset-softwhite', shading), // 1: Deck
resolveSlotDefaultMaterial('library:preset-softwhite', shading), // 2: Interior
resolveSlotDefaultMaterial('library:roof-terracottatiles', shading), // 3: Shingle