Repository navigation
Site: lot as a block in mapped surroundings, straight front setbacks - #1017
Conversation
…backs - Terrain: with a property line, the lot's ground is cut to the line and closed by a skirt down to one flat base (the lot reads as a block inside mapped 3D surroundings); the horizon disc sits just under that base. - Viewer: claimSceneGround(scene) lets a map layer outside React claim the scene ground (the fallback disc steps aside until released). - Camera: max distance 1500 m while the ground is replaced (a neighbourhood instead of the horizon disc), 100 m otherwise. - Site plan: an edge running nearly straight on (within 8°) from a front or street edge takes that edge's setback, so a frontage split into two collinear pieces no longer gets a curved setback arc. - Lot drop-in: no second roads lookup after a slow miss. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Engine side of the Architect's lot work, in three parts. With a property line on the site, the terrain now renders as a block: the ground surface is masked to the parcel per fragment, and a skirt follows the property line down to one flat base, so the lot reads as a solid sitting inside mapped 3D surroundings instead of a disc that caps it. The viewer gets a
Start with |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Want reviews to match your repository better? Bugbot Learning can learn team-specific rules from PR activity. A team admin can enable Learning in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 27811f6. Configure here.
| const distances: number[] = [] | ||
| for (let i = 0; i < n; i++) { | ||
| const role = runRole.get(runs[i] as number) ?? (roles[i] as EdgeRole) | ||
| const role = continued.get(i) ?? runRole.get(runs[i] as number) ?? (roles[i] as EdgeRole) |
There was a problem hiding this comment.
3D setbacks miss straight frontage
Medium Severity
The new nearly-straight frontage inheritance lives only in the editor setbackEnvelope. The nodes copy, which the 3D dashed overlay uses and which is documented as the same rules, still treats the leftover half as a side yard, so a split frontage still draws a curved envelope in the scene.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit 27811f6. Configure here.
| addSlabHoles(shape, slabPolygons, fadeBounds.cx, fadeBounds.cz) | ||
| return new ShapeGeometry(shape) | ||
| }, [fadeBounds, slabPolygons, terrainKey, groundReplaced]) | ||
| }, [fadeBounds, slabPolygons, groundReplaced]) |
There was a problem hiding this comment.
Horizon disc caps live excavation
Medium Severity
The horizon disc no longer punches terrainFootprint and instead sits at a React horizonY from terrainBlockBase. A sculpt stroke rewrites the mesh and skirt in place but does not move that disc, so a pit that drops below the last committed base is roofed over until the stroke commits.
Reviewed by Cursor Bugbot for commit 27811f6. Configure here.
…ast its lot line reported A house is placed on its lot by its building node's pose, never by moving its walls, so the model's coordinates survive and every path (a layout program, a hand trace, a DXF import, the lot drop-in) places it the same way. - Core owns the setback envelope (the edge roles, setbackEnvelope with #1017's straight-front rule, the oriented yards) and the building footprint (levelFootprintLoops, footprintOutline, siteFrame, levelFrame). The editor's site plan, its lot code and the 3D site import them; the 3D copy in nodes/src/site/setbacks.ts is deleted, so the 2D and 3D envelopes no longer diverge. - lib/site-placement.ts: siteBrief reads the site in the building's level frame (the lot, the buildable area and its state: lot / setbacks / none / advisory, its centre, the street side and the yaw that squares the house to it, north, address, parcel, zoning, the new-project placeholder, and the footprint's fit, yards and overhang, judged by area so an edge across a notch counts). placeBuildingPose centres a footprint (an outline about to be drawn, or the walls) in the buildable area, the pole when the centroid will not hold it, or at the yards given; the yaw is kept unless asked, the lot never resized, and a replay changes nothing. - Two shared tools, both surfaces: get_site (read) and place_building (the building node only), with annotations, justifications, the README table and the MCP agent guide. - verify_scene reports footprint_outside_site, footprint_outside_setbacks and buildable_area_none; create_room and add_wall say when what they drew crosses the lot line. - The lot drop-in re-centres a house the new lot leaves outside through placeBuildingPose, keeping its facing (buildingRecentreOffset is gone). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ast its lot line reported A house is placed on its lot by its building node's pose, never by moving its walls, so the model's coordinates survive and every path (a layout program, a hand trace, a DXF import, the lot drop-in) places it the same way. - Core owns the setback envelope (the edge roles, setbackEnvelope with #1017's straight-front rule, the oriented yards) and the building footprint (levelFootprintLoops, footprintOutline, siteFrame, levelFrame). The editor's site plan, its lot code and the 3D site import them; the 3D copy in nodes/src/site/setbacks.ts is deleted, so the 2D and 3D envelopes no longer diverge. - lib/site-placement.ts: siteBrief reads the site in the building's level frame (the lot, the buildable area and its state: lot / setbacks / none / advisory, its centre, the street side and the yaw that squares the house to it, north, address, parcel, zoning, the new-project placeholder, and the footprint's fit, yards and overhang, judged by area so an edge across a notch counts). placeBuildingPose centres a footprint (an outline about to be drawn, or the walls) in the buildable area, the pole when the centroid will not hold it, or at the yards given; the yaw is kept unless asked, the lot never resized, and a replay changes nothing. - Two shared tools, both surfaces: get_site (read) and place_building (the building node only), with annotations, justifications, the README table and the MCP agent guide. - verify_scene reports footprint_outside_site, footprint_outside_setbacks and buildable_area_none; create_room and add_wall say when what they drew crosses the lot line. - The lot drop-in re-centres a house the new lot leaves outside through placeBuildingPose, keeping its facing (buildingRecentreOffset is gone). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>


Engine side of the Architect's lot and map work. App PR: https://github.com/pascalorg/private-editor/pull/857 — merge this one first. @Aymericr
lot-mask.ts).claimSceneGround(scene)lets a map layer outside React take over the scene ground.Tests: terrain-geometry 45 pass, site-plan + lot 66 pass. tsc clean (viewer, nodes, editor).
🤖 Generated with Claude Code