@pascal-app/viewer 0.8.0 → 0.9.2
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/components/error-boundary.d.ts +6 -0
- package/dist/components/error-boundary.d.ts.map +1 -1
- package/dist/components/error-boundary.js +6 -0
- package/dist/components/renderers/node-renderer.d.ts +6 -2
- package/dist/components/renderers/node-renderer.d.ts.map +1 -1
- package/dist/components/renderers/node-renderer.js +41 -22
- package/dist/components/renderers/parametric-node-renderer.d.ts +5 -0
- package/dist/components/renderers/parametric-node-renderer.d.ts.map +1 -0
- package/dist/components/renderers/parametric-node-renderer.js +37 -0
- package/dist/components/renderers/scene-renderer.d.ts +1 -1
- package/dist/components/renderers/scene-renderer.d.ts.map +1 -1
- package/dist/components/viewer/bvh-ecctrl.d.ts +77 -0
- package/dist/components/viewer/bvh-ecctrl.d.ts.map +1 -0
- package/dist/components/viewer/bvh-ecctrl.js +552 -0
- package/dist/components/viewer/frame-limiter.d.ts.map +1 -1
- package/dist/components/viewer/frame-limiter.js +39 -4
- package/dist/components/viewer/glb-interactive.d.ts +41 -0
- package/dist/components/viewer/glb-interactive.d.ts.map +1 -0
- package/dist/components/viewer/glb-interactive.js +394 -0
- package/dist/components/viewer/glb-reference-nodes.d.ts +29 -0
- package/dist/components/viewer/glb-reference-nodes.d.ts.map +1 -0
- package/dist/components/viewer/glb-reference-nodes.js +80 -0
- package/dist/components/viewer/glb-replace-instances.d.ts +18 -0
- package/dist/components/viewer/glb-replace-instances.d.ts.map +1 -0
- package/dist/components/viewer/glb-replace-instances.js +61 -0
- package/dist/components/viewer/glb-scene.d.ts +54 -0
- package/dist/components/viewer/glb-scene.d.ts.map +1 -0
- package/dist/components/viewer/glb-scene.js +920 -0
- package/dist/components/viewer/glb-walkthrough-controller.d.ts +12 -0
- package/dist/components/viewer/glb-walkthrough-controller.d.ts.map +1 -0
- package/dist/components/viewer/glb-walkthrough-controller.js +357 -0
- package/dist/components/viewer/index.d.ts +56 -3
- package/dist/components/viewer/index.d.ts.map +1 -1
- package/dist/components/viewer/index.js +280 -65
- package/dist/components/viewer/lights.d.ts +1 -1
- package/dist/components/viewer/lights.d.ts.map +1 -1
- package/dist/components/viewer/lights.js +201 -43
- package/dist/components/viewer/perf-monitor.d.ts +1 -1
- package/dist/components/viewer/perf-monitor.d.ts.map +1 -1
- package/dist/components/viewer/perf-monitor.js +115 -12
- package/dist/components/viewer/post-processing.d.ts +7 -1
- package/dist/components/viewer/post-processing.d.ts.map +1 -1
- package/dist/components/viewer/post-processing.js +395 -63
- package/dist/components/viewer/registered-systems.d.ts +12 -0
- package/dist/components/viewer/registered-systems.d.ts.map +1 -0
- package/dist/components/viewer/registered-systems.js +49 -0
- package/dist/components/viewer/scene-bvh.d.ts +18 -0
- package/dist/components/viewer/scene-bvh.d.ts.map +1 -0
- package/dist/components/viewer/scene-bvh.js +97 -0
- package/dist/components/viewer/scene-bvh.test.d.ts +2 -0
- package/dist/components/viewer/scene-bvh.test.d.ts.map +1 -0
- package/dist/components/viewer/scene-bvh.test.js +13 -0
- package/dist/components/viewer/scene-environment.d.ts +2 -0
- package/dist/components/viewer/scene-environment.d.ts.map +1 -0
- package/dist/components/viewer/scene-environment.js +79 -0
- package/dist/components/viewer/selection-manager.d.ts +1 -1
- package/dist/components/viewer/selection-manager.d.ts.map +1 -1
- package/dist/components/viewer/selection-manager.js +37 -14
- package/dist/components/viewer/viewer-camera.d.ts +1 -1
- package/dist/components/viewer/viewer-camera.d.ts.map +1 -1
- package/dist/components/viewer/walkthrough-controls.d.ts +2 -1
- package/dist/components/viewer/walkthrough-controls.d.ts.map +1 -1
- package/dist/components/viewer/walkthrough-controls.js +20 -0
- package/dist/hooks/use-gltf-ktx2.d.ts.map +1 -1
- package/dist/hooks/use-gltf-ktx2.js +3 -22
- package/dist/hooks/use-node-events.d.ts +6 -74
- package/dist/hooks/use-node-events.d.ts.map +1 -1
- package/dist/hooks/use-node-events.js +28 -8
- package/dist/index.d.ts +48 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +82 -4
- package/dist/lib/backdrop.d.ts +33 -0
- package/dist/lib/backdrop.d.ts.map +1 -0
- package/dist/lib/backdrop.js +92 -0
- package/dist/lib/box-uv.d.ts +13 -0
- package/dist/lib/box-uv.d.ts.map +1 -0
- package/dist/lib/box-uv.js +32 -0
- package/dist/lib/csg-utils.d.ts +10 -0
- package/dist/lib/csg-utils.d.ts.map +1 -0
- package/dist/lib/csg-utils.js +93 -0
- package/dist/lib/csg-utils.test.d.ts +2 -0
- package/dist/lib/csg-utils.test.d.ts.map +1 -0
- package/dist/lib/csg-utils.test.js +45 -0
- package/dist/lib/drawable-geometry.d.ts +21 -0
- package/dist/lib/drawable-geometry.d.ts.map +1 -0
- package/dist/lib/drawable-geometry.js +22 -0
- package/dist/lib/edge-style.d.ts +4 -0
- package/dist/lib/edge-style.d.ts.map +1 -0
- package/dist/lib/edge-style.js +31 -0
- package/dist/lib/gpu-perf.d.ts +4 -0
- package/dist/lib/gpu-perf.d.ts.map +1 -0
- package/dist/lib/gpu-perf.js +23 -0
- package/dist/lib/ink-edges.d.ts +9 -0
- package/dist/lib/ink-edges.d.ts.map +1 -0
- package/dist/lib/ink-edges.js +49 -0
- package/dist/lib/isolation.d.ts +39 -0
- package/dist/lib/isolation.d.ts.map +1 -0
- package/dist/lib/isolation.js +103 -0
- package/dist/lib/ktx2-loader.d.ts +43 -0
- package/dist/lib/ktx2-loader.d.ts.map +1 -0
- package/dist/lib/ktx2-loader.js +136 -0
- package/dist/lib/layers.d.ts +28 -0
- package/dist/lib/layers.d.ts.map +1 -1
- package/dist/lib/layers.js +28 -0
- package/dist/lib/materials.d.ts +38 -15
- package/dist/lib/materials.d.ts.map +1 -1
- package/dist/lib/materials.js +364 -72
- package/dist/lib/merged-outline-node.d.ts.map +1 -1
- package/dist/lib/merged-outline-node.js +7 -0
- package/dist/lib/polygon-union.d.ts +4 -0
- package/dist/lib/polygon-union.d.ts.map +1 -0
- package/dist/lib/polygon-union.js +289 -0
- package/dist/lib/polygon-union.test.d.ts +2 -0
- package/dist/lib/polygon-union.test.d.ts.map +1 -0
- package/dist/lib/polygon-union.test.js +105 -0
- package/dist/lib/scene-themes.d.ts +30 -0
- package/dist/lib/scene-themes.d.ts.map +1 -0
- package/dist/lib/scene-themes.js +202 -0
- package/dist/lib/shadow-only.d.ts +4 -0
- package/dist/lib/shadow-only.d.ts.map +1 -0
- package/dist/lib/shadow-only.js +36 -0
- package/dist/lib/tsl-compat.d.ts +12 -0
- package/dist/lib/tsl-compat.d.ts.map +1 -0
- package/dist/lib/tsl-compat.js +13 -0
- package/dist/store/use-viewer.d.ts +92 -12
- package/dist/store/use-viewer.d.ts.map +1 -1
- package/dist/store/use-viewer.js +201 -6
- package/dist/store/use-viewer.test.d.ts +2 -0
- package/dist/store/use-viewer.test.d.ts.map +1 -0
- package/dist/store/use-viewer.test.js +42 -0
- package/dist/systems/ceiling/ceiling-system.d.ts +6 -2
- package/dist/systems/ceiling/ceiling-system.d.ts.map +1 -1
- package/dist/systems/ceiling/ceiling-system.js +66 -13
- package/dist/systems/door/door-animation.test.d.ts +2 -0
- package/dist/systems/door/door-animation.test.d.ts.map +1 -0
- package/dist/systems/door/door-animation.test.js +51 -0
- package/dist/systems/door/door-floor-alignment.test.d.ts +2 -0
- package/dist/systems/door/door-floor-alignment.test.d.ts.map +1 -0
- package/dist/systems/door/door-floor-alignment.test.js +50 -0
- package/dist/systems/door/door-system.d.ts +24 -0
- package/dist/systems/door/door-system.d.ts.map +1 -1
- package/dist/systems/door/door-system.js +864 -180
- package/dist/systems/elevator/elevator-interaction-system.d.ts +2 -0
- package/dist/systems/elevator/elevator-interaction-system.d.ts.map +1 -0
- package/dist/systems/elevator/elevator-interaction-system.js +62 -0
- package/dist/systems/fence/fence-system.d.ts +20 -0
- package/dist/systems/fence/fence-system.d.ts.map +1 -1
- package/dist/systems/fence/fence-system.js +229 -57
- package/dist/systems/floor-elevation/floor-elevation-system.d.ts +20 -0
- package/dist/systems/floor-elevation/floor-elevation-system.d.ts.map +1 -0
- package/dist/systems/floor-elevation/floor-elevation-system.js +78 -0
- package/dist/systems/geometry/geometry-system.d.ts +41 -0
- package/dist/systems/geometry/geometry-system.d.ts.map +1 -0
- package/dist/systems/geometry/geometry-system.js +348 -0
- package/dist/systems/geometry/geometry-system.test.d.ts +2 -0
- package/dist/systems/geometry/geometry-system.test.d.ts.map +1 -0
- package/dist/systems/geometry/geometry-system.test.js +30 -0
- package/dist/systems/interactive/control-widget.d.ts +10 -0
- package/dist/systems/interactive/control-widget.d.ts.map +1 -0
- package/dist/systems/interactive/control-widget.js +35 -0
- package/dist/systems/interactive/interactive-system.d.ts +1 -1
- package/dist/systems/interactive/interactive-system.d.ts.map +1 -1
- package/dist/systems/interactive/interactive-system.js +55 -56
- package/dist/systems/item/item-system.d.ts +7 -0
- package/dist/systems/item/item-system.d.ts.map +1 -1
- package/dist/systems/item/item-system.js +28 -17
- package/dist/systems/item-light/item-light-system.d.ts +1 -1
- package/dist/systems/item-light/item-light-system.d.ts.map +1 -1
- package/dist/systems/item-light/item-light-system.js +18 -5
- package/dist/systems/level/level-system.d.ts.map +1 -1
- package/dist/systems/level/level-system.js +28 -4
- package/dist/systems/level/level-utils.d.ts +0 -3
- package/dist/systems/level/level-utils.d.ts.map +1 -1
- package/dist/systems/level/level-utils.js +2 -41
- package/dist/systems/roof/roof-materials.d.ts +3 -2
- package/dist/systems/roof/roof-materials.d.ts.map +1 -1
- package/dist/systems/roof/roof-materials.js +59 -14
- package/dist/systems/roof/roof-system.d.ts +46 -6
- package/dist/systems/roof/roof-system.d.ts.map +1 -1
- package/dist/systems/roof/roof-system.js +1365 -170
- package/dist/systems/slab/slab-system.d.ts +5 -3
- package/dist/systems/slab/slab-system.d.ts.map +1 -1
- package/dist/systems/slab/slab-system.js +204 -68
- package/dist/systems/slab/slab-system.test.d.ts +2 -0
- package/dist/systems/slab/slab-system.test.d.ts.map +1 -0
- package/dist/systems/slab/slab-system.test.js +63 -0
- package/dist/systems/stair/stair-materials.d.ts +4 -3
- package/dist/systems/stair/stair-materials.d.ts.map +1 -1
- package/dist/systems/stair/stair-materials.js +30 -15
- package/dist/systems/stair/stair-system.d.ts.map +1 -1
- package/dist/systems/stair/stair-system.js +55 -63
- package/dist/systems/surface-hole-geometry.d.ts +3 -0
- package/dist/systems/surface-hole-geometry.d.ts.map +1 -0
- package/dist/systems/surface-hole-geometry.js +4 -0
- package/dist/systems/wall/opening-cutout-geometry.d.ts +31 -0
- package/dist/systems/wall/opening-cutout-geometry.d.ts.map +1 -0
- package/dist/systems/wall/opening-cutout-geometry.js +167 -0
- package/dist/systems/wall/opening-cutout-geometry.test.d.ts +2 -0
- package/dist/systems/wall/opening-cutout-geometry.test.d.ts.map +1 -0
- package/dist/systems/wall/opening-cutout-geometry.test.js +172 -0
- package/dist/systems/wall/wall-cutout.d.ts.map +1 -1
- package/dist/systems/wall/wall-cutout.js +62 -17
- package/dist/systems/wall/wall-materials.d.ts +12 -7
- package/dist/systems/wall/wall-materials.d.ts.map +1 -1
- package/dist/systems/wall/wall-materials.js +279 -46
- package/dist/systems/wall/wall-opening-cutout.test.d.ts +2 -0
- package/dist/systems/wall/wall-opening-cutout.test.d.ts.map +1 -0
- package/dist/systems/wall/wall-opening-cutout.test.js +59 -0
- package/dist/systems/wall/wall-support-extension.test.d.ts +2 -0
- package/dist/systems/wall/wall-support-extension.test.d.ts.map +1 -0
- package/dist/systems/wall/wall-support-extension.test.js +48 -0
- package/dist/systems/wall/wall-system.d.ts +2 -2
- package/dist/systems/wall/wall-system.d.ts.map +1 -1
- package/dist/systems/wall/wall-system.js +493 -193
- package/dist/systems/window/window-animation-system.d.ts +12 -0
- package/dist/systems/window/window-animation-system.d.ts.map +1 -1
- package/dist/systems/window/window-animation-system.js +16 -5
- package/dist/systems/window/window-system.d.ts +7 -0
- package/dist/systems/window/window-system.d.ts.map +1 -1
- package/dist/systems/window/window-system.js +308 -18
- package/package.json +5 -6
- package/dist/components/renderers/building/building-renderer.d.ts +0 -5
- package/dist/components/renderers/building/building-renderer.d.ts.map +0 -1
- package/dist/components/renderers/building/building-renderer.js +0 -11
- package/dist/components/renderers/ceiling/ceiling-renderer.d.ts +0 -5
- package/dist/components/renderers/ceiling/ceiling-renderer.d.ts.map +0 -1
- package/dist/components/renderers/ceiling/ceiling-renderer.js +0 -58
- package/dist/components/renderers/column/column-renderer.d.ts +0 -5
- package/dist/components/renderers/column/column-renderer.d.ts.map +0 -1
- package/dist/components/renderers/column/column-renderer.js +0 -597
- package/dist/components/renderers/door/door-renderer.d.ts +0 -5
- package/dist/components/renderers/door/door-renderer.d.ts.map +0 -1
- package/dist/components/renderers/door/door-renderer.js +0 -16
- package/dist/components/renderers/fence/fence-renderer.d.ts +0 -5
- package/dist/components/renderers/fence/fence-renderer.d.ts.map +0 -1
- package/dist/components/renderers/fence/fence-renderer.js +0 -15
- package/dist/components/renderers/guide/guide-renderer.d.ts +0 -5
- package/dist/components/renderers/guide/guide-renderer.d.ts.map +0 -1
- package/dist/components/renderers/guide/guide-renderer.js +0 -38
- package/dist/components/renderers/item/item-renderer.d.ts +0 -5
- package/dist/components/renderers/item/item-renderer.d.ts.map +0 -1
- package/dist/components/renderers/item/item-renderer.js +0 -172
- package/dist/components/renderers/level/level-renderer.d.ts +0 -5
- package/dist/components/renderers/level/level-renderer.d.ts.map +0 -1
- package/dist/components/renderers/level/level-renderer.js +0 -11
- package/dist/components/renderers/roof/roof-materials.d.ts +0 -4
- package/dist/components/renderers/roof/roof-materials.d.ts.map +0 -1
- package/dist/components/renderers/roof/roof-materials.js +0 -16
- package/dist/components/renderers/roof/roof-renderer.d.ts +0 -5
- package/dist/components/renderers/roof/roof-renderer.d.ts.map +0 -1
- package/dist/components/renderers/roof/roof-renderer.js +0 -32
- package/dist/components/renderers/roof-segment/roof-segment-renderer.d.ts +0 -5
- package/dist/components/renderers/roof-segment/roof-segment-renderer.d.ts.map +0 -1
- package/dist/components/renderers/roof-segment/roof-segment-renderer.js +0 -40
- package/dist/components/renderers/scan/scan-renderer.d.ts +0 -5
- package/dist/components/renderers/scan/scan-renderer.d.ts.map +0 -1
- package/dist/components/renderers/scan/scan-renderer.js +0 -54
- package/dist/components/renderers/site/site-renderer.d.ts +0 -5
- package/dist/components/renderers/site/site-renderer.d.ts.map +0 -1
- package/dist/components/renderers/site/site-renderer.js +0 -106
- package/dist/components/renderers/slab/slab-renderer.d.ts +0 -5
- package/dist/components/renderers/slab/slab-renderer.d.ts.map +0 -1
- package/dist/components/renderers/slab/slab-renderer.js +0 -58
- package/dist/components/renderers/spawn/spawn-renderer.d.ts +0 -5
- package/dist/components/renderers/spawn/spawn-renderer.d.ts.map +0 -1
- package/dist/components/renderers/spawn/spawn-renderer.js +0 -32
- package/dist/components/renderers/stair/stair-renderer.d.ts +0 -5
- package/dist/components/renderers/stair/stair-renderer.d.ts.map +0 -1
- package/dist/components/renderers/stair/stair-renderer.js +0 -603
- package/dist/components/renderers/stair-segment/stair-segment-renderer.d.ts +0 -5
- package/dist/components/renderers/stair-segment/stair-segment-renderer.d.ts.map +0 -1
- package/dist/components/renderers/stair-segment/stair-segment-renderer.js +0 -51
- package/dist/components/renderers/wall/wall-renderer.d.ts +0 -5
- package/dist/components/renderers/wall/wall-renderer.d.ts.map +0 -1
- package/dist/components/renderers/wall/wall-renderer.js +0 -16
- package/dist/components/renderers/window/window-renderer.d.ts +0 -5
- package/dist/components/renderers/window/window-renderer.d.ts.map +0 -1
- package/dist/components/renderers/window/window-renderer.js +0 -21
- package/dist/components/renderers/zone/zone-renderer.d.ts +0 -5
- package/dist/components/renderers/zone/zone-renderer.d.ts.map +0 -1
- package/dist/components/renderers/zone/zone-renderer.js +0 -181
- package/dist/components/viewer/ground-occluder.d.ts +0 -2
- package/dist/components/viewer/ground-occluder.d.ts.map +0 -1
- package/dist/components/viewer/ground-occluder.js +0 -79
|
@@ -5,6 +5,11 @@ interface ErrorBoundaryProps {
|
|
|
5
5
|
fallback: ReactNode;
|
|
6
6
|
/** Tag for log lines so we can tell which boundary swallowed an error. */
|
|
7
7
|
scope?: string;
|
|
8
|
+
/** Notified once per caught error — lets the host schedule a retry. */
|
|
9
|
+
onError?: (error: Error) => void;
|
|
10
|
+
/** Changing this key clears a caught error and re-mounts `children` — the
|
|
11
|
+
* retry half of `onError` (bump it after clearing whatever failed). */
|
|
12
|
+
resetKey?: unknown;
|
|
8
13
|
}
|
|
9
14
|
export declare class ErrorBoundary extends Component<ErrorBoundaryProps, {
|
|
10
15
|
hasError: boolean;
|
|
@@ -16,6 +21,7 @@ export declare class ErrorBoundary extends Component<ErrorBoundaryProps, {
|
|
|
16
21
|
hasError: boolean;
|
|
17
22
|
};
|
|
18
23
|
componentDidCatch(error: Error, info: ErrorInfo): void;
|
|
24
|
+
componentDidUpdate(prevProps: ErrorBoundaryProps): void;
|
|
19
25
|
render(): ReactNode;
|
|
20
26
|
}
|
|
21
27
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-boundary.d.ts","sourceRoot":"","sources":["../../src/components/error-boundary.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,SAAS,CAAA;IACnB,QAAQ,EAAE,SAAS,CAAA;IACnB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"error-boundary.d.ts","sourceRoot":"","sources":["../../src/components/error-boundary.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,SAAS,CAAA;IACnB,QAAQ,EAAE,SAAS,CAAA;IACnB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,uEAAuE;IACvE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IAChC;2EACuE;IACvE,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,qBAAa,aAAc,SAAQ,SAAS,CAAC,kBAAkB,EAAE;IAAE,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC;IACrF,KAAK;;MAAsB;IAC3B,MAAM,CAAC,wBAAwB;;;IAG/B,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS;IAQ/C,kBAAkB,CAAC,SAAS,EAAE,kBAAkB;IAKhD,MAAM;CAGP"}
|
|
@@ -6,6 +6,12 @@ export class ErrorBoundary extends Component {
|
|
|
6
6
|
}
|
|
7
7
|
componentDidCatch(error, info) {
|
|
8
8
|
console.error(`[viewer] ErrorBoundary caught${this.props.scope ? ` (${this.props.scope})` : ''}:`, error, info.componentStack);
|
|
9
|
+
this.props.onError?.(error);
|
|
10
|
+
}
|
|
11
|
+
componentDidUpdate(prevProps) {
|
|
12
|
+
if (this.state.hasError && prevProps.resetKey !== this.props.resetKey) {
|
|
13
|
+
this.setState({ hasError: false });
|
|
14
|
+
}
|
|
9
15
|
}
|
|
10
16
|
render() {
|
|
11
17
|
return this.state.hasError ? this.props.fallback : this.props.children;
|
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
import { type AnyNode } from '@pascal-app/core';
|
|
1
|
+
import { type AnyNode, type RendererSource } from '@pascal-app/core';
|
|
2
|
+
import { type ComponentType } from 'react';
|
|
3
|
+
export declare function getRegistryRenderer(source: RendererSource<AnyNode>): ComponentType<{
|
|
4
|
+
node: AnyNode;
|
|
5
|
+
}> | null;
|
|
2
6
|
export declare const NodeRenderer: ({ nodeId }: {
|
|
3
7
|
nodeId: AnyNode["id"];
|
|
4
|
-
}) => import("react
|
|
8
|
+
}) => import("react").JSX.Element | null;
|
|
5
9
|
//# sourceMappingURL=node-renderer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-renderer.d.ts","sourceRoot":"","sources":["../../../src/components/renderers/node-renderer.tsx"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"node-renderer.d.ts","sourceRoot":"","sources":["../../../src/components/renderers/node-renderer.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,OAAO,EAGZ,KAAK,cAAc,EAEpB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,KAAK,aAAa,EAAkB,MAAM,OAAO,CAAA;AAO1D,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,GAC9B,aAAa,CAAC;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,GAAG,IAAI,CASzC;AAED,eAAO,MAAM,YAAY,GAAI,YAAY;IAAE,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,uCA0BjE,CAAA"}
|
|
@@ -1,28 +1,47 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { jsx as _jsx
|
|
3
|
-
import { useScene } from '@pascal-app/core';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
import { WindowRenderer } from './window/window-renderer';
|
|
22
|
-
import { ZoneRenderer } from './zone/zone-renderer';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { isNodeKindEnabled, nodeRegistry, useScene, } from '@pascal-app/core';
|
|
4
|
+
import { lazy, Suspense } from 'react';
|
|
5
|
+
import { ParametricNodeRenderer } from './parametric-node-renderer';
|
|
6
|
+
// Cache lazy components by their RendererSource so React.lazy isn't re-invoked
|
|
7
|
+
// on every render — that would create a new Suspense boundary each time.
|
|
8
|
+
const lazyCache = new WeakMap();
|
|
9
|
+
export function getRegistryRenderer(source) {
|
|
10
|
+
const cached = lazyCache.get(source);
|
|
11
|
+
if (cached)
|
|
12
|
+
return cached;
|
|
13
|
+
// GLB / instanced-GLB sources lower onto built-in renderers landed in
|
|
14
|
+
// Phase 5 — for now only parametric (lazy module) sources are honored.
|
|
15
|
+
if (source.kind !== 'parametric')
|
|
16
|
+
return null;
|
|
17
|
+
const Comp = lazy(source.module);
|
|
18
|
+
lazyCache.set(source, Comp);
|
|
19
|
+
return Comp;
|
|
20
|
+
}
|
|
23
21
|
export const NodeRenderer = ({ nodeId }) => {
|
|
24
22
|
const node = useScene((state) => state.nodes[nodeId]);
|
|
23
|
+
const installedPlugins = useScene((state) => state.installedPlugins);
|
|
25
24
|
if (!node)
|
|
26
25
|
return null;
|
|
27
|
-
|
|
26
|
+
if (!isNodeKindEnabled(node.type, installedPlugins))
|
|
27
|
+
return null;
|
|
28
|
+
const def = nodeRegistry.get(node.type);
|
|
29
|
+
if (!def)
|
|
30
|
+
return null;
|
|
31
|
+
// Two-checkbox dispatch (see wiki/architecture/node-definitions.md):
|
|
32
|
+
// 1. Custom renderer — JSX-side composition for kinds that need GLB,
|
|
33
|
+
// drei, <Html>, instancing, shader materials.
|
|
34
|
+
// 2. Else, if the kind ships `def.geometry`, the generic empty-group
|
|
35
|
+
// <ParametricNodeRenderer> is filled by <GeometrySystem> from the
|
|
36
|
+
// pure builder.
|
|
37
|
+
if (def.renderer) {
|
|
38
|
+
const Renderer = getRegistryRenderer(def.renderer);
|
|
39
|
+
if (!Renderer)
|
|
40
|
+
return null;
|
|
41
|
+
return (_jsx(Suspense, { fallback: null, children: _jsx(Renderer, { node: node }) }));
|
|
42
|
+
}
|
|
43
|
+
if (def.geometry) {
|
|
44
|
+
return _jsx(ParametricNodeRenderer, { node: node });
|
|
45
|
+
}
|
|
46
|
+
return null;
|
|
28
47
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parametric-node-renderer.d.ts","sourceRoot":"","sources":["../../../src/components/renderers/parametric-node-renderer.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,OAAO,EAMb,MAAM,kBAAkB,CAAA;AAwCzB,eAAO,MAAM,sBAAsB,GAAI,UAAU;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,gCAgDjE,CAAA"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { useLiveNodeOverrides, useLiveTransforms, useRegistry, useScene, } from '@pascal-app/core';
|
|
4
|
+
import { useLayoutEffect, useRef } from 'react';
|
|
5
|
+
import { useNodeEvents } from '../../hooks/use-node-events';
|
|
6
|
+
import { NodeRenderer } from './node-renderer';
|
|
7
|
+
export const ParametricNodeRenderer = ({ node }) => {
|
|
8
|
+
const ref = useRef(null);
|
|
9
|
+
const n = node;
|
|
10
|
+
const handlers = useNodeEvents(node, node.type);
|
|
11
|
+
const liveTransform = useLiveTransforms((s) => s.get(node.id));
|
|
12
|
+
// Registry arrow handles (rotation gizmo, position-affecting patches)
|
|
13
|
+
// write to `useLiveNodeOverrides`. GeometrySystem already merges that
|
|
14
|
+
// for the mesh body; we also fold it into the outer group's
|
|
15
|
+
// position/rotation so the rotation arrow shows live motion instead
|
|
16
|
+
// of snapping only on commit. Per-node subscription so unrelated
|
|
17
|
+
// override writes don't re-render the whole tree.
|
|
18
|
+
const liveOverride = useLiveNodeOverrides((s) => s.overrides.get(node.id));
|
|
19
|
+
const overrideRotation = liveOverride?.rotation;
|
|
20
|
+
const overridePosition = liveOverride?.position;
|
|
21
|
+
useRegistry(node.id, node.type, ref);
|
|
22
|
+
useLayoutEffect(() => {
|
|
23
|
+
useScene.getState().markDirty(node.id);
|
|
24
|
+
}, [node.id]);
|
|
25
|
+
const position = liveTransform?.position ?? overridePosition ?? n.position ?? [0, 0, 0];
|
|
26
|
+
const rawRotation = overrideRotation ?? n.rotation;
|
|
27
|
+
const baseRotation = typeof rawRotation === 'number' ? [0, rawRotation, 0] : (rawRotation ?? [0, 0, 0]);
|
|
28
|
+
// The live transform carries only the plan-view Y rotation; keep the
|
|
29
|
+
// node's own X/Z so 3D-oriented kinds (e.g. a duct-fitting riser at
|
|
30
|
+
// X=π/2) don't visually flatten to horizontal mid-drag. Matches the
|
|
31
|
+
// move tool's commit, which also replaces only the Y component.
|
|
32
|
+
const rotation = liveTransform?.rotation !== undefined
|
|
33
|
+
? [baseRotation[0], liveTransform.rotation, baseRotation[2]]
|
|
34
|
+
: baseRotation;
|
|
35
|
+
return (_jsx("group", { position: position, ref: ref, rotation: rotation, visible: n.visible !== false, ...handlers, children: Array.isArray(n.children) &&
|
|
36
|
+
n.children.map((childId) => (_jsx(NodeRenderer, { nodeId: childId }, `${node.id}:${childId}`))) }));
|
|
37
|
+
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const SceneRenderer: () => import("react
|
|
1
|
+
export declare const SceneRenderer: () => import("react").JSX.Element;
|
|
2
2
|
//# sourceMappingURL=scene-renderer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scene-renderer.d.ts","sourceRoot":"","sources":["../../../src/components/renderers/scene-renderer.tsx"],"names":[],"mappings":"AAKA,eAAO,MAAM,aAAa
|
|
1
|
+
{"version":3,"file":"scene-renderer.d.ts","sourceRoot":"","sources":["../../../src/components/renderers/scene-renderer.tsx"],"names":[],"mappings":"AAKA,eAAO,MAAM,aAAa,mCAUzB,CAAA"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import '@react-three/fiber';
|
|
2
|
+
import { type ThreeElements } from '@react-three/fiber';
|
|
3
|
+
import type { ReactNode } from 'react';
|
|
4
|
+
import * as THREE from 'three';
|
|
5
|
+
export type MovementInput = {
|
|
6
|
+
forward?: boolean;
|
|
7
|
+
backward?: boolean;
|
|
8
|
+
leftward?: boolean;
|
|
9
|
+
rightward?: boolean;
|
|
10
|
+
joystick?: {
|
|
11
|
+
x: number;
|
|
12
|
+
y: number;
|
|
13
|
+
};
|
|
14
|
+
run?: boolean;
|
|
15
|
+
jump?: boolean;
|
|
16
|
+
};
|
|
17
|
+
export type CharacterAnimationStatus = 'IDLE' | 'WALK' | 'RUN' | 'JUMP_START' | 'JUMP_IDLE' | 'JUMP_FALL' | 'JUMP_LAND';
|
|
18
|
+
export type FloatCheckType = 'RAYCAST' | 'SHAPECAST' | 'BOTH';
|
|
19
|
+
export interface BVHEcctrlApi {
|
|
20
|
+
group: THREE.Group | null;
|
|
21
|
+
model: THREE.Group | null;
|
|
22
|
+
resetLinVel: () => void;
|
|
23
|
+
addLinVel: (v: THREE.Vector3) => void;
|
|
24
|
+
setLinVel: (v: THREE.Vector3) => void;
|
|
25
|
+
setMovement: (input: MovementInput) => void;
|
|
26
|
+
}
|
|
27
|
+
export interface EcctrlProps extends Omit<ThreeElements['group'], 'ref'> {
|
|
28
|
+
children?: ReactNode;
|
|
29
|
+
debug?: boolean;
|
|
30
|
+
colliderMeshes?: THREE.Mesh[];
|
|
31
|
+
colliderCapsuleArgs?: [
|
|
32
|
+
radius: number,
|
|
33
|
+
length: number,
|
|
34
|
+
capSegments: number,
|
|
35
|
+
radialSegments: number
|
|
36
|
+
];
|
|
37
|
+
paused?: boolean;
|
|
38
|
+
delay?: number;
|
|
39
|
+
gravity?: number;
|
|
40
|
+
fallGravityFactor?: number;
|
|
41
|
+
maxFallSpeed?: number;
|
|
42
|
+
mass?: number;
|
|
43
|
+
sleepTimeout?: number;
|
|
44
|
+
slowMotionFactor?: number;
|
|
45
|
+
turnSpeed?: number;
|
|
46
|
+
maxWalkSpeed?: number;
|
|
47
|
+
maxRunSpeed?: number;
|
|
48
|
+
acceleration?: number;
|
|
49
|
+
deceleration?: number;
|
|
50
|
+
counterAccFactor?: number;
|
|
51
|
+
airDragFactor?: number;
|
|
52
|
+
jumpVel?: number;
|
|
53
|
+
floatCheckType?: FloatCheckType;
|
|
54
|
+
maxSlope?: number;
|
|
55
|
+
floatHeight?: number;
|
|
56
|
+
floatPullBackHeight?: number;
|
|
57
|
+
floatSensorRadius?: number;
|
|
58
|
+
floatSpringK?: number;
|
|
59
|
+
floatDampingC?: number;
|
|
60
|
+
collisionCheckIteration?: number;
|
|
61
|
+
collisionPushBackDamping?: number;
|
|
62
|
+
collisionPushBackThreshold?: number;
|
|
63
|
+
}
|
|
64
|
+
type CharacterStatus = {
|
|
65
|
+
position: THREE.Vector3;
|
|
66
|
+
linvel: THREE.Vector3;
|
|
67
|
+
quaternion: THREE.Quaternion;
|
|
68
|
+
inputDir: THREE.Vector3;
|
|
69
|
+
movingDir: THREE.Vector3;
|
|
70
|
+
isOnGround: boolean;
|
|
71
|
+
isOnMovingPlatform: boolean;
|
|
72
|
+
animationStatus: CharacterAnimationStatus;
|
|
73
|
+
};
|
|
74
|
+
export declare const characterStatus: CharacterStatus;
|
|
75
|
+
declare const BVHEcctrl: import("react").ForwardRefExoticComponent<EcctrlProps & import("react").RefAttributes<BVHEcctrlApi>>;
|
|
76
|
+
export default BVHEcctrl;
|
|
77
|
+
//# sourceMappingURL=bvh-ecctrl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bvh-ecctrl.d.ts","sourceRoot":"","sources":["../../../src/components/viewer/bvh-ecctrl.tsx"],"names":[],"mappings":"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"}
|