@pascal-app/core 0.9.1 → 1.0.0-beta.1
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/README.md +17 -10
- package/dist/events/bus.d.ts +49 -2
- package/dist/events/bus.d.ts.map +1 -1
- package/dist/hooks/scene-registry/item-clip-registry.d.ts +18 -0
- package/dist/hooks/scene-registry/item-clip-registry.d.ts.map +1 -0
- package/dist/hooks/scene-registry/item-clip-registry.js +10 -0
- package/dist/hooks/scene-registry/scene-registry.d.ts +8 -1
- package/dist/hooks/scene-registry/scene-registry.d.ts.map +1 -1
- package/dist/hooks/scene-registry/scene-registry.js +27 -1
- package/dist/hooks/spatial-grid/floor-placed-elevation.d.ts +17 -1
- package/dist/hooks/spatial-grid/floor-placed-elevation.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/floor-placed-elevation.js +61 -8
- package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts +135 -28
- package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/spatial-grid-manager.js +427 -271
- package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts +46 -1
- package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/spatial-grid-sync.js +208 -9
- package/dist/hooks/spatial-grid/support-host-id.d.ts +3 -0
- package/dist/hooks/spatial-grid/support-host-id.d.ts.map +1 -0
- package/dist/hooks/spatial-grid/support-host-id.js +2 -0
- package/dist/hooks/spatial-grid/support-host-patch.d.ts +51 -0
- package/dist/hooks/spatial-grid/support-host-patch.d.ts.map +1 -0
- package/dist/hooks/spatial-grid/support-host-patch.js +164 -0
- package/dist/index.d.ts +33 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +32 -10
- package/dist/lib/level-name.d.ts +4 -0
- package/dist/lib/level-name.d.ts.map +1 -0
- package/dist/lib/level-name.js +10 -0
- package/dist/lib/measurement-geometry.d.ts +23 -0
- package/dist/lib/measurement-geometry.d.ts.map +1 -0
- package/dist/lib/measurement-geometry.js +249 -0
- package/dist/lib/polygon-geometry.d.ts +0 -1
- package/dist/lib/polygon-geometry.d.ts.map +1 -1
- package/dist/lib/polygon-geometry.js +0 -18
- package/dist/lib/selection-proxy.d.ts +4 -0
- package/dist/lib/selection-proxy.d.ts.map +1 -0
- package/dist/lib/selection-proxy.js +12 -0
- package/dist/lib/slab-polygon.d.ts +31 -2
- package/dist/lib/slab-polygon.d.ts.map +1 -1
- package/dist/lib/slab-polygon.js +557 -31
- package/dist/lib/slots.d.ts +14 -0
- package/dist/lib/slots.d.ts.map +1 -0
- package/dist/lib/slots.js +26 -0
- package/dist/lib/space-detection.d.ts +40 -6
- package/dist/lib/space-detection.d.ts.map +1 -1
- package/dist/lib/space-detection.js +574 -192
- package/dist/lib/terrain-brush.d.ts +163 -0
- package/dist/lib/terrain-brush.d.ts.map +1 -0
- package/dist/lib/terrain-brush.js +359 -0
- package/dist/lib/terrain-codec.d.ts +51 -0
- package/dist/lib/terrain-codec.d.ts.map +1 -0
- package/dist/lib/terrain-codec.js +167 -0
- package/dist/lib/terrain-field.d.ts +150 -0
- package/dist/lib/terrain-field.d.ts.map +1 -0
- package/dist/lib/terrain-field.js +248 -0
- package/dist/lib/terrain-raycast.d.ts +44 -0
- package/dist/lib/terrain-raycast.d.ts.map +1 -0
- package/dist/lib/terrain-raycast.js +188 -0
- package/dist/lib/terrain-source.d.ts +60 -0
- package/dist/lib/terrain-source.d.ts.map +1 -0
- package/dist/lib/terrain-source.js +90 -0
- package/dist/lib/terrain-support.d.ts +60 -0
- package/dist/lib/terrain-support.d.ts.map +1 -0
- package/dist/lib/terrain-support.js +150 -0
- package/dist/lib/wall-distance.d.ts +60 -0
- package/dist/lib/wall-distance.d.ts.map +1 -0
- package/dist/lib/wall-distance.js +85 -0
- package/dist/lib/zone-quantities.d.ts +21 -0
- package/dist/lib/zone-quantities.d.ts.map +1 -0
- package/dist/lib/zone-quantities.js +428 -0
- package/dist/material-library.d.ts +28 -1
- package/dist/material-library.d.ts.map +1 -1
- package/dist/material-library.js +2233 -441
- package/dist/registry/handles.d.ts +91 -3
- package/dist/registry/handles.d.ts.map +1 -1
- package/dist/registry/index.d.ts +3 -3
- package/dist/registry/index.d.ts.map +1 -1
- package/dist/registry/index.js +1 -1
- package/dist/registry/registry.d.ts +46 -3
- package/dist/registry/registry.d.ts.map +1 -1
- package/dist/registry/registry.js +82 -1
- package/dist/registry/subtree.d.ts.map +1 -1
- package/dist/registry/subtree.js +8 -1
- package/dist/registry/types.d.ts +781 -39
- package/dist/registry/types.d.ts.map +1 -1
- package/dist/schema/index.d.ts +27 -8
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +23 -6
- package/dist/schema/material.d.ts +3 -2
- package/dist/schema/material.d.ts.map +1 -1
- package/dist/schema/material.js +7 -5
- package/dist/schema/nodes/box-vent.d.ts +2 -2
- package/dist/schema/nodes/cabinet.d.ts +536 -0
- package/dist/schema/nodes/cabinet.d.ts.map +1 -0
- package/dist/schema/nodes/cabinet.js +139 -0
- package/dist/schema/nodes/ceiling.d.ts +4 -3
- package/dist/schema/nodes/ceiling.d.ts.map +1 -1
- package/dist/schema/nodes/ceiling.js +11 -1
- package/dist/schema/nodes/chimney.d.ts +4 -4
- package/dist/schema/nodes/column.d.ts +4 -2
- package/dist/schema/nodes/column.d.ts.map +1 -1
- package/dist/schema/nodes/column.js +5 -0
- package/dist/schema/nodes/construction-dimension.d.ts +195 -0
- package/dist/schema/nodes/construction-dimension.d.ts.map +1 -0
- package/dist/schema/nodes/construction-dimension.js +151 -0
- package/dist/schema/nodes/cupola.d.ts +2 -2
- package/dist/schema/nodes/door.d.ts +42 -5
- package/dist/schema/nodes/door.d.ts.map +1 -1
- package/dist/schema/nodes/door.js +32 -0
- package/dist/schema/nodes/dormer.d.ts +8 -8
- package/dist/schema/nodes/dormer.js +1 -1
- package/dist/schema/nodes/downspout.d.ts +2 -2
- package/dist/schema/nodes/duct-fitting.d.ts +91 -0
- package/dist/schema/nodes/duct-fitting.d.ts.map +1 -0
- package/dist/schema/nodes/duct-fitting.js +92 -0
- package/dist/schema/nodes/duct-segment.d.ts +61 -0
- package/dist/schema/nodes/duct-segment.d.ts.map +1 -0
- package/dist/schema/nodes/duct-segment.js +73 -0
- package/dist/schema/nodes/duct-terminal.d.ts +58 -0
- package/dist/schema/nodes/duct-terminal.d.ts.map +1 -0
- package/dist/schema/nodes/duct-terminal.js +53 -0
- package/dist/schema/nodes/elevator.d.ts +3 -2
- package/dist/schema/nodes/elevator.d.ts.map +1 -1
- package/dist/schema/nodes/elevator.js +3 -0
- package/dist/schema/nodes/eyebrow-vent.d.ts +2 -2
- package/dist/schema/nodes/fence.d.ts +20 -2
- package/dist/schema/nodes/fence.d.ts.map +1 -1
- package/dist/schema/nodes/fence.js +33 -2
- package/dist/schema/nodes/gutter.d.ts +2 -2
- package/dist/schema/nodes/hvac-equipment.d.ts +64 -0
- package/dist/schema/nodes/hvac-equipment.d.ts.map +1 -0
- package/dist/schema/nodes/hvac-equipment.js +57 -0
- package/dist/schema/nodes/item.d.ts +9 -0
- package/dist/schema/nodes/item.d.ts.map +1 -1
- package/dist/schema/nodes/item.js +24 -0
- package/dist/schema/nodes/level.d.ts +2 -1
- package/dist/schema/nodes/level.d.ts.map +1 -1
- package/dist/schema/nodes/level.js +12 -31
- package/dist/schema/nodes/lineset.d.ts +42 -0
- package/dist/schema/nodes/lineset.d.ts.map +1 -0
- package/dist/schema/nodes/lineset.js +38 -0
- package/dist/schema/nodes/liquid-line.d.ts +34 -0
- package/dist/schema/nodes/liquid-line.d.ts.map +1 -0
- package/dist/schema/nodes/liquid-line.js +24 -0
- package/dist/schema/nodes/measurement.d.ts +306 -0
- package/dist/schema/nodes/measurement.d.ts.map +1 -0
- package/dist/schema/nodes/measurement.js +87 -0
- package/dist/schema/nodes/pipe-fitting.d.ts +56 -0
- package/dist/schema/nodes/pipe-fitting.d.ts.map +1 -0
- package/dist/schema/nodes/pipe-fitting.js +45 -0
- package/dist/schema/nodes/pipe-segment.d.ts +48 -0
- package/dist/schema/nodes/pipe-segment.d.ts.map +1 -0
- package/dist/schema/nodes/pipe-segment.js +36 -0
- package/dist/schema/nodes/pipe-trap.d.ts +43 -0
- package/dist/schema/nodes/pipe-trap.d.ts.map +1 -0
- package/dist/schema/nodes/pipe-trap.js +36 -0
- package/dist/schema/nodes/ridge-vent.d.ts +18 -3
- package/dist/schema/nodes/ridge-vent.d.ts.map +1 -1
- package/dist/schema/nodes/ridge-vent.js +221 -3
- package/dist/schema/nodes/roof-segment-shape.d.ts +90 -0
- package/dist/schema/nodes/roof-segment-shape.d.ts.map +1 -0
- package/dist/schema/nodes/roof-segment-shape.js +318 -0
- package/dist/schema/nodes/roof-segment-walls.d.ts +101 -0
- package/dist/schema/nodes/roof-segment-walls.d.ts.map +1 -0
- package/dist/schema/nodes/roof-segment-walls.js +330 -0
- package/dist/schema/nodes/roof-segment.d.ts +84 -8
- package/dist/schema/nodes/roof-segment.d.ts.map +1 -1
- package/dist/schema/nodes/roof-segment.js +290 -5
- package/dist/schema/nodes/roof.d.ts +8 -8
- package/dist/schema/nodes/shelf.d.ts +4 -2
- package/dist/schema/nodes/shelf.d.ts.map +1 -1
- package/dist/schema/nodes/shelf.js +8 -0
- package/dist/schema/nodes/site.d.ts +9 -0
- package/dist/schema/nodes/site.d.ts.map +1 -1
- package/dist/schema/nodes/site.js +8 -6
- package/dist/schema/nodes/skylight.d.ts +10 -10
- package/dist/schema/nodes/slab.d.ts +8 -2
- package/dist/schema/nodes/slab.d.ts.map +1 -1
- package/dist/schema/nodes/slab.js +18 -2
- package/dist/schema/nodes/solar-panel.d.ts +4 -4
- package/dist/schema/nodes/spawn.d.ts +1 -0
- package/dist/schema/nodes/spawn.d.ts.map +1 -1
- package/dist/schema/nodes/spawn.js +2 -0
- package/dist/schema/nodes/stair-segment.d.ts +4 -4
- package/dist/schema/nodes/stair.d.ts +16 -13
- package/dist/schema/nodes/stair.d.ts.map +1 -1
- package/dist/schema/nodes/stair.js +11 -1
- package/dist/schema/nodes/structural-grid.d.ts +27 -0
- package/dist/schema/nodes/structural-grid.d.ts.map +1 -0
- package/dist/schema/nodes/structural-grid.js +17 -0
- package/dist/schema/nodes/turbine-vent.d.ts +2 -2
- package/dist/schema/nodes/wall.d.ts +248 -6
- package/dist/schema/nodes/wall.d.ts.map +1 -1
- package/dist/schema/nodes/wall.js +266 -0
- package/dist/schema/nodes/window.d.ts +40 -3
- package/dist/schema/nodes/window.d.ts.map +1 -1
- package/dist/schema/nodes/window.js +30 -0
- package/dist/schema/nodes/zone.d.ts +22 -0
- package/dist/schema/nodes/zone.d.ts.map +1 -1
- package/dist/schema/nodes/zone.js +21 -0
- package/dist/schema/scene-material.d.ts +41 -0
- package/dist/schema/scene-material.d.ts.map +1 -0
- package/dist/schema/scene-material.js +9 -0
- package/dist/schema/terrain.d.ts +28 -0
- package/dist/schema/terrain.d.ts.map +1 -0
- package/dist/schema/terrain.js +30 -0
- package/dist/schema/types.d.ts +1300 -97
- package/dist/schema/types.d.ts.map +1 -1
- package/dist/schema/types.js +27 -0
- package/dist/services/__fixtures__/wall-plane-top-boundary-repro.d.ts +80 -0
- package/dist/services/__fixtures__/wall-plane-top-boundary-repro.d.ts.map +1 -0
- package/dist/services/__fixtures__/wall-plane-top-boundary-repro.js +89 -0
- package/dist/services/alignment-anchors.d.ts.map +1 -1
- package/dist/services/alignment-anchors.js +30 -1
- package/dist/services/alignment.d.ts +5 -0
- package/dist/services/alignment.d.ts.map +1 -1
- package/dist/services/alignment.js +2 -0
- package/dist/services/hosting.d.ts +8 -0
- package/dist/services/hosting.d.ts.map +1 -1
- package/dist/services/hosting.js +13 -4
- package/dist/services/index.d.ts +9 -2
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +9 -2
- package/dist/services/level-height.d.ts +27 -0
- package/dist/services/level-height.d.ts.map +1 -0
- package/dist/services/level-height.js +94 -0
- package/dist/services/opening-guides.d.ts +141 -0
- package/dist/services/opening-guides.d.ts.map +1 -0
- package/dist/services/opening-guides.js +267 -0
- package/dist/services/port-connectivity.d.ts +115 -0
- package/dist/services/port-connectivity.d.ts.map +1 -0
- package/dist/services/port-connectivity.js +300 -0
- package/dist/services/riser-diagram.d.ts +40 -0
- package/dist/services/riser-diagram.d.ts.map +1 -0
- package/dist/services/riser-diagram.js +110 -0
- package/dist/services/snap.d.ts +9 -1
- package/dist/services/snap.d.ts.map +1 -1
- package/dist/services/snap.js +21 -1
- package/dist/services/storey.d.ts +103 -0
- package/dist/services/storey.d.ts.map +1 -0
- package/dist/services/storey.js +296 -0
- package/dist/services/system-graph.d.ts +30 -0
- package/dist/services/system-graph.d.ts.map +1 -0
- package/dist/services/system-graph.js +164 -0
- package/dist/services/validate-dwv.d.ts +32 -0
- package/dist/services/validate-dwv.d.ts.map +1 -0
- package/dist/services/validate-dwv.js +118 -0
- package/dist/store/actions/node-actions.d.ts.map +1 -1
- package/dist/store/actions/node-actions.js +141 -4
- package/dist/store/history-control.d.ts +31 -0
- package/dist/store/history-control.d.ts.map +1 -1
- package/dist/store/history-control.js +130 -0
- package/dist/store/use-live-terrain.d.ts +65 -0
- package/dist/store/use-live-terrain.d.ts.map +1 -0
- package/dist/store/use-live-terrain.js +31 -0
- package/dist/store/use-live-transforms.d.ts +8 -0
- package/dist/store/use-live-transforms.d.ts.map +1 -1
- package/dist/store/use-scene.d.ts +47 -3
- package/dist/store/use-scene.d.ts.map +1 -1
- package/dist/store/use-scene.js +992 -55
- package/dist/systems/elevator/elevator-opening-system.d.ts +1 -0
- package/dist/systems/elevator/elevator-opening-system.d.ts.map +1 -1
- package/dist/systems/elevator/elevator-opening-system.js +27 -21
- package/dist/systems/elevator/elevator-service.d.ts +0 -2
- package/dist/systems/elevator/elevator-service.d.ts.map +1 -1
- package/dist/systems/elevator/elevator-service.js +2 -24
- package/dist/systems/fence/fence-centerline.d.ts +12 -0
- package/dist/systems/fence/fence-centerline.d.ts.map +1 -0
- package/dist/systems/fence/fence-centerline.js +37 -0
- package/dist/systems/fence/fence-spline.d.ts +39 -0
- package/dist/systems/fence/fence-spline.d.ts.map +1 -0
- package/dist/systems/fence/fence-spline.js +196 -0
- package/dist/systems/slab/slab-placement.d.ts +11 -0
- package/dist/systems/slab/slab-placement.d.ts.map +1 -0
- package/dist/systems/slab/slab-placement.js +14 -0
- package/dist/systems/slab/slab-support.d.ts +137 -0
- package/dist/systems/slab/slab-support.d.ts.map +1 -0
- package/dist/systems/slab/slab-support.js +557 -0
- package/dist/systems/stair/stair-footprint.d.ts.map +1 -1
- package/dist/systems/stair/stair-footprint.js +21 -11
- package/dist/systems/stair/stair-opening-preview.d.ts +1300 -505
- package/dist/systems/stair/stair-opening-preview.d.ts.map +1 -1
- package/dist/systems/stair/stair-opening-sync.d.ts.map +1 -1
- package/dist/systems/stair/stair-opening-sync.js +19 -33
- package/dist/systems/stair/stair-opening-system.d.ts.map +1 -1
- package/dist/systems/stair/stair-opening-system.js +32 -4
- package/dist/systems/stair/stair-rise.d.ts +22 -0
- package/dist/systems/stair/stair-rise.d.ts.map +1 -0
- package/dist/systems/stair/stair-rise.js +79 -0
- package/dist/systems/wall/wall-curve.d.ts +10 -0
- package/dist/systems/wall/wall-curve.d.ts.map +1 -1
- package/dist/systems/wall/wall-curve.js +1 -1
- package/dist/systems/wall/wall-mitering.d.ts.map +1 -1
- package/dist/systems/wall/wall-mitering.js +44 -8
- package/dist/systems/wall/wall-top.d.ts +40 -0
- package/dist/systems/wall/wall-top.d.ts.map +1 -0
- package/dist/systems/wall/wall-top.js +46 -0
- package/dist/utils/clone-scene-graph.d.ts +1 -0
- package/dist/utils/clone-scene-graph.d.ts.map +1 -1
- package/dist/utils/clone-scene-graph.js +56 -5
- package/dist/utils/heal-scene-graph.d.ts +18 -0
- package/dist/utils/heal-scene-graph.d.ts.map +1 -0
- package/dist/utils/heal-scene-graph.js +106 -0
- package/dist/validation/validate-build-json.d.ts +3 -0
- package/dist/validation/validate-build-json.d.ts.map +1 -1
- package/dist/validation/validate-build-json.js +90 -5
- package/package.json +4 -4
- package/dist/hooks/spatial-grid/floor-placed-elevation.test.d.ts +0 -2
- package/dist/hooks/spatial-grid/floor-placed-elevation.test.d.ts.map +0 -1
- package/dist/hooks/spatial-grid/floor-placed-elevation.test.js +0 -273
- package/dist/lib/space-detection-pause.test.d.ts +0 -2
- package/dist/lib/space-detection-pause.test.d.ts.map +0 -1
- package/dist/lib/space-detection-pause.test.js +0 -42
- package/dist/lib/space-detection.test.d.ts +0 -2
- package/dist/lib/space-detection.test.d.ts.map +0 -1
- package/dist/lib/space-detection.test.js +0 -77
- package/dist/registry/registry.test.d.ts +0 -2
- package/dist/registry/registry.test.d.ts.map +0 -1
- package/dist/registry/registry.test.js +0 -183
- package/dist/registry/relations-resolver.test.d.ts +0 -2
- package/dist/registry/relations-resolver.test.d.ts.map +0 -1
- package/dist/registry/relations-resolver.test.js +0 -183
- package/dist/registry/scene-api.test.d.ts +0 -2
- package/dist/registry/scene-api.test.d.ts.map +0 -1
- package/dist/registry/scene-api.test.js +0 -183
- package/dist/registry/subtree.test.d.ts +0 -2
- package/dist/registry/subtree.test.d.ts.map +0 -1
- package/dist/registry/subtree.test.js +0 -133
- package/dist/schema/asset-url.test.d.ts +0 -2
- package/dist/schema/asset-url.test.d.ts.map +0 -1
- package/dist/schema/asset-url.test.js +0 -134
- package/dist/services/alignment-anchors.test.d.ts +0 -2
- package/dist/services/alignment-anchors.test.d.ts.map +0 -1
- package/dist/services/alignment-anchors.test.js +0 -383
- package/dist/services/alignment.test.d.ts +0 -2
- package/dist/services/alignment.test.d.ts.map +0 -1
- package/dist/services/alignment.test.js +0 -92
- package/dist/services/drag-session.test.d.ts +0 -2
- package/dist/services/drag-session.test.d.ts.map +0 -1
- package/dist/services/drag-session.test.js +0 -219
- package/dist/services/hosting.test.d.ts +0 -2
- package/dist/services/hosting.test.d.ts.map +0 -1
- package/dist/services/hosting.test.js +0 -199
- package/dist/services/movement.test.d.ts +0 -2
- package/dist/services/movement.test.d.ts.map +0 -1
- package/dist/services/movement.test.js +0 -133
- package/dist/services/single-undo-dance.test.d.ts +0 -2
- package/dist/services/single-undo-dance.test.d.ts.map +0 -1
- package/dist/services/single-undo-dance.test.js +0 -210
- package/dist/services/snap.test.d.ts +0 -2
- package/dist/services/snap.test.d.ts.map +0 -1
- package/dist/services/snap.test.js +0 -95
- package/dist/store/actions/node-mutation-sanitize.test.d.ts +0 -2
- package/dist/store/actions/node-mutation-sanitize.test.d.ts.map +0 -1
- package/dist/store/actions/node-mutation-sanitize.test.js +0 -147
- package/dist/store/actions/reparent.test.d.ts +0 -2
- package/dist/store/actions/reparent.test.d.ts.map +0 -1
- package/dist/store/actions/reparent.test.js +0 -212
- package/dist/store/use-scene-elevator-migration.test.d.ts +0 -2
- package/dist/store/use-scene-elevator-migration.test.d.ts.map +0 -1
- package/dist/store/use-scene-elevator-migration.test.js +0 -109
- package/dist/systems/elevator/elevator-opening-sync.test.d.ts +0 -2
- package/dist/systems/elevator/elevator-opening-sync.test.d.ts.map +0 -1
- package/dist/systems/elevator/elevator-opening-sync.test.js +0 -146
- package/dist/systems/elevator/elevator-runtime.test.d.ts +0 -2
- package/dist/systems/elevator/elevator-runtime.test.d.ts.map +0 -1
- package/dist/systems/elevator/elevator-runtime.test.js +0 -64
- package/dist/systems/stair/stair-opening-preview.test.d.ts +0 -2
- package/dist/systems/stair/stair-opening-preview.test.d.ts.map +0 -1
- package/dist/systems/stair/stair-opening-preview.test.js +0 -80
- package/dist/systems/stair/stair-opening-sync.test.d.ts +0 -2
- package/dist/systems/stair/stair-opening-sync.test.d.ts.map +0 -1
- package/dist/systems/stair/stair-opening-sync.test.js +0 -446
- package/dist/utils/clone-scene-graph.test.d.ts +0 -2
- package/dist/utils/clone-scene-graph.test.d.ts.map +0 -1
- package/dist/utils/clone-scene-graph.test.js +0 -59
|
@@ -1,31 +1,33 @@
|
|
|
1
|
-
import type { AnyNode } from '../../schema';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
*/
|
|
5
|
-
export declare function pointInPolygon(px: number, pz: number, polygon: Array<[number, number]>): boolean;
|
|
1
|
+
import type { AnyNode, WallNode } from '../../schema';
|
|
2
|
+
import { type WallSlabSupport } from '../../systems/slab/slab-support';
|
|
3
|
+
export { computeWallSlabElevation, computeWallSlabSupport, pointInPolygon, SUPPORT_ELEVATION_EPSILON, type WallOverlapInput, type WallSlabSupport, type WallSlabSupportSegment, wallOverlapsPolygon, } from '../../systems/slab/slab-support';
|
|
6
4
|
/**
|
|
7
5
|
* Test if an item's footprint overlaps with a polygon.
|
|
8
6
|
* Checks: any item corner inside polygon, or any polygon vertex inside item AABB, or edges intersect.
|
|
9
7
|
*/
|
|
10
8
|
export declare function itemOverlapsPolygon(position: [number, number, number], dimensions: [number, number, number], rotation: [number, number, number], polygon: Array<[number, number]>, inset?: number): boolean;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
9
|
+
/** One slab overlapping a queried footprint, as seen by support election. */
|
|
10
|
+
export type SlabSupportCandidate = {
|
|
11
|
+
slabId: string;
|
|
12
|
+
elevation: number;
|
|
13
|
+
};
|
|
14
|
+
export type ItemSlabSupport = {
|
|
15
|
+
elevation: number;
|
|
16
|
+
/** The winning slab, or null when no slab overlaps the footprint. */
|
|
17
|
+
slabId: string | null;
|
|
18
|
+
};
|
|
19
|
+
export type PointedSupportSurface = ItemSlabSupport & {
|
|
20
|
+
/**
|
|
21
|
+
* Level-local XZ where the ray meets the pointed surface's plane, or
|
|
22
|
+
* null when the ray never reaches it (grazing / aimed above the base).
|
|
23
|
+
* This is the plan point the pointer actually indicates: unlike a grid
|
|
24
|
+
* event-plane hit — whose XZ shifts with whatever height the event
|
|
25
|
+
* plane currently rides at — it depends only on the ray and the
|
|
26
|
+
* aimed-at surface, so election/preview at this point cannot flip when
|
|
27
|
+
* the event plane changes storey.
|
|
28
|
+
*/
|
|
29
|
+
point: [number, number] | null;
|
|
16
30
|
};
|
|
17
|
-
/**
|
|
18
|
-
* Test if a wall segment overlaps with a polygon.
|
|
19
|
-
* A wall is considered to overlap if:
|
|
20
|
-
* - Its midpoint is inside the polygon (wall crosses through)
|
|
21
|
-
* - At least one endpoint is inside (wall partially or fully in slab)
|
|
22
|
-
* - It's collinear with and overlaps a polygon edge (wall on slab boundary)
|
|
23
|
-
* - (curved walls) any sample along the centerline is inside
|
|
24
|
-
*
|
|
25
|
-
* Note: A wall with just one endpoint touching the edge but the rest outside
|
|
26
|
-
* is NOT considered overlapping (adjacent only).
|
|
27
|
-
*/
|
|
28
|
-
export declare function wallOverlapsPolygon(startOrWall: [number, number] | WallOverlapInput, endOrPolygon: [number, number] | Array<[number, number]>, polygonArg?: Array<[number, number]>): boolean;
|
|
29
31
|
export declare class SpatialGridManager {
|
|
30
32
|
private readonly floorGrids;
|
|
31
33
|
private readonly wallGrids;
|
|
@@ -42,6 +44,45 @@ export declare class SpatialGridManager {
|
|
|
42
44
|
private getWallHeight;
|
|
43
45
|
private getCeilingGrid;
|
|
44
46
|
private getSlabMap;
|
|
47
|
+
/**
|
|
48
|
+
* Per-slab RENDERED polygon cache (`getRenderableSlabPolygon`). Item
|
|
49
|
+
* support queries run per frame and the projection scans the level's
|
|
50
|
+
* walls + sibling slabs, so the result is cached per slab id and
|
|
51
|
+
* dropped for the whole level whenever a slab or wall on that level
|
|
52
|
+
* flows through the manager's create/update/delete handlers.
|
|
53
|
+
*/
|
|
54
|
+
private readonly renderedSlabPolygons;
|
|
55
|
+
private invalidateRenderedSlabPolygons;
|
|
56
|
+
/**
|
|
57
|
+
* True while a slab or wall on `levelId` has a live preview: group drags
|
|
58
|
+
* publish translated slab polygons and wall endpoints to
|
|
59
|
+
* `useLiveNodeOverrides`, and the slab move tool / room-preset stamp
|
|
60
|
+
* publish a translation DELTA to `useLiveTransforms` — either way the
|
|
61
|
+
* scene store commits only on release, so the committed cache and index
|
|
62
|
+
* would elect support against pre-drag footprints (items and walls
|
|
63
|
+
* visibly drop to ground mid-preview). Support queries then read
|
|
64
|
+
* live-effective records and skip the rendered-polygon cache.
|
|
65
|
+
*/
|
|
66
|
+
private levelHasLivePreview;
|
|
67
|
+
/**
|
|
68
|
+
* The live-effective slab record: field overrides merged, then the
|
|
69
|
+
* `useLiveTransforms` DELTA (slab publishers — move tool, room-preset
|
|
70
|
+
* stamp — store a translation, not an absolute position) applied to the
|
|
71
|
+
* polygon, holes, and elevation. Mapping happens exactly ONCE at each
|
|
72
|
+
* public query's loop entry: `slabSupportsFootprint` /
|
|
73
|
+
* `getRenderedSlabPolygon` take the already-effective record and must
|
|
74
|
+
* never re-map, or the delta would apply twice.
|
|
75
|
+
*/
|
|
76
|
+
private effectiveSlabRecord;
|
|
77
|
+
private getRenderedSlabPolygon;
|
|
78
|
+
/**
|
|
79
|
+
* Support test shared by election, candidate listing, and persisted-host
|
|
80
|
+
* validation: the footprint overlaps the slab's RENDERED polygon (what
|
|
81
|
+
* users see — matching the wall election in `computeWallSlabSupport`),
|
|
82
|
+
* with the center-point hole veto kept against the stored holes (holes
|
|
83
|
+
* are data, never render-offset).
|
|
84
|
+
*/
|
|
85
|
+
private slabSupportsFootprint;
|
|
45
86
|
handleNodeCreated(node: AnyNode, levelId: string): void;
|
|
46
87
|
handleNodeUpdated(node: AnyNode, levelId: string): void;
|
|
47
88
|
handleNodeDeleted(nodeId: string, nodeType: string, levelId: string): string[];
|
|
@@ -49,6 +90,14 @@ export declare class SpatialGridManager {
|
|
|
49
90
|
valid: boolean;
|
|
50
91
|
conflictIds: string[];
|
|
51
92
|
};
|
|
93
|
+
canPlaceOnFloorFootprints(levelId: string, footprints: readonly {
|
|
94
|
+
position: [number, number, number];
|
|
95
|
+
dimensions: [number, number, number];
|
|
96
|
+
rotation: [number, number, number];
|
|
97
|
+
}[], ignoreIds?: string[]): {
|
|
98
|
+
valid: boolean;
|
|
99
|
+
conflictIds: string[];
|
|
100
|
+
};
|
|
52
101
|
/**
|
|
53
102
|
* Check if an item can be placed on a wall
|
|
54
103
|
* @param levelId - the level containing the wall
|
|
@@ -77,19 +126,67 @@ export declare class SpatialGridManager {
|
|
|
77
126
|
getSlabElevationAt(levelId: string, x: number, z: number): number;
|
|
78
127
|
/**
|
|
79
128
|
* Get the slab elevation for an item using its full footprint (bounding box).
|
|
80
|
-
*
|
|
81
|
-
*
|
|
129
|
+
* Thin wrapper over {@link getSlabSupportForItem} for callers (and tests)
|
|
130
|
+
* that only need the number.
|
|
131
|
+
*/
|
|
132
|
+
getSlabElevationForItem(levelId: string, position: [number, number, number], dimensions: [number, number, number], rotation: [number, number, number], maxElevation?: number | null): number;
|
|
133
|
+
/**
|
|
134
|
+
* Elect the supporting slab for a footprint: the highest-elevation slab
|
|
135
|
+
* whose RENDERED polygon the footprint overlaps (center-point hole veto
|
|
136
|
+
* applies). Returns `{ elevation: 0, slabId: null }` when nothing
|
|
137
|
+
* overlaps.
|
|
138
|
+
*
|
|
139
|
+
* `maxElevation` is the pointer-decided cap: when set, only slabs whose
|
|
140
|
+
* walking surface sits at or below `maxElevation +
|
|
141
|
+
* SUPPORT_ELEVATION_EPSILON` may win — a deck hanging above the surface
|
|
142
|
+
* the cursor ray actually hit never captures the election.
|
|
143
|
+
*/
|
|
144
|
+
getSlabSupportForItem(levelId: string, position: [number, number, number], dimensions: [number, number, number], rotation: [number, number, number], maxElevation?: number | null): ItemSlabSupport;
|
|
145
|
+
/**
|
|
146
|
+
* The walking surface the pointer actually points at: the nearest slab
|
|
147
|
+
* plane the ray crosses INSIDE that slab's rendered polygon (hole veto
|
|
148
|
+
* applies), or the level base (`elevation: 0, slabId: null`) when it
|
|
149
|
+
* crosses none. Ray origin/direction are level-local. Deliberately a
|
|
150
|
+
* point test, not a footprint test — it answers "which surface is under
|
|
151
|
+
* the cursor", which then caps the footprint election so a deck hanging
|
|
152
|
+
* above the aimed-at floor never lifts the placement. `point` is the
|
|
153
|
+
* ray's crossing of that surface's plane — the stable plan point
|
|
154
|
+
* callers should elect/preview at (see {@link PointedSupportSurface}).
|
|
82
155
|
*/
|
|
83
|
-
|
|
156
|
+
getPointedSupportSurface(levelId: string, rayOrigin: [number, number, number], rayDirection: [number, number, number]): PointedSupportSurface;
|
|
157
|
+
/**
|
|
158
|
+
* All slabs supporting a footprint, one entry per overlapping slab
|
|
159
|
+
* (highest elevation first; slab id breaks ties deterministically).
|
|
160
|
+
* Commit-side ambiguity check: persist a `supportSlabId` only when the
|
|
161
|
+
* candidates carry ≥ 2 distinct elevations.
|
|
162
|
+
*/
|
|
163
|
+
getSupportCandidatesForFootprint(levelId: string, position: [number, number, number], dimensions: [number, number, number], rotation: [number, number, number]): SlabSupportCandidate[];
|
|
164
|
+
/**
|
|
165
|
+
* Elevation of a persisted support host for a footprint, or null when
|
|
166
|
+
* the slab no longer exists on the level or no longer overlaps the
|
|
167
|
+
* footprint (same overlap test as election). Deliberately read-only: a
|
|
168
|
+
* host reshaped away is NOT cleared — callers fall back to election and
|
|
169
|
+
* the stale reference resumes hosting if the slab's polygon returns.
|
|
170
|
+
* Slab deletion is the only writer (`deleteNodesAction` strips it).
|
|
171
|
+
*/
|
|
172
|
+
getHostSlabElevationForFootprint(levelId: string, slabId: string, position: [number, number, number], dimensions: [number, number, number], rotation: [number, number, number]): number | null;
|
|
84
173
|
/**
|
|
85
174
|
* Get the slab elevation for a wall by checking if it overlaps with any slab polygon (excluding holes).
|
|
86
|
-
* Uses wallOverlapsPolygon which handles edge cases (points on boundary, collinear segments).
|
|
87
175
|
* Returns the highest slab elevation found, or 0 if none.
|
|
88
176
|
*
|
|
89
177
|
* Accepts an optional `curveOffset` so curved walls evaluate overlap
|
|
90
178
|
* against their actual centerline samples, not just the chord.
|
|
91
179
|
*/
|
|
92
|
-
getSlabElevationForWall(levelId: string, start: [number, number], end: [number, number], curveOffset?: number, thickness?: number): number;
|
|
180
|
+
getSlabElevationForWall(levelId: string, start: [number, number], end: [number, number], curveOffset?: number, thickness?: number, preferredSlabId?: string | null): number;
|
|
181
|
+
getSlabSupportForWall(levelId: string, start: [number, number], end: [number, number], curveOffset?: number, thickness?: number, preferredSlabId?: string | null, maxElevation?: number | null, supportOffset?: number): WallSlabSupport;
|
|
182
|
+
/**
|
|
183
|
+
* Walls on a level, resolved fresh from the scene store (the manager's
|
|
184
|
+
* own wall map is only maintained on create/delete, not on updates).
|
|
185
|
+
* Cached per scene `nodes` record so per-pointer-tick callers
|
|
186
|
+
* (door/window move) don't rescan the node map.
|
|
187
|
+
*/
|
|
188
|
+
private readonly levelWallsCache;
|
|
189
|
+
private getLevelWallNodes;
|
|
93
190
|
/**
|
|
94
191
|
* Check if an item can be placed on a ceiling.
|
|
95
192
|
* Validates that the footprint is within the ceiling polygon (but not in any holes) and doesn't overlap other ceiling items.
|
|
@@ -102,5 +199,15 @@ export declare class SpatialGridManager {
|
|
|
102
199
|
clear(): void;
|
|
103
200
|
}
|
|
104
201
|
export declare const spatialGridManager: SpatialGridManager;
|
|
105
|
-
|
|
202
|
+
/** Level-local Y where the rendered wall mesh begins. */
|
|
203
|
+
export declare function getWallBaseElevationForNodes(wall: WallNode, nodes: Record<string, AnyNode>): number;
|
|
204
|
+
/**
|
|
205
|
+
* Effective (extruded) height of a wall resolved from a nodes record:
|
|
206
|
+
* {@link resolveWallEffectiveHeight} over the covering-clamped plane top
|
|
207
|
+
* (`getWallPlaneTop`) and the singleton manager's slab election — so the
|
|
208
|
+
* value always agrees with the rendered wall. One shared resolver for the
|
|
209
|
+
* editor overlays (measurement label, action menu, side handles) that used
|
|
210
|
+
* to copy this derivation locally.
|
|
211
|
+
*/
|
|
212
|
+
export declare function getWallEffectiveHeightForNodes(wall: WallNode, nodes: Record<string, AnyNode>): number;
|
|
106
213
|
//# sourceMappingURL=spatial-grid-manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spatial-grid-manager.d.ts","sourceRoot":"","sources":["../../../src/hooks/spatial-grid/spatial-grid-manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"spatial-grid-manager.d.ts","sourceRoot":"","sources":["../../../src/hooks/spatial-grid/spatial-grid-manager.ts"],"names":[],"mappings":"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"}
|