@pascal-app/nodes 1.0.1 → 1.0.4
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/block/definition.d.ts.map +1 -1
- package/dist/block/definition.js +22 -4
- package/dist/block/face-host.d.ts.map +1 -1
- package/dist/block/face-host.js +19 -2
- package/dist/block/floorplan.d.ts +11 -1
- package/dist/block/floorplan.d.ts.map +1 -1
- package/dist/block/floorplan.js +81 -13
- package/dist/block/geometry.d.ts +2 -2
- package/dist/block/geometry.d.ts.map +1 -1
- package/dist/block/geometry.js +39 -24
- package/dist/block/hosted-edit.d.ts +13 -0
- package/dist/block/hosted-edit.d.ts.map +1 -0
- package/dist/block/hosted-edit.js +230 -0
- package/dist/block/last-operation.d.ts +1 -1
- package/dist/block/last-operation.d.ts.map +1 -1
- package/dist/block/last-operation.js +6 -4
- package/dist/block/material-slots.d.ts +1 -3
- package/dist/block/material-slots.d.ts.map +1 -1
- package/dist/block/material-slots.js +1 -11
- package/dist/block/modal-session.d.ts +2 -1
- package/dist/block/modal-session.d.ts.map +1 -1
- package/dist/block/modal-session.js +2 -2
- package/dist/block/paint.d.ts.map +1 -1
- package/dist/block/paint.js +4 -10
- package/dist/block/panel.d.ts.map +1 -1
- package/dist/block/panel.js +8 -3
- package/dist/block/selection.d.ts.map +1 -1
- package/dist/block/selection.js +83 -25
- package/dist/block/surface.d.ts +4 -0
- package/dist/block/surface.d.ts.map +1 -0
- package/dist/block/surface.js +54 -0
- package/dist/block/use-block-face-operation.d.ts +2 -2
- package/dist/block/use-block-face-operation.d.ts.map +1 -1
- package/dist/block/use-block-face-operation.js +25 -11
- package/dist/box-vent/definition.d.ts.map +1 -1
- package/dist/box-vent/definition.js +3 -5
- package/dist/box-vent/panel.d.ts.map +1 -1
- package/dist/box-vent/panel.js +5 -28
- package/dist/building/renderer.d.ts.map +1 -1
- package/dist/building/renderer.js +1 -1
- package/dist/cabinet/countertop-layout.d.ts +13 -2
- package/dist/cabinet/countertop-layout.d.ts.map +1 -1
- package/dist/cabinet/definition.d.ts.map +1 -1
- package/dist/cabinet/definition.js +4 -3
- package/dist/cabinet/floorplan.d.ts.map +1 -1
- package/dist/cabinet/floorplan.js +125 -28
- package/dist/cabinet/geometry/shared.d.ts +1 -2
- package/dist/cabinet/geometry/shared.d.ts.map +1 -1
- package/dist/cabinet/geometry/shared.js +1 -2
- package/dist/cabinet/hosted-resize.d.ts +3 -6
- package/dist/cabinet/hosted-resize.d.ts.map +1 -1
- package/dist/cabinet/hosted-resize.js +9 -153
- package/dist/cabinet/placement-snap.d.ts.map +1 -1
- package/dist/cabinet/placement-snap.js +4 -2
- package/dist/cabinet/run-layout.d.ts.map +1 -1
- package/dist/cabinet/run-layout.js +8 -5
- package/dist/cabinet/run-ops.d.ts +13 -2
- package/dist/cabinet/run-ops.d.ts.map +1 -1
- package/dist/cabinet/surfaces.d.ts +1 -0
- package/dist/cabinet/surfaces.d.ts.map +1 -1
- package/dist/cabinet/surfaces.js +13 -1
- package/dist/cabinet/tool.d.ts.map +1 -1
- package/dist/cabinet/tool.js +30 -28
- package/dist/cabinet/wall-snap.d.ts.map +1 -1
- package/dist/cabinet/wall-snap.js +8 -8
- package/dist/ceiling/boundary-editor.d.ts.map +1 -1
- package/dist/ceiling/boundary-editor.js +5 -3
- package/dist/ceiling/definition.d.ts +4 -4
- package/dist/ceiling/definition.d.ts.map +1 -1
- package/dist/ceiling/definition.js +20 -15
- package/dist/ceiling/floorplan-affordances.d.ts +84 -4
- package/dist/ceiling/floorplan-affordances.d.ts.map +1 -1
- package/dist/ceiling/floorplan-affordances.js +0 -1
- package/dist/ceiling/floorplan-move.d.ts.map +1 -1
- package/dist/ceiling/floorplan-move.js +0 -1
- package/dist/ceiling/floorplan.d.ts +1 -1
- package/dist/ceiling/floorplan.d.ts.map +1 -1
- package/dist/ceiling/floorplan.js +2 -1
- package/dist/ceiling/height-bounds.d.ts +19 -0
- package/dist/ceiling/height-bounds.d.ts.map +1 -0
- package/dist/ceiling/height-bounds.js +24 -0
- package/dist/ceiling/hole-editor.d.ts.map +1 -1
- package/dist/ceiling/hole-editor.js +3 -4
- package/dist/ceiling/materials.d.ts +1 -1
- package/dist/ceiling/materials.d.ts.map +1 -1
- package/dist/ceiling/materials.js +10 -3
- package/dist/ceiling/paint.d.ts +2 -8
- package/dist/ceiling/paint.d.ts.map +1 -1
- package/dist/ceiling/paint.js +121 -24
- package/dist/ceiling/panel.d.ts.map +1 -1
- package/dist/ceiling/panel.js +40 -23
- package/dist/ceiling/renderer.d.ts.map +1 -1
- package/dist/ceiling/renderer.js +43 -6
- package/dist/chimney/definition.d.ts.map +1 -1
- package/dist/chimney/definition.js +1 -0
- package/dist/chimney/move-tool.d.ts.map +1 -1
- package/dist/chimney/move-tool.js +8 -2
- package/dist/chimney/paint.d.ts.map +1 -1
- package/dist/chimney/paint.js +3 -10
- package/dist/column/definition.d.ts.map +1 -1
- package/dist/column/definition.js +34 -5
- package/dist/column/floorplan-affordances.d.ts.map +1 -1
- package/dist/column/floorplan-affordances.js +11 -1
- package/dist/column/floorplan.d.ts +1 -1
- package/dist/column/floorplan.d.ts.map +1 -1
- package/dist/column/floorplan.js +69 -12
- package/dist/column/hosted-resize.d.ts +215 -0
- package/dist/column/hosted-resize.d.ts.map +1 -0
- package/dist/column/hosted-resize.js +9 -0
- package/dist/column/panel.d.ts.map +1 -1
- package/dist/column/panel.js +153 -149
- package/dist/column/renderer.d.ts.map +1 -1
- package/dist/column/renderer.js +29 -105
- package/dist/column/shape.d.ts +22 -0
- package/dist/column/shape.d.ts.map +1 -0
- package/dist/column/shape.js +120 -0
- package/dist/column/surface.d.ts +4 -0
- package/dist/column/surface.d.ts.map +1 -0
- package/dist/column/surface.js +73 -0
- package/dist/construction-dimension/floorplan.js +7 -3
- package/dist/cupola/definition.d.ts.map +1 -1
- package/dist/cupola/definition.js +3 -8
- package/dist/cupola/panel.d.ts.map +1 -1
- package/dist/cupola/panel.js +5 -23
- package/dist/door/definition.d.ts.map +1 -1
- package/dist/door/definition.js +52 -4
- package/dist/door/door-math.d.ts +6 -11
- package/dist/door/door-math.d.ts.map +1 -1
- package/dist/door/door-math.js +13 -17
- package/dist/door/floorplan-affordances.d.ts.map +1 -1
- package/dist/door/floorplan-affordances.js +8 -12
- package/dist/door/floorplan-move.d.ts.map +1 -1
- package/dist/door/floorplan-move.js +3 -1
- package/dist/door/floorplan.d.ts.map +1 -1
- package/dist/door/floorplan.js +55 -21
- package/dist/door/mechanism.d.ts +4 -0
- package/dist/door/mechanism.d.ts.map +1 -0
- package/dist/door/mechanism.js +24 -0
- package/dist/door/move-tool.d.ts.map +1 -1
- package/dist/door/move-tool.js +75 -52
- package/dist/door/paint.d.ts.map +1 -1
- package/dist/door/paint.js +3 -0
- package/dist/door/panel.d.ts.map +1 -1
- package/dist/door/panel.js +54 -308
- package/dist/door/placement.d.ts +45 -0
- package/dist/door/placement.d.ts.map +1 -0
- package/dist/door/placement.js +51 -0
- package/dist/door/preview.d.ts.map +1 -1
- package/dist/door/preview.js +2 -0
- package/dist/door/renderer.d.ts.map +1 -1
- package/dist/door/renderer.js +3 -2
- package/dist/door/tool.d.ts.map +1 -1
- package/dist/door/tool.js +112 -23
- package/dist/dormer/csg-geometry.d.ts.map +1 -1
- package/dist/dormer/csg-geometry.js +2 -0
- package/dist/dormer/definition.d.ts.map +1 -1
- package/dist/dormer/definition.js +1 -0
- package/dist/dormer/paint.d.ts.map +1 -1
- package/dist/dormer/paint.js +2 -5
- package/dist/dormer/panel.d.ts.map +1 -1
- package/dist/dormer/panel.js +4 -14
- package/dist/downspout/definition.d.ts.map +1 -1
- package/dist/downspout/definition.js +3 -2
- package/dist/duct-fitting/definition.d.ts.map +1 -1
- package/dist/duct-fitting/definition.js +2 -1
- package/dist/duct-fitting/geometry.d.ts.map +1 -1
- package/dist/duct-fitting/geometry.js +1 -1
- package/dist/duct-fitting/move-tool.d.ts.map +1 -1
- package/dist/duct-fitting/move-tool.js +8 -2
- package/dist/duct-segment/definition.d.ts.map +1 -1
- package/dist/duct-segment/definition.js +2 -2
- package/dist/duct-segment/geometry.d.ts.map +1 -1
- package/dist/duct-segment/geometry.js +1 -1
- package/dist/duct-segment/move-tool.d.ts.map +1 -1
- package/dist/duct-segment/move-tool.js +8 -2
- package/dist/duct-segment/tool.d.ts.map +1 -1
- package/dist/duct-segment/tool.js +11 -0
- package/dist/duct-terminal/tool.d.ts.map +1 -1
- package/dist/duct-terminal/tool.js +77 -8
- package/dist/elevator/definition.d.ts.map +1 -1
- package/dist/elevator/definition.js +3 -2
- package/dist/elevator/panel.d.ts.map +1 -1
- package/dist/elevator/panel.js +5 -27
- package/dist/elevator/parametrics.d.ts.map +1 -1
- package/dist/elevator/parametrics.js +98 -1
- package/dist/elevator/renderer.d.ts.map +1 -1
- package/dist/elevator/renderer.js +3 -4
- package/dist/eyebrow-vent/definition.d.ts.map +1 -1
- package/dist/eyebrow-vent/definition.js +3 -5
- package/dist/eyebrow-vent/paint.d.ts.map +1 -1
- package/dist/eyebrow-vent/paint.js +3 -6
- package/dist/eyebrow-vent/panel.d.ts.map +1 -1
- package/dist/eyebrow-vent/panel.js +5 -23
- package/dist/fence/actions/move-endpoint.d.ts +1 -1
- package/dist/fence/actions/move-endpoint.d.ts.map +1 -1
- package/dist/fence/actions/move-endpoint.js +2 -1
- package/dist/fence/definition.d.ts +2 -1
- package/dist/fence/definition.d.ts.map +1 -1
- package/dist/fence/definition.js +84 -28
- package/dist/fence/drafting.d.ts +36 -0
- package/dist/fence/drafting.d.ts.map +1 -0
- package/dist/fence/drafting.js +210 -0
- package/dist/fence/feature-tool.d.ts +4 -0
- package/dist/fence/feature-tool.d.ts.map +1 -0
- package/dist/fence/feature-tool.js +140 -0
- package/dist/fence/features.d.ts +2 -0
- package/dist/fence/features.d.ts.map +1 -0
- package/dist/fence/features.js +12 -0
- package/dist/fence/floorplan-affordances.d.ts.map +1 -1
- package/dist/fence/floorplan-affordances.js +2 -1
- package/dist/fence/floorplan.d.ts +2 -3
- package/dist/fence/floorplan.d.ts.map +1 -1
- package/dist/fence/floorplan.js +131 -71
- package/dist/fence/geometry-parts.d.ts +50 -0
- package/dist/fence/geometry-parts.d.ts.map +1 -0
- package/dist/fence/geometry-parts.js +1144 -0
- package/dist/fence/geometry.d.ts +2 -3
- package/dist/fence/geometry.d.ts.map +1 -1
- package/dist/fence/geometry.js +84 -7
- package/dist/fence/index.d.ts +1 -0
- package/dist/fence/index.d.ts.map +1 -1
- package/dist/fence/index.js +1 -0
- package/dist/fence/inspector-editors.d.ts +15 -0
- package/dist/fence/inspector-editors.d.ts.map +1 -1
- package/dist/fence/inspector-editors.js +128 -3
- package/dist/fence/lift.d.ts.map +1 -1
- package/dist/fence/lift.js +5 -2
- package/dist/fence/move-tool.js +2 -1
- package/dist/fence/panel-model.d.ts +4 -0
- package/dist/fence/panel-model.d.ts.map +1 -0
- package/dist/fence/panel-model.js +12 -0
- package/dist/fence/parametrics.d.ts +0 -12
- package/dist/fence/parametrics.d.ts.map +1 -1
- package/dist/fence/parametrics.js +185 -18
- package/dist/fence/system.d.ts.map +1 -1
- package/dist/fence/system.js +141 -31
- package/dist/fence/tool.d.ts.map +1 -1
- package/dist/fence/tool.js +257 -48
- package/dist/fence-feature/actions.d.ts +7 -0
- package/dist/fence-feature/actions.d.ts.map +1 -0
- package/dist/fence-feature/actions.js +26 -0
- package/dist/fence-feature/definition.d.ts +4 -0
- package/dist/fence-feature/definition.d.ts.map +1 -0
- package/dist/fence-feature/definition.js +112 -0
- package/dist/fence-feature/floorplan-affordances.d.ts +3 -0
- package/dist/fence-feature/floorplan-affordances.d.ts.map +1 -0
- package/dist/fence-feature/floorplan-affordances.js +37 -0
- package/dist/fence-feature/floorplan.d.ts +4 -0
- package/dist/fence-feature/floorplan.d.ts.map +1 -0
- package/dist/fence-feature/floorplan.js +120 -0
- package/dist/fence-feature/geometry.d.ts +5 -0
- package/dist/fence-feature/geometry.d.ts.map +1 -0
- package/dist/fence-feature/geometry.js +43 -0
- package/dist/fence-feature/handles.d.ts +5 -0
- package/dist/fence-feature/handles.d.ts.map +1 -0
- package/dist/fence-feature/handles.js +84 -0
- package/dist/fence-feature/inspector.d.ts +6 -0
- package/dist/fence-feature/inspector.d.ts.map +1 -0
- package/dist/fence-feature/inspector.js +214 -0
- package/dist/fence-feature/interaction.d.ts +3 -0
- package/dist/fence-feature/interaction.d.ts.map +1 -0
- package/dist/fence-feature/interaction.js +41 -0
- package/dist/fence-feature/move-session.d.ts +9 -0
- package/dist/fence-feature/move-session.d.ts.map +1 -0
- package/dist/fence-feature/move-session.js +48 -0
- package/dist/fence-feature/move-tool.d.ts +5 -0
- package/dist/fence-feature/move-tool.d.ts.map +1 -0
- package/dist/fence-feature/move-tool.js +58 -0
- package/dist/fence-feature/pick-target.d.ts +7 -0
- package/dist/fence-feature/pick-target.d.ts.map +1 -0
- package/dist/fence-feature/pick-target.js +52 -0
- package/dist/floor-opening/definition.d.ts +3 -0
- package/dist/floor-opening/definition.d.ts.map +1 -0
- package/dist/floor-opening/definition.js +41 -0
- package/dist/floor-opening/floorplan.d.ts +156 -0
- package/dist/floor-opening/floorplan.d.ts.map +1 -0
- package/dist/floor-opening/floorplan.js +63 -0
- package/dist/guide/definition.d.ts.map +1 -1
- package/dist/guide/definition.js +1 -0
- package/dist/gutter/definition.d.ts.map +1 -1
- package/dist/gutter/definition.js +3 -2
- package/dist/hvac-equipment/tool.d.ts.map +1 -1
- package/dist/hvac-equipment/tool.js +8 -2
- package/dist/imported-mesh/definition.d.ts.map +1 -1
- package/dist/imported-mesh/definition.js +2 -0
- package/dist/imported-mesh/geometry.d.ts +1 -1
- package/dist/imported-mesh/geometry.d.ts.map +1 -1
- package/dist/imported-mesh/geometry.js +40 -12
- package/dist/index.d.ts +13 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -2
- package/dist/item/authored-face-host.d.ts +10 -0
- package/dist/item/authored-face-host.d.ts.map +1 -0
- package/dist/item/authored-face-host.js +87 -0
- package/dist/item/authored-params.d.ts +15 -0
- package/dist/item/authored-params.d.ts.map +1 -0
- package/dist/item/authored-params.js +72 -0
- package/dist/item/definition.d.ts +2 -2
- package/dist/item/definition.d.ts.map +1 -1
- package/dist/item/definition.js +35 -4
- package/dist/item/floorplan-move.d.ts.map +1 -1
- package/dist/item/floorplan-move.js +209 -130
- package/dist/item/floorplan.d.ts +22 -0
- package/dist/item/floorplan.d.ts.map +1 -1
- package/dist/item/floorplan.js +95 -6
- package/dist/item/index.d.ts +1 -0
- package/dist/item/index.d.ts.map +1 -1
- package/dist/item/index.js +1 -0
- package/dist/item/model-loader.d.ts +2 -0
- package/dist/item/model-loader.d.ts.map +1 -1
- package/dist/item/model-loader.js +55 -23
- package/dist/item/move-tool.d.ts +1 -1
- package/dist/item/move-tool.d.ts.map +1 -1
- package/dist/item/move-tool.js +19 -11
- package/dist/item/paint.d.ts.map +1 -1
- package/dist/item/paint.js +5 -24
- package/dist/item/panel.d.ts +1 -3
- package/dist/item/panel.d.ts.map +1 -1
- package/dist/item/panel.js +20 -24
- package/dist/item/placement-notice.d.ts +14 -0
- package/dist/item/placement-notice.d.ts.map +1 -0
- package/dist/item/placement-notice.js +38 -0
- package/dist/item/plan-symbols.d.ts +67 -0
- package/dist/item/plan-symbols.d.ts.map +1 -0
- package/dist/item/plan-symbols.js +407 -0
- package/dist/item/renderer.d.ts +10 -0
- package/dist/item/renderer.d.ts.map +1 -1
- package/dist/item/renderer.js +72 -40
- package/dist/item/script-param-defaults.d.ts +12 -0
- package/dist/item/script-param-defaults.d.ts.map +1 -0
- package/dist/item/script-param-defaults.js +34 -0
- package/dist/lean-to-extension/definition.d.ts.map +1 -1
- package/dist/lean-to-extension/definition.js +1 -2
- package/dist/lean-to-extension/geometry.d.ts.map +1 -1
- package/dist/lean-to-extension/geometry.js +1 -1
- package/dist/lean-to-extension/layout.d.ts.map +1 -1
- package/dist/lean-to-extension/layout.js +2 -3
- package/dist/lean-to-extension/placement-validation.d.ts.map +1 -1
- package/dist/lean-to-extension/placement-validation.js +5 -5
- package/dist/lean-to-extension/tool.d.ts.map +1 -1
- package/dist/lean-to-extension/tool.js +5 -5
- package/dist/level/renderer.js +1 -1
- package/dist/lineset/move-tool.d.ts.map +1 -1
- package/dist/lineset/move-tool.js +8 -2
- package/dist/lineset/tool.d.ts.map +1 -1
- package/dist/lineset/tool.js +1 -0
- package/dist/liquid-line/move-tool.d.ts.map +1 -1
- package/dist/liquid-line/move-tool.js +8 -2
- package/dist/liquid-line/tool.d.ts.map +1 -1
- package/dist/liquid-line/tool.js +5 -1
- package/dist/measurement/definition.d.ts.map +1 -1
- package/dist/measurement/definition.js +2 -1
- package/dist/pipe-fitting/move-tool.d.ts.map +1 -1
- package/dist/pipe-fitting/move-tool.js +8 -2
- package/dist/pipe-segment/move-tool.d.ts.map +1 -1
- package/dist/pipe-segment/move-tool.js +8 -2
- package/dist/pipe-segment/tool.d.ts.map +1 -1
- package/dist/pipe-segment/tool.js +14 -3
- package/dist/pipe-trap/tool.d.ts.map +1 -1
- package/dist/pipe-trap/tool.js +7 -8
- package/dist/procedural-item/animation.d.ts +8 -0
- package/dist/procedural-item/animation.d.ts.map +1 -0
- package/dist/procedural-item/animation.js +116 -0
- package/dist/procedural-item/definition.d.ts.map +1 -1
- package/dist/procedural-item/definition.js +77 -8
- package/dist/procedural-item/geometry.d.ts +5 -1
- package/dist/procedural-item/geometry.d.ts.map +1 -1
- package/dist/procedural-item/geometry.js +239 -15
- package/dist/procedural-item/renderer.d.ts.map +1 -1
- package/dist/procedural-item/renderer.js +272 -23
- package/dist/ridge-vent/definition.d.ts.map +1 -1
- package/dist/ridge-vent/definition.js +1 -0
- package/dist/ridge-vent/panel.d.ts.map +1 -1
- package/dist/ridge-vent/panel.js +5 -23
- package/dist/ridge-vent/renderer.d.ts.map +1 -1
- package/dist/ridge-vent/renderer.js +9 -8
- package/dist/roof/definition.d.ts.map +1 -1
- package/dist/roof/definition.js +8 -2
- package/dist/roof/floorplan.d.ts +8 -0
- package/dist/roof/floorplan.d.ts.map +1 -1
- package/dist/roof/floorplan.js +194 -18
- package/dist/roof/panel-model.d.ts +4 -0
- package/dist/roof/panel-model.d.ts.map +1 -0
- package/dist/roof/panel-model.js +155 -0
- package/dist/roof/panel.d.ts.map +1 -1
- package/dist/roof/panel.js +5 -13
- package/dist/roof/parametrics.d.ts.map +1 -1
- package/dist/roof/parametrics.js +16 -1
- package/dist/roof/renderer.d.ts.map +1 -1
- package/dist/roof/renderer.js +5 -2
- package/dist/roof-segment/definition.d.ts.map +1 -1
- package/dist/roof-segment/definition.js +1 -0
- package/dist/roof-segment/panel.d.ts.map +1 -1
- package/dist/roof-segment/panel.js +5 -24
- package/dist/roof-segment/parametrics.d.ts.map +1 -1
- package/dist/roof-segment/parametrics.js +176 -1
- package/dist/roof-segment/renderer.d.ts.map +1 -1
- package/dist/roof-segment/renderer.js +17 -8
- package/dist/scan/definition.d.ts.map +1 -1
- package/dist/scan/definition.js +1 -0
- package/dist/separator/definition.d.ts +3 -0
- package/dist/separator/definition.d.ts.map +1 -0
- package/dist/separator/definition.js +39 -0
- package/dist/separator/renderer.d.ts +5 -0
- package/dist/separator/renderer.d.ts.map +1 -0
- package/dist/separator/renderer.js +36 -0
- package/dist/shared/commit-opening-move.d.ts +4 -0
- package/dist/shared/commit-opening-move.d.ts.map +1 -0
- package/dist/shared/commit-opening-move.js +9 -0
- package/dist/shared/curtain-opening-limits.d.ts +14 -0
- package/dist/shared/curtain-opening-limits.d.ts.map +1 -0
- package/dist/shared/curtain-opening-limits.js +53 -0
- package/dist/shared/draft-axis-guides.d.ts +0 -6
- package/dist/shared/draft-axis-guides.d.ts.map +1 -1
- package/dist/shared/draft-axis-guides.js +1 -8
- package/dist/shared/duct-body-paint.d.ts +0 -4
- package/dist/shared/duct-body-paint.d.ts.map +1 -1
- package/dist/shared/duct-body-paint.js +1 -5
- package/dist/shared/hosted-resize.d.ts +12 -0
- package/dist/shared/hosted-resize.d.ts.map +1 -0
- package/dist/shared/hosted-resize.js +166 -0
- package/dist/shared/item-interaction-actions.d.ts +6 -0
- package/dist/shared/item-interaction-actions.d.ts.map +1 -0
- package/dist/shared/item-interaction-actions.js +27 -0
- package/dist/shared/item-interactions.d.ts +9 -0
- package/dist/shared/item-interactions.d.ts.map +1 -0
- package/dist/shared/item-interactions.js +74 -0
- package/dist/shared/item-light-placement.d.ts +2 -0
- package/dist/shared/item-light-placement.d.ts.map +1 -0
- package/dist/shared/item-light-placement.js +3 -0
- package/dist/shared/move-roof-tool.js +2 -1
- package/dist/shared/node-batch/batchable.d.ts +12 -0
- package/dist/shared/node-batch/batchable.d.ts.map +1 -0
- package/dist/shared/node-batch/batchable.js +41 -0
- package/dist/shared/node-batch/candidates.d.ts +7 -5
- package/dist/shared/node-batch/candidates.d.ts.map +1 -1
- package/dist/shared/node-batch/candidates.js +43 -59
- package/dist/shared/node-batch/release.d.ts +8 -0
- package/dist/shared/node-batch/release.d.ts.map +1 -0
- package/dist/shared/node-batch/release.js +16 -0
- package/dist/shared/node-batch/system.d.ts.map +1 -1
- package/dist/shared/node-batch/system.js +17 -12
- package/dist/shared/node-batch/types.d.ts +4 -1
- package/dist/shared/node-batch/types.d.ts.map +1 -1
- package/dist/shared/opening-documentation.d.ts +13 -1
- package/dist/shared/opening-documentation.d.ts.map +1 -1
- package/dist/shared/opening-documentation.js +245 -59
- package/dist/shared/opening-grid-follow.d.ts +8 -0
- package/dist/shared/opening-grid-follow.d.ts.map +1 -0
- package/dist/shared/opening-grid-follow.js +12 -0
- package/dist/shared/opening-guides-runtime.d.ts.map +1 -1
- package/dist/shared/opening-guides-runtime.js +17 -14
- package/dist/shared/opening-placement-dimensions.d.ts.map +1 -1
- package/dist/shared/opening-placement-dimensions.js +3 -3
- package/dist/shared/opening-plane-offset.d.ts +23 -0
- package/dist/shared/opening-plane-offset.d.ts.map +1 -0
- package/dist/shared/opening-plane-offset.js +24 -0
- package/dist/shared/opening-property-preview-host.d.ts +3 -0
- package/dist/shared/opening-property-preview-host.d.ts.map +1 -0
- package/dist/shared/opening-property-preview-host.js +21 -0
- package/dist/shared/opening-property-preview.d.ts +19 -0
- package/dist/shared/opening-property-preview.d.ts.map +1 -0
- package/dist/shared/opening-property-preview.js +99 -0
- package/dist/shared/polygon-centroid-move.d.ts.map +1 -1
- package/dist/shared/polygon-centroid-move.js +4 -1
- package/dist/shared/polygon-vertex-affordance.d.ts.map +1 -1
- package/dist/shared/polygon-vertex-affordance.js +19 -15
- package/dist/shared/resting-surface-plan.d.ts +2 -1
- package/dist/shared/resting-surface-plan.d.ts.map +1 -1
- package/dist/shared/resting-surface-plan.js +29 -4
- package/dist/shared/run-hangers.d.ts.map +1 -1
- package/dist/shared/run-hangers.js +5 -4
- package/dist/shared/scripted-opening-handles.d.ts +18 -0
- package/dist/shared/scripted-opening-handles.d.ts.map +1 -0
- package/dist/shared/scripted-opening-handles.js +53 -0
- package/dist/shared/scripted-opening.d.ts +25 -0
- package/dist/shared/scripted-opening.d.ts.map +1 -0
- package/dist/shared/scripted-opening.js +72 -0
- package/dist/shared/slot-paint.d.ts +14 -2
- package/dist/shared/slot-paint.d.ts.map +1 -1
- package/dist/shared/slot-paint.js +29 -29
- package/dist/shared/surface-counterparts.d.ts +12 -0
- package/dist/shared/surface-counterparts.d.ts.map +1 -0
- package/dist/shared/surface-counterparts.js +27 -0
- package/dist/shared/surface-paint.d.ts.map +1 -1
- package/dist/shared/surface-paint.js +2 -5
- package/dist/shared/swap-preview-material.d.ts +11 -0
- package/dist/shared/swap-preview-material.d.ts.map +1 -0
- package/dist/shared/swap-preview-material.js +16 -0
- package/dist/shared/system-checks.d.ts.map +1 -1
- package/dist/shared/system-checks.js +5 -3
- package/dist/shared/wall-attach-target.d.ts +4 -10
- package/dist/shared/wall-attach-target.d.ts.map +1 -1
- package/dist/shared/wall-attach-target.js +6 -63
- package/dist/shared/wall-event-from-grid.d.ts +5 -0
- package/dist/shared/wall-event-from-grid.d.ts.map +1 -0
- package/dist/shared/wall-event-from-grid.js +36 -0
- package/dist/shared/wall-opening-ceiling.d.ts +5 -15
- package/dist/shared/wall-opening-ceiling.d.ts.map +1 -1
- package/dist/shared/wall-opening-ceiling.js +10 -18
- package/dist/shelf/definition.d.ts.map +1 -1
- package/dist/shelf/definition.js +4 -2
- package/dist/shelf/floorplan.d.ts.map +1 -1
- package/dist/shelf/floorplan.js +9 -2
- package/dist/shelf/geometry.d.ts.map +1 -1
- package/dist/shelf/geometry.js +1 -2
- package/dist/shelf/paint.d.ts.map +1 -1
- package/dist/shelf/paint.js +4 -10
- package/dist/site/line-ribbon.d.ts +31 -0
- package/dist/site/line-ribbon.d.ts.map +1 -0
- package/dist/site/line-ribbon.js +117 -0
- package/dist/site/lot-mask.d.ts +18 -0
- package/dist/site/lot-mask.d.ts.map +1 -0
- package/dist/site/lot-mask.js +35 -0
- package/dist/site/panel.d.ts +10 -0
- package/dist/site/panel.d.ts.map +1 -0
- package/dist/site/panel.js +155 -0
- package/dist/site/parametrics.d.ts +7 -0
- package/dist/site/parametrics.d.ts.map +1 -1
- package/dist/site/parametrics.js +8 -0
- package/dist/site/recessed-slab-ground-holes.d.ts.map +1 -1
- package/dist/site/recessed-slab-ground-holes.js +5 -2
- package/dist/site/renderer.d.ts.map +1 -1
- package/dist/site/renderer.js +158 -20
- package/dist/site/setbacks.d.ts +33 -0
- package/dist/site/setbacks.d.ts.map +1 -0
- package/dist/site/setbacks.js +204 -0
- package/dist/site/terrain-geometry.d.ts +28 -1
- package/dist/site/terrain-geometry.d.ts.map +1 -1
- package/dist/site/terrain-geometry.js +78 -4
- package/dist/site/terrain-holes.d.ts +15 -0
- package/dist/site/terrain-holes.d.ts.map +1 -0
- package/dist/site/terrain-holes.js +74 -0
- package/dist/site/terrain-mesh.d.ts +9 -2
- package/dist/site/terrain-mesh.d.ts.map +1 -1
- package/dist/site/terrain-mesh.js +36 -9
- package/dist/site/terrain-renderer.d.ts +9 -2
- package/dist/site/terrain-renderer.d.ts.map +1 -1
- package/dist/site/terrain-renderer.js +14 -4
- package/dist/skylight/definition.d.ts.map +1 -1
- package/dist/skylight/definition.js +1 -0
- package/dist/slab/boundary-editor.d.ts +1 -1
- package/dist/slab/boundary-editor.d.ts.map +1 -1
- package/dist/slab/boundary-editor.js +13 -13
- package/dist/slab/definition.d.ts.map +1 -1
- package/dist/slab/definition.js +23 -3
- package/dist/slab/dependency-tracker.d.ts.map +1 -1
- package/dist/slab/dependency-tracker.js +67 -7
- package/dist/slab/elevation-limit.d.ts.map +1 -1
- package/dist/slab/elevation-limit.js +2 -2
- package/dist/slab/floorplan-affordances.d.ts +176 -4
- package/dist/slab/floorplan-affordances.d.ts.map +1 -1
- package/dist/slab/floorplan-affordances.js +0 -1
- package/dist/slab/floorplan-move.d.ts.map +1 -1
- package/dist/slab/floorplan-move.js +3 -4
- package/dist/slab/floorplan.d.ts +7 -0
- package/dist/slab/floorplan.d.ts.map +1 -1
- package/dist/slab/floorplan.js +22 -5
- package/dist/slab/geometry.d.ts.map +1 -1
- package/dist/slab/geometry.js +186 -76
- package/dist/slab/move-tool.js +7 -6
- package/dist/slab/paint.d.ts +18 -5
- package/dist/slab/paint.d.ts.map +1 -1
- package/dist/slab/paint.js +458 -9
- package/dist/slab/panel.d.ts.map +1 -1
- package/dist/slab/panel.js +28 -9
- package/dist/slab/placement-ownership.d.ts +2 -1
- package/dist/slab/placement-ownership.d.ts.map +1 -1
- package/dist/slab/placement-ownership.js +2 -2
- package/dist/slab/surface-split.d.ts +24 -0
- package/dist/slab/surface-split.d.ts.map +1 -0
- package/dist/slab/surface-split.js +389 -0
- package/dist/slab/tool.d.ts.map +1 -1
- package/dist/slab/tool.js +3 -3
- package/dist/solar-panel/definition.d.ts.map +1 -1
- package/dist/solar-panel/definition.js +1 -0
- package/dist/spawn/definition.d.ts.map +1 -1
- package/dist/spawn/definition.js +1 -0
- package/dist/stair/baluster-geometry.d.ts +21 -0
- package/dist/stair/baluster-geometry.d.ts.map +1 -0
- package/dist/stair/baluster-geometry.js +74 -0
- package/dist/stair/baluster-guard.d.ts +50 -0
- package/dist/stair/baluster-guard.d.ts.map +1 -0
- package/dist/stair/baluster-guard.js +71 -0
- package/dist/stair/boards-guard.d.ts +37 -0
- package/dist/stair/boards-guard.d.ts.map +1 -0
- package/dist/stair/boards-guard.js +61 -0
- package/dist/stair/cable-guard.d.ts +39 -0
- package/dist/stair/cable-guard.d.ts.map +1 -0
- package/dist/stair/cable-guard.js +105 -0
- package/dist/stair/construction-controls.d.ts +15 -0
- package/dist/stair/construction-controls.d.ts.map +1 -0
- package/dist/stair/construction-controls.js +29 -0
- package/dist/stair/continuous-railings.d.ts +10 -0
- package/dist/stair/continuous-railings.d.ts.map +1 -0
- package/dist/stair/continuous-railings.js +159 -0
- package/dist/stair/definition.d.ts.map +1 -1
- package/dist/stair/definition.js +18 -37
- package/dist/stair/documentation.d.ts +1 -1
- package/dist/stair/documentation.d.ts.map +1 -1
- package/dist/stair/documentation.js +10 -17
- package/dist/stair/floorplan-affordances.d.ts.map +1 -1
- package/dist/stair/floorplan-affordances.js +9 -25
- package/dist/stair/floorplan.d.ts +1 -23
- package/dist/stair/floorplan.d.ts.map +1 -1
- package/dist/stair/floorplan.js +102 -86
- package/dist/stair/glass-guard.d.ts +72 -0
- package/dist/stair/glass-guard.d.ts.map +1 -0
- package/dist/stair/glass-guard.js +167 -0
- package/dist/stair/guard-path.d.ts +119 -0
- package/dist/stair/guard-path.d.ts.map +1 -0
- package/dist/stair/guard-path.js +208 -0
- package/dist/stair/materials.d.ts +11 -0
- package/dist/stair/materials.d.ts.map +1 -0
- package/dist/stair/materials.js +51 -0
- package/dist/stair/metal-guard.d.ts +38 -0
- package/dist/stair/metal-guard.d.ts.map +1 -0
- package/dist/stair/metal-guard.js +79 -0
- package/dist/stair/paint.d.ts +32 -0
- package/dist/stair/paint.d.ts.map +1 -1
- package/dist/stair/paint.js +75 -36
- package/dist/stair/panel.d.ts.map +1 -1
- package/dist/stair/panel.js +154 -17
- package/dist/stair/parametrics.d.ts +1 -1
- package/dist/stair/parametrics.d.ts.map +1 -1
- package/dist/stair/parametrics.js +181 -1
- package/dist/stair/plan-entry.d.ts +31 -0
- package/dist/stair/plan-entry.d.ts.map +1 -0
- package/dist/stair/plan-entry.js +325 -0
- package/dist/stair/post-and-rail-guard.d.ts +31 -0
- package/dist/stair/post-and-rail-guard.d.ts.map +1 -0
- package/dist/stair/post-and-rail-guard.js +63 -0
- package/dist/stair/railing-controls.d.ts +9 -0
- package/dist/stair/railing-controls.d.ts.map +1 -0
- package/dist/stair/railing-controls.js +49 -0
- package/dist/stair/renderer.d.ts.map +1 -1
- package/dist/stair/renderer.js +259 -259
- package/dist/stair/use-stair-render-data.d.ts +317 -0
- package/dist/stair/use-stair-render-data.d.ts.map +1 -0
- package/dist/stair/use-stair-render-data.js +73 -0
- package/dist/stair-segment/definition.d.ts.map +1 -1
- package/dist/stair-segment/definition.js +52 -10
- package/dist/stair-segment/panel.d.ts.map +1 -1
- package/dist/stair-segment/panel.js +36 -42
- package/dist/stair-segment/parametrics.d.ts +1 -1
- package/dist/stair-segment/parametrics.d.ts.map +1 -1
- package/dist/stair-segment/parametrics.js +94 -1
- package/dist/stair-segment/renderer.d.ts.map +1 -1
- package/dist/stair-segment/renderer.js +16 -28
- package/dist/turbine-vent/definition.d.ts.map +1 -1
- package/dist/turbine-vent/definition.js +3 -5
- package/dist/turbine-vent/paint.d.ts.map +1 -1
- package/dist/turbine-vent/paint.js +2 -5
- package/dist/turbine-vent/panel.d.ts.map +1 -1
- package/dist/turbine-vent/panel.js +5 -23
- package/dist/unit/unit-panel.d.ts.map +1 -1
- package/dist/unit/unit-panel.js +6 -1
- package/dist/wall/actions.d.ts +3 -0
- package/dist/wall/actions.d.ts.map +1 -0
- package/dist/wall/actions.js +61 -0
- package/dist/wall/construction-dimensions.js +8 -5
- package/dist/wall/contextual-dimensions.js +4 -4
- package/dist/wall/curtain-opening-frame.d.ts +14 -0
- package/dist/wall/curtain-opening-frame.d.ts.map +1 -0
- package/dist/wall/curtain-opening-frame.js +111 -0
- package/dist/wall/curtain-panel-highlight.d.ts +3 -0
- package/dist/wall/curtain-panel-highlight.d.ts.map +1 -0
- package/dist/wall/curtain-panel-highlight.js +113 -0
- package/dist/wall/curtain-wall-adapter.d.ts +3 -0
- package/dist/wall/curtain-wall-adapter.d.ts.map +1 -0
- package/dist/wall/curtain-wall-adapter.js +55 -0
- package/dist/wall/curtain-wall-floorplan.d.ts +3 -0
- package/dist/wall/curtain-wall-floorplan.d.ts.map +1 -0
- package/dist/wall/curtain-wall-floorplan.js +91 -0
- package/dist/wall/curtain-wall-geometry.d.ts +4 -0
- package/dist/wall/curtain-wall-geometry.d.ts.map +1 -0
- package/dist/wall/curtain-wall-geometry.js +226 -0
- package/dist/wall/curtain-wall-layout.d.ts +16 -0
- package/dist/wall/curtain-wall-layout.d.ts.map +1 -0
- package/dist/wall/curtain-wall-layout.js +176 -0
- package/dist/wall/curtain-wall-materials.d.ts +5 -0
- package/dist/wall/curtain-wall-materials.d.ts.map +1 -0
- package/dist/wall/curtain-wall-materials.js +55 -0
- package/dist/wall/curtain-wall-panel.d.ts +14 -0
- package/dist/wall/curtain-wall-panel.d.ts.map +1 -0
- package/dist/wall/curtain-wall-panel.js +167 -0
- package/dist/wall/curtain-wall-piece-geometry.d.ts +5 -0
- package/dist/wall/curtain-wall-piece-geometry.d.ts.map +1 -0
- package/dist/wall/curtain-wall-piece-geometry.js +220 -0
- package/dist/wall/curtain-wall-shadow.d.ts +4 -0
- package/dist/wall/curtain-wall-shadow.d.ts.map +1 -0
- package/dist/wall/curtain-wall-shadow.js +15 -0
- package/dist/wall/curve-tool.d.ts.map +1 -1
- package/dist/wall/curve-tool.js +4 -0
- package/dist/wall/definition.d.ts +0 -15
- package/dist/wall/definition.d.ts.map +1 -1
- package/dist/wall/definition.js +92 -7
- package/dist/wall/floorplan-move.d.ts +1 -1
- package/dist/wall/floorplan-move.d.ts.map +1 -1
- package/dist/wall/floorplan-move.js +20 -83
- package/dist/wall/floorplan-tool.d.ts +4 -0
- package/dist/wall/floorplan-tool.d.ts.map +1 -0
- package/dist/wall/floorplan-tool.js +106 -0
- package/dist/wall/floorplan.d.ts +3 -1
- package/dist/wall/floorplan.d.ts.map +1 -1
- package/dist/wall/floorplan.js +189 -22
- package/dist/wall/length-patch.d.ts +3 -0
- package/dist/wall/length-patch.d.ts.map +1 -0
- package/dist/wall/length-patch.js +14 -0
- package/dist/wall/measurement.d.ts.map +1 -1
- package/dist/wall/measurement.js +5 -5
- package/dist/wall/move-endpoint-tool.d.ts.map +1 -1
- package/dist/wall/move-endpoint-tool.js +20 -7
- package/dist/wall/move-shared.d.ts.map +1 -1
- package/dist/wall/move-shared.js +11 -7
- package/dist/wall/move-tool.d.ts.map +1 -1
- package/dist/wall/move-tool.js +140 -148
- package/dist/wall/paint.d.ts +26 -15
- package/dist/wall/paint.d.ts.map +1 -1
- package/dist/wall/paint.js +339 -115
- package/dist/wall/panel-model.d.ts +22 -0
- package/dist/wall/panel-model.d.ts.map +1 -0
- package/dist/wall/panel-model.js +175 -0
- package/dist/wall/panel.d.ts.map +1 -1
- package/dist/wall/panel.js +233 -61
- package/dist/wall/parametrics.d.ts.map +1 -1
- package/dist/wall/parametrics.js +3 -0
- package/dist/wall/property-preview.d.ts +7 -0
- package/dist/wall/property-preview.d.ts.map +1 -0
- package/dist/wall/property-preview.js +31 -0
- package/dist/wall/rectangle-command.d.ts +248 -0
- package/dist/wall/rectangle-command.d.ts.map +1 -0
- package/dist/wall/rectangle-command.js +22 -0
- package/dist/wall/rectangle-tool.d.ts +2 -0
- package/dist/wall/rectangle-tool.d.ts.map +1 -0
- package/dist/wall/rectangle-tool.js +165 -0
- package/dist/wall/renderer.d.ts.map +1 -1
- package/dist/wall/renderer.js +9 -4
- package/dist/wall/split-floorplan-layer.d.ts +4 -0
- package/dist/wall/split-floorplan-layer.d.ts.map +1 -0
- package/dist/wall/split-floorplan-layer.js +71 -0
- package/dist/wall/split-pointer.d.ts +3 -0
- package/dist/wall/split-pointer.d.ts.map +1 -0
- package/dist/wall/split-pointer.js +95 -0
- package/dist/wall/split-preview.d.ts +55 -0
- package/dist/wall/split-preview.d.ts.map +1 -0
- package/dist/wall/split-preview.js +106 -0
- package/dist/wall/split-session.d.ts +16 -0
- package/dist/wall/split-session.d.ts.map +1 -0
- package/dist/wall/split-session.js +144 -0
- package/dist/wall/split-store.d.ts +16 -0
- package/dist/wall/split-store.d.ts.map +1 -0
- package/dist/wall/split-store.js +6 -0
- package/dist/wall/split-tool.d.ts +10 -0
- package/dist/wall/split-tool.d.ts.map +1 -0
- package/dist/wall/split-tool.js +95 -0
- package/dist/wall/system.d.ts.map +1 -1
- package/dist/wall/system.js +39 -5
- package/dist/wall/tool.d.ts.map +1 -1
- package/dist/wall/tool.js +114 -50
- package/dist/wall/treatment-level-data.d.ts +3 -2
- package/dist/wall/treatment-level-data.d.ts.map +1 -1
- package/dist/wall/treatment-level-data.js +17 -13
- package/dist/wall/treatments.d.ts +10 -10
- package/dist/wall/treatments.d.ts.map +1 -1
- package/dist/wall/treatments.js +67 -54
- package/dist/wall/wall-batch-system.d.ts +7 -0
- package/dist/wall/wall-batch-system.d.ts.map +1 -1
- package/dist/wall/wall-batch-system.js +38 -3
- package/dist/wall/wall-batch.d.ts +6 -0
- package/dist/wall/wall-batch.d.ts.map +1 -1
- package/dist/wall/wall-batch.js +7 -1
- package/dist/window/definition.d.ts.map +1 -1
- package/dist/window/definition.js +60 -5
- package/dist/window/floorplan-affordances.d.ts.map +1 -1
- package/dist/window/floorplan-affordances.js +8 -10
- package/dist/window/floorplan-move.d.ts.map +1 -1
- package/dist/window/floorplan-move.js +3 -1
- package/dist/window/floorplan.d.ts.map +1 -1
- package/dist/window/floorplan.js +145 -60
- package/dist/window/mechanism.d.ts +4 -0
- package/dist/window/mechanism.d.ts.map +1 -0
- package/dist/window/mechanism.js +20 -0
- package/dist/window/move-tool.d.ts.map +1 -1
- package/dist/window/move-tool.js +83 -54
- package/dist/window/paint.d.ts.map +1 -1
- package/dist/window/paint.js +3 -0
- package/dist/window/panel.d.ts.map +1 -1
- package/dist/window/panel.js +50 -144
- package/dist/window/placement.d.ts +23 -0
- package/dist/window/placement.d.ts.map +1 -0
- package/dist/window/placement.js +66 -0
- package/dist/window/preview.d.ts.map +1 -1
- package/dist/window/preview.js +2 -0
- package/dist/window/renderer.d.ts.map +1 -1
- package/dist/window/renderer.js +3 -2
- package/dist/window/tool.d.ts.map +1 -1
- package/dist/window/tool.js +130 -26
- package/dist/window/window-math.d.ts +6 -14
- package/dist/window/window-math.d.ts.map +1 -1
- package/dist/window/window-math.js +13 -22
- package/dist/zone/contextual-dimensions.d.ts.map +1 -1
- package/dist/zone/contextual-dimensions.js +6 -28
- package/dist/zone/definition.d.ts.map +1 -1
- package/dist/zone/definition.js +4 -3
- package/dist/zone/floorplan-affordances.d.ts +200 -0
- package/dist/zone/floorplan-affordances.d.ts.map +1 -1
- package/dist/zone/floorplan.d.ts +1 -1
- package/dist/zone/floorplan.d.ts.map +1 -1
- package/dist/zone/floorplan.js +93 -53
- package/dist/zone/quantities-panel.d.ts.map +1 -1
- package/dist/zone/quantities-panel.js +6 -33
- package/dist/zone/quick-measurement.d.ts +2 -2
- package/dist/zone/quick-measurement.d.ts.map +1 -1
- package/dist/zone/quick-measurement.js +6 -5
- package/dist/zone/renderer.d.ts +1 -1
- package/dist/zone/renderer.d.ts.map +1 -1
- package/dist/zone/renderer.js +58 -146
- package/dist/zone/room-clear-dimensions.js +3 -3
- package/dist/zone/room-documentation.d.ts.map +1 -1
- package/dist/zone/room-documentation.js +2 -6
- package/package.json +12 -12
- package/dist/block/slots.d.ts +0 -4
- package/dist/block/slots.d.ts.map +0 -1
- package/dist/block/slots.js +0 -17
- package/dist/cabinet/slots.d.ts +0 -4
- package/dist/cabinet/slots.d.ts.map +0 -1
- package/dist/cabinet/slots.js +0 -24
- package/dist/ceiling/slots.d.ts +0 -6
- package/dist/ceiling/slots.d.ts.map +0 -1
- package/dist/ceiling/slots.js +0 -7
- package/dist/column/slots.d.ts +0 -9
- package/dist/column/slots.d.ts.map +0 -1
- package/dist/column/slots.js +0 -19
- package/dist/door/slots.d.ts +0 -9
- package/dist/door/slots.d.ts.map +0 -1
- package/dist/door/slots.js +0 -20
- package/dist/elevator/slots.d.ts +0 -8
- package/dist/elevator/slots.d.ts.map +0 -1
- package/dist/elevator/slots.js +0 -17
- package/dist/fence/slots.d.ts +0 -10
- package/dist/fence/slots.d.ts.map +0 -1
- package/dist/fence/slots.js +0 -23
- package/dist/lean-to-extension/slots.d.ts +0 -5
- package/dist/lean-to-extension/slots.d.ts.map +0 -1
- package/dist/lean-to-extension/slots.js +0 -15
- package/dist/shared/opening-documentation-fields.d.ts +0 -16
- package/dist/shared/opening-documentation-fields.d.ts.map +0 -1
- package/dist/shared/opening-documentation-fields.js +0 -54
- package/dist/shelf/slots.d.ts +0 -9
- package/dist/shelf/slots.d.ts.map +0 -1
- package/dist/shelf/slots.js +0 -30
- package/dist/slab/slots.d.ts +0 -10
- package/dist/slab/slots.d.ts.map +0 -1
- package/dist/slab/slots.js +0 -20
- package/dist/stair/floor-stack.d.ts +0 -10
- package/dist/stair/floor-stack.d.ts.map +0 -1
- package/dist/stair/floor-stack.js +0 -115
- package/dist/stair/slots.d.ts +0 -7
- package/dist/stair/slots.d.ts.map +0 -1
- package/dist/stair/slots.js +0 -13
- package/dist/wall/slots.d.ts +0 -10
- package/dist/wall/slots.d.ts.map +0 -1
- package/dist/wall/slots.js +0 -84
- package/dist/window/slots.d.ts +0 -5
- package/dist/window/slots.d.ts.map +0 -1
- package/dist/window/slots.js +0 -11
package/dist/wall/tool.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { calculateLevelMiters, collectAlignmentAnchors, DEFAULT_LEVEL_HEIGHT, emitter, GROUND_SUPPORT_ID, getWallMiterBoundaryPoints, resolveAlignment, resolveBuildingForLevel, sceneRegistry, useScene, wallClosesRoom, } from '@pascal-app/core';
|
|
3
|
-
import { CursorSphere, chainEndJoinsExistingWall, clearPlacementSurface, createWallOnCurrentLevel, EDITOR_LAYER, formatAngleRadians, formatLinearMeasurement, getAngleArcToSegmentReference, getAngleToSegmentReference, getSegmentAngleReferenceAtPoint, isAlignmentGuideActive, isAngleSnapActive, isMagneticSnapActive, markToolCancelConsumed, publishHorizontalConstructionPlane, publishPlacementSurface, resampleTerrainConstructionPlane, resolveEventConstructionPlane, resolvePointerSupportSurface, snapWallDraftPointDetailed, triggerSFX, useAlignmentGuides, useEditor, useFloorplanDraftPreview, useSegmentDraftChain, useWallSnapIndicator, WALL_CONNECT_SNAP_RADIUS, WALL_JOIN_SNAP_RADIUS, } from '@pascal-app/editor';
|
|
3
|
+
import { addWallPolygonDraftCorner, CursorSphere, chainEndJoinsExistingWall, clearPlacementSurface, commitWallPolygonDraft, createWallOnCurrentLevel, DraftMeasurementLabel, discardWallPolygonDraft, EDITOR_LAYER, formatAngleRadians, formatLinearMeasurement, getAngleArcToSegmentReference, getAngleToSegmentReference, getSegmentAngleReferenceAtPoint, getWallDrawVariant, isAlignmentGuideActive, isAngleSnapActive, isMagneticSnapActive, markToolCancelConsumed, publishHorizontalConstructionPlane, publishPlacementSurface, resampleTerrainConstructionPlane, resolveEventConstructionPlane, resolvePointerSupportSurface, snapWallDraftPointDetailed, startWallPolygonDraft, triggerSFX, useAlignmentGuides, useEditor, useFloorplanDraftPreview, useSegmentDraftChain, useWallDrawVariant, useWallSnapIndicator, visibleScene, WALL_CONNECT_SNAP_RADIUS, WALL_JOIN_SNAP_RADIUS, wallPolygonDraftWalls, } from '@pascal-app/editor';
|
|
4
4
|
import { getSceneTheme, useViewer } from '@pascal-app/viewer';
|
|
5
5
|
import { useThree } from '@react-three/fiber';
|
|
6
6
|
import { useEffect, useRef, useState } from 'react';
|
|
7
7
|
import { DoubleSide, Vector3 } from 'three';
|
|
8
|
-
import { DraftAngleArc, DraftAxisGuides,
|
|
8
|
+
import { DraftAngleArc, DraftAxisGuides, getNearestAxisAngleLabel, } from '../shared/draft-axis-guides';
|
|
9
|
+
import RectangleWallTool from './rectangle-tool';
|
|
9
10
|
/**
|
|
10
11
|
* Phase 5 Stage D — wall placement tool (kind-owned).
|
|
11
12
|
*
|
|
@@ -289,7 +290,7 @@ function getBelowLevelWalls() {
|
|
|
289
290
|
.sort((a, b) => b.level - a.level)[0];
|
|
290
291
|
return getLevelWalls(belowLevel?.id ?? null, nodes);
|
|
291
292
|
}
|
|
292
|
-
|
|
293
|
+
const LineWallTool = () => {
|
|
293
294
|
const unit = useViewer((state) => state.unit);
|
|
294
295
|
const metricNotation = useViewer((state) => state.metricNotation);
|
|
295
296
|
const isDark = useViewer((state) => getSceneTheme(state.sceneTheme).appearance === 'dark');
|
|
@@ -328,12 +329,11 @@ export const WallTool = () => {
|
|
|
328
329
|
const flatConstructionBase = useRef(false);
|
|
329
330
|
const buildingState = useRef(0);
|
|
330
331
|
const [draftMeasurement, setDraftMeasurement] = useState(null);
|
|
332
|
+
// Base Y of an open Polygon room's ghost sides (its construction plane).
|
|
333
|
+
const [polygonGhostY, setPolygonGhostY] = useState(0);
|
|
331
334
|
const [axisGuide, setAxisGuide] = useState(null);
|
|
332
335
|
const measurementColor = isDark ? '#ffffff' : '#111111';
|
|
333
336
|
const measurementShadowColor = isDark ? '#111111' : '#ffffff';
|
|
334
|
-
// Clear preset-seeded defaults on deactivation so a later manual wall draw
|
|
335
|
-
// isn't built with a stale preset's parameters. Unmount-only.
|
|
336
|
-
useEffect(() => () => useEditor.getState().setToolDefaults('wall', null), []);
|
|
337
337
|
useEffect(() => {
|
|
338
338
|
let gridPosition = [0, 0];
|
|
339
339
|
let previousWallEnd = null;
|
|
@@ -382,6 +382,7 @@ export const WallTool = () => {
|
|
|
382
382
|
const pointedSurfaceFor = (event) => event.nativeEvent?.target instanceof HTMLCanvasElement
|
|
383
383
|
? resolvePointerSupportSurface(cameraRef.current, event.position, {
|
|
384
384
|
includeNodeTopSurfaces: true,
|
|
385
|
+
pointerRay: event.nativeEvent.ray,
|
|
385
386
|
})
|
|
386
387
|
: null;
|
|
387
388
|
const snappedWallConstructionPlane = (targetWallIds, walls) => {
|
|
@@ -430,7 +431,10 @@ export const WallTool = () => {
|
|
|
430
431
|
}
|
|
431
432
|
return resolved;
|
|
432
433
|
};
|
|
434
|
+
// Stopping without committing drops an open Polygon room — its corners
|
|
435
|
+
// were never written. Completing paths commit before they stop.
|
|
433
436
|
const stopDrafting = () => {
|
|
437
|
+
discardWallPolygonDraft();
|
|
434
438
|
buildingState.current = 0;
|
|
435
439
|
constructionPlane.current = null;
|
|
436
440
|
flatConstructionBase.current = false;
|
|
@@ -449,8 +453,12 @@ export const WallTool = () => {
|
|
|
449
453
|
useSegmentDraftChain.getState().clear('wall');
|
|
450
454
|
clearPlacementSurface();
|
|
451
455
|
};
|
|
456
|
+
// In 2D-only view the plan owns wall drafting; this tool stays mounted
|
|
457
|
+
// behind the hidden canvas and still hears the plan's grid events, so it
|
|
458
|
+
// must not also draft (it would add every corner twice).
|
|
459
|
+
const planOwnsInput = () => visibleScene(useEditor.getState()) === '2d';
|
|
452
460
|
const onGridMove = (event) => {
|
|
453
|
-
if (!(cursorRef.current && wallPreviewRef.current))
|
|
461
|
+
if (!(cursorRef.current && wallPreviewRef.current) || planOwnsInput())
|
|
454
462
|
return;
|
|
455
463
|
// Ride the grid event plane on the pointed surface: aiming at an
|
|
456
464
|
// elevated deck lifts the plane to the deck top, so the draft's XZ
|
|
@@ -468,7 +476,7 @@ export const WallTool = () => {
|
|
|
468
476
|
// Add walls on the floor below as extra snap references so the new wall
|
|
469
477
|
// can align with the level beneath it. Kept separate from `walls` so the
|
|
470
478
|
// measurement HUD only reports against the active level.
|
|
471
|
-
const snapWalls = [...walls, ...getBelowLevelWalls()];
|
|
479
|
+
const snapWalls = [...walls, ...getBelowLevelWalls(), ...wallPolygonDraftWalls()];
|
|
472
480
|
const localPoint = pointed?.localPoint
|
|
473
481
|
? [pointed.localPoint[0], pointed.localPoint[2]]
|
|
474
482
|
: [event.localPosition[0], event.localPosition[2]];
|
|
@@ -521,14 +529,16 @@ export const WallTool = () => {
|
|
|
521
529
|
}
|
|
522
530
|
};
|
|
523
531
|
const onGridClick = (event) => {
|
|
524
|
-
if (!wallPreviewRef.current)
|
|
532
|
+
if (!wallPreviewRef.current || planOwnsInput())
|
|
525
533
|
return;
|
|
526
534
|
if (buildingState.current === 1 && event.nativeEvent.detail >= 2) {
|
|
535
|
+
// A double-click finishes the chain and keeps an open Polygon room.
|
|
536
|
+
commitWallPolygonDraft();
|
|
527
537
|
stopDrafting();
|
|
528
538
|
return;
|
|
529
539
|
}
|
|
530
540
|
const walls = getCurrentLevelWalls();
|
|
531
|
-
const snapWalls = [...walls, ...getBelowLevelWalls()];
|
|
541
|
+
const snapWalls = [...walls, ...getBelowLevelWalls(), ...wallPolygonDraftWalls()];
|
|
532
542
|
const pointed = buildingState.current === 0 ? pointedSurfaceFor(event) : null;
|
|
533
543
|
const localClick = pointed?.localPoint
|
|
534
544
|
? [pointed.localPoint[0], pointed.localPoint[2]]
|
|
@@ -564,6 +574,18 @@ export const WallTool = () => {
|
|
|
564
574
|
angleLabel: null,
|
|
565
575
|
});
|
|
566
576
|
triggerSFX('sfx:structure-build-start');
|
|
577
|
+
const levelId = useViewer.getState().selection.levelId;
|
|
578
|
+
if (getWallDrawVariant() === 'polygon' && levelId) {
|
|
579
|
+
startWallPolygonDraft(levelId, snappedStart, {
|
|
580
|
+
supportCap: plane.elevation ?? null,
|
|
581
|
+
preferredSupportSlabId: plane.supportSlabId ?? null,
|
|
582
|
+
constructionElevation: plane.elevation ?? null,
|
|
583
|
+
constructionHeight: previewHeightRef.current,
|
|
584
|
+
constructionSourceNodeId: plane.sourceNodeId ?? null,
|
|
585
|
+
flatConstructionBase: flatConstructionBase.current,
|
|
586
|
+
});
|
|
587
|
+
setPolygonGhostY(plane.localY);
|
|
588
|
+
}
|
|
567
589
|
// Visibility is owned by `updateWallPreview`. Leave the
|
|
568
590
|
// unit box hidden until the first pointer move scales and
|
|
569
591
|
// positions it for the active segment.
|
|
@@ -586,47 +608,63 @@ export const WallTool = () => {
|
|
|
586
608
|
// any other chain re-resolves the aimed surface per commit so a later
|
|
587
609
|
// segment can still elect the slab it visibly crosses instead of
|
|
588
610
|
// being capped at the first click's elevation.
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
chainWallIds.current.push(createdWall.id);
|
|
603
|
-
// The new segment is now a real node — make it an alignment target
|
|
604
|
-
// for the next segment, and drop the just-shown guide.
|
|
605
|
-
refreshAlignmentCandidates();
|
|
606
|
-
useAlignmentGuides.getState().clear();
|
|
607
|
-
useWallSnapIndicator.getState().clear();
|
|
608
|
-
if (useEditor.getState().getContinuation('wall') === 'single') {
|
|
609
|
-
stopDrafting();
|
|
610
|
-
return;
|
|
611
|
+
let nextStart;
|
|
612
|
+
if (getWallDrawVariant() === 'polygon') {
|
|
613
|
+
// A Polygon room writes nothing until it completes: the corner joins
|
|
614
|
+
// the draft, and closing / sealing / teeing commits every wall at once.
|
|
615
|
+
const outcome = addWallPolygonDraftCorner(snappedEnd);
|
|
616
|
+
useAlignmentGuides.getState().clear();
|
|
617
|
+
useWallSnapIndicator.getState().clear();
|
|
618
|
+
if (outcome !== 'open') {
|
|
619
|
+
commitWallPolygonDraft();
|
|
620
|
+
stopDrafting();
|
|
621
|
+
return;
|
|
622
|
+
}
|
|
623
|
+
nextStart = snappedEnd;
|
|
611
624
|
}
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
625
|
+
else {
|
|
626
|
+
const draftPlane = constructionPlane.current;
|
|
627
|
+
const commitPointed = draftPlane?.supportSlabId === GROUND_SUPPORT_ID ? null : pointedSurfaceFor(event);
|
|
628
|
+
// Both start and end are building-local ✓
|
|
629
|
+
const createdWall = createWallOnCurrentLevel([startingPoint.current.x, startingPoint.current.z], snappedEnd, {
|
|
630
|
+
supportCap: commitPointed ? commitPointed.elevation : (draftPlane?.elevation ?? null),
|
|
631
|
+
preferredSupportSlabId: draftPlane?.supportSlabId ?? null,
|
|
632
|
+
constructionElevation: draftPlane?.elevation ?? null,
|
|
633
|
+
constructionHeight: previewHeightRef.current,
|
|
634
|
+
constructionSourceNodeId: constructionPlane.current?.sourceNodeId ?? null,
|
|
635
|
+
flatConstructionBase: flatConstructionBase.current,
|
|
636
|
+
});
|
|
637
|
+
if (!createdWall)
|
|
638
|
+
return;
|
|
639
|
+
chainWallIds.current.push(createdWall.id);
|
|
640
|
+
// The new segment is now a real node — make it an alignment target
|
|
641
|
+
// for the next segment, and drop the just-shown guide.
|
|
642
|
+
refreshAlignmentCandidates();
|
|
643
|
+
useAlignmentGuides.getState().clear();
|
|
644
|
+
useWallSnapIndicator.getState().clear();
|
|
645
|
+
if (useEditor.getState().getContinuation('wall') === 'single') {
|
|
646
|
+
stopDrafting();
|
|
647
|
+
return;
|
|
648
|
+
}
|
|
649
|
+
const closedToChainStart = chainFirstVertex.current &&
|
|
650
|
+
isWithinWallJoinSnapRadius(createdWall.end, chainFirstVertex.current);
|
|
651
|
+
// Auto-close also fires when the segment seals a room against the
|
|
652
|
+
// existing wall network (e.g. a bay closed onto the middle of another
|
|
653
|
+
// wall), not just when the chain loops back to its own start. Shares the
|
|
654
|
+
// room graph with auto slab/ceiling detection so the two never disagree.
|
|
655
|
+
// A resolved end that tees into wall geometry outside the chain also
|
|
656
|
+
// terminates even without an enclosed room — nobody continues drawing
|
|
657
|
+
// from a T-junction into an existing wall; a dead end in free space
|
|
658
|
+
// keeps the chain going.
|
|
659
|
+
const levelWalls = getCurrentLevelWalls();
|
|
660
|
+
if (closedToChainStart ||
|
|
661
|
+
chainEndJoinsExistingWall(createdWall.end, levelWalls, chainWallIds.current) ||
|
|
662
|
+
wallClosesRoom(levelWalls, createdWall)) {
|
|
663
|
+
stopDrafting();
|
|
664
|
+
return;
|
|
665
|
+
}
|
|
666
|
+
nextStart = createdWall.end;
|
|
628
667
|
}
|
|
629
|
-
const nextStart = createdWall.end;
|
|
630
668
|
// Publish the resolved chain start so the 2D floor-plan draft
|
|
631
669
|
// chains its next segment from the same point (its own snap
|
|
632
670
|
// pipeline can resolve a slightly different endpoint).
|
|
@@ -665,6 +703,8 @@ export const WallTool = () => {
|
|
|
665
703
|
emitter.on('grid:click', onGridClick);
|
|
666
704
|
emitter.on('tool:cancel', onCancel);
|
|
667
705
|
return () => {
|
|
706
|
+
// Leaving the tool mid-polygon abandons it (nothing was written).
|
|
707
|
+
discardWallPolygonDraft();
|
|
668
708
|
emitter.off('grid:move', onGridMove);
|
|
669
709
|
emitter.off('grid:click', onGridClick);
|
|
670
710
|
emitter.off('tool:cancel', onCancel);
|
|
@@ -677,6 +717,30 @@ export const WallTool = () => {
|
|
|
677
717
|
draftPreview.setWallDraftEnd(null);
|
|
678
718
|
};
|
|
679
719
|
}, [unit, metricNotation]);
|
|
680
|
-
return (_jsxs("group", { children: [_jsx(DraftAxisGuides, { guide: axisGuide, labelColor: measurementColor, labelShadowColor: measurementShadowColor }), _jsx(CursorSphere, { height: previewHeight, ref: cursorRef }), _jsxs("mesh", { layers: EDITOR_LAYER, ref: wallPreviewRef, renderOrder: 1, visible: false, children: [_jsx("boxGeometry", {}), _jsx("meshBasicMaterial", { color: "#818cf8", depthTest: false, depthWrite: false, opacity: 0.5, side: DoubleSide, transparent: true })] }), draftMeasurement && (_jsxs(_Fragment, { children: [_jsx(DraftMeasurementLabel, { color: measurementColor, label: draftMeasurement.lengthLabel, position: draftMeasurement.lengthPosition, shadowColor: measurementShadowColor }), draftMeasurement.angleLabels.map((angleLabel) => (_jsxs("group", { children: [_jsx(DraftAngleArc, { arc: angleLabel.arc, color: measurementColor }), _jsx(DraftMeasurementLabel, { color: measurementColor, label: angleLabel.label, position: angleLabel.position, shadowColor: measurementShadowColor })] }, angleLabel.id)))] }))] }));
|
|
720
|
+
return (_jsxs("group", { children: [_jsx(DraftAxisGuides, { guide: axisGuide, labelColor: measurementColor, labelShadowColor: measurementShadowColor }), _jsx(CursorSphere, { height: previewHeight, ref: cursorRef }), _jsx(PolygonDraftGhosts, { height: previewHeight, thickness: previewThickness, y: polygonGhostY }), _jsxs("mesh", { layers: EDITOR_LAYER, ref: wallPreviewRef, renderOrder: 1, visible: false, children: [_jsx("boxGeometry", {}), _jsx("meshBasicMaterial", { color: "#818cf8", depthTest: false, depthWrite: false, opacity: 0.5, side: DoubleSide, transparent: true })] }), draftMeasurement && (_jsxs(_Fragment, { children: [_jsx(DraftMeasurementLabel, { color: measurementColor, label: draftMeasurement.lengthLabel, position: draftMeasurement.lengthPosition, shadowColor: measurementShadowColor }), draftMeasurement.angleLabels.map((angleLabel) => (_jsxs("group", { children: [_jsx(DraftAngleArc, { arc: angleLabel.arc, color: measurementColor }), _jsx(DraftMeasurementLabel, { color: measurementColor, label: angleLabel.label, position: angleLabel.position, shadowColor: measurementShadowColor })] }, angleLabel.id)))] }))] }));
|
|
721
|
+
};
|
|
722
|
+
/**
|
|
723
|
+
* The placed sides of an open Polygon room, drawn like the live segment's
|
|
724
|
+
* preview. They are draft state (`wallPolygonDraftPoints`), not scene walls.
|
|
725
|
+
*/
|
|
726
|
+
function PolygonDraftGhosts({ height, thickness, y, }) {
|
|
727
|
+
const corners = useFloorplanDraftPreview((state) => state.wallPolygonDraftPoints);
|
|
728
|
+
return (_jsx(_Fragment, { children: corners.slice(1).map((end, index) => {
|
|
729
|
+
const start = corners[index];
|
|
730
|
+
const dx = end[0] - start[0];
|
|
731
|
+
const dz = end[1] - start[1];
|
|
732
|
+
const length = Math.hypot(dx, dz);
|
|
733
|
+
if (length < 0.01)
|
|
734
|
+
return null;
|
|
735
|
+
return (_jsxs("mesh", { layers: EDITOR_LAYER, position: [(start[0] + end[0]) / 2, y + height / 2, (start[1] + end[1]) / 2], renderOrder: 1, rotation: [0, -Math.atan2(dz, dx), 0], scale: [length, height, thickness], children: [_jsx("boxGeometry", {}), _jsx("meshBasicMaterial", { color: "#818cf8", depthTest: false, depthWrite: false, opacity: 0.5, side: DoubleSide, transparent: true })] }, `${index}:${start[0]},${start[1]}`));
|
|
736
|
+
}) }));
|
|
737
|
+
}
|
|
738
|
+
export const WallTool = () => {
|
|
739
|
+
// Clear preset-seeded defaults on deactivation so a later manual wall draw
|
|
740
|
+
// isn't built with a stale preset's parameters. Unmount-only.
|
|
741
|
+
useEffect(() => () => useEditor.getState().setToolDefaults('wall', null), []);
|
|
742
|
+
// The drawing variant is picked in the Build panel's Rooms group.
|
|
743
|
+
const variant = useWallDrawVariant();
|
|
744
|
+
return variant === 'rectangle' ? _jsx(RectangleWallTool, {}) : _jsx(LineWallTool, {});
|
|
681
745
|
};
|
|
682
746
|
export default WallTool;
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import { type WallMiterData, type WallNode } from '@pascal-app/core';
|
|
1
|
+
import { type WallMiterData, type WallNode, type WallSlabSupport } from '@pascal-app/core';
|
|
2
2
|
export declare function treatmentProudKeys(proudOffsets: readonly number[]): number[];
|
|
3
3
|
export declare function sameTreatmentWalls(a: readonly WallNode[], b: readonly WallNode[]): boolean;
|
|
4
4
|
export type WallTreatmentLevelData = {
|
|
5
5
|
walls: readonly WallNode[];
|
|
6
|
+
supports?: ReadonlyMap<string, WallSlabSupport>;
|
|
6
7
|
miterDataByProud: ReadonlyMap<number, WallMiterData>;
|
|
7
8
|
};
|
|
8
9
|
export declare function clearWallTreatmentMiterCache(levelId?: string): void;
|
|
9
|
-
export declare function buildWallTreatmentLevelData(levelId: string, walls: readonly WallNode[], proudOffsets: readonly number[]): WallTreatmentLevelData;
|
|
10
|
+
export declare function buildWallTreatmentLevelData(levelId: string, walls: readonly WallNode[], proudOffsets: readonly number[], supports?: ReadonlyMap<string, WallSlabSupport>): WallTreatmentLevelData;
|
|
10
11
|
export declare function treatmentMiterDataForProud(levelData: WallTreatmentLevelData, proud: number): WallMiterData | undefined;
|
|
11
12
|
type WallTreatmentLevelDataState = {
|
|
12
13
|
byLevelId: ReadonlyMap<string, WallTreatmentLevelData>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"treatment-level-data.d.ts","sourceRoot":"","sources":["../../src/wall/treatment-level-data.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"treatment-level-data.d.ts","sourceRoot":"","sources":["../../src/wall/treatment-level-data.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,eAAe,EACrB,MAAM,kBAAkB,CAAA;AAUzB,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAE5E;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,SAAS,QAAQ,EAAE,EAAE,CAAC,EAAE,SAAS,QAAQ,EAAE,GAAG,OAAO,CAE1F;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAA;IAC1B,QAAQ,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IAC/C,gBAAgB,EAAE,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;CACrD,CAAA;AAID,wBAAgB,4BAA4B,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAGnE;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,SAAS,QAAQ,EAAE,EAC1B,YAAY,EAAE,SAAS,MAAM,EAAE,EAC/B,QAAQ,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,GAC9C,sBAAsB,CAiBxB;AAED,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,sBAAsB,EACjC,KAAK,EAAE,MAAM,GACZ,aAAa,GAAG,SAAS,CAE3B;AAED,KAAK,2BAA2B,GAAG;IACjC,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAA;IACtD,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,sBAAsB,KAAK,IAAI,CAAA;IACrE,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CAC3C,CAAA;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,MAAM,EAAE,IASjF,OAAO,2BAA2B,KAAG,sBAAsB,GAAG,SAAS,CA+ChF;AAED,eAAO,MAAM,yBAAyB,0FAenC,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { calculateLevelMiters,
|
|
1
|
+
import { calculateLevelMiters, isCurvedWall, pointToKey, } from '@pascal-app/core';
|
|
2
2
|
import { create } from 'zustand';
|
|
3
3
|
import { shallow } from 'zustand/vanilla/shallow';
|
|
4
4
|
const PROUD_KEY_PRECISION = 1e6;
|
|
@@ -18,7 +18,7 @@ export function clearWallTreatmentMiterCache(levelId) {
|
|
|
18
18
|
else
|
|
19
19
|
levelMiterCache.delete(levelId);
|
|
20
20
|
}
|
|
21
|
-
export function buildWallTreatmentLevelData(levelId, walls, proudOffsets) {
|
|
21
|
+
export function buildWallTreatmentLevelData(levelId, walls, proudOffsets, supports) {
|
|
22
22
|
const cached = levelMiterCache.get(levelId);
|
|
23
23
|
const reusable = cached && sameTreatmentWalls(cached.walls, walls) ? cached : undefined;
|
|
24
24
|
const miterDataByProud = new Map();
|
|
@@ -28,15 +28,9 @@ export function buildWallTreatmentLevelData(levelId, walls, proudOffsets) {
|
|
|
28
28
|
miterDataByProud.set(proud, previous);
|
|
29
29
|
continue;
|
|
30
30
|
}
|
|
31
|
-
|
|
32
|
-
? [...walls]
|
|
33
|
-
: walls.map((wall) => ({
|
|
34
|
-
...wall,
|
|
35
|
-
thickness: getWallThickness(wall) + proud * 2,
|
|
36
|
-
}));
|
|
37
|
-
miterDataByProud.set(proud, calculateLevelMiters(adjustedWalls));
|
|
31
|
+
miterDataByProud.set(proud, calculateLevelMiters([...walls], proud));
|
|
38
32
|
}
|
|
39
|
-
const data = { walls, miterDataByProud };
|
|
33
|
+
const data = { walls, miterDataByProud, supports };
|
|
40
34
|
levelMiterCache.set(levelId, data);
|
|
41
35
|
return data;
|
|
42
36
|
}
|
|
@@ -59,9 +53,15 @@ export function createWallTreatmentSelector(node, proudOffsets) {
|
|
|
59
53
|
if (!level) {
|
|
60
54
|
previousSlice = undefined;
|
|
61
55
|
previousInputs = [];
|
|
62
|
-
return
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const support = level.supports?.get(node.id);
|
|
59
|
+
const inputs = [support?.elevation];
|
|
60
|
+
for (const face of ['a', 'b']) {
|
|
61
|
+
inputs.push(support?.faceDatum[face].length);
|
|
62
|
+
for (const segment of support?.faceDatum[face] ?? [])
|
|
63
|
+
inputs.push(segment.start, segment.end, segment.elevation, segment.endElevation);
|
|
63
64
|
}
|
|
64
|
-
const inputs = [];
|
|
65
65
|
for (const proud of prouds) {
|
|
66
66
|
const data = level.miterDataByProud.get(proud);
|
|
67
67
|
inputs.push(!!data);
|
|
@@ -87,7 +87,11 @@ export function createWallTreatmentSelector(node, proudOffsets) {
|
|
|
87
87
|
miterDataByProud.set(proud, { junctionData, junctions: new Map() });
|
|
88
88
|
}
|
|
89
89
|
previousInputs = inputs;
|
|
90
|
-
previousSlice = {
|
|
90
|
+
previousSlice = {
|
|
91
|
+
walls: [node],
|
|
92
|
+
miterDataByProud,
|
|
93
|
+
supports: support ? new Map([[node.id, support]]) : undefined,
|
|
94
|
+
};
|
|
91
95
|
return previousSlice;
|
|
92
96
|
};
|
|
93
97
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type SceneMaterial, type SceneMaterialId, type WallNode, type WallTrimConfig } from '@pascal-app/core';
|
|
1
|
+
import { type SceneMaterial, type SceneMaterialId, type WallFace, type WallNode, type WallTrimConfig, type WallTrimKind, type WallTrimSlotId } from '@pascal-app/core';
|
|
2
2
|
import { type RenderShading } from '@pascal-app/viewer';
|
|
3
3
|
import * as THREE from 'three';
|
|
4
4
|
import { type WallTreatmentLevelData } from './treatment-level-data';
|
|
@@ -8,20 +8,20 @@ type OpeningLike = {
|
|
|
8
8
|
height?: number;
|
|
9
9
|
position?: [number, number, number];
|
|
10
10
|
};
|
|
11
|
-
type TrimKind =
|
|
12
|
-
type WallSide =
|
|
11
|
+
type TrimKind = WallTrimKind;
|
|
12
|
+
type WallSide = WallFace;
|
|
13
13
|
type SceneMaterials = Record<SceneMaterialId, SceneMaterial>;
|
|
14
|
-
type WallTreatmentSlotId =
|
|
14
|
+
type WallTreatmentSlotId = WallTrimSlotId;
|
|
15
15
|
export declare function hasWallTreatments(node: WallNode): boolean;
|
|
16
16
|
export declare function wallTreatmentProudOffsets(node: WallNode): number[];
|
|
17
17
|
export declare function buildTrimGeometry(node: WallNode, side: WallSide, trim: WallTrimConfig, kind: TrimKind, childrenNodes: OpeningLike[], levelData: WallTreatmentLevelData): THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap> | null;
|
|
18
18
|
export declare function createWallExtraSlotMaterials(node: WallNode, shading: RenderShading, sceneMaterials: SceneMaterials): {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
19
|
+
aSkirting: THREE.Material<THREE.MaterialEventMap>;
|
|
20
|
+
bSkirting: THREE.Material<THREE.MaterialEventMap>;
|
|
21
|
+
aCrown: THREE.Material<THREE.MaterialEventMap>;
|
|
22
|
+
bCrown: THREE.Material<THREE.MaterialEventMap>;
|
|
23
|
+
aChairRail: THREE.Material<THREE.MaterialEventMap>;
|
|
24
|
+
bChairRail: THREE.Material<THREE.MaterialEventMap>;
|
|
25
25
|
};
|
|
26
26
|
export declare const WallTreatments: import("react").MemoExoticComponent<({ node, childrenNodes, levelData, materials, }: {
|
|
27
27
|
node: WallNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"treatments.d.ts","sourceRoot":"","sources":["../../src/wall/treatments.tsx"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"treatments.d.ts","sourceRoot":"","sources":["../../src/wall/treatments.tsx"],"names":[],"mappings":"AAEA,OAAO,EAOL,KAAK,aAAa,EAClB,KAAK,eAAe,EAOpB,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,YAAY,EAEjB,KAAK,cAAc,EAEpB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAGL,KAAK,aAAa,EAEnB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,OAAO,EAA8B,KAAK,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAMhG,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;CACpC,CAAA;AAED,KAAK,QAAQ,GAAG,YAAY,CAAA;AAC5B,KAAK,QAAQ,GAAG,QAAQ,CAAA;AACxB,KAAK,cAAc,GAAG,MAAM,CAAC,eAAe,EAAE,aAAa,CAAC,CAAA;AAE5D,KAAK,mBAAmB,GAAG,cAAc,CAAA;AAoMzC,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAMzD;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,EAAE,CAoBlE;AAwND,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,QAAQ,EACd,aAAa,EAAE,WAAW,EAAE,EAC5B,SAAS,EAAE,sBAAsB,2FAoGlC;AAkBD,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,aAAa,EACtB,cAAc,EAAE,cAAc;;;;;;;EAU/B;AAED,eAAO,MAAM,cAAc,uFAKxB;IACD,IAAI,EAAE,QAAQ,CAAA;IACd,aAAa,EAAE,WAAW,EAAE,CAAA;IAC5B,SAAS,EAAE,sBAAsB,CAAA;IACjC,SAAS,EAAE,MAAM,CAAC,mBAAmB,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAA;CACvD,iCA+DC,CAAA"}
|
package/dist/wall/treatments.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
-
import { getWallCurveFrameAt, getWallMiterBoundaryPoints,
|
|
3
|
+
import { getWallCurveFrameAt, getWallLocalFaceZ, getWallMiterBoundaryPoints, getWallTrimFaces, getWallTrimSlotId, isCurvedWall, spatialGridManager, useScene, WALL_CHAIR_RAIL_DEFAULT, WALL_CROWN_DEFAULT, WALL_SKIRTING_DEFAULT, WALL_SURFACE_SLOT_DEFAULTS, wallDoorStepRuns, } from '@pascal-app/core';
|
|
4
4
|
import { baseMaterial, createMaterialFromPresetRef, resolveMaterialRef, } from '@pascal-app/viewer';
|
|
5
5
|
import { memo, useEffect, useMemo } from 'react';
|
|
6
6
|
import * as THREE from 'three';
|
|
@@ -202,18 +202,9 @@ const TRIM_PROFILES = {
|
|
|
202
202
|
},
|
|
203
203
|
};
|
|
204
204
|
const TRIM_KIND_CONFIG = {
|
|
205
|
-
skirting: {
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
},
|
|
209
|
-
crown: {
|
|
210
|
-
defaultConfig: WALL_CROWN_DEFAULT,
|
|
211
|
-
slots: { interior: 'crownInterior', exterior: 'crownExterior' },
|
|
212
|
-
},
|
|
213
|
-
chairRail: {
|
|
214
|
-
defaultConfig: WALL_CHAIR_RAIL_DEFAULT,
|
|
215
|
-
slots: { interior: 'chairRailInterior', exterior: 'chairRailExterior' },
|
|
216
|
-
},
|
|
205
|
+
skirting: { defaultConfig: WALL_SKIRTING_DEFAULT },
|
|
206
|
+
crown: { defaultConfig: WALL_CROWN_DEFAULT },
|
|
207
|
+
chairRail: { defaultConfig: WALL_CHAIR_RAIL_DEFAULT },
|
|
217
208
|
};
|
|
218
209
|
function resolveTrimProfile(kind, trim) {
|
|
219
210
|
const defaultProfile = TRIM_KIND_CONFIG[kind].defaultConfig.profile;
|
|
@@ -247,19 +238,9 @@ export function wallTreatmentProudOffsets(node) {
|
|
|
247
238
|
}
|
|
248
239
|
return [...offsets];
|
|
249
240
|
}
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
return 1;
|
|
254
|
-
if (node.backSide === 'interior')
|
|
255
|
-
return -1;
|
|
256
|
-
return 1;
|
|
257
|
-
}
|
|
258
|
-
if (node.frontSide === 'exterior')
|
|
259
|
-
return 1;
|
|
260
|
-
if (node.backSide === 'exterior')
|
|
261
|
-
return -1;
|
|
262
|
-
return -1;
|
|
241
|
+
// Face a is the wall's left (+normal), face b its right.
|
|
242
|
+
function resolveTreatmentSideSign(_node, side) {
|
|
243
|
+
return side === 'a' ? 1 : -1;
|
|
263
244
|
}
|
|
264
245
|
function wallToLocalTransform(node) {
|
|
265
246
|
const dx = node.end[0] - node.start[0];
|
|
@@ -294,11 +275,11 @@ function buildMiteredSidePolyline(node, levelData, side, offset) {
|
|
|
294
275
|
return buildSidePolyline(node, side, offset);
|
|
295
276
|
const sideSign = resolveTreatmentSideSign(node, side);
|
|
296
277
|
const toLocal = wallToLocalTransform(node);
|
|
297
|
-
const proud = offset -
|
|
278
|
+
const proud = offset - getWallLocalFaceZ(node, sideSign > 0 ? 'a' : 'b') * sideSign;
|
|
298
279
|
const boundarySource = treatmentMiterDataForProud(levelData, proud);
|
|
299
280
|
if (!boundarySource)
|
|
300
281
|
return buildSidePolyline(node, side, offset);
|
|
301
|
-
const boundary = getWallMiterBoundaryPoints(
|
|
282
|
+
const boundary = getWallMiterBoundaryPoints(node, boundarySource, proud);
|
|
302
283
|
if (!boundary)
|
|
303
284
|
return buildSidePolyline(node, side, offset);
|
|
304
285
|
const start = sideSign > 0 ? boundary.startLeft : boundary.startRight;
|
|
@@ -417,7 +398,7 @@ function applyWorldScaleUvs(geometry) {
|
|
|
417
398
|
}
|
|
418
399
|
geometry.setAttribute('uv', new THREE.BufferAttribute(uv, 2));
|
|
419
400
|
}
|
|
420
|
-
function buildTrimSliceGeometry(outer, inner, extrudeHeight, translateY) {
|
|
401
|
+
function buildTrimSliceGeometry(outer, inner, extrudeHeight, translateY, slope = 0, slopeStart = 0) {
|
|
421
402
|
const shape = buildPlanPolygon(outer, inner);
|
|
422
403
|
if (!shape)
|
|
423
404
|
return null;
|
|
@@ -429,6 +410,11 @@ function buildTrimSliceGeometry(outer, inner, extrudeHeight, translateY) {
|
|
|
429
410
|
});
|
|
430
411
|
geometry.rotateX(-Math.PI / 2);
|
|
431
412
|
geometry.translate(0, translateY, 0);
|
|
413
|
+
if (slope !== 0) {
|
|
414
|
+
const positions = geometry.getAttribute('position');
|
|
415
|
+
for (let i = 0; i < positions.count; i++)
|
|
416
|
+
positions.setY(i, positions.getY(i) + (positions.getX(i) - slopeStart) * slope);
|
|
417
|
+
}
|
|
432
418
|
geometry.computeVertexNormals();
|
|
433
419
|
applyWorldScaleUvs(geometry);
|
|
434
420
|
return geometry;
|
|
@@ -449,14 +435,44 @@ export function buildTrimGeometry(node, side, trim, kind, childrenNodes, levelDa
|
|
|
449
435
|
: kind === 'chairRail'
|
|
450
436
|
? Math.max(0, Math.min(wallHeight - height, trim.offsetY ?? WALL_CHAIR_RAIL_DEFAULT.offsetY ?? 0.9))
|
|
451
437
|
: 0;
|
|
452
|
-
const
|
|
453
|
-
|
|
438
|
+
const faceOffset = getWallLocalFaceZ(node, resolveTreatmentSideSign(node, side) > 0 ? 'a' : 'b') *
|
|
439
|
+
resolveTreatmentSideSign(node, side);
|
|
440
|
+
const inner = buildMiteredSidePolyline(node, levelData, side, faceOffset);
|
|
454
441
|
if (inner.length < 2)
|
|
455
442
|
return null;
|
|
456
443
|
const wallLength = Math.hypot(node.end[0] - node.start[0], node.end[1] - node.start[1]);
|
|
457
|
-
const
|
|
458
|
-
|
|
459
|
-
|
|
444
|
+
const support = kind === 'skirting' && node.parentId
|
|
445
|
+
? (levelData.supports?.get(node.id) ??
|
|
446
|
+
spatialGridManager.getSlabSupportForWall(node.parentId, node.start, node.end, node.curveOffset ?? 0, node.thickness, node.supportSlabId, undefined, node.supportOffset, node.justification))
|
|
447
|
+
: undefined;
|
|
448
|
+
const bases = support?.faceDatum[resolveTreatmentSideSign(node, side) > 0 ? 'a' : 'b'] ?? [
|
|
449
|
+
{ start: 0, end: 1, elevation: yBottom },
|
|
450
|
+
];
|
|
451
|
+
const stationX = (t) => {
|
|
452
|
+
if (!isCurvedWall(node))
|
|
453
|
+
return t * wallLength;
|
|
454
|
+
const frame = getWallCurveFrameAt(node, t);
|
|
455
|
+
return wallToLocalTransform(node)(frame.point.x, frame.point.y).x;
|
|
456
|
+
};
|
|
457
|
+
const runs = bases.flatMap((base) => {
|
|
458
|
+
const bottom = support ? base.elevation - support.elevation : yBottom;
|
|
459
|
+
const openingRanges = trimOpeningRanges(node, childrenNodes, bottom, height);
|
|
460
|
+
if (support)
|
|
461
|
+
for (const child of childrenNodes) {
|
|
462
|
+
for (const run of wallDoorStepRuns(node, child, support.faceDatum, support.elevation))
|
|
463
|
+
if (run.bottom < bottom + height && run.top > bottom)
|
|
464
|
+
openingRanges.push([run.start, run.end]);
|
|
465
|
+
}
|
|
466
|
+
return subtractOpeningRanges([[stationX(base.start), stationX(base.end)]], openingRanges).map(([start, end]) => ({
|
|
467
|
+
start,
|
|
468
|
+
end,
|
|
469
|
+
bottom,
|
|
470
|
+
slopeStart: stationX(base.start),
|
|
471
|
+
slope: base.endElevation === undefined
|
|
472
|
+
? 0
|
|
473
|
+
: (base.endElevation - base.elevation) / (stationX(base.end) - stationX(base.start)),
|
|
474
|
+
}));
|
|
475
|
+
});
|
|
460
476
|
if (runs.length === 0)
|
|
461
477
|
return null;
|
|
462
478
|
const slices = [];
|
|
@@ -464,7 +480,7 @@ export function buildTrimGeometry(node, side, trim, kind, childrenNodes, levelDa
|
|
|
464
480
|
if (!profile)
|
|
465
481
|
return null;
|
|
466
482
|
const sliceHeight = height / profile.samples;
|
|
467
|
-
for (const
|
|
483
|
+
for (const { start: runStart, end: runEnd, bottom, slope, slopeStart } of runs) {
|
|
468
484
|
const clipStart = runStart > EPS ? runStart : undefined;
|
|
469
485
|
const clipEnd = runEnd < wallLength - EPS ? runEnd : undefined;
|
|
470
486
|
const innerRun = clipPolyline(inner, clipStart, clipEnd);
|
|
@@ -473,11 +489,11 @@ export function buildTrimGeometry(node, side, trim, kind, childrenNodes, levelDa
|
|
|
473
489
|
for (let index = 0; index < profile.samples; index += 1) {
|
|
474
490
|
const t = (index + 0.5) / profile.samples;
|
|
475
491
|
const proud = Math.max(MIN_SLICE_PROUD, trim.proud * profile.proudAt(t));
|
|
476
|
-
const outerRun = buildMiteredSidePolyline(node, levelData, side,
|
|
492
|
+
const outerRun = buildMiteredSidePolyline(node, levelData, side, faceOffset + proud);
|
|
477
493
|
const outerClipped = clipPolyline(outerRun, clipStart, clipEnd);
|
|
478
494
|
if (outerClipped.length < 2)
|
|
479
495
|
continue;
|
|
480
|
-
const slice = buildTrimSliceGeometry(outerClipped, innerRun, sliceHeight,
|
|
496
|
+
const slice = buildTrimSliceGeometry(outerClipped, innerRun, sliceHeight, bottom + index * sliceHeight, slope, slopeStart);
|
|
481
497
|
if (slice)
|
|
482
498
|
slices.push(slice);
|
|
483
499
|
}
|
|
@@ -499,21 +515,21 @@ function resolveWallSlotMaterial(node, slotId, shading, sceneMaterials) {
|
|
|
499
515
|
}
|
|
500
516
|
export function createWallExtraSlotMaterials(node, shading, sceneMaterials) {
|
|
501
517
|
return {
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
518
|
+
aSkirting: resolveWallSlotMaterial(node, 'aSkirting', shading, sceneMaterials),
|
|
519
|
+
bSkirting: resolveWallSlotMaterial(node, 'bSkirting', shading, sceneMaterials),
|
|
520
|
+
aCrown: resolveWallSlotMaterial(node, 'aCrown', shading, sceneMaterials),
|
|
521
|
+
bCrown: resolveWallSlotMaterial(node, 'bCrown', shading, sceneMaterials),
|
|
522
|
+
aChairRail: resolveWallSlotMaterial(node, 'aChairRail', shading, sceneMaterials),
|
|
523
|
+
bChairRail: resolveWallSlotMaterial(node, 'bChairRail', shading, sceneMaterials),
|
|
508
524
|
};
|
|
509
525
|
}
|
|
510
526
|
export const WallTreatments = memo(function WallTreatments({ node, childrenNodes, levelData, materials, }) {
|
|
511
|
-
const fallbackMaterial = materials.
|
|
512
|
-
materials.
|
|
513
|
-
materials.
|
|
514
|
-
materials.
|
|
515
|
-
materials.
|
|
516
|
-
materials.
|
|
527
|
+
const fallbackMaterial = materials.aSkirting ??
|
|
528
|
+
materials.bSkirting ??
|
|
529
|
+
materials.aCrown ??
|
|
530
|
+
materials.bCrown ??
|
|
531
|
+
materials.aChairRail ??
|
|
532
|
+
materials.bChairRail;
|
|
517
533
|
const trimEntries = useMemo(() => {
|
|
518
534
|
const out = [];
|
|
519
535
|
const configs = [
|
|
@@ -525,14 +541,11 @@ export const WallTreatments = memo(function WallTreatments({ node, childrenNodes
|
|
|
525
541
|
const trim = { ...TRIM_KIND_CONFIG[kind].defaultConfig, ...(rawConfig ?? {}) };
|
|
526
542
|
if (!trim.enabled)
|
|
527
543
|
continue;
|
|
528
|
-
const
|
|
529
|
-
? ['interior', 'exterior']
|
|
530
|
-
: [trim.sides];
|
|
531
|
-
for (const side of sides) {
|
|
544
|
+
for (const side of getWallTrimFaces(trim.sides)) {
|
|
532
545
|
const geometry = buildTrimGeometry(node, side, trim, kind, childrenNodes, levelData);
|
|
533
546
|
if (!geometry)
|
|
534
547
|
continue;
|
|
535
|
-
const slotId =
|
|
548
|
+
const slotId = getWallTrimSlotId(side, kind);
|
|
536
549
|
out.push({
|
|
537
550
|
key: `${kind}-${side}`,
|
|
538
551
|
slotId,
|
|
@@ -36,6 +36,13 @@ export declare function canBatchWalls(wallMode: WallMode, isolationActive: boole
|
|
|
36
36
|
* calls is what lighting them costs.
|
|
37
37
|
*/
|
|
38
38
|
export declare function collectTintedWalls(wallIds: ReadonlySet<string>): Set<string>;
|
|
39
|
+
/**
|
|
40
|
+
* The materials a wall actually draws, in canonical (uuid) order. Two walls
|
|
41
|
+
* showing the same finishes batch together however their palettes are laid out
|
|
42
|
+
* — a room's finish on side a of one wall and side b of the next is one set.
|
|
43
|
+
*/
|
|
44
|
+
export declare function canonicalWallMaterials(mesh: Pick<Mesh, 'geometry'>, materials: readonly Material[]): Material[];
|
|
45
|
+
export declare function materialSetKey(materials: readonly Material[]): string;
|
|
39
46
|
export declare function collectWallBatchCandidates(levelId: string, excludedNodeIds?: ReadonlySet<string>): Map<string, WallBatchCandidate[]>;
|
|
40
47
|
export declare const WallBatchSystem: () => null;
|
|
41
48
|
/**
|