@pascal-app/core 1.0.4 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-operations/__fixtures__/add-object-cases.d.ts +102 -90
- package/dist/agent-operations/__fixtures__/add-object-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/add-object-cases.js +301 -1
- package/dist/agent-operations/__fixtures__/add-stair-cases.d.ts +3 -0
- package/dist/agent-operations/__fixtures__/add-stair-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/add-stair-cases.js +176 -0
- package/dist/agent-operations/__fixtures__/build-room-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/build-room-cases.js +410 -40
- package/dist/agent-operations/__fixtures__/cases.d.ts +18 -3
- package/dist/agent-operations/__fixtures__/cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/cases.js +183 -4
- package/dist/agent-operations/__fixtures__/corner-window-cases.d.ts +3 -0
- package/dist/agent-operations/__fixtures__/corner-window-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/corner-window-cases.js +155 -0
- package/dist/agent-operations/__fixtures__/design-brief-cases.d.ts +14 -0
- package/dist/agent-operations/__fixtures__/design-brief-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/design-brief-cases.js +709 -0
- package/dist/agent-operations/__fixtures__/finish-cases.d.ts +7 -0
- package/dist/agent-operations/__fixtures__/finish-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/finish-cases.js +758 -0
- package/dist/agent-operations/__fixtures__/lot-info-cases.d.ts +3 -0
- package/dist/agent-operations/__fixtures__/lot-info-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/lot-info-cases.js +370 -0
- package/dist/agent-operations/__fixtures__/merge-windows-cases.d.ts +3 -0
- package/dist/agent-operations/__fixtures__/merge-windows-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/merge-windows-cases.js +321 -0
- package/dist/agent-operations/__fixtures__/native-materials.d.ts +2237 -0
- package/dist/agent-operations/__fixtures__/native-materials.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/native-materials.js +82 -0
- package/dist/agent-operations/__fixtures__/node-read-cases.d.ts +4 -0
- package/dist/agent-operations/__fixtures__/node-read-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/node-read-cases.js +639 -0
- package/dist/agent-operations/__fixtures__/notation-cases.d.ts +24 -0
- package/dist/agent-operations/__fixtures__/notation-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/notation-cases.js +356 -0
- package/dist/agent-operations/__fixtures__/place-items-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/place-items-cases.js +80 -2
- package/dist/agent-operations/__fixtures__/roof-bearing-cases.d.ts +19726 -0
- package/dist/agent-operations/__fixtures__/roof-bearing-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/roof-bearing-cases.js +106 -0
- package/dist/agent-operations/__fixtures__/roof-cases.d.ts +9 -0
- package/dist/agent-operations/__fixtures__/roof-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/roof-cases.js +382 -0
- package/dist/agent-operations/__fixtures__/room-cases.d.ts +2 -1
- package/dist/agent-operations/__fixtures__/room-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/room-cases.js +136 -1
- package/dist/agent-operations/__fixtures__/scene-check-cases.d.ts +4 -0
- package/dist/agent-operations/__fixtures__/scene-check-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/scene-check-cases.js +417 -0
- package/dist/agent-operations/__fixtures__/search-assets-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/search-assets-cases.js +15 -3
- package/dist/agent-operations/__fixtures__/site-cases.d.ts +290 -0
- package/dist/agent-operations/__fixtures__/site-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/site-cases.js +780 -0
- package/dist/agent-operations/__fixtures__/structure-cases.d.ts +1 -0
- package/dist/agent-operations/__fixtures__/structure-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/structure-cases.js +630 -3
- package/dist/agent-operations/__fixtures__/verify-scene-cases.d.ts +311 -1
- package/dist/agent-operations/__fixtures__/verify-scene-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/verify-scene-cases.js +59 -11
- package/dist/agent-operations/__fixtures__/view-assets-cases.d.ts +3 -0
- package/dist/agent-operations/__fixtures__/view-assets-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/view-assets-cases.js +155 -0
- package/dist/agent-operations/__fixtures__/view-scene-cases.d.ts +50 -0
- package/dist/agent-operations/__fixtures__/view-scene-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/view-scene-cases.js +425 -0
- package/dist/agent-operations/achieved.d.ts +5 -0
- package/dist/agent-operations/achieved.d.ts.map +1 -1
- package/dist/agent-operations/achieved.js +21 -1
- package/dist/agent-operations/add-column.d.ts.map +1 -1
- package/dist/agent-operations/add-column.js +3 -1
- package/dist/agent-operations/add-fence.d.ts +18 -0
- package/dist/agent-operations/add-fence.d.ts.map +1 -0
- package/dist/agent-operations/add-fence.js +48 -0
- package/dist/agent-operations/add-level.d.ts +4 -1
- package/dist/agent-operations/add-level.d.ts.map +1 -1
- package/dist/agent-operations/add-level.js +48 -12
- package/dist/agent-operations/add-object.d.ts +38 -9
- package/dist/agent-operations/add-object.d.ts.map +1 -1
- package/dist/agent-operations/add-object.js +172 -11
- package/dist/agent-operations/add-wall.d.ts +1 -3
- package/dist/agent-operations/add-wall.d.ts.map +1 -1
- package/dist/agent-operations/add-wall.js +35 -9
- package/dist/agent-operations/apply-changes.d.ts +7 -1
- package/dist/agent-operations/apply-changes.d.ts.map +1 -1
- package/dist/agent-operations/apply-changes.js +54 -22
- package/dist/agent-operations/apply-outcome.d.ts +6 -0
- package/dist/agent-operations/apply-outcome.d.ts.map +1 -1
- package/dist/agent-operations/apply-outcome.js +23 -8
- package/dist/agent-operations/asset-views.d.ts +75 -0
- package/dist/agent-operations/asset-views.d.ts.map +1 -0
- package/dist/agent-operations/asset-views.js +234 -0
- package/dist/agent-operations/author-scene.d.ts +157 -0
- package/dist/agent-operations/author-scene.d.ts.map +1 -0
- package/dist/agent-operations/author-scene.js +1076 -0
- package/dist/agent-operations/authored-scene-merge.d.ts +4 -0
- package/dist/agent-operations/authored-scene-merge.d.ts.map +1 -0
- package/dist/agent-operations/authored-scene-merge.js +96 -0
- package/dist/agent-operations/batch.d.ts +22 -0
- package/dist/agent-operations/batch.d.ts.map +1 -0
- package/dist/agent-operations/batch.js +104 -0
- package/dist/agent-operations/ceiling-object-observations.d.ts +31 -0
- package/dist/agent-operations/ceiling-object-observations.d.ts.map +1 -0
- package/dist/agent-operations/ceiling-object-observations.js +111 -0
- package/dist/agent-operations/corner-window.d.ts +19 -0
- package/dist/agent-operations/corner-window.d.ts.map +1 -0
- package/dist/agent-operations/corner-window.js +84 -0
- package/dist/agent-operations/create-roof.d.ts +32 -0
- package/dist/agent-operations/create-roof.d.ts.map +1 -0
- package/dist/agent-operations/create-roof.js +304 -0
- package/dist/agent-operations/create-room.d.ts +2 -0
- package/dist/agent-operations/create-room.d.ts.map +1 -1
- package/dist/agent-operations/create-room.js +73 -5
- package/dist/agent-operations/create-stair.d.ts +6 -28
- package/dist/agent-operations/create-stair.d.ts.map +1 -1
- package/dist/agent-operations/create-stair.js +187 -104
- package/dist/agent-operations/design-brief.d.ts +38 -0
- package/dist/agent-operations/design-brief.d.ts.map +1 -0
- package/dist/agent-operations/design-brief.js +300 -0
- package/dist/agent-operations/designs.d.ts +24 -0
- package/dist/agent-operations/designs.d.ts.map +1 -0
- package/dist/agent-operations/designs.js +48 -0
- package/dist/agent-operations/door-clearance.d.ts +16 -1
- package/dist/agent-operations/door-clearance.d.ts.map +1 -1
- package/dist/agent-operations/door-clearance.js +61 -4
- package/dist/agent-operations/duplicate-level.d.ts.map +1 -1
- package/dist/agent-operations/duplicate-level.js +2 -1
- package/dist/agent-operations/find-by-type.d.ts +14 -7
- package/dist/agent-operations/find-by-type.d.ts.map +1 -1
- package/dist/agent-operations/find-by-type.js +266 -43
- package/dist/agent-operations/furnish-room.d.ts +22 -1
- package/dist/agent-operations/furnish-room.d.ts.map +1 -1
- package/dist/agent-operations/furnish-room.js +66 -19
- package/dist/agent-operations/furniture-kind.d.ts +22 -0
- package/dist/agent-operations/furniture-kind.d.ts.map +1 -0
- package/dist/agent-operations/furniture-kind.js +69 -0
- package/dist/agent-operations/get-node.d.ts +5 -2
- package/dist/agent-operations/get-node.d.ts.map +1 -1
- package/dist/agent-operations/get-node.js +82 -10
- package/dist/agent-operations/hosted-services.d.ts +2 -1
- package/dist/agent-operations/hosted-services.d.ts.map +1 -1
- package/dist/agent-operations/index.d.ts +281 -69
- package/dist/agent-operations/index.d.ts.map +1 -1
- package/dist/agent-operations/index.js +66 -5
- package/dist/agent-operations/item-space.d.ts +22 -0
- package/dist/agent-operations/item-space.d.ts.map +1 -0
- package/dist/agent-operations/item-space.js +69 -0
- package/dist/agent-operations/layout-clearance.d.ts +52 -3
- package/dist/agent-operations/layout-clearance.d.ts.map +1 -1
- package/dist/agent-operations/layout-clearance.js +340 -30
- package/dist/agent-operations/level-height-fill.d.ts +12 -0
- package/dist/agent-operations/level-height-fill.d.ts.map +1 -0
- package/dist/agent-operations/level-height-fill.js +59 -0
- package/dist/agent-operations/level-reads.d.ts +5 -1
- package/dist/agent-operations/level-reads.d.ts.map +1 -1
- package/dist/agent-operations/level-reads.js +10 -3
- package/dist/agent-operations/list-levels.d.ts.map +1 -1
- package/dist/agent-operations/list-levels.js +23 -0
- package/dist/agent-operations/material-preset.d.ts.map +1 -1
- package/dist/agent-operations/material-preset.js +3 -9
- package/dist/agent-operations/material-refs.d.ts +7 -1
- package/dist/agent-operations/material-refs.d.ts.map +1 -1
- package/dist/agent-operations/material-refs.js +10 -5
- package/dist/agent-operations/merge-windows.d.ts +6 -0
- package/dist/agent-operations/merge-windows.d.ts.map +1 -0
- package/dist/agent-operations/merge-windows.js +27 -0
- package/dist/agent-operations/move-roofs.d.ts +9 -0
- package/dist/agent-operations/move-roofs.d.ts.map +1 -0
- package/dist/agent-operations/move-roofs.js +29 -0
- package/dist/agent-operations/paint.d.ts +2 -1
- package/dist/agent-operations/paint.d.ts.map +1 -1
- package/dist/agent-operations/paint.js +163 -53
- package/dist/agent-operations/photo-elevation.d.ts +155 -0
- package/dist/agent-operations/photo-elevation.d.ts.map +1 -0
- package/dist/agent-operations/photo-elevation.js +761 -0
- package/dist/agent-operations/place-in-room.d.ts +29 -0
- package/dist/agent-operations/place-in-room.d.ts.map +1 -0
- package/dist/agent-operations/place-in-room.js +403 -0
- package/dist/agent-operations/place-items.d.ts.map +1 -1
- package/dist/agent-operations/place-items.js +15 -2
- package/dist/agent-operations/plan-geometry.d.ts.map +1 -1
- package/dist/agent-operations/plan-geometry.js +3 -0
- package/dist/agent-operations/point-context.d.ts +139 -0
- package/dist/agent-operations/point-context.d.ts.map +1 -0
- package/dist/agent-operations/point-context.js +1 -0
- package/dist/agent-operations/project-files.d.ts +9 -0
- package/dist/agent-operations/project-files.d.ts.map +1 -0
- package/dist/agent-operations/project-files.js +25 -0
- package/dist/agent-operations/record-made.d.ts +18 -0
- package/dist/agent-operations/record-made.d.ts.map +1 -0
- package/dist/agent-operations/record-made.js +28 -0
- package/dist/agent-operations/roof-footprint.d.ts +24 -0
- package/dist/agent-operations/roof-footprint.d.ts.map +1 -0
- package/dist/agent-operations/roof-footprint.js +242 -0
- package/dist/agent-operations/roof-writes.d.ts +20 -0
- package/dist/agent-operations/roof-writes.d.ts.map +1 -0
- package/dist/agent-operations/roof-writes.js +165 -0
- package/dist/agent-operations/room-findings.d.ts +54 -0
- package/dist/agent-operations/room-findings.d.ts.map +1 -0
- package/dist/agent-operations/room-findings.js +143 -0
- package/dist/agent-operations/room-floor-script.d.ts +23 -0
- package/dist/agent-operations/room-floor-script.d.ts.map +1 -0
- package/dist/agent-operations/room-floor-script.js +54 -0
- package/dist/agent-operations/room-structure.d.ts +2 -2
- package/dist/agent-operations/room-structure.d.ts.map +1 -1
- package/dist/agent-operations/scene-checkpoint.d.ts +94 -0
- package/dist/agent-operations/scene-checkpoint.d.ts.map +1 -0
- package/dist/agent-operations/scene-checkpoint.js +176 -0
- package/dist/agent-operations/scene-queries.d.ts +3750 -3319
- package/dist/agent-operations/scene-queries.d.ts.map +1 -1
- package/dist/agent-operations/scene-queries.js +13 -23
- package/dist/agent-operations/scene-review.d.ts +52 -0
- package/dist/agent-operations/scene-review.d.ts.map +1 -0
- package/dist/agent-operations/scene-review.js +106 -0
- package/dist/agent-operations/scene-view.d.ts +82 -15
- package/dist/agent-operations/scene-view.d.ts.map +1 -1
- package/dist/agent-operations/scene-view.js +408 -51
- package/dist/agent-operations/search-assets.d.ts +2 -2
- package/dist/agent-operations/search-assets.d.ts.map +1 -1
- package/dist/agent-operations/search-assets.js +4 -3
- package/dist/agent-operations/search-materials.d.ts +9 -3
- package/dist/agent-operations/search-materials.d.ts.map +1 -1
- package/dist/agent-operations/search-materials.js +83 -29
- package/dist/agent-operations/set-checkpoint.d.ts +9 -0
- package/dist/agent-operations/set-checkpoint.d.ts.map +1 -0
- package/dist/agent-operations/set-checkpoint.js +31 -0
- package/dist/agent-operations/set-ground-level.d.ts +12 -0
- package/dist/agent-operations/set-ground-level.d.ts.map +1 -0
- package/dist/agent-operations/set-ground-level.js +61 -0
- package/dist/agent-operations/site.d.ts +21 -0
- package/dist/agent-operations/site.d.ts.map +1 -0
- package/dist/agent-operations/site.js +123 -0
- package/dist/agent-operations/types.d.ts +66 -7
- package/dist/agent-operations/types.d.ts.map +1 -1
- package/dist/agent-operations/verify-scene.d.ts +39 -5
- package/dist/agent-operations/verify-scene.d.ts.map +1 -1
- package/dist/agent-operations/verify-scene.js +223 -44
- package/dist/agent-operations/wall-face-script.d.ts +28 -0
- package/dist/agent-operations/wall-face-script.d.ts.map +1 -0
- package/dist/agent-operations/wall-face-script.js +62 -0
- package/dist/agent-operations/wall-object-observations.d.ts +41 -0
- package/dist/agent-operations/wall-object-observations.d.ts.map +1 -0
- package/dist/agent-operations/wall-object-observations.js +249 -0
- package/dist/agent-operations/wall-opening.d.ts +23 -23
- package/dist/agent-operations/wall-opening.d.ts.map +1 -1
- package/dist/agent-operations/wall-skirting.d.ts +24 -0
- package/dist/agent-operations/wall-skirting.d.ts.map +1 -0
- package/dist/agent-operations/wall-skirting.js +85 -0
- package/dist/agent-tools/add-object.d.ts +11 -7
- package/dist/agent-tools/add-object.d.ts.map +1 -1
- package/dist/agent-tools/add-object.js +17 -11
- package/dist/agent-tools/assets.d.ts +8 -0
- package/dist/agent-tools/assets.d.ts.map +1 -1
- package/dist/agent-tools/assets.js +13 -1
- package/dist/agent-tools/author-scene.d.ts +651 -0
- package/dist/agent-tools/author-scene.d.ts.map +1 -0
- package/dist/agent-tools/author-scene.js +252 -0
- package/dist/agent-tools/batch.d.ts +25 -0
- package/dist/agent-tools/batch.d.ts.map +1 -0
- package/dist/agent-tools/batch.js +61 -0
- package/dist/agent-tools/checkpoints.d.ts +13 -0
- package/dist/agent-tools/checkpoints.d.ts.map +1 -0
- package/dist/agent-tools/checkpoints.js +16 -0
- package/dist/agent-tools/clear-scene.d.ts.map +1 -1
- package/dist/agent-tools/collections.d.ts +6 -6
- package/dist/agent-tools/collections.d.ts.map +1 -1
- package/dist/agent-tools/columns.d.ts +18 -18
- package/dist/agent-tools/columns.js +2 -2
- package/dist/agent-tools/corner-window.d.ts +46 -0
- package/dist/agent-tools/corner-window.d.ts.map +1 -0
- package/dist/agent-tools/corner-window.js +47 -0
- package/dist/agent-tools/create-room.d.ts +26 -25
- package/dist/agent-tools/create-room.d.ts.map +1 -1
- package/dist/agent-tools/create-room.js +11 -4
- package/dist/agent-tools/design-brief.d.ts +408 -0
- package/dist/agent-tools/design-brief.d.ts.map +1 -0
- package/dist/agent-tools/design-brief.js +149 -0
- package/dist/agent-tools/designs.d.ts +34 -0
- package/dist/agent-tools/designs.d.ts.map +1 -0
- package/dist/agent-tools/designs.js +50 -0
- package/dist/agent-tools/fences.d.ts +28 -0
- package/dist/agent-tools/fences.d.ts.map +1 -0
- package/dist/agent-tools/fences.js +31 -0
- package/dist/agent-tools/find-by-type.d.ts +8 -1
- package/dist/agent-tools/find-by-type.d.ts.map +1 -1
- package/dist/agent-tools/find-by-type.js +23 -2
- package/dist/agent-tools/furnish-room.d.ts +10 -8
- package/dist/agent-tools/furnish-room.d.ts.map +1 -1
- package/dist/agent-tools/furnish-room.js +3 -1
- package/dist/agent-tools/hosted-services.d.ts +177 -141
- package/dist/agent-tools/hosted-services.d.ts.map +1 -1
- package/dist/agent-tools/hosted-services.js +47 -14
- package/dist/agent-tools/index.d.ts +894 -215
- package/dist/agent-tools/index.d.ts.map +1 -1
- package/dist/agent-tools/index.js +47 -3
- package/dist/agent-tools/levels.d.ts +11 -3
- package/dist/agent-tools/levels.d.ts.map +1 -1
- package/dist/agent-tools/levels.js +16 -5
- package/dist/agent-tools/measurement.d.ts +38 -20
- package/dist/agent-tools/measurement.d.ts.map +1 -1
- package/dist/agent-tools/measurement.js +117 -67
- package/dist/agent-tools/merge-windows.d.ts +10 -0
- package/dist/agent-tools/merge-windows.d.ts.map +1 -0
- package/dist/agent-tools/merge-windows.js +12 -0
- package/dist/agent-tools/nodes.d.ts.map +1 -1
- package/dist/agent-tools/nodes.js +1 -1
- package/dist/agent-tools/notation-inventory.d.ts +16 -0
- package/dist/agent-tools/notation-inventory.d.ts.map +1 -0
- package/dist/agent-tools/notation-inventory.js +105 -0
- package/dist/agent-tools/paint.d.ts +5 -5
- package/dist/agent-tools/paint.d.ts.map +1 -1
- package/dist/agent-tools/paint.js +1 -1
- package/dist/agent-tools/photo-elevation.d.ts +32 -0
- package/dist/agent-tools/photo-elevation.d.ts.map +1 -0
- package/dist/agent-tools/photo-elevation.js +73 -0
- package/dist/agent-tools/place-in-room.d.ts +35 -0
- package/dist/agent-tools/place-in-room.d.ts.map +1 -0
- package/dist/agent-tools/place-in-room.js +61 -0
- package/dist/agent-tools/place-items.d.ts +1 -1
- package/dist/agent-tools/place-items.js +2 -2
- package/dist/agent-tools/project-files.d.ts +189 -0
- package/dist/agent-tools/project-files.d.ts.map +1 -0
- package/dist/agent-tools/project-files.js +99 -0
- package/dist/agent-tools/refusal.d.ts.map +1 -1
- package/dist/agent-tools/retired.d.ts +21 -0
- package/dist/agent-tools/retired.d.ts.map +1 -0
- package/dist/agent-tools/retired.js +29 -0
- package/dist/agent-tools/roofs.d.ts +100 -0
- package/dist/agent-tools/roofs.d.ts.map +1 -0
- package/dist/agent-tools/roofs.js +96 -0
- package/dist/agent-tools/room-structure.d.ts +46 -38
- package/dist/agent-tools/room-structure.d.ts.map +1 -1
- package/dist/agent-tools/room-structure.js +30 -27
- package/dist/agent-tools/search-materials.d.ts +22 -3
- package/dist/agent-tools/search-materials.d.ts.map +1 -1
- package/dist/agent-tools/search-materials.js +13 -14
- package/dist/agent-tools/site.d.ts +27 -0
- package/dist/agent-tools/site.d.ts.map +1 -0
- package/dist/agent-tools/site.js +40 -0
- package/dist/agent-tools/sources.d.ts +12 -0
- package/dist/agent-tools/sources.d.ts.map +1 -0
- package/dist/agent-tools/sources.js +11 -0
- package/dist/agent-tools/stairs.d.ts +48 -28
- package/dist/agent-tools/stairs.d.ts.map +1 -1
- package/dist/agent-tools/stairs.js +65 -22
- package/dist/agent-tools/verify-scene.d.ts.map +1 -1
- package/dist/agent-tools/verify-scene.js +1 -1
- package/dist/agent-tools/view-scene.d.ts +50 -12
- package/dist/agent-tools/view-scene.d.ts.map +1 -1
- package/dist/agent-tools/view-scene.js +74 -31
- package/dist/agent-tools/wall-openings.d.ts +77 -73
- package/dist/agent-tools/wall-openings.d.ts.map +1 -1
- package/dist/agent-tools/wall-openings.js +9 -5
- package/dist/agent-tools/walls.d.ts +4 -4
- package/dist/agent-tools/walls.d.ts.map +1 -1
- package/dist/agent-tools/walls.js +7 -2
- package/dist/building/__fixtures__/wall-opening-cases.d.ts +454 -250
- package/dist/building/__fixtures__/wall-opening-cases.d.ts.map +1 -1
- package/dist/building/__fixtures__/wall-opening-cases.js +62 -2
- package/dist/building/corner-window.d.ts +56 -0
- package/dist/building/corner-window.d.ts.map +1 -0
- package/dist/building/corner-window.js +179 -0
- package/dist/building/ground-level.d.ts +26 -0
- package/dist/building/ground-level.d.ts.map +1 -0
- package/dist/building/ground-level.js +58 -0
- package/dist/building/index.d.ts +5 -0
- package/dist/building/index.d.ts.map +1 -1
- package/dist/building/index.js +5 -0
- package/dist/building/level-duplication.d.ts +7472 -6613
- package/dist/building/level-duplication.d.ts.map +1 -1
- package/dist/building/level-duplication.js +18 -4
- package/dist/building/level-insertion.d.ts +55 -0
- package/dist/building/level-insertion.d.ts.map +1 -0
- package/dist/building/level-insertion.js +35 -0
- package/dist/building/merge-windows.d.ts +58 -0
- package/dist/building/merge-windows.d.ts.map +1 -0
- package/dist/building/merge-windows.js +189 -0
- package/dist/building/opening-style-presets.d.ts +2 -2
- package/dist/building/opening-style-presets.d.ts.map +1 -1
- package/dist/building/photo-elevation.d.ts +125 -0
- package/dist/building/photo-elevation.d.ts.map +1 -0
- package/dist/building/photo-elevation.js +404 -0
- package/dist/building/wall-gaps.d.ts +13 -0
- package/dist/building/wall-gaps.d.ts.map +1 -0
- package/dist/building/wall-gaps.js +158 -0
- package/dist/building/wall-openings.d.ts +154 -119
- package/dist/building/wall-openings.d.ts.map +1 -1
- package/dist/building/wall-openings.js +37 -9
- package/dist/capture/schema.d.ts +22 -22
- package/dist/capture/source.d.ts.map +1 -1
- package/dist/capture/source.js +1 -1
- package/dist/commands/structure/create-zone.d.ts +12 -1
- package/dist/commands/structure/create-zone.d.ts.map +1 -1
- package/dist/commands/structure/create-zone.js +49 -0
- package/dist/commands/structure/divide-zone.d.ts +3 -3
- package/dist/commands/structure/index.d.ts +1 -1
- package/dist/commands/structure/index.d.ts.map +1 -1
- package/dist/commands/structure/index.js +1 -1
- package/dist/commands/structure/set-floor-foundation.d.ts +6 -6
- package/dist/commands/structure/set-zone-intent.d.ts +4 -0
- package/dist/commands/structure/set-zone-intent.d.ts.map +1 -1
- package/dist/commands/structure/set-zone-intent.js +19 -0
- package/dist/commands/structure/shared.d.ts +3642 -3213
- package/dist/commands/structure/shared.d.ts.map +1 -1
- package/dist/commands/structure/zone-wall-merge.d.ts +4149 -3334
- package/dist/commands/structure/zone-wall-merge.d.ts.map +1 -1
- package/dist/contracts/reference-inventory.d.ts.map +1 -1
- package/dist/contracts/reference-inventory.js +106 -26
- package/dist/events/bus.d.ts +22 -3
- package/dist/events/bus.d.ts.map +1 -1
- package/dist/events/capture-sessions.d.ts +5 -0
- package/dist/events/capture-sessions.d.ts.map +1 -0
- package/dist/events/capture-sessions.js +31 -0
- package/dist/hooks/scene-registry/scene-registry.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts +1 -2
- package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/spatial-grid-manager.js +4 -6
- package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts +3608 -3179
- package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/spatial-grid.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/support-host-patch.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/support-host-patch.js +11 -2
- package/dist/hooks/spatial-grid/use-spatial-query.d.ts +3 -3
- package/dist/hooks/spatial-grid/wall-spatial-grid.d.ts.map +1 -1
- package/dist/index.d.ts +37 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +36 -9
- package/dist/lib/__fixtures__/mezzanine.d.ts +11800 -10132
- package/dist/lib/__fixtures__/mezzanine.d.ts.map +1 -1
- package/dist/lib/absorb-wall-separators.d.ts +3642 -3213
- package/dist/lib/absorb-wall-separators.d.ts.map +1 -1
- package/dist/lib/angle-accumulator.d.ts.map +1 -1
- package/dist/lib/artifact-store.d.ts.map +1 -1
- package/dist/lib/below-grade-footprints.d.ts +65 -0
- package/dist/lib/below-grade-footprints.d.ts.map +1 -0
- package/dist/lib/below-grade-footprints.js +181 -0
- package/dist/lib/building-footprint.d.ts +33 -0
- package/dist/lib/building-footprint.d.ts.map +1 -0
- package/dist/lib/building-footprint.js +89 -0
- package/dist/lib/corner-pair.d.ts +1129 -0
- package/dist/lib/corner-pair.d.ts.map +1 -0
- package/dist/lib/corner-pair.js +130 -0
- package/dist/lib/corner-snap.d.ts +54 -0
- package/dist/lib/corner-snap.d.ts.map +1 -0
- package/dist/lib/corner-snap.js +125 -0
- package/dist/lib/critically-damped.d.ts +11 -0
- package/dist/lib/critically-damped.d.ts.map +1 -0
- package/dist/lib/critically-damped.js +14 -0
- package/dist/lib/deepest-drawn.d.ts +18 -0
- package/dist/lib/deepest-drawn.d.ts.map +1 -0
- package/dist/lib/deepest-drawn.js +65 -0
- package/dist/lib/door-operation.d.ts +1 -1
- package/dist/lib/exterior-wall-loops.d.ts +17 -0
- package/dist/lib/exterior-wall-loops.d.ts.map +1 -0
- package/dist/lib/exterior-wall-loops.js +334 -0
- package/dist/lib/finish-script.d.ts +61 -0
- package/dist/lib/finish-script.d.ts.map +1 -0
- package/dist/lib/finish-script.js +86 -0
- package/dist/lib/floor-intent-changes.d.ts.map +1 -1
- package/dist/lib/floor-intent-changes.js +4 -4
- package/dist/lib/floor-plate-paint.d.ts +3 -1
- package/dist/lib/floor-plate-paint.d.ts.map +1 -1
- package/dist/lib/floor-plate-paint.js +24 -4
- package/dist/lib/floor-plates.d.ts +50 -50
- package/dist/lib/floor-script.d.ts +24 -0
- package/dist/lib/floor-script.d.ts.map +1 -0
- package/dist/lib/floor-script.js +51 -0
- package/dist/lib/foundation-construction.d.ts +73 -0
- package/dist/lib/foundation-construction.d.ts.map +1 -0
- package/dist/lib/foundation-construction.js +242 -0
- package/dist/lib/foundation-standard.d.ts +30 -0
- package/dist/lib/foundation-standard.d.ts.map +1 -0
- package/dist/lib/foundation-standard.js +30 -0
- package/dist/lib/foundation-wall.d.ts +36 -0
- package/dist/lib/foundation-wall.d.ts.map +1 -0
- package/dist/lib/foundation-wall.js +66 -0
- package/dist/lib/generic-foundation.d.ts +40 -0
- package/dist/lib/generic-foundation.d.ts.map +1 -0
- package/dist/lib/generic-foundation.js +200 -0
- package/dist/lib/geometry-script-node.d.ts +32 -3
- package/dist/lib/geometry-script-node.d.ts.map +1 -1
- package/dist/lib/geometry-script-node.js +26 -0
- package/dist/lib/grade-standing.d.ts +38 -0
- package/dist/lib/grade-standing.d.ts.map +1 -0
- package/dist/lib/grade-standing.js +137 -0
- package/dist/lib/ground-level.d.ts +20 -0
- package/dist/lib/ground-level.d.ts.map +1 -0
- package/dist/lib/ground-level.js +49 -0
- package/dist/lib/ground-over-part.d.ts +13 -0
- package/dist/lib/ground-over-part.d.ts.map +1 -0
- package/dist/lib/ground-over-part.js +94 -0
- package/dist/lib/ground-seat.d.ts +47 -0
- package/dist/lib/ground-seat.d.ts.map +1 -0
- package/dist/lib/ground-seat.js +61 -0
- package/dist/lib/ground-window.d.ts +39 -0
- package/dist/lib/ground-window.d.ts.map +1 -0
- package/dist/lib/ground-window.js +147 -0
- package/dist/lib/opening-floor-datum.d.ts.map +1 -1
- package/dist/lib/opening-floor-datum.js +2 -3
- package/dist/lib/own-floor-intent.d.ts.map +1 -1
- package/dist/lib/own-floor-intent.js +4 -4
- package/dist/lib/plate-surface.d.ts.map +1 -1
- package/dist/lib/plate-surface.js +3 -1
- package/dist/lib/point-ask.d.ts +9 -0
- package/dist/lib/point-ask.d.ts.map +1 -0
- package/dist/lib/point-ask.js +36 -0
- package/dist/lib/room-drawn-floor.d.ts +1 -1
- package/dist/lib/room-drawn-floor.d.ts.map +1 -1
- package/dist/lib/room-floor-feasibility.d.ts.map +1 -1
- package/dist/lib/room-floor-feasibility.js +3 -3
- package/dist/lib/room-graph.d.ts.map +1 -1
- package/dist/lib/room-graph.js +2 -0
- package/dist/lib/room-name.d.ts +2 -0
- package/dist/lib/room-name.d.ts.map +1 -1
- package/dist/lib/room-name.js +2 -0
- package/dist/lib/room-topology-index.d.ts.map +1 -1
- package/dist/lib/room-topology-index.js +1 -1
- package/dist/lib/room-zone-adoption.d.ts.map +1 -1
- package/dist/lib/script-inputs-key.d.ts +3 -0
- package/dist/lib/script-inputs-key.d.ts.map +1 -0
- package/dist/lib/script-inputs-key.js +13 -0
- package/dist/lib/setback-envelope.d.ts +95 -5
- package/dist/lib/setback-envelope.d.ts.map +1 -1
- package/dist/lib/setback-envelope.js +351 -35
- package/dist/lib/site-flatwork.d.ts +11 -0
- package/dist/lib/site-flatwork.d.ts.map +1 -0
- package/dist/lib/site-flatwork.js +11 -0
- package/dist/lib/site-ground-height.d.ts +13 -0
- package/dist/lib/site-ground-height.d.ts.map +1 -0
- package/dist/lib/site-ground-height.js +16 -0
- package/dist/lib/site-placement.d.ts +362 -0
- package/dist/lib/site-placement.d.ts.map +1 -0
- package/dist/lib/site-placement.js +942 -0
- package/dist/lib/snap-ease.d.ts +20 -0
- package/dist/lib/snap-ease.d.ts.map +1 -0
- package/dist/lib/snap-ease.js +50 -0
- package/dist/lib/structure-kernel.d.ts +1 -1
- package/dist/lib/structure-kernel.d.ts.map +1 -1
- package/dist/lib/structure-kernel.js +2 -0
- package/dist/lib/surface-support-references.d.ts +4 -0
- package/dist/lib/surface-support-references.d.ts.map +1 -0
- package/dist/lib/surface-support-references.js +19 -0
- package/dist/lib/terrain-support-query.d.ts +10 -0
- package/dist/lib/terrain-support-query.d.ts.map +1 -1
- package/dist/lib/terrain-support-query.js +1 -1
- package/dist/lib/wall-face-script.d.ts +66 -0
- package/dist/lib/wall-face-script.d.ts.map +1 -0
- package/dist/lib/wall-face-script.js +235 -0
- package/dist/lib/zone-colors.d.ts +1 -1
- package/dist/lib/zone-colors.d.ts.map +1 -1
- package/dist/lib/zone-quantities.d.ts.map +1 -1
- package/dist/lib/zone-quantities.js +4 -5
- package/dist/material-kinds.d.ts +9 -0
- package/dist/material-kinds.d.ts.map +1 -0
- package/dist/material-kinds.js +30 -0
- package/dist/material-library.d.ts +4 -4
- package/dist/material-library.d.ts.map +1 -1
- package/dist/material-library.js +72 -26
- package/dist/node-slots/index.d.ts +1 -0
- package/dist/node-slots/index.d.ts.map +1 -1
- package/dist/node-slots/index.js +7 -1
- package/dist/node-slots/roof.d.ts +5 -0
- package/dist/node-slots/roof.d.ts.map +1 -0
- package/dist/node-slots/roof.js +12 -0
- package/dist/node-slots/stair.d.ts +2 -0
- package/dist/node-slots/stair.d.ts.map +1 -1
- package/dist/node-slots/stair.js +6 -2
- package/dist/procedural-items/design-placement.d.ts.map +1 -1
- package/dist/procedural-items/design.d.ts +19 -19
- package/dist/procedural-items/fixtures.d.ts +297 -297
- package/dist/procedural-items/fixtures.d.ts.map +1 -1
- package/dist/procedural-items/integration.d.ts +106 -106
- package/dist/procedural-items/joints.d.ts +4 -4
- package/dist/procedural-items/library-colors.d.ts +22 -22
- package/dist/procedural-items/library-colors.d.ts.map +1 -1
- package/dist/procedural-items/motion-controller.d.ts.map +1 -1
- package/dist/procedural-items/node.d.ts +291 -291
- package/dist/procedural-items/query.d.ts +1 -1
- package/dist/procedural-items/query.d.ts.map +1 -1
- package/dist/procedural-items/recipe.d.ts +11 -11
- package/dist/procedural-items/recipe.d.ts.map +1 -1
- package/dist/procedural-items/section.d.ts.map +1 -1
- package/dist/registry/index.d.ts +1 -1
- package/dist/registry/index.d.ts.map +1 -1
- package/dist/registry/scene-api.d.ts +1 -0
- package/dist/registry/scene-api.d.ts.map +1 -1
- package/dist/registry/scene-api.js +3 -0
- package/dist/registry/subtree.d.ts.map +1 -1
- package/dist/registry/subtree.js +2 -0
- package/dist/registry/types.d.ts +120 -1
- package/dist/registry/types.d.ts.map +1 -1
- package/dist/schema/assembly.d.ts +41 -41
- package/dist/schema/asset-url.d.ts +1 -1
- package/dist/schema/asset-url.d.ts.map +1 -1
- package/dist/schema/base.d.ts +9 -9
- package/dist/schema/base.d.ts.map +1 -1
- package/dist/schema/camera.d.ts +1 -1
- package/dist/schema/collection-templates.d.ts +20 -20
- package/dist/schema/collection-templates.d.ts.map +1 -1
- package/dist/schema/geometry-metadata.d.ts +7 -7
- package/dist/schema/geometry-metadata.d.ts.map +1 -1
- package/dist/schema/geometry-source.d.ts +26 -16
- package/dist/schema/geometry-source.d.ts.map +1 -1
- package/dist/schema/geometry-source.js +14 -0
- package/dist/schema/index.d.ts +10 -7
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +10 -7
- package/dist/schema/material.d.ts +33 -33
- package/dist/schema/nodes/barrel-roof.d.ts +3 -0
- package/dist/schema/nodes/barrel-roof.d.ts.map +1 -0
- package/dist/schema/nodes/barrel-roof.js +11 -0
- package/dist/schema/nodes/block.d.ts +8 -8
- package/dist/schema/nodes/box-vent.d.ts +13 -13
- package/dist/schema/nodes/building.d.ts +9 -8
- package/dist/schema/nodes/building.d.ts.map +1 -1
- package/dist/schema/nodes/building.js +2 -0
- package/dist/schema/nodes/cabinet.d.ts +130 -129
- package/dist/schema/nodes/cabinet.d.ts.map +1 -1
- package/dist/schema/nodes/cabinet.js +1 -1
- package/dist/schema/nodes/ceiling.d.ts +15 -15
- package/dist/schema/nodes/chimney.d.ts +23 -23
- package/dist/schema/nodes/column.d.ts +207 -199
- package/dist/schema/nodes/column.d.ts.map +1 -1
- package/dist/schema/nodes/column.js +2 -0
- package/dist/schema/nodes/construction-dimension.d.ts +34 -34
- package/dist/schema/nodes/cupola.d.ts +15 -15
- package/dist/schema/nodes/curtain-wall.d.ts +21 -20
- package/dist/schema/nodes/curtain-wall.d.ts.map +1 -1
- package/dist/schema/nodes/curtain-wall.js +23 -0
- package/dist/schema/nodes/door.d.ts +50 -43
- package/dist/schema/nodes/door.d.ts.map +1 -1
- package/dist/schema/nodes/door.js +19 -0
- package/dist/schema/nodes/dormer.d.ts +37 -36
- package/dist/schema/nodes/dormer.d.ts.map +1 -1
- package/dist/schema/nodes/downspout.d.ts +17 -17
- package/dist/schema/nodes/duct-fitting.d.ts +24 -24
- package/dist/schema/nodes/duct-segment.d.ts +14 -14
- package/dist/schema/nodes/duct-terminal.d.ts +12 -12
- package/dist/schema/nodes/elevator.d.ts +15 -15
- package/dist/schema/nodes/eyebrow-vent.d.ts +13 -13
- package/dist/schema/nodes/fence-feature.d.ts +37 -37
- package/dist/schema/nodes/fence-types.d.ts +32 -0
- package/dist/schema/nodes/fence-types.d.ts.map +1 -0
- package/dist/schema/nodes/fence-types.js +22 -0
- package/dist/schema/nodes/fence.d.ts +43 -72
- package/dist/schema/nodes/fence.d.ts.map +1 -1
- package/dist/schema/nodes/fence.js +4 -20
- package/dist/schema/nodes/floor-opening.d.ts +8 -8
- package/dist/schema/nodes/guide.d.ts +8 -8
- package/dist/schema/nodes/gutter.d.ts +14 -14
- package/dist/schema/nodes/gutter.d.ts.map +1 -1
- package/dist/schema/nodes/gutter.js +6 -5
- package/dist/schema/nodes/hvac-equipment.d.ts +13 -13
- package/dist/schema/nodes/imported-mesh.d.ts +8 -8
- package/dist/schema/nodes/item.d.ts +30 -25
- package/dist/schema/nodes/item.d.ts.map +1 -1
- package/dist/schema/nodes/lean-to-extension.d.ts +36 -36
- package/dist/schema/nodes/level.d.ts +9 -9
- package/dist/schema/nodes/lineset.d.ts +8 -8
- package/dist/schema/nodes/liquid-line.d.ts +8 -8
- package/dist/schema/nodes/measurement.d.ts +8 -8
- package/dist/schema/nodes/opening-types.d.ts +13 -13
- package/dist/schema/nodes/opening-types.d.ts.map +1 -1
- package/dist/schema/nodes/pipe-fitting.d.ts +15 -15
- package/dist/schema/nodes/pipe-segment.d.ts +11 -11
- package/dist/schema/nodes/pipe-trap.d.ts +9 -9
- package/dist/schema/nodes/ridge-vent.d.ts +14 -14
- package/dist/schema/nodes/ridge-vent.d.ts.map +1 -1
- package/dist/schema/nodes/ridge-vent.js +3 -1
- package/dist/schema/nodes/roof-glazing-config.d.ts +90 -0
- package/dist/schema/nodes/roof-glazing-config.d.ts.map +1 -0
- package/dist/schema/nodes/roof-glazing-config.js +34 -0
- package/dist/schema/nodes/roof-glazing.d.ts +57 -0
- package/dist/schema/nodes/roof-glazing.d.ts.map +1 -0
- package/dist/schema/nodes/roof-glazing.js +514 -0
- package/dist/schema/nodes/roof-segment-resize.d.ts +4 -0
- package/dist/schema/nodes/roof-segment-resize.d.ts.map +1 -0
- package/dist/schema/nodes/roof-segment-resize.js +21 -0
- package/dist/schema/nodes/roof-segment-shape.d.ts +5 -0
- package/dist/schema/nodes/roof-segment-shape.d.ts.map +1 -1
- package/dist/schema/nodes/roof-segment-shape.js +44 -0
- package/dist/schema/nodes/roof-segment-walls.d.ts +1 -1
- package/dist/schema/nodes/roof-segment-walls.d.ts.map +1 -1
- package/dist/schema/nodes/roof-segment-walls.js +24 -0
- package/dist/schema/nodes/roof-segment.d.ts +153 -46
- package/dist/schema/nodes/roof-segment.d.ts.map +1 -1
- package/dist/schema/nodes/roof-segment.js +91 -20
- package/dist/schema/nodes/roof-types.d.ts +14 -0
- package/dist/schema/nodes/roof-types.d.ts.map +1 -0
- package/dist/schema/nodes/roof-types.js +14 -0
- package/dist/schema/nodes/roof.d.ts +49 -49
- package/dist/schema/nodes/scan.d.ts +8 -8
- package/dist/schema/nodes/separator.d.ts +8 -8
- package/dist/schema/nodes/shelf.d.ts +16 -16
- package/dist/schema/nodes/site-facts.d.ts +64 -0
- package/dist/schema/nodes/site-facts.d.ts.map +1 -0
- package/dist/schema/nodes/site-facts.js +73 -0
- package/dist/schema/nodes/site.d.ts +105 -63
- package/dist/schema/nodes/site.d.ts.map +1 -1
- package/dist/schema/nodes/site.js +7 -70
- package/dist/schema/nodes/skylight.d.ts +41 -41
- package/dist/schema/nodes/skylight.d.ts.map +1 -1
- package/dist/schema/nodes/slab.d.ts +21 -21
- package/dist/schema/nodes/solar-panel.d.ts +21 -21
- package/dist/schema/nodes/spawn.d.ts +8 -8
- package/dist/schema/nodes/stair-construction.d.ts +3 -3
- package/dist/schema/nodes/stair-defaults.d.ts +16 -0
- package/dist/schema/nodes/stair-defaults.d.ts.map +1 -0
- package/dist/schema/nodes/stair-defaults.js +15 -0
- package/dist/schema/nodes/stair-segment.d.ts +22 -22
- package/dist/schema/nodes/stair-types.d.ts +29 -0
- package/dist/schema/nodes/stair-types.d.ts.map +1 -0
- package/dist/schema/nodes/stair-types.js +23 -0
- package/dist/schema/nodes/stair.d.ts +51 -75
- package/dist/schema/nodes/stair.d.ts.map +1 -1
- package/dist/schema/nodes/stair.js +6 -20
- package/dist/schema/nodes/structural-grid.d.ts +8 -8
- package/dist/schema/nodes/surface-hole-metadata.d.ts +2 -2
- package/dist/schema/nodes/turbine-vent.d.ts +13 -13
- package/dist/schema/nodes/unit.d.ts +10 -10
- package/dist/schema/nodes/unit.d.ts.map +1 -1
- package/dist/schema/nodes/wall.d.ts +479 -146
- package/dist/schema/nodes/wall.d.ts.map +1 -1
- package/dist/schema/nodes/wall.js +19 -0
- package/dist/schema/nodes/window.d.ts +55 -39
- package/dist/schema/nodes/window.d.ts.map +1 -1
- package/dist/schema/nodes/window.js +10 -0
- package/dist/schema/nodes/zone.d.ts +231 -12
- package/dist/schema/nodes/zone.d.ts.map +1 -1
- package/dist/schema/nodes/zone.js +10 -0
- package/dist/schema/provenance.d.ts +21 -21
- package/dist/schema/scene-material.d.ts +5 -5
- package/dist/schema/site-presentation.d.ts +100 -0
- package/dist/schema/site-presentation.d.ts.map +1 -0
- package/dist/schema/site-presentation.js +83 -0
- package/dist/schema/types.d.ts +1954 -1414
- package/dist/schema/types.d.ts.map +1 -1
- package/dist/services/__fixtures__/wall-plane-top-boundary-repro.d.ts.map +1 -1
- package/dist/services/index.d.ts +5 -1
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +5 -1
- package/dist/services/level-height.d.ts.map +1 -1
- package/dist/services/level-height.js +7 -3
- package/dist/services/port-connectivity.d.ts +4 -0
- package/dist/services/port-connectivity.d.ts.map +1 -1
- package/dist/services/port-connectivity.js +35 -0
- package/dist/services/project-file-sink.d.ts +9 -0
- package/dist/services/project-file-sink.d.ts.map +1 -0
- package/dist/services/project-file-sink.js +13 -0
- package/dist/services/roof-bearing.d.ts +62 -0
- package/dist/services/roof-bearing.d.ts.map +1 -0
- package/dist/services/roof-bearing.js +234 -0
- package/dist/services/roof-level.d.ts +121 -0
- package/dist/services/roof-level.d.ts.map +1 -0
- package/dist/services/roof-level.js +280 -0
- package/dist/services/roof-move.d.ts +83 -0
- package/dist/services/roof-move.d.ts.map +1 -0
- package/dist/services/roof-move.js +316 -0
- package/dist/services/stair-surface-snap.d.ts +14 -0
- package/dist/services/stair-surface-snap.d.ts.map +1 -0
- package/dist/services/stair-surface-snap.js +116 -0
- package/dist/services/storey-datum.d.ts +12 -0
- package/dist/services/storey-datum.d.ts.map +1 -0
- package/dist/services/storey-datum.js +18 -0
- package/dist/services/storey.d.ts +51 -5
- package/dist/services/storey.d.ts.map +1 -1
- package/dist/services/storey.js +125 -8
- package/dist/solar-panel-presets.d.ts +2 -2
- package/dist/store/actions/node-actions.d.ts +3613 -3182
- package/dist/store/actions/node-actions.d.ts.map +1 -1
- package/dist/store/actions/node-actions.js +46 -1
- package/dist/store/derived-node-guard.d.ts.map +1 -1
- package/dist/store/history-control.d.ts +39 -0
- package/dist/store/history-control.d.ts.map +1 -1
- package/dist/store/history-control.js +84 -4
- package/dist/store/scene-annotations.d.ts +7267 -6409
- package/dist/store/scene-annotations.d.ts.map +1 -1
- package/dist/store/scene-preview.d.ts +16 -0
- package/dist/store/scene-preview.d.ts.map +1 -0
- package/dist/store/scene-preview.js +144 -0
- package/dist/store/use-live-node-overrides.d.ts.map +1 -1
- package/dist/store/use-live-terrain.d.ts.map +1 -1
- package/dist/store/use-live-transforms.d.ts.map +1 -1
- package/dist/store/use-scene.d.ts.map +1 -1
- package/dist/store/use-scene.js +37 -4
- package/dist/systems/elevator/elevator-dispatch.js +1 -1
- package/dist/systems/fence/fence-features.d.ts.map +1 -1
- package/dist/systems/owned-floor-openings.d.ts.map +1 -1
- package/dist/systems/owned-floor-openings.js +24 -3
- package/dist/systems/roof/roof-elevation-system.d.ts.map +1 -1
- package/dist/systems/roof/roof-elevation-system.js +9 -3
- package/dist/systems/roof/roof-elevation.d.ts +5 -0
- package/dist/systems/roof/roof-elevation.d.ts.map +1 -1
- package/dist/systems/roof/roof-elevation.js +91 -62
- package/dist/systems/slab/__fixtures__/floor-step.d.ts +4623 -3516
- package/dist/systems/slab/__fixtures__/floor-step.d.ts.map +1 -1
- package/dist/systems/slab/__fixtures__/raised-room.d.ts +5149 -4076
- package/dist/systems/slab/__fixtures__/raised-room.d.ts.map +1 -1
- package/dist/systems/slab/slab-support.d.ts +6 -3
- package/dist/systems/slab/slab-support.d.ts.map +1 -1
- package/dist/systems/slab/slab-support.js +78 -10
- package/dist/systems/stair/stair-detail-budget.d.ts +2 -2
- package/dist/systems/stair/stair-detail-budget.d.ts.map +1 -1
- package/dist/systems/stair/stair-footprint.d.ts +6 -0
- package/dist/systems/stair/stair-footprint.d.ts.map +1 -1
- package/dist/systems/stair/stair-footprint.js +27 -14
- package/dist/systems/stair/stair-layout.d.ts +2 -2
- package/dist/systems/stair/stair-opening-preview.d.ts +3643 -3214
- package/dist/systems/stair/stair-opening-preview.d.ts.map +1 -1
- package/dist/systems/stair/stair-presets.d.ts +73 -65
- package/dist/systems/stair/stair-presets.d.ts.map +1 -1
- package/dist/systems/stair/stair-presets.js +16 -9
- package/dist/systems/stair/stair-rail-path.d.ts +1 -1
- package/dist/systems/stair/stair-rise-query.d.ts +16 -0
- package/dist/systems/stair/stair-rise-query.d.ts.map +1 -1
- package/dist/systems/stair/stair-rise-query.js +57 -7
- package/dist/systems/stair/stair-sizing.d.ts +101 -99
- package/dist/systems/stair/stair-sizing.d.ts.map +1 -1
- package/dist/systems/wall/wall-assembly.d.ts +11 -0
- package/dist/systems/wall/wall-assembly.d.ts.map +1 -1
- package/dist/systems/wall/wall-assembly.js +21 -0
- package/dist/systems/wall/wall-curve.d.ts +5 -0
- package/dist/systems/wall/wall-curve.d.ts.map +1 -1
- package/dist/systems/wall/wall-curve.js +13 -0
- package/dist/systems/wall/wall-frame.d.ts.map +1 -1
- package/dist/systems/wall/wall-frame.js +8 -0
- package/dist/systems/wall/wall-room-sides.d.ts +8 -0
- package/dist/systems/wall/wall-room-sides.d.ts.map +1 -1
- package/dist/systems/wall/wall-room-sides.js +60 -7
- package/dist/systems/wall/wall-top.d.ts +7 -4
- package/dist/systems/wall/wall-top.d.ts.map +1 -1
- package/dist/systems/wall/wall-top.js +14 -6
- package/dist/systems/wall/wall-topology.d.ts +4 -0
- package/dist/systems/wall/wall-topology.d.ts.map +1 -1
- package/dist/systems/wall/wall-topology.js +4 -2
- package/dist/systems/wall/wall-trim.d.ts +7 -0
- package/dist/systems/wall/wall-trim.d.ts.map +1 -0
- package/dist/systems/wall/wall-trim.js +10 -0
- package/dist/utils/clone-scene-graph.d.ts.map +1 -1
- package/dist/utils/clone-scene-graph.js +8 -0
- package/dist/utils/ensure-scene-openings.d.ts +7420 -6562
- package/dist/utils/ensure-scene-openings.d.ts.map +1 -1
- package/dist/utils/floor-piece-adoption.d.ts +2 -2
- package/dist/utils/floor-plate-migration.d.ts +3746 -3317
- package/dist/utils/floor-plate-migration.d.ts.map +1 -1
- package/dist/utils/floor-plate-migration.js +2 -2
- package/dist/utils/heal-scene-graph.d.ts +12 -0
- package/dist/utils/heal-scene-graph.d.ts.map +1 -1
- package/dist/utils/heal-scene-graph.js +40 -23
- package/dist/utils/legacy-wall-datums.d.ts.map +1 -1
- package/dist/utils/legacy-wall-datums.js +2 -2
- package/dist/utils/owned-floor-opening-migration.d.ts +3642 -3213
- package/dist/utils/owned-floor-opening-migration.d.ts.map +1 -1
- package/dist/utils/reconcile-structure-on-load.d.ts +3730 -7777
- package/dist/utils/reconcile-structure-on-load.d.ts.map +1 -1
- package/dist/utils/scene-migrations.d.ts +1 -1
- package/dist/utils/scene-migrations.d.ts.map +1 -1
- package/dist/utils/scene-migrations.js +1 -1
- package/dist/utils/semantic-equal.d.ts +3 -0
- package/dist/utils/semantic-equal.d.ts.map +1 -0
- package/dist/utils/semantic-equal.js +26 -0
- package/dist/utils/structure-id.d.ts.map +1 -1
- package/dist/utils/types.d.ts.map +1 -1
- package/dist/utils/wall-face-migration.d.ts +1 -1
- package/dist/utils/wall-face-migration.d.ts.map +1 -1
- package/package.json +36 -10
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
import { applySceneChanges } from '../agent-operations/apply-changes.js';
|
|
2
|
+
import { getLevelDisplayName } from '../lib/level-name.js';
|
|
3
|
+
import { getActiveRoofHeight, parseNode, } from '../schema/index.js';
|
|
4
|
+
import { resolveRoofElevation, roofWallTop } from '../systems/roof/roof-elevation.js';
|
|
5
|
+
import { segmentBearing } from './roof-bearing.js';
|
|
6
|
+
import { coveredStoreyId, planRoofLevel, servesAsRoofLevel } from './roof-level.js';
|
|
7
|
+
import { getLevelBelow, getLevelElevations } from './storey.js';
|
|
8
|
+
const segmentsOf = (nodes, roof) => roof.children
|
|
9
|
+
.map((id) => nodes[id])
|
|
10
|
+
.filter((child) => child?.type === 'roof-segment');
|
|
11
|
+
/**
|
|
12
|
+
* Where a roof's segments bear, from the floor of the level holding it (m): the lowest of them;
|
|
13
|
+
* null with none.
|
|
14
|
+
*/
|
|
15
|
+
function roofBearing(nodes, roof) {
|
|
16
|
+
const heights = segmentsOf(nodes, roof).map((segment) => roof.position[1] + segment.position[1]);
|
|
17
|
+
return heights.length ? Math.min(...heights) : null;
|
|
18
|
+
}
|
|
19
|
+
/** How far from a storey's wall tops a roof bears and still stands on them; a porch's beam is lower. */
|
|
20
|
+
const ON_WALLS = 0.15;
|
|
21
|
+
/** Whether a roof's footprint bears on the tops of `levelId`'s walls under it: the height it keeps over a storey. */
|
|
22
|
+
function bearsOn(nodes, roof, levelId) {
|
|
23
|
+
const bearing = roofBearing(nodes, roof);
|
|
24
|
+
const top = roofWallTop(roof, nodes, levelId);
|
|
25
|
+
return bearing !== null && top !== null && Math.abs(bearing - top) <= ON_WALLS;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* A roof held by the storey whose walls carry it (written there before the rule, or by a tool that
|
|
29
|
+
* ignored it): it hides that storey's plan in solo and exploded views; the seat and
|
|
30
|
+
* `planRoofsOffStorey` move it. Some segment bears on the storey's walls (`segmentBearing`: walls
|
|
31
|
+
* along its edges, open air past them) and the roof follows walls, or a segment's base or eave
|
|
32
|
+
* stands at the eave those walls need (knee walls on the plate, or the segment's own walls rising to
|
|
33
|
+
* it). A lower wing's roof on the storey above is not one (its inner edge has rooms past it), nor a
|
|
34
|
+
* porch or portico on posts (no wall along its outer edges), nor a roof on another roof.
|
|
35
|
+
*/
|
|
36
|
+
export function isRoofOnStoreyWalls(nodes, roofId) {
|
|
37
|
+
const roof = nodes[roofId];
|
|
38
|
+
const level = roof?.type === 'roof' ? nodes[roof.parentId ?? ''] : undefined;
|
|
39
|
+
if (roof?.type !== 'roof' ||
|
|
40
|
+
level?.type !== 'level' ||
|
|
41
|
+
servesAsRoofLevel(nodes, level) ||
|
|
42
|
+
roof.support?.kind === 'roof')
|
|
43
|
+
return false;
|
|
44
|
+
return segmentsOf(nodes, roof).some((segment) => {
|
|
45
|
+
const { need } = segmentBearing(nodes, segment.id, level.id);
|
|
46
|
+
if (need === null)
|
|
47
|
+
return false;
|
|
48
|
+
if (roof.support?.kind === 'walls')
|
|
49
|
+
return true;
|
|
50
|
+
const base = roof.position[1] + segment.position[1];
|
|
51
|
+
return [base, base + segment.wallHeight].some((y) => Math.abs(y - need) <= ON_WALLS);
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* `roofs`, held by `storeyId` on its walls, moved to the level the rule gives them, each container
|
|
56
|
+
* dropped by the storey's offset so it stands where it stood. A roof that follows walls keeps
|
|
57
|
+
* following where the follow there reads the storey's walls, at the height it gives; elsewhere (over
|
|
58
|
+
* a support level or a level still to be built) it keeps its height instead.
|
|
59
|
+
*/
|
|
60
|
+
function planRoofMove(nodes, storeyId, roofs) {
|
|
61
|
+
const segmentRise = (segment) => (segment.wallHeight ?? 0) + getActiveRoofHeight(segment);
|
|
62
|
+
const rise = Math.max(0, ...roofs.flatMap((roof) => segmentsOf(nodes, roof)).map(segmentRise));
|
|
63
|
+
const planned = planRoofLevel(nodes, storeyId, rise);
|
|
64
|
+
const made = planned.kind === 'roof' ? planned.create : null;
|
|
65
|
+
const declares = planned.kind === 'roof' ? planned.update : [];
|
|
66
|
+
const ids = roofs.map((roof) => roof.id);
|
|
67
|
+
const move = (roof, y, support) => {
|
|
68
|
+
const [x, , z] = roof.position;
|
|
69
|
+
const data = { parentId: planned.levelId, position: [x, y, z] };
|
|
70
|
+
if (support)
|
|
71
|
+
data.support = support;
|
|
72
|
+
return { id: roof.id, data: data };
|
|
73
|
+
};
|
|
74
|
+
const kept = roofs.map((roof) => roof.position[1] + planned.storeyOffset);
|
|
75
|
+
// A level made for them lists its roofs from the start (updates land before creates, in the
|
|
76
|
+
// store too).
|
|
77
|
+
const placed = applySceneChanges(nodes, {
|
|
78
|
+
create: made ? [{ node: { ...made, children: ids } }] : [],
|
|
79
|
+
update: [...declares, ...roofs.map((roof, index) => move(roof, kept[index]))],
|
|
80
|
+
});
|
|
81
|
+
// The follow reads the walls of the level holding a roof and of the one directly under it: over
|
|
82
|
+
// a support level or a level still to be built it would not see the storey's.
|
|
83
|
+
const followSeesStorey = getLevelBelow(planned.levelId, placed)?.id === storeyId;
|
|
84
|
+
const moves = roofs.map((roof, index) => roof.support?.kind !== 'walls'
|
|
85
|
+
? move(roof, kept[index])
|
|
86
|
+
: followSeesStorey
|
|
87
|
+
? move(roof, resolveRoofElevation(placed[roof.id], placed))
|
|
88
|
+
: move(roof, kept[index], { kind: 'level' }));
|
|
89
|
+
// A roof level made for them is as tall as they rise over its floor, the eaves' lift over the
|
|
90
|
+
// storey included, as create_roof makes one.
|
|
91
|
+
const level = made && {
|
|
92
|
+
...made,
|
|
93
|
+
children: ids,
|
|
94
|
+
height: Math.max(0.2, ...roofs.flatMap((roof, index) => segmentsOf(nodes, roof).map((segment) => moves[index].data.position[1] +
|
|
95
|
+
segment.position[1] +
|
|
96
|
+
segmentRise(segment)))),
|
|
97
|
+
};
|
|
98
|
+
return {
|
|
99
|
+
plan: planned.kind === 'roof' && level ? { ...planned, create: level } : planned,
|
|
100
|
+
changes: {
|
|
101
|
+
create: level ? [{ node: level, parentId: level.parentId ?? undefined }] : [],
|
|
102
|
+
update: [...declares, ...moves],
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* The repair for roofs written onto the storey whose walls carry them (`isRoofOnStoreyWalls`):
|
|
108
|
+
* each goes to the level the rule gives it, standing where it stood (`planRoofMove`). Null when the
|
|
109
|
+
* storey holds no such roof. Pure: one set of changes, so one undo step.
|
|
110
|
+
*/
|
|
111
|
+
export function planRoofsOffStorey(nodes, storeyId) {
|
|
112
|
+
const storey = nodes[storeyId];
|
|
113
|
+
if (storey?.type !== 'level')
|
|
114
|
+
return null;
|
|
115
|
+
const roofs = storey.children
|
|
116
|
+
.map((id) => nodes[id])
|
|
117
|
+
.filter((child) => child?.type === 'roof' && isRoofOnStoreyWalls(nodes, child.id));
|
|
118
|
+
return roofs.length ? planRoofMove(nodes, storeyId, roofs) : null;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Whether a roof stands over the storey under the level holding it: on the roof level over it
|
|
122
|
+
* (`coveredStoreyId`), or on the storey above bearing on its walls and not on its own level's (a
|
|
123
|
+
* lower wing's roof, where the rule puts it).
|
|
124
|
+
*/
|
|
125
|
+
function standsOver(nodes, roof, storeyId) {
|
|
126
|
+
const level = nodes[roof.parentId ?? ''];
|
|
127
|
+
if (level?.type !== 'level' || coveredStoreyId(nodes, roof) !== storeyId)
|
|
128
|
+
return false;
|
|
129
|
+
return (servesAsRoofLevel(nodes, level) ||
|
|
130
|
+
(bearsOn(nodes, roof, storeyId) && !bearsOn(nodes, roof, level.id)));
|
|
131
|
+
}
|
|
132
|
+
/** The levels between a storey and a level above it in their building's stack, bottom up. */
|
|
133
|
+
function levelsBetween(elevations, storeyId, levelId) {
|
|
134
|
+
const lower = elevations.get(storeyId);
|
|
135
|
+
const upper = elevations.get(levelId);
|
|
136
|
+
if (!lower || !upper)
|
|
137
|
+
return '';
|
|
138
|
+
return [...elevations]
|
|
139
|
+
.filter(([, entry]) => entry.buildingId === upper.buildingId &&
|
|
140
|
+
entry.ordinal > lower.ordinal &&
|
|
141
|
+
entry.ordinal < upper.ordinal)
|
|
142
|
+
.sort(([, a], [, b]) => a.ordinal - b.ordinal)
|
|
143
|
+
.map(([id]) => id)
|
|
144
|
+
.join();
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* A roof on a level above the storey it covers (`coveredStoreyId`), at a height of its own
|
|
148
|
+
* (`support` level, as the agents' and the auto roof's are, measured from that storey's floor),
|
|
149
|
+
* keeps its height over that floor when its level rises or drops over the storey (the storey, or a
|
|
150
|
+
* support level or a level still to be built between them, made taller or shorter), as it did when
|
|
151
|
+
* it lived on the storey. The updates that keep it there from `before` to `after`; a roof moved in
|
|
152
|
+
* between, or whose level stands over another storey or other levels now, is left where it is.
|
|
153
|
+
*/
|
|
154
|
+
export function roofsKeptOverStorey(before, after) {
|
|
155
|
+
const was = getLevelElevations(before);
|
|
156
|
+
const now = getLevelElevations(after);
|
|
157
|
+
const rise = (elevations, levelId, storeyId) => (elevations.get(levelId)?.baseY ?? 0) - (elevations.get(storeyId)?.baseY ?? 0);
|
|
158
|
+
const updates = [];
|
|
159
|
+
for (const roof of Object.values(after)) {
|
|
160
|
+
if (roof.type !== 'roof' || roof.support?.kind !== 'level' || !roof.parentId)
|
|
161
|
+
continue;
|
|
162
|
+
const prior = before[roof.id];
|
|
163
|
+
if (prior?.type !== 'roof' ||
|
|
164
|
+
prior.parentId !== roof.parentId ||
|
|
165
|
+
prior.position[1] !== roof.position[1])
|
|
166
|
+
continue;
|
|
167
|
+
const storeyId = coveredStoreyId(after, roof);
|
|
168
|
+
if (!storeyId || storeyId === roof.parentId || coveredStoreyId(before, prior) !== storeyId)
|
|
169
|
+
continue;
|
|
170
|
+
// A level put in, taken out or reordered between them: the roof moves with its level (#1039).
|
|
171
|
+
const between = levelsBetween(now, storeyId, roof.parentId);
|
|
172
|
+
if (between !== levelsBetween(was, storeyId, roof.parentId))
|
|
173
|
+
continue;
|
|
174
|
+
const drift = rise(now, roof.parentId, storeyId) - rise(was, roof.parentId, storeyId);
|
|
175
|
+
if (Math.abs(drift) < 1e-6 || !standsOver(before, prior, storeyId))
|
|
176
|
+
continue;
|
|
177
|
+
// Over levels between, only a roof on the storey's walls stays on them: one a new level lifted
|
|
178
|
+
// off them stays on top of that level.
|
|
179
|
+
if (between && !bearsOn(before, prior, storeyId))
|
|
180
|
+
continue;
|
|
181
|
+
const [x, y, z] = roof.position;
|
|
182
|
+
updates.push({ id: roof.id, data: { position: [x, y - drift, z] } });
|
|
183
|
+
}
|
|
184
|
+
return updates;
|
|
185
|
+
}
|
|
186
|
+
const r3 = (value) => Math.round(value * 1000) / 1000;
|
|
187
|
+
/** Whether two node values are the same, key order aside (a graph of fresh objects matches the store's). */
|
|
188
|
+
function same(a, b) {
|
|
189
|
+
if (a === b)
|
|
190
|
+
return true;
|
|
191
|
+
if (typeof a !== 'object' || typeof b !== 'object' || a === null || b === null)
|
|
192
|
+
return false;
|
|
193
|
+
if (Array.isArray(a) !== Array.isArray(b))
|
|
194
|
+
return false;
|
|
195
|
+
const keys = new Set([...Object.keys(a), ...Object.keys(b)]);
|
|
196
|
+
return [...keys].every((key) => same(a[key], b[key]));
|
|
197
|
+
}
|
|
198
|
+
const PLACEMENT = ['parentId', 'position', 'rotation', 'support', 'children'];
|
|
199
|
+
/** Whether a write made a roof, or moved, turned or reshaped it: its placement or a segment differs. */
|
|
200
|
+
function touched(before, after, roof) {
|
|
201
|
+
const prior = before[roof.id];
|
|
202
|
+
if (prior?.type !== 'roof')
|
|
203
|
+
return true;
|
|
204
|
+
return (PLACEMENT.some((key) => !same(prior[key], roof[key])) ||
|
|
205
|
+
roof.children.some((id) => !same(before[id], after[id])));
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* The seat over the scene a write produced, `after` as the store leaves it (creates parsed and
|
|
209
|
+
* attached, reparents and cascades applied), for writers that hold the result. A roof the write
|
|
210
|
+
* made, moved, turned or reshaped that stands on its storey's walls (`isRoofOnStoreyWalls`) goes to
|
|
211
|
+
* the level the rule gives it, as the repair moves it; one already on the same storey's walls before
|
|
212
|
+
* stays (an edit does not migrate a legacy roof; `verify_scene` reports it). Storey by storey, each
|
|
213
|
+
* move planned on the scene with the earlier ones applied, so one write makes one roof level per
|
|
214
|
+
* building. Null when no roof needs it.
|
|
215
|
+
*/
|
|
216
|
+
export function planRoofSeats(before, after) {
|
|
217
|
+
const byStorey = new Map();
|
|
218
|
+
for (const node of Object.values(after)) {
|
|
219
|
+
if (node.type !== 'roof' || !node.parentId)
|
|
220
|
+
continue;
|
|
221
|
+
if (!(touched(before, after, node) && isRoofOnStoreyWalls(after, node.id)))
|
|
222
|
+
continue;
|
|
223
|
+
const prior = before[node.id];
|
|
224
|
+
if (prior?.type === 'roof' &&
|
|
225
|
+
prior.parentId === node.parentId &&
|
|
226
|
+
isRoofOnStoreyWalls(before, node.id))
|
|
227
|
+
continue;
|
|
228
|
+
byStorey.set(node.parentId, [...(byStorey.get(node.parentId) ?? []), node]);
|
|
229
|
+
}
|
|
230
|
+
if (!byStorey.size)
|
|
231
|
+
return null;
|
|
232
|
+
let scene = after;
|
|
233
|
+
const create = [];
|
|
234
|
+
const update = [];
|
|
235
|
+
const notes = [];
|
|
236
|
+
for (const [storeyId, roofs] of byStorey) {
|
|
237
|
+
const { plan, changes } = planRoofMove(scene, storeyId, roofs.map((roof) => scene[roof.id]));
|
|
238
|
+
scene = applySceneChanges(scene, changes);
|
|
239
|
+
create.push(...changes.create);
|
|
240
|
+
update.push(...changes.update);
|
|
241
|
+
const storey = scene[storeyId];
|
|
242
|
+
const target = scene[plan.levelId];
|
|
243
|
+
const how = plan.kind !== 'roof'
|
|
244
|
+
? ''
|
|
245
|
+
: plan.create
|
|
246
|
+
? ', a new Roof level'
|
|
247
|
+
: plan.update.length
|
|
248
|
+
? ', declared the roof level'
|
|
249
|
+
: '';
|
|
250
|
+
for (const { id } of roofs)
|
|
251
|
+
notes.push(`roof ${id} stands on ${getLevelDisplayName(storey)}'s walls, so it is on ${getLevelDisplayName(target)} (${plan.levelId}${how}) at y ${r3(scene[id].position[1])}: a roof lives on the level above the walls that carry it.`);
|
|
252
|
+
}
|
|
253
|
+
// A level an earlier move made lists what later moves put on it.
|
|
254
|
+
for (const entry of create)
|
|
255
|
+
entry.node = {
|
|
256
|
+
...entry.node,
|
|
257
|
+
children: scene[entry.node.id].children,
|
|
258
|
+
};
|
|
259
|
+
return { changes: { create, update }, notes };
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* A write's changes with the roofs it puts on their walls' storey seated by the rule
|
|
263
|
+
* (`planRoofSeats` over the scene they produce), and a note per roof. The seat is written into the
|
|
264
|
+
* changes themselves, so the writer's one store call lands it: a created roof's entry takes its new
|
|
265
|
+
* parent and height (its other fields kept) and leaves a created parent's `children`; an existing
|
|
266
|
+
* roof's move and a level's declaration are updates; a new roof level is created right after its
|
|
267
|
+
* building when the write creates the building, else first, listing its roofs, so a store creating
|
|
268
|
+
* in order and one applying updates first both land it.
|
|
269
|
+
*/
|
|
270
|
+
export function seatRoofs(nodes, changes) {
|
|
271
|
+
const parsed = (changes.create ?? []).map(({ node, parentId }) => {
|
|
272
|
+
const result = parseNode(node);
|
|
273
|
+
return { node: result.success ? result.data : node, parentId };
|
|
274
|
+
});
|
|
275
|
+
const seat = planRoofSeats(nodes, applySceneChanges(nodes, {
|
|
276
|
+
create: parsed,
|
|
277
|
+
update: [...(changes.update ?? [])],
|
|
278
|
+
delete: [...(changes.delete ?? [])],
|
|
279
|
+
}));
|
|
280
|
+
if (!seat)
|
|
281
|
+
return { changes, notes: [] };
|
|
282
|
+
const written = new Map(seat.changes.update.map(({ id, data }) => [id, data]));
|
|
283
|
+
const leaving = (childId, parentId) => {
|
|
284
|
+
const to = written.get(childId)?.parentId;
|
|
285
|
+
return to !== undefined && to !== parentId;
|
|
286
|
+
};
|
|
287
|
+
const create = (changes.create ?? []).map((entry) => {
|
|
288
|
+
const data = written.get(entry.node.id);
|
|
289
|
+
const node = { ...entry.node, ...data };
|
|
290
|
+
const children = Array.isArray(node.children) ? node.children : null;
|
|
291
|
+
const kept = children?.filter((id) => !leaving(id, entry.node.id));
|
|
292
|
+
return {
|
|
293
|
+
...entry,
|
|
294
|
+
node: (kept && kept.length !== children?.length
|
|
295
|
+
? { ...node, children: kept }
|
|
296
|
+
: node),
|
|
297
|
+
...(data?.parentId ? { parentId: data.parentId } : {}),
|
|
298
|
+
};
|
|
299
|
+
});
|
|
300
|
+
for (const entry of seat.changes.create) {
|
|
301
|
+
const building = create.findIndex(({ node }) => node.id === entry.node.parentId);
|
|
302
|
+
create.splice(building + 1, 0, entry);
|
|
303
|
+
}
|
|
304
|
+
const created = new Set(create.map(({ node }) => node.id));
|
|
305
|
+
return {
|
|
306
|
+
changes: {
|
|
307
|
+
...changes,
|
|
308
|
+
create,
|
|
309
|
+
update: [
|
|
310
|
+
...(changes.update ?? []),
|
|
311
|
+
...seat.changes.update.filter(({ id }) => !created.has(id)),
|
|
312
|
+
],
|
|
313
|
+
},
|
|
314
|
+
notes: seat.notes,
|
|
315
|
+
};
|
|
316
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { StairNode } from '../schema/nodes/stair.js';
|
|
2
|
+
import type { AnyNode } from '../schema/types.js';
|
|
3
|
+
export type StairSurfaceSnap = {
|
|
4
|
+
position: [number, number, number];
|
|
5
|
+
rotation: number;
|
|
6
|
+
totalRise: number;
|
|
7
|
+
stepCount: number;
|
|
8
|
+
length: number;
|
|
9
|
+
surfaceId: string;
|
|
10
|
+
};
|
|
11
|
+
/** Align a straight flight's high end to a nearby registered surface edge. */
|
|
12
|
+
export declare function resolveStairSurfaceSnap(stair: StairNode, nodes: Readonly<Record<string, AnyNode>>, candidatePosition: [number, number, number], currentLength: number, baseElevation?: number, installedPlugins?: readonly string[]): StairSurfaceSnap | null;
|
|
13
|
+
export declare function getBoundarySurfaces(nodes: Readonly<Record<string, AnyNode>>, parentId: string | null | undefined, installedPlugins?: readonly string[]): AnyNode[];
|
|
14
|
+
//# sourceMappingURL=stair-surface-snap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stair-surface-snap.d.ts","sourceRoot":"","sources":["../../src/services/stair-surface-snap.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAK9C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,8EAA8E;AAC9E,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACxC,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAC3C,aAAa,EAAE,MAAM,EACrB,aAAa,SAAuB,EACpC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,GACnC,gBAAgB,GAAG,IAAI,CA8EzB;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACxC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACnC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,GACnC,OAAO,EAAE,CAQX"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { floorConstructionLift } from '../lib/floor-construction-lift.js';
|
|
2
|
+
import { isNodeKindEnabled, nodeRegistry } from '../registry/registry.js';
|
|
3
|
+
const SNAP_DISTANCE = 0.75;
|
|
4
|
+
/** Align a straight flight's high end to a nearby registered surface edge. */
|
|
5
|
+
export function resolveStairSurfaceSnap(stair, nodes, candidatePosition, currentLength, baseElevation = candidatePosition[1], installedPlugins) {
|
|
6
|
+
if (stair.stairType !== 'straight' || stair.autoSurfaceSnap === false)
|
|
7
|
+
return null;
|
|
8
|
+
const parentFrame = surfaceFrame(stair.parentId, nodes);
|
|
9
|
+
const candidate = toFrame([candidatePosition[0], candidatePosition[2]], parentFrame);
|
|
10
|
+
const rotation = stair.rotation + parentFrame.rotation;
|
|
11
|
+
const highEnd = [
|
|
12
|
+
candidate[0] + Math.sin(rotation) * currentLength,
|
|
13
|
+
candidate[1] + Math.cos(rotation) * currentLength,
|
|
14
|
+
];
|
|
15
|
+
let closest = null;
|
|
16
|
+
for (const raw of Object.values(nodes)) {
|
|
17
|
+
if (surfaceFrame(raw.parentId, nodes).levelId !== parentFrame.levelId ||
|
|
18
|
+
raw.visible === false ||
|
|
19
|
+
!isNodeKindEnabled(raw.type, installedPlugins))
|
|
20
|
+
continue;
|
|
21
|
+
const top = nodeRegistry.get(raw.type)?.capabilities?.surfaces?.top;
|
|
22
|
+
if (!top?.boundary)
|
|
23
|
+
continue;
|
|
24
|
+
const surface = raw;
|
|
25
|
+
const targetFrame = surfaceFrame(raw.parentId, nodes);
|
|
26
|
+
const outline = top.boundary(raw, 0).map((point) => toFrame(point, targetFrame));
|
|
27
|
+
if (outline.length < 3)
|
|
28
|
+
continue;
|
|
29
|
+
const area = outline.reduce((sum, p, index) => {
|
|
30
|
+
const next = outline[(index + 1) % outline.length];
|
|
31
|
+
return sum + p[0] * next[1] - next[0] * p[1];
|
|
32
|
+
}, 0);
|
|
33
|
+
for (let index = 0; index < outline.length; index++) {
|
|
34
|
+
const a = outline[index], b = outline[(index + 1) % outline.length];
|
|
35
|
+
const dx = b[0] - a[0], dz = b[1] - a[1];
|
|
36
|
+
const size = Math.hypot(dx, dz);
|
|
37
|
+
if (size < 1e-4)
|
|
38
|
+
continue;
|
|
39
|
+
const project = (point) => Math.max(0, Math.min(1, ((point[0] - a[0]) * dx + (point[1] - a[1]) * dz) / (size * size)));
|
|
40
|
+
const lowT = project(candidate), highT = project(highEnd);
|
|
41
|
+
const lowEdge = [a[0] + dx * lowT, a[1] + dz * lowT];
|
|
42
|
+
const highEdge = [a[0] + dx * highT, a[1] + dz * highT];
|
|
43
|
+
const lowDistance = Math.hypot(candidate[0] - lowEdge[0], candidate[1] - lowEdge[1]);
|
|
44
|
+
const highDistance = Math.hypot(highEnd[0] - highEdge[0], highEnd[1] - highEdge[1]);
|
|
45
|
+
const t = highDistance < lowDistance ? highT : lowT;
|
|
46
|
+
const edge = [a[0] + dx * t, a[1] + dz * t];
|
|
47
|
+
const direction = area >= 0 ? 1 : -1;
|
|
48
|
+
const nx = (-dz / size) * direction, nz = (dx / size) * direction;
|
|
49
|
+
const outside = -((candidate[0] - edge[0]) * nx + (candidate[1] - edge[1]) * nz);
|
|
50
|
+
if (outside < -SNAP_DISTANCE)
|
|
51
|
+
continue;
|
|
52
|
+
const distance = Math.min(lowDistance, highDistance);
|
|
53
|
+
const catchDistance = stair.destinationSurfaceId === surface.id ? 1.25 : SNAP_DISTANCE;
|
|
54
|
+
if (distance > catchDistance || (closest && distance >= closest.distance))
|
|
55
|
+
continue;
|
|
56
|
+
const height = typeof top.height === 'function'
|
|
57
|
+
? top.height(raw, { nodes, point: fromFrame(edge, targetFrame) })
|
|
58
|
+
: top.height;
|
|
59
|
+
const topElevation = targetFrame.y + (surface.position?.[1] ?? 0) + height + floorConstructionLift(nodes, raw);
|
|
60
|
+
const rise = topElevation - (baseElevation + parentFrame.y);
|
|
61
|
+
if (!Number.isFinite(rise) || rise <= 0.01)
|
|
62
|
+
continue;
|
|
63
|
+
const stepCount = Math.max(1, Math.round(rise / 0.16));
|
|
64
|
+
const minRun = stepCount * 0.28;
|
|
65
|
+
const length = Math.max(minRun, outside, 0.4);
|
|
66
|
+
const localPoint = fromFrame([edge[0] - nx * length, edge[1] - nz * length], parentFrame);
|
|
67
|
+
closest = {
|
|
68
|
+
distance,
|
|
69
|
+
snap: {
|
|
70
|
+
position: [localPoint[0], candidatePosition[1], localPoint[1]],
|
|
71
|
+
rotation: Math.atan2(nx, nz) - parentFrame.rotation,
|
|
72
|
+
totalRise: rise,
|
|
73
|
+
stepCount,
|
|
74
|
+
length,
|
|
75
|
+
surfaceId: surface.id,
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return closest?.snap ?? null;
|
|
81
|
+
}
|
|
82
|
+
export function getBoundarySurfaces(nodes, parentId, installedPlugins) {
|
|
83
|
+
return Object.values(nodes).filter((node) => node.parentId === parentId &&
|
|
84
|
+
node.visible !== false &&
|
|
85
|
+
isNodeKindEnabled(node.type, installedPlugins) &&
|
|
86
|
+
Boolean(nodeRegistry.get(node.type)?.capabilities?.surfaces?.top?.boundary));
|
|
87
|
+
}
|
|
88
|
+
function surfaceFrame(parentId, nodes) {
|
|
89
|
+
const frame = { x: 0, y: 0, z: 0, rotation: 0, levelId: parentId };
|
|
90
|
+
const visited = new Set();
|
|
91
|
+
while (frame.levelId && !visited.has(frame.levelId)) {
|
|
92
|
+
visited.add(frame.levelId);
|
|
93
|
+
const parent = nodes[frame.levelId];
|
|
94
|
+
if (!parent || parent.type === 'level')
|
|
95
|
+
break;
|
|
96
|
+
const pose = parent;
|
|
97
|
+
const angle = typeof pose.rotation === 'number' ? pose.rotation : (pose.rotation?.[1] ?? 0);
|
|
98
|
+
const c = Math.cos(angle), s = Math.sin(angle);
|
|
99
|
+
const [x, y, z] = pose.position ?? [0, 0, 0];
|
|
100
|
+
const nextX = x + frame.x * c + frame.z * s;
|
|
101
|
+
frame.z = z - frame.x * s + frame.z * c;
|
|
102
|
+
frame.x = nextX;
|
|
103
|
+
frame.y += y;
|
|
104
|
+
frame.rotation += angle;
|
|
105
|
+
frame.levelId = parent.parentId;
|
|
106
|
+
}
|
|
107
|
+
return frame;
|
|
108
|
+
}
|
|
109
|
+
function toFrame([x, z], frame) {
|
|
110
|
+
const c = Math.cos(frame.rotation), s = Math.sin(frame.rotation);
|
|
111
|
+
return [frame.x + x * c + z * s, frame.z - x * s + z * c];
|
|
112
|
+
}
|
|
113
|
+
function fromFrame([x, z], frame) {
|
|
114
|
+
const c = Math.cos(frame.rotation), s = Math.sin(frame.rotation);
|
|
115
|
+
return [(x - frame.x) * c - (z - frame.z) * s, (x - frame.x) * s + (z - frame.z) * c];
|
|
116
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { AnyNode } from '../schema/index.js';
|
|
2
|
+
export type StoreyDatum = {
|
|
3
|
+
/** World/site Y of the level plane, excluding standing slabs and sampled terrain. */
|
|
4
|
+
floorElevation: number;
|
|
5
|
+
/** The same level plane in its building's coordinates. */
|
|
6
|
+
floorElevationBuildingLocal: number;
|
|
7
|
+
/** Stored floor-to-floor height, with the existing legacy fallback. */
|
|
8
|
+
floorToFloorHeight: number;
|
|
9
|
+
};
|
|
10
|
+
/** The existing resolved storey plane, not the walking surface elected from its slabs. */
|
|
11
|
+
export declare function getStoreyDatum(nodes: Readonly<Record<string, AnyNode>>, levelId: string): StoreyDatum | null;
|
|
12
|
+
//# sourceMappingURL=storey-datum.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storey-datum.d.ts","sourceRoot":"","sources":["../../src/services/storey-datum.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAa,MAAM,WAAW,CAAA;AAGnD,MAAM,MAAM,WAAW,GAAG;IACxB,qFAAqF;IACrF,cAAc,EAAE,MAAM,CAAA;IACtB,0DAA0D;IAC1D,2BAA2B,EAAE,MAAM,CAAA;IACnC,uEAAuE;IACvE,kBAAkB,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED,0FAA0F;AAC1F,wBAAgB,cAAc,CAC5B,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACxC,OAAO,EAAE,MAAM,GACd,WAAW,GAAG,IAAI,CAYpB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { SITE_DATUM_Y } from '../lib/terrain-support-query.js';
|
|
2
|
+
import { getLevelElevations, getStoredLevelHeight } from './storey.js';
|
|
3
|
+
/** The existing resolved storey plane, not the walking surface elected from its slabs. */
|
|
4
|
+
export function getStoreyDatum(nodes, levelId) {
|
|
5
|
+
const level = nodes[levelId];
|
|
6
|
+
if (level?.type !== 'level')
|
|
7
|
+
return null;
|
|
8
|
+
const elevation = getLevelElevations(nodes).get(levelId);
|
|
9
|
+
if (!elevation)
|
|
10
|
+
return null;
|
|
11
|
+
const building = elevation.buildingId ? nodes[elevation.buildingId] : undefined;
|
|
12
|
+
const buildingY = building?.type === 'building' ? (building.position?.[1] ?? 0) : 0;
|
|
13
|
+
return {
|
|
14
|
+
floorElevation: SITE_DATUM_Y + buildingY + elevation.baseY,
|
|
15
|
+
floorElevationBuildingLocal: elevation.baseY,
|
|
16
|
+
floorToFloorHeight: getStoredLevelHeight(level),
|
|
17
|
+
};
|
|
18
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { LevelNode, WallNode } from '../schema/index.js';
|
|
1
|
+
import type { LevelNode, SlabNode, WallNode } from '../schema/index.js';
|
|
2
2
|
import type { AnyNode, AnyNodeId } from '../schema/types.js';
|
|
3
3
|
/**
|
|
4
4
|
* Gap kept between a ceiling's stored height and its clamp bound (storey
|
|
@@ -6,6 +6,8 @@ import type { AnyNode, AnyNodeId } from '../schema/types.js';
|
|
|
6
6
|
* coincides with the solid above it.
|
|
7
7
|
*/
|
|
8
8
|
export declare const CEILING_CLAMP_MARGIN = 0.01;
|
|
9
|
+
/** Metres added per level ordinal in Exploded view, also used to frame agent captures. */
|
|
10
|
+
export declare const EXPLODED_GAP = 5;
|
|
9
11
|
/**
|
|
10
12
|
* Stored storey height in meters (floor-to-floor). Falls back to
|
|
11
13
|
* {@link DEFAULT_LEVEL_HEIGHT} for unmigrated legacy levels whose `height`
|
|
@@ -22,6 +24,46 @@ export type LevelElevation = {
|
|
|
22
24
|
};
|
|
23
25
|
export declare function getLevelElevations(nodes: Record<AnyNodeId, AnyNode>): Map<string, LevelElevation>;
|
|
24
26
|
export declare function getAuthoredLevelElevations(nodes: Readonly<Record<string, AnyNode>>): Map<string, LevelElevation>;
|
|
27
|
+
/**
|
|
28
|
+
* How far under the ground a floor has to sit to be below grade. A ground floor a few centimetres
|
|
29
|
+
* under the lawn (a basement deeper than it is tall pushes the stack down) stays a ground floor.
|
|
30
|
+
*/
|
|
31
|
+
export declare const BELOW_GRADE_TOLERANCE = 0.3;
|
|
32
|
+
/**
|
|
33
|
+
* The world Y of `levelId`'s own plane, the one its slabs' `elevation`s are measured from: the
|
|
34
|
+
* stacked base and the building's height on the site. A floor slab's top is this plus its
|
|
35
|
+
* elevation. `null` for an id that is no level.
|
|
36
|
+
*/
|
|
37
|
+
export declare function levelPlaneWorldY(nodes: Record<AnyNodeId, AnyNode>, levelId: string): number | null;
|
|
38
|
+
/**
|
|
39
|
+
* `levelId`'s world floor: the stacked base, the building's height on the site and the top of
|
|
40
|
+
* the highest slab it stands on. `null` for an id that is no level. A level with floors at
|
|
41
|
+
* several heights (a split level) has no single floor: this is the highest, and what asks where
|
|
42
|
+
* the ground stands over a floor asks per slab ({@link levelPlaneWorldY} plus the slab's
|
|
43
|
+
* elevation).
|
|
44
|
+
*/
|
|
45
|
+
export declare function levelFloorWorldY(nodes: Record<AnyNodeId, AnyNode>, levelId: string): number | null;
|
|
46
|
+
/**
|
|
47
|
+
* The world Y of the top of the lowest floor slab `levelId` stands on: the floor a pit under the
|
|
48
|
+
* level has to go down to, the sunken room of a split level included ({@link levelFloorWorldY} is
|
|
49
|
+
* the highest). The same as `levelFloorWorldY` for a level with one floor, or none. `null` for an
|
|
50
|
+
* id that is no level.
|
|
51
|
+
*/
|
|
52
|
+
export declare function levelLowestFloorWorldY(nodes: Record<AnyNodeId, AnyNode>, levelId: string): number | null;
|
|
53
|
+
/**
|
|
54
|
+
* The world Y of the underside of `levelId`'s lowest floor plate, never above the walls' base: the
|
|
55
|
+
* plane the foundation under the level tops out at, and the one the pit under the hole keeps its
|
|
56
|
+
* own floor clear of. `null` for an id that is no level.
|
|
57
|
+
*/
|
|
58
|
+
export declare function levelPlateUndersideWorldY(nodes: Record<AnyNodeId, AnyNode>, levelId: string): number | null;
|
|
59
|
+
/**
|
|
60
|
+
* Whether `levelId` lies wholly below the flat site's grade (Y 0): its standing floor, the highest
|
|
61
|
+
* of its floor slabs, is under it by more than {@link BELOW_GRADE_TOLERANCE}. The level as a
|
|
62
|
+
* whole, which is what deriving a building's ground level asks. Sculpted terrain is not consulted,
|
|
63
|
+
* and neither is a lower floor of a split level: ask `levelGradeStanding`, which judges each floor
|
|
64
|
+
* against the datum or the terrain. `false` for an id that is no level.
|
|
65
|
+
*/
|
|
66
|
+
export declare function isLevelBelowGrade(nodes: Record<AnyNodeId, AnyNode>, levelId: string): boolean;
|
|
25
67
|
export declare function getLevelFloorToFloorHeight(levelId: string, nodes: Record<AnyNodeId, AnyNode>): number;
|
|
26
68
|
/**
|
|
27
69
|
* The id of the level directly above `levelId` in its own stack (same
|
|
@@ -72,14 +114,18 @@ export declare function getCoveringSlabUndersideAt(levelId: string, nodes: Recor
|
|
|
72
114
|
* edge's orientation (one wall clamped, its neighbor didn't). Boundary
|
|
73
115
|
* contact counts as covered on every side of the slab.
|
|
74
116
|
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
* passing it wherever a raw storey height feeds `resolveWallTop` /
|
|
78
|
-
* `resolveWallEffectiveHeight` is always safe. Falls back to
|
|
117
|
+
* Use {@link getWallTop} to resolve a wall's top with its elected base and
|
|
118
|
+
* raw authored storey height, independently of this plane. Falls back to
|
|
79
119
|
* {@link DEFAULT_LEVEL_HEIGHT} when `levelId` doesn't resolve to a level.
|
|
80
120
|
*/
|
|
81
121
|
export declare function getWallPlaneTop(wall: Pick<WallNode, 'start' | 'end'> & Partial<Pick<WallNode, 'thickness' | 'curveOffset'>>, levelId: string, nodes: Record<AnyNodeId, AnyNode>): number;
|
|
122
|
+
export declare function getWallTop(wall: WallNode, levelId: string, nodes: Record<AnyNodeId, AnyNode>, electedBase: number): number;
|
|
82
123
|
export declare function getWallCoveringSlabUnderside(wall: Pick<WallNode, 'start' | 'end'> & Partial<Pick<WallNode, 'thickness' | 'curveOffset'>>, levelId: string, nodes: Record<AnyNodeId, AnyNode>): number | null;
|
|
124
|
+
export declare function getWallCoveringSlabs(wall: Pick<WallNode, 'start' | 'end'> & Partial<Pick<WallNode, 'thickness' | 'curveOffset'>>, levelId: string, nodes: Record<AnyNodeId, AnyNode>): Array<{
|
|
125
|
+
slab: SlabNode;
|
|
126
|
+
underside: number;
|
|
127
|
+
top: number;
|
|
128
|
+
}>;
|
|
83
129
|
export declare function getWallPlaneTops(walls: readonly WallNode[], levelId: string, nodes: Record<AnyNodeId, AnyNode>): Map<string, number>;
|
|
84
130
|
/**
|
|
85
131
|
* Upper bound for a ceiling's stored height over `polygon` on `levelId`:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storey.d.ts","sourceRoot":"","sources":["../../src/services/storey.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"storey.d.ts","sourceRoot":"","sources":["../../src/services/storey.ts"],"names":[],"mappings":"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"}
|