walls: add configurable curtain wall systems - #905
Conversation
|
I hit an error while handling your request (Model unavailable on AI Gateway free tier: Free tier users do not have access to this model. Upgrade to paid credits at https://vercel.com/d?to=%2F%5Bteam%5D%2F%7E%2Fai%3Fmodal%3Dtop-up for unrestricted…). Please try again, rephrase, or reach out if it keeps failing. Error id: f639cf86-11ae-4239-bb94-2c7e2ba0b67c |
65d0278 to
e692bbc
Compare
- Add curtain wall schema, grid layouts, panels, and openings - Render curtain walls in 3D and floor plans with material painting - Add editor controls, previews, and coverage tests
- Add panel layout diagram and spacing summaries - Improve frame dimensions and glass appearance controls - Preserve painted glass and simplify wall finish handling
- Constrain door and window sizing within curtain wall clearances - Add live property previews and panel highlighting - Improve curtain wall grid navigation and tint editing
- Merge continuous stick members and cull shared faces - Preserve hosted opening cuts and live shaped-opening performance
- Add viewer adapter for curtain wall geometry - Decouple opening previews from core scene stores - Fix rectangular opening frame bounds
- Add corner-radius handles with Shift-based individual rounding - Improve curtain-wall cutouts, preview rebuilds, and shadow updates
e692bbc to
063ee7a
Compare
| if (!shadowMesh) return | ||
| const materials = Array.isArray(mesh.material) ? mesh.material : [mesh.material] | ||
| shadowMesh.geometry.dispose() | ||
| shadowMesh.geometry = buildCurtainWallShadowGeometry(geometry, isOpaque(materials[1])) |
There was a problem hiding this comment.
Curtain shadow mesh never created
High Severity
syncAuxiliaryGeometry only updates an existing curtain-wall-shadow child and never creates one. Nothing else in the app mounts that mesh, so curtain walls never get the opaque frame/spandrel caster. Glass panes then cast or drop shadows with the main wall mesh instead of transmitting light.
Reviewed by Cursor Bugbot for commit 063ee7a. Configure here.
| }) | ||
| } | ||
| max={limits?.height ?? 1000} | ||
| min={Math.min(1, limits?.height ?? 1)} |
There was a problem hiding this comment.
Inspector sliders block opening recovery
Medium Severity
Door width (and the matching window size sliders) cap at limits.width / limits.height, the in-place centered span. For a flush or off-center curtain opening that value is 0 or smaller than the current size, so the slider clamps every edit before constrainCurtainOpening can slide the opening back into the perimeter band.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit 063ee7a. Configure here.
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
There are 3 total unresolved issues (including 2 from previous reviews).
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 73eefdc. Configure here.
| precision={2} | ||
| restoreOnCommit={false} | ||
| step={0.05} | ||
| step={0.01} |
There was a problem hiding this comment.
Preview sliders ignore repeated arrows
Medium Severity
Door and window dimension sliders now preview through live overrides while still binding value to the document node. SliderControl arrow-key nudges apply a step to that frozen value, so repeat ArrowUp/ArrowDown does not accumulate and a nudge after typing jumps back to the committed size.
Additional Locations (2)
Reviewed by Cursor Bugbot for commit 73eefdc. Configure here.


What does this PR do?
How to test
bun run checksandbun run build; both should complete successfully.bun run dev, openhttp://localhost:3002, create several walls, and switch their wall type to Curtain wall.Screenshots / screen recording
Checklist
bun devbun checkto verify)mainbranchNote
Medium Risk
Large surface area across wall rendering, opening placement, and editor handle/drag behavior; regressions could affect standard walls, undo, or door/window sizing on non-curtain hosts if constraints leak.
Overview
Introduces curtain walls as a first-class wall type: schema (
wallType: 'curtain',CurtainWallConfig), panel UI, stick/unitized layout, materials/paint roles, 3D geometry (including curved walls and dense grids), floorplan shapes, and a viewer wall geometry adapter for openings, shadows, and live previews.Doors and windows on curtain hosts get perimeter-aware sizing/placement (
constrainCurtainOpening, arc-length wall math), shaped opening frames in the curtain mesh, and a shared property preview path so sliders/handles update live overrides and commit as a single undo step.SliderControlgains cancel/escape, optional preview-while-typing, and pointer-loss cleanup.The editor adds a
corner-radiushandle type (Shift for per-corner radii on openings), wired into door/window definitions plus contextual Shift help. Minor tooling: ignore.next-*, Biome exclude,lintsscript. Door panel drops the documentation section and uses preview-based dimension sliders.Reviewed by Cursor Bugbot for commit 73eefdc. Bugbot is set up for automated code reviews on this repo. Configure here.