@pascal-app/viewer 1.0.3 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/capture/capture-runtime.js +1 -1
- package/dist/components/error-boundary.d.ts.map +1 -1
- package/dist/components/renderers/node-renderer.d.ts +1 -1
- package/dist/components/renderers/node-renderer.d.ts.map +1 -1
- package/dist/components/renderers/node-renderer.js +12 -4
- package/dist/components/renderers/parametric-node-renderer.d.ts.map +1 -1
- package/dist/components/viewer/bvh-ecctrl.d.ts.map +1 -1
- package/dist/components/viewer/frame-limiter.d.ts +1 -0
- package/dist/components/viewer/frame-limiter.d.ts.map +1 -1
- package/dist/components/viewer/frame-limiter.js +22 -3
- package/dist/components/viewer/glb-interactive.d.ts +25 -1
- package/dist/components/viewer/glb-interactive.d.ts.map +1 -1
- package/dist/components/viewer/glb-interactive.js +253 -86
- package/dist/components/viewer/glb-mechanisms.d.ts +10 -0
- package/dist/components/viewer/glb-mechanisms.d.ts.map +1 -0
- package/dist/components/viewer/glb-mechanisms.js +19 -0
- package/dist/components/viewer/glb-reference-nodes.js +1 -1
- package/dist/components/viewer/glb-replace-instances.js +1 -1
- package/dist/components/viewer/glb-scene.d.ts +45 -27
- package/dist/components/viewer/glb-scene.d.ts.map +1 -1
- package/dist/components/viewer/glb-scene.js +421 -508
- package/dist/components/viewer/glb-walkthrough-controller.d.ts +1 -1
- package/dist/components/viewer/glb-walkthrough-controller.d.ts.map +1 -1
- package/dist/components/viewer/glb-walkthrough-controller.js +13 -2
- package/dist/components/viewer/index.d.ts +24 -1
- package/dist/components/viewer/index.d.ts.map +1 -1
- package/dist/components/viewer/index.js +111 -37
- package/dist/components/viewer/lights.d.ts.map +1 -1
- package/dist/components/viewer/lights.js +113 -22
- package/dist/components/viewer/perf-monitor.d.ts.map +1 -1
- package/dist/components/viewer/perf-monitor.js +6 -0
- package/dist/components/viewer/perf-panel.d.ts.map +1 -1
- package/dist/components/viewer/perf-panel.js +1 -1
- package/dist/components/viewer/post-processing.d.ts.map +1 -1
- package/dist/components/viewer/post-processing.js +104 -36
- package/dist/components/viewer/registered-systems.d.ts.map +1 -1
- package/dist/components/viewer/registered-systems.js +17 -3
- package/dist/components/viewer/render-error.d.ts +18 -0
- package/dist/components/viewer/render-error.d.ts.map +1 -0
- package/dist/components/viewer/render-error.js +29 -0
- package/dist/components/viewer/scene-bvh.d.ts.map +1 -1
- package/dist/components/viewer/scene-bvh.js +1 -1
- package/dist/components/viewer/scene-environment.d.ts.map +1 -1
- package/dist/components/viewer/scene-environment.js +31 -11
- package/dist/components/viewer/scene-ground-replacement.d.ts +6 -0
- package/dist/components/viewer/scene-ground-replacement.d.ts.map +1 -1
- package/dist/components/viewer/scene-ground-replacement.js +15 -0
- package/dist/components/viewer/selection-manager.d.ts.map +1 -1
- package/dist/components/viewer/selection-manager.js +25 -7
- package/dist/components/viewer/underground-ambiance.d.ts +9 -0
- package/dist/components/viewer/underground-ambiance.d.ts.map +1 -0
- package/dist/components/viewer/underground-ambiance.js +105 -0
- package/dist/components/viewer/viewer-camera.d.ts +4 -0
- package/dist/components/viewer/viewer-camera.d.ts.map +1 -1
- package/dist/components/viewer/viewer-camera.js +12 -2
- package/dist/components/viewer/viewer-presentations.d.ts.map +1 -1
- package/dist/hooks/use-gltf-ktx2.d.ts.map +1 -1
- package/dist/hooks/use-gltf-ktx2.js +2 -0
- package/dist/hooks/use-node-events.d.ts.map +1 -1
- package/dist/index.d.ts +36 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +34 -19
- package/dist/lib/asset-url.d.ts.map +1 -1
- package/dist/lib/asset-url.js +7 -1
- package/dist/lib/backdrop.d.ts +17 -0
- package/dist/lib/backdrop.d.ts.map +1 -1
- package/dist/lib/backdrop.js +18 -1
- package/dist/lib/construction-dust.d.ts +57 -0
- package/dist/lib/construction-dust.d.ts.map +1 -0
- package/dist/lib/construction-dust.js +187 -0
- package/dist/lib/csg-utils.js +1 -1
- package/dist/lib/display-state.d.ts +25 -0
- package/dist/lib/display-state.d.ts.map +1 -0
- package/dist/lib/display-state.js +1 -0
- package/dist/lib/foundation-materials.d.ts +26 -0
- package/dist/lib/foundation-materials.d.ts.map +1 -0
- package/dist/lib/foundation-materials.js +65 -0
- package/dist/lib/gltf-unlit.d.ts +10 -0
- package/dist/lib/gltf-unlit.d.ts.map +1 -0
- package/dist/lib/gltf-unlit.js +23 -0
- package/dist/lib/ground-window.d.ts +33 -0
- package/dist/lib/ground-window.d.ts.map +1 -0
- package/dist/lib/ground-window.js +114 -0
- package/dist/lib/hero-pose.d.ts +13 -3
- package/dist/lib/hero-pose.d.ts.map +1 -1
- package/dist/lib/hero-pose.js +72 -5
- package/dist/lib/ink-edges.d.ts +6 -3
- package/dist/lib/ink-edges.d.ts.map +1 -1
- package/dist/lib/ink-edges.js +17 -7
- package/dist/lib/key-light-override.d.ts +11 -0
- package/dist/lib/key-light-override.d.ts.map +1 -0
- package/dist/lib/key-light-override.js +14 -0
- package/dist/lib/ktx2-loader.d.ts +7 -0
- package/dist/lib/ktx2-loader.d.ts.map +1 -1
- package/dist/lib/ktx2-loader.js +35 -0
- package/dist/lib/layer-pass.d.ts.map +1 -1
- package/dist/lib/layers.d.ts +11 -7
- package/dist/lib/layers.d.ts.map +1 -1
- package/dist/lib/layers.js +16 -6
- package/dist/lib/live-frame-hold.d.ts +14 -0
- package/dist/lib/live-frame-hold.d.ts.map +1 -0
- package/dist/lib/live-frame-hold.js +28 -0
- package/dist/lib/materials.d.ts +19 -7
- package/dist/lib/materials.d.ts.map +1 -1
- package/dist/lib/materials.js +65 -9
- package/dist/lib/merged-outline-node.d.ts +5 -0
- package/dist/lib/merged-outline-node.d.ts.map +1 -1
- package/dist/lib/merged-outline-node.js +80 -2
- package/dist/lib/node-top-surface-height.d.ts +6 -0
- package/dist/lib/node-top-surface-height.d.ts.map +1 -0
- package/dist/lib/node-top-surface-height.js +74 -0
- package/dist/lib/perf-probe-state.d.ts +39 -0
- package/dist/lib/perf-probe-state.d.ts.map +1 -0
- package/dist/lib/perf-probe-state.js +17 -0
- package/dist/lib/pointer-events.d.ts +26 -2
- package/dist/lib/pointer-events.d.ts.map +1 -1
- package/dist/lib/pointer-events.js +99 -12
- package/dist/lib/post-processing-resources.d.ts.map +1 -1
- package/dist/lib/procedural-emission.d.ts +7 -0
- package/dist/lib/procedural-emission.d.ts.map +1 -0
- package/dist/lib/procedural-emission.js +54 -0
- package/dist/lib/reveal-candidates.d.ts +80 -0
- package/dist/lib/reveal-candidates.d.ts.map +1 -0
- package/dist/lib/reveal-candidates.js +524 -0
- package/dist/lib/reveal-ghost.d.ts +9 -0
- package/dist/lib/reveal-ghost.d.ts.map +1 -0
- package/dist/lib/reveal-ghost.js +62 -0
- package/dist/lib/reveal-pending.d.ts +12 -0
- package/dist/lib/reveal-pending.d.ts.map +1 -0
- package/dist/lib/reveal-pending.js +12 -0
- package/dist/lib/reveal-pose.d.ts +70 -0
- package/dist/lib/reveal-pose.d.ts.map +1 -0
- package/dist/lib/reveal-pose.js +248 -0
- package/dist/lib/reveal-schedule.d.ts +208 -0
- package/dist/lib/reveal-schedule.d.ts.map +1 -0
- package/dist/lib/reveal-schedule.js +410 -0
- package/dist/lib/reveal-texture-scale.d.ts +5 -0
- package/dist/lib/reveal-texture-scale.d.ts.map +1 -0
- package/dist/lib/reveal-texture-scale.js +113 -0
- package/dist/lib/reveal-windows.d.ts +23 -0
- package/dist/lib/reveal-windows.d.ts.map +1 -0
- package/dist/lib/reveal-windows.js +31 -0
- package/dist/lib/reveal-wipe.d.ts +71 -0
- package/dist/lib/reveal-wipe.d.ts.map +1 -0
- package/dist/lib/reveal-wipe.js +105 -0
- package/dist/lib/scene-pass-mrt.d.ts +12 -0
- package/dist/lib/scene-pass-mrt.d.ts.map +1 -0
- package/dist/lib/scene-pass-mrt.js +23 -0
- package/dist/lib/scene-support-height.d.ts +4 -0
- package/dist/lib/scene-support-height.d.ts.map +1 -0
- package/dist/lib/scene-support-height.js +34 -0
- package/dist/lib/scene-themes.d.ts +30 -8
- package/dist/lib/scene-themes.d.ts.map +1 -1
- package/dist/lib/scene-themes.js +36 -0
- package/dist/lib/scene-visibility.d.ts +17 -1
- package/dist/lib/scene-visibility.d.ts.map +1 -1
- package/dist/lib/scene-visibility.js +53 -3
- package/dist/lib/scripted-opening.d.ts +11 -0
- package/dist/lib/scripted-opening.d.ts.map +1 -0
- package/dist/lib/scripted-opening.js +20 -0
- package/dist/lib/site-surfaces.d.ts +32 -0
- package/dist/lib/site-surfaces.d.ts.map +1 -0
- package/dist/lib/site-surfaces.js +70 -0
- package/dist/lib/snapshot-pipeline.d.ts +34 -3
- package/dist/lib/snapshot-pipeline.d.ts.map +1 -1
- package/dist/lib/snapshot-pipeline.js +247 -117
- package/dist/lib/terrain-perimeter-fill.d.ts.map +1 -1
- package/dist/lib/terrain-perimeter-fill.js +22 -14
- package/dist/lib/tsl-compat.d.ts +2 -2
- package/dist/lib/tsl-compat.d.ts.map +1 -1
- package/dist/lib/underground-ambiance.d.ts +168 -0
- package/dist/lib/underground-ambiance.d.ts.map +1 -0
- package/dist/lib/underground-ambiance.js +334 -0
- package/dist/lib/zone-geometry.d.ts +11 -0
- package/dist/lib/zone-geometry.d.ts.map +1 -0
- package/dist/lib/zone-geometry.js +46 -0
- package/dist/store/use-item-light-pool.d.ts +14 -10
- package/dist/store/use-item-light-pool.d.ts.map +1 -1
- package/dist/store/use-item-light-pool.js +52 -26
- package/dist/store/use-viewer.d.ts +194 -26
- package/dist/store/use-viewer.d.ts.map +1 -1
- package/dist/store/use-viewer.js +164 -21
- package/dist/systems/ceiling/ceiling-system.d.ts +15 -1
- package/dist/systems/ceiling/ceiling-system.d.ts.map +1 -1
- package/dist/systems/ceiling/ceiling-system.js +88 -6
- package/dist/systems/construction-reveal/construction-dust.d.ts +16 -0
- package/dist/systems/construction-reveal/construction-dust.d.ts.map +1 -0
- package/dist/systems/construction-reveal/construction-dust.js +92 -0
- package/dist/systems/construction-reveal/construction-reveal.d.ts +276 -0
- package/dist/systems/construction-reveal/construction-reveal.d.ts.map +1 -0
- package/dist/systems/construction-reveal/construction-reveal.js +2383 -0
- package/dist/systems/construction-reveal/dust-material.d.ts +10 -0
- package/dist/systems/construction-reveal/dust-material.d.ts.map +1 -0
- package/dist/systems/construction-reveal/dust-material.js +17 -0
- package/dist/systems/construction-reveal/ghost-dress.d.ts +10 -0
- package/dist/systems/construction-reveal/ghost-dress.d.ts.map +1 -0
- package/dist/systems/construction-reveal/ghost-dress.js +24 -0
- package/dist/systems/door/door-system.d.ts.map +1 -1
- package/dist/systems/door/door-system.js +55 -17
- package/dist/systems/elevator/elevator-interaction-system.d.ts +7 -0
- package/dist/systems/elevator/elevator-interaction-system.d.ts.map +1 -1
- package/dist/systems/elevator/elevator-interaction-system.js +18 -1
- package/dist/systems/floor-elevation/floor-elevation-system.d.ts +3 -1
- package/dist/systems/floor-elevation/floor-elevation-system.d.ts.map +1 -1
- package/dist/systems/floor-elevation/floor-elevation-system.js +33 -5
- package/dist/systems/geometry/geometry-system.d.ts.map +1 -1
- package/dist/systems/geometry/geometry-system.js +71 -11
- package/dist/systems/interactive/control-widget.d.ts.map +1 -1
- package/dist/systems/interactive/interactive-system.d.ts.map +1 -1
- package/dist/systems/interactive/interactive-system.js +52 -17
- package/dist/systems/interactive/procedural-controls.d.ts +13 -0
- package/dist/systems/interactive/procedural-controls.d.ts.map +1 -0
- package/dist/systems/interactive/procedural-controls.js +17 -0
- package/dist/systems/interactive/scripted-clips.d.ts +19 -0
- package/dist/systems/interactive/scripted-clips.d.ts.map +1 -0
- package/dist/systems/interactive/scripted-clips.js +134 -0
- package/dist/systems/item/item-system.d.ts.map +1 -1
- package/dist/systems/item/item-system.js +9 -3
- package/dist/systems/item/object-cut-invalidation.d.ts +3 -0
- package/dist/systems/item/object-cut-invalidation.d.ts.map +1 -0
- package/dist/systems/item/object-cut-invalidation.js +68 -0
- 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 +48 -53
- package/dist/systems/level/level-hold.d.ts +4 -0
- package/dist/systems/level/level-hold.d.ts.map +1 -0
- package/dist/systems/level/level-hold.js +14 -0
- package/dist/systems/level/level-system.d.ts.map +1 -1
- package/dist/systems/level/level-system.js +19 -6
- package/dist/systems/level/level-utils.d.ts +19 -6
- package/dist/systems/level/level-utils.d.ts.map +1 -1
- package/dist/systems/level/level-utils.js +68 -9
- package/dist/systems/level/shadow-only-levels.d.ts +9 -0
- package/dist/systems/level/shadow-only-levels.d.ts.map +1 -0
- package/dist/systems/level/shadow-only-levels.js +7 -0
- package/dist/systems/roof/__fixtures__/roof-plane-cases.d.ts +103 -0
- package/dist/systems/roof/__fixtures__/roof-plane-cases.d.ts.map +1 -0
- package/dist/systems/roof/__fixtures__/roof-plane-cases.js +317 -0
- package/dist/systems/roof/roof-materials.d.ts +16 -2
- package/dist/systems/roof/roof-materials.d.ts.map +1 -1
- package/dist/systems/roof/roof-materials.js +64 -31
- package/dist/systems/roof/roof-system.d.ts +21 -4
- package/dist/systems/roof/roof-system.d.ts.map +1 -1
- package/dist/systems/roof/roof-system.js +374 -49
- package/dist/systems/slab/slab-system.d.ts +1 -1
- package/dist/systems/slab/slab-system.d.ts.map +1 -1
- package/dist/systems/slab/slab-system.js +49 -19
- package/dist/systems/stair/stair-system.d.ts.map +1 -1
- package/dist/systems/stair/stair-system.js +133 -354
- package/dist/systems/wall/wall-cutout-cache.d.ts +39 -3
- package/dist/systems/wall/wall-cutout-cache.d.ts.map +1 -1
- package/dist/systems/wall/wall-cutout-cache.js +141 -19
- package/dist/systems/wall/wall-cutout.d.ts +6 -0
- package/dist/systems/wall/wall-cutout.d.ts.map +1 -1
- package/dist/systems/wall/wall-cutout.js +42 -28
- package/dist/systems/wall/wall-finish-data.d.ts +22 -0
- package/dist/systems/wall/wall-finish-data.d.ts.map +1 -0
- package/dist/systems/wall/wall-finish-data.js +17 -0
- package/dist/systems/wall/wall-material-variant.d.ts.map +1 -1
- package/dist/systems/wall/wall-materials.d.ts +9 -4
- package/dist/systems/wall/wall-materials.d.ts.map +1 -1
- package/dist/systems/wall/wall-materials.js +135 -153
- package/dist/systems/wall/wall-placeholder-sweep.d.ts.map +1 -1
- package/dist/systems/wall/wall-system.d.ts +33 -2
- package/dist/systems/wall/wall-system.d.ts.map +1 -1
- package/dist/systems/wall/wall-system.js +621 -159
- package/dist/systems/window/corner-frame.d.ts +10 -0
- package/dist/systems/window/corner-frame.d.ts.map +1 -0
- package/dist/systems/window/corner-frame.js +17 -0
- package/dist/systems/window/window-system.d.ts +1 -1
- package/dist/systems/window/window-system.d.ts.map +1 -1
- package/dist/systems/window/window-system.js +71 -27
- package/package.json +10 -10
- package/dist/systems/fence/fence-system.d.ts +0 -22
- package/dist/systems/fence/fence-system.d.ts.map +0 -1
- package/dist/systems/fence/fence-system.js +0 -357
|
@@ -1,30 +1,56 @@
|
|
|
1
|
+
import { sceneRegistry, useInteractive, } from '@pascal-app/core';
|
|
1
2
|
import { create } from 'zustand';
|
|
3
|
+
export function catalogLightSource(key, nodeId, effect, interactive, localScale) {
|
|
4
|
+
const toggleIndex = interactive.controls.findIndex((control) => control.kind === 'toggle');
|
|
5
|
+
const sliderIndex = interactive.controls.findIndex((control) => control.kind === 'slider');
|
|
6
|
+
const slider = sliderIndex >= 0 ? interactive.controls[sliderIndex] : null;
|
|
7
|
+
return {
|
|
8
|
+
key,
|
|
9
|
+
nodeId,
|
|
10
|
+
color: effect.color,
|
|
11
|
+
distance: effect.distance ?? 0,
|
|
12
|
+
getWorldPosition: (out) => {
|
|
13
|
+
const object = sceneRegistry.nodes.get(nodeId);
|
|
14
|
+
if (!object)
|
|
15
|
+
return false;
|
|
16
|
+
if (localScale) {
|
|
17
|
+
out.set(effect.offset[0] * localScale[0], effect.offset[1] * localScale[1], effect.offset[2] * localScale[2]);
|
|
18
|
+
object.localToWorld(out);
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
object.getWorldPosition(out);
|
|
22
|
+
out.set(out.x + effect.offset[0], out.y + effect.offset[1], out.z + effect.offset[2]);
|
|
23
|
+
return true;
|
|
24
|
+
},
|
|
25
|
+
getIntensity: () => {
|
|
26
|
+
const values = useInteractive.getState().items[nodeId]?.controlValues;
|
|
27
|
+
if (toggleIndex >= 0 && !values?.[toggleIndex])
|
|
28
|
+
return effect.intensityRange[0];
|
|
29
|
+
const raw = slider ? (values?.[sliderIndex] ?? slider.min) : 1;
|
|
30
|
+
const fraction = slider && slider.max > slider.min ? (raw - slider.min) / (slider.max - slider.min) : 1;
|
|
31
|
+
return (effect.intensityRange[0] + (effect.intensityRange[1] - effect.intensityRange[0]) * fraction);
|
|
32
|
+
},
|
|
33
|
+
isEligible: () => {
|
|
34
|
+
const values = useInteractive.getState().items[nodeId]?.controlValues;
|
|
35
|
+
return toggleIndex < 0 || Boolean(values?.[toggleIndex]);
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
}
|
|
2
39
|
export const useItemLightPool = create((set) => ({
|
|
3
40
|
registrations: new Map(),
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
next.set(key, registration);
|
|
20
|
-
return { registrations: next };
|
|
21
|
-
});
|
|
22
|
-
},
|
|
23
|
-
unregister: (key) => {
|
|
24
|
-
set((s) => {
|
|
25
|
-
const next = new Map(s.registrations);
|
|
26
|
-
next.delete(key);
|
|
27
|
-
return { registrations: next };
|
|
28
|
-
});
|
|
29
|
-
},
|
|
41
|
+
bakedCanvases: new Set(),
|
|
42
|
+
setBakedCanvas: (scene, active) => set((state) => {
|
|
43
|
+
const bakedCanvases = new Set(state.bakedCanvases);
|
|
44
|
+
if (active)
|
|
45
|
+
bakedCanvases.add(scene);
|
|
46
|
+
else
|
|
47
|
+
bakedCanvases.delete(scene);
|
|
48
|
+
return { bakedCanvases };
|
|
49
|
+
}),
|
|
50
|
+
register: (source) => set((state) => ({ registrations: new Map(state.registrations).set(source.key, source) })),
|
|
51
|
+
unregister: (key) => set((state) => {
|
|
52
|
+
const registrations = new Map(state.registrations);
|
|
53
|
+
registrations.delete(key);
|
|
54
|
+
return { registrations };
|
|
55
|
+
}),
|
|
30
56
|
}));
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import type { AnyNode, BaseNode, BuildingNode, LevelNode, UnitNode, ZoneNode } from '@pascal-app/core';
|
|
1
|
+
import type { AnyNode, BaseNode, BuildingNode, GroundBox, LevelGradeStanding, LevelNode, SitePresentation, UnitNode, ZoneNode } from '@pascal-app/core';
|
|
2
2
|
import type { Object3D } from 'three';
|
|
3
3
|
import type { EdgeMode } from '../lib/edge-style';
|
|
4
4
|
import type { ColorPreset, RenderShading } from '../lib/materials';
|
|
5
|
+
import { type SceneTheme } from '../lib/scene-themes';
|
|
5
6
|
export type RenderContext = 'editor' | 'viewer';
|
|
6
7
|
export type MetricNotation = 'meters' | 'millimeters';
|
|
7
8
|
export type WallMode = 'up' | 'cutaway' | 'down' | 'translucent';
|
|
@@ -15,6 +16,14 @@ type Outliner = {
|
|
|
15
16
|
selectedObjects: Object3D[];
|
|
16
17
|
hoveredObjects: Object3D[];
|
|
17
18
|
};
|
|
19
|
+
type LookDefaults = {
|
|
20
|
+
theme: string;
|
|
21
|
+
edges: EdgeMode;
|
|
22
|
+
shadows: boolean;
|
|
23
|
+
};
|
|
24
|
+
type LocalLook = Partial<LookDefaults> & {
|
|
25
|
+
shadingByContext?: Partial<Record<RenderContext, RenderShading>>;
|
|
26
|
+
};
|
|
18
27
|
type ViewerState = {
|
|
19
28
|
selection: SelectionPath;
|
|
20
29
|
focusedUnitId: UnitNode['id'] | null;
|
|
@@ -25,6 +34,11 @@ type ViewerState = {
|
|
|
25
34
|
* selection paths without changing the local user's editable selection. */
|
|
26
35
|
externalSelectedIds: BaseNode['id'][];
|
|
27
36
|
setExternalSelectedIds: (ids: BaseNode['id'][]) => void;
|
|
37
|
+
/** Elements a chat context chip points at (Point and ask), drawn in the `point` outline style.
|
|
38
|
+
* Its own slot, so a teammate's highlight in `externalSelectedIds` is never clobbered. */
|
|
39
|
+
pointedIds: BaseNode['id'][];
|
|
40
|
+
/** `null` clears it. */
|
|
41
|
+
setPointedIds: (ids: BaseNode['id'][] | null) => void;
|
|
28
42
|
hoverHighlightMode: string;
|
|
29
43
|
setHoverHighlightMode: (mode: string) => void;
|
|
30
44
|
hoveredId: AnyNode['id'] | ZoneNode['id'] | null;
|
|
@@ -32,9 +46,21 @@ type ViewerState = {
|
|
|
32
46
|
cameraMode: 'perspective' | 'orthographic';
|
|
33
47
|
setCameraMode: (mode: 'perspective' | 'orthographic') => void;
|
|
34
48
|
sceneTheme: string;
|
|
49
|
+
sceneAppearance: SceneTheme;
|
|
50
|
+
lookDefaults: LookDefaults;
|
|
51
|
+
projectPresentation?: SitePresentation;
|
|
52
|
+
setProjectPresentation: (presentation: SitePresentation | undefined) => void;
|
|
53
|
+
resetProjectLook: () => void;
|
|
54
|
+
previewSceneTheme: string | null;
|
|
55
|
+
contextDefaultShading: RenderShading;
|
|
56
|
+
/** The selected project/global theme before a temporary preview. */
|
|
57
|
+
savedSceneTheme: string;
|
|
35
58
|
setSceneTheme: (id: string) => void;
|
|
59
|
+
/** Show a theme without saving it (e.g. a project's own mood); `null`
|
|
60
|
+
* returns to the saved one. */
|
|
61
|
+
showSceneTheme: (id: string | null) => void;
|
|
36
62
|
renderContext: RenderContext;
|
|
37
|
-
setRenderContext: (context: RenderContext) => void;
|
|
63
|
+
setRenderContext: (context: RenderContext, defaultShading?: RenderShading) => void;
|
|
38
64
|
/** True during a GLB bake/export pass. Renderers that normally draw via a
|
|
39
65
|
* collective InstancedMesh (`def.system`) and mount only an invisible per-node
|
|
40
66
|
* proxy can watch this to emit real, visible geometry so the exporter — which
|
|
@@ -73,6 +99,87 @@ type ViewerState = {
|
|
|
73
99
|
unitExplicit: boolean;
|
|
74
100
|
levelMode: 'stacked' | 'exploded' | 'solo' | 'manual';
|
|
75
101
|
setLevelMode: (mode: 'stacked' | 'exploded' | 'solo' | 'manual') => void;
|
|
102
|
+
/**
|
|
103
|
+
* The editor's level display: stacked, with every level above the selected
|
|
104
|
+
* one hidden (the selected level and those below stay). Set by the host
|
|
105
|
+
* while editing; never persisted, so the viewer app keeps its own mode.
|
|
106
|
+
*/
|
|
107
|
+
hideLevelsAboveSelection: boolean;
|
|
108
|
+
/**
|
|
109
|
+
* The levels a construction reveal is playing on (a build, an undo, a move): each shows while its
|
|
110
|
+
* work plays, whatever the level display hides, so the animation is seen. Set by the reveal, never
|
|
111
|
+
* persisted; the author's own hiding of a level still wins.
|
|
112
|
+
*/
|
|
113
|
+
levelsRevealing: readonly string[];
|
|
114
|
+
/**
|
|
115
|
+
* The nodes a construction reveal is playing now (moving in, going out, carried, or an edit
|
|
116
|
+
* replaying): the cutaway leaves each of them, and the openings it hosts, in view while it
|
|
117
|
+
* plays, whatever the wall mode. Set by the reveal, never persisted; the person's own wall mode
|
|
118
|
+
* is not written.
|
|
119
|
+
*/
|
|
120
|
+
nodesRevealing: readonly string[];
|
|
121
|
+
/**
|
|
122
|
+
* The level shown lies below grade, the storeys above it hidden. Set by the host's level display
|
|
123
|
+
* beside `hideLevelsAboveSelection`; never persisted. Whether the ground over it is veiled also
|
|
124
|
+
* depends on `groundMode`: read both through `groundVeiled`.
|
|
125
|
+
*/
|
|
126
|
+
belowGrade: boolean;
|
|
127
|
+
/**
|
|
128
|
+
* The shown level's standing against the sculpted terrain, set beside `belowGrade`:
|
|
129
|
+
* only partly below grade, the ground veils just where it stands in the way (the ground
|
|
130
|
+
* window), not wholesale.
|
|
131
|
+
*/
|
|
132
|
+
gradeStanding: LevelGradeStanding;
|
|
133
|
+
/**
|
|
134
|
+
* The box the ground window opens for: the shown level, or the whole building when it is
|
|
135
|
+
* shown. Set by the host (never on the site phase, where the ground is the work); never
|
|
136
|
+
* persisted. `null` closes the window.
|
|
137
|
+
*/
|
|
138
|
+
groundWindowBox: GroundBox | null;
|
|
139
|
+
/** Ground stands between the eye and `groundWindowBox` now, set by the site renderer. */
|
|
140
|
+
groundWindowVeiled: boolean;
|
|
141
|
+
/** The person's choice for the ground over a level below grade. Not persisted. */
|
|
142
|
+
groundMode: GroundMode;
|
|
143
|
+
setGroundMode: (mode: GroundMode) => void;
|
|
144
|
+
/**
|
|
145
|
+
* The scene has a level below grade (the below-grade footprint is not empty): set by the site
|
|
146
|
+
* renderer. The ground materials carry the hole's mask, and the eye's fill light is mounted,
|
|
147
|
+
* from the moment this is true, so that changing floors changes uniforms and never materials
|
|
148
|
+
* or the light count; scenes without a level below grade keep plain materials. Never persisted.
|
|
149
|
+
*/
|
|
150
|
+
hasLevelBelowGrade: boolean;
|
|
151
|
+
/**
|
|
152
|
+
* The host lets the eye dive under the ground (the editor's orbit may, with the ground on Auto).
|
|
153
|
+
* The eye's fill light is mounted, from the moment this is true, so that the first crossing of the
|
|
154
|
+
* ground compiles nothing: a scene with no level below grade is dived under as well. Set by the
|
|
155
|
+
* host's camera; never persisted.
|
|
156
|
+
*/
|
|
157
|
+
diveAvailable: boolean;
|
|
158
|
+
/**
|
|
159
|
+
* The eye lies under the ground at its own position (a free orbit under the lid). Set by the
|
|
160
|
+
* viewer's underground ambiance from the camera; never persisted.
|
|
161
|
+
*/
|
|
162
|
+
eyeUnderGround: boolean;
|
|
163
|
+
/**
|
|
164
|
+
* Levels whose foundation a plugin is drawing under the ground right now (a framing plugin pours
|
|
165
|
+
* the real footing and stem from the building's record). The generic foundation derived from the
|
|
166
|
+
* walls is not drawn under these levels, so nothing is drawn twice. Written by that plugin while
|
|
167
|
+
* its meshes are mounted, empty otherwise; never persisted.
|
|
168
|
+
*/
|
|
169
|
+
pluginFoundationLevelIds: readonly string[];
|
|
170
|
+
/**
|
|
171
|
+
* The world is turned, or turning, to earth (the underground ambiance's factor is above 0).
|
|
172
|
+
* Its factor itself eases every frame and lives with the shaders, not here; this flips only at
|
|
173
|
+
* the crossing's ends. Set by the viewer's underground ambiance; never persisted.
|
|
174
|
+
*/
|
|
175
|
+
ambianceActive: boolean;
|
|
176
|
+
/**
|
|
177
|
+
* How the ground reads as a medium: the edge of the hole over a level below grade and the
|
|
178
|
+
* crossing as the eye dives under the ground. Variants the owner and the team choose from;
|
|
179
|
+
* every one is a uniform, so changing it compiles nothing. Never persisted.
|
|
180
|
+
*/
|
|
181
|
+
undergroundLook: UndergroundLook;
|
|
182
|
+
setUndergroundLook: (look: Partial<UndergroundLook>) => void;
|
|
76
183
|
wallMode: WallMode;
|
|
77
184
|
setWallMode: (mode: WallMode) => void;
|
|
78
185
|
showScans: boolean;
|
|
@@ -92,6 +199,7 @@ type ViewerState = {
|
|
|
92
199
|
projectId: string | null;
|
|
93
200
|
setProjectId: (id: string | null) => void;
|
|
94
201
|
projectPreferences: Record<string, {
|
|
202
|
+
look?: LocalLook;
|
|
95
203
|
showScans?: boolean;
|
|
96
204
|
showGuides?: boolean;
|
|
97
205
|
showGrid?: boolean;
|
|
@@ -129,28 +237,33 @@ type ViewerState = {
|
|
|
129
237
|
inputDragging: boolean;
|
|
130
238
|
setInputDragging: (dragging: boolean) => void;
|
|
131
239
|
};
|
|
132
|
-
|
|
133
|
-
|
|
240
|
+
/** The owner's pick (16 Oct): the section cut's clean edge over earth walls, and the simple fade. */
|
|
241
|
+
export declare const DEFAULT_UNDERGROUND_LOOK: UndergroundLook;
|
|
242
|
+
declare const useViewer: import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<ViewerState>, "persist" | "setState"> & {
|
|
243
|
+
setState(partial: Partial<ViewerState> | ViewerState | ((state: ViewerState) => Partial<ViewerState> | ViewerState), replace?: false | undefined): unknown;
|
|
134
244
|
setState(state: ViewerState | ((state: ViewerState) => ViewerState), replace: true): unknown;
|
|
135
245
|
persist: {
|
|
136
246
|
setOptions: (options: Partial<import("zustand/middleware").PersistOptions<ViewerState, {
|
|
137
|
-
|
|
138
|
-
levelMode: "manual" | "stacked" | "exploded" | "solo";
|
|
139
|
-
wallMode: WallMode;
|
|
140
|
-
projectPreferences: Record<string, {
|
|
141
|
-
showScans?: boolean;
|
|
142
|
-
showGuides?: boolean;
|
|
143
|
-
showGrid?: boolean;
|
|
144
|
-
showMeasurements?: boolean;
|
|
145
|
-
}>;
|
|
146
|
-
unit?: "metric" | "imperial" | undefined;
|
|
147
|
-
cameraMode: "perspective" | "orthographic";
|
|
247
|
+
cameraMode: "orthographic" | "perspective";
|
|
148
248
|
sceneTheme: string;
|
|
149
249
|
shadingByContext: Partial<Record<RenderContext, RenderShading>>;
|
|
150
250
|
textures: boolean;
|
|
151
251
|
colorPreset: ColorPreset;
|
|
152
252
|
edges: EdgeMode;
|
|
153
253
|
shadows: boolean;
|
|
254
|
+
unit?: "imperial" | "metric" | undefined;
|
|
255
|
+
metricNotation: MetricNotation;
|
|
256
|
+
levelMode: "exploded" | "manual" | "solo" | "stacked";
|
|
257
|
+
wallMode: WallMode;
|
|
258
|
+
projectPreferences: {
|
|
259
|
+
[k: string]: {
|
|
260
|
+
look?: LocalLook;
|
|
261
|
+
showScans?: boolean;
|
|
262
|
+
showGuides?: boolean;
|
|
263
|
+
showGrid?: boolean;
|
|
264
|
+
showMeasurements?: boolean;
|
|
265
|
+
};
|
|
266
|
+
};
|
|
154
267
|
}, unknown>>) => void;
|
|
155
268
|
clearStorage: () => void;
|
|
156
269
|
rehydrate: () => Promise<void> | void;
|
|
@@ -158,26 +271,81 @@ declare const useViewer: import("zustand").UseBoundStore<Omit<import("zustand").
|
|
|
158
271
|
onHydrate: (fn: (state: ViewerState) => void) => () => void;
|
|
159
272
|
onFinishHydration: (fn: (state: ViewerState) => void) => () => void;
|
|
160
273
|
getOptions: () => Partial<import("zustand/middleware").PersistOptions<ViewerState, {
|
|
161
|
-
|
|
162
|
-
levelMode: "manual" | "stacked" | "exploded" | "solo";
|
|
163
|
-
wallMode: WallMode;
|
|
164
|
-
projectPreferences: Record<string, {
|
|
165
|
-
showScans?: boolean;
|
|
166
|
-
showGuides?: boolean;
|
|
167
|
-
showGrid?: boolean;
|
|
168
|
-
showMeasurements?: boolean;
|
|
169
|
-
}>;
|
|
170
|
-
unit?: "metric" | "imperial" | undefined;
|
|
171
|
-
cameraMode: "perspective" | "orthographic";
|
|
274
|
+
cameraMode: "orthographic" | "perspective";
|
|
172
275
|
sceneTheme: string;
|
|
173
276
|
shadingByContext: Partial<Record<RenderContext, RenderShading>>;
|
|
174
277
|
textures: boolean;
|
|
175
278
|
colorPreset: ColorPreset;
|
|
176
279
|
edges: EdgeMode;
|
|
177
280
|
shadows: boolean;
|
|
281
|
+
unit?: "imperial" | "metric" | undefined;
|
|
282
|
+
metricNotation: MetricNotation;
|
|
283
|
+
levelMode: "exploded" | "manual" | "solo" | "stacked";
|
|
284
|
+
wallMode: WallMode;
|
|
285
|
+
projectPreferences: {
|
|
286
|
+
[k: string]: {
|
|
287
|
+
look?: LocalLook;
|
|
288
|
+
showScans?: boolean;
|
|
289
|
+
showGuides?: boolean;
|
|
290
|
+
showGrid?: boolean;
|
|
291
|
+
showMeasurements?: boolean;
|
|
292
|
+
};
|
|
293
|
+
};
|
|
178
294
|
}, unknown>>;
|
|
179
295
|
};
|
|
180
296
|
}>;
|
|
297
|
+
/**
|
|
298
|
+
* Over a level below grade the ground is `auto`: drawn as a faint veil, so the floor under it is
|
|
299
|
+
* seen and clicked; `solid` keeps it as it is everywhere else.
|
|
300
|
+
*/
|
|
301
|
+
export type GroundMode = 'auto' | 'solid';
|
|
302
|
+
/**
|
|
303
|
+
* The hole's edge seen from above: `noise` the eroded, scalloped border (today's), `quiet` the
|
|
304
|
+
* same with a fine, faint noise (almost straight from the default camera), `section` an
|
|
305
|
+
* architect's section cut (a constant offset of the footprint, straight edges, a flat face with a
|
|
306
|
+
* thin line at grade), `section-earth` the same outline over the earth's walls (topsoil, strata,
|
|
307
|
+
* a low crumble that is zero at the rim).
|
|
308
|
+
*/
|
|
309
|
+
export type UndergroundEdge = 'noise' | 'quiet' | 'section' | 'section-earth';
|
|
310
|
+
/** The dive under the ground: `noise` closes a noise mask over the screen, `fade` fades the whole frame at once. */
|
|
311
|
+
export type UndergroundTransition = 'noise' | 'fade';
|
|
312
|
+
export type UndergroundLook = {
|
|
313
|
+
edge: UndergroundEdge;
|
|
314
|
+
transition: UndergroundTransition;
|
|
315
|
+
};
|
|
316
|
+
/**
|
|
317
|
+
* Whether the site's ground is drawn as a veil wholesale: a level below grade is shown, the
|
|
318
|
+
* ground on auto. A level only partly below grade is the exception — there the ground window
|
|
319
|
+
* veils just the ground in the way, and the rest stays solid. The walkthrough walks on its
|
|
320
|
+
* floors: its ground is always solid, whatever level the overview had shown.
|
|
321
|
+
*/
|
|
322
|
+
export declare function groundVeiled(state: {
|
|
323
|
+
belowGrade: boolean;
|
|
324
|
+
groundMode: GroundMode;
|
|
325
|
+
gradeStanding?: LevelGradeStanding;
|
|
326
|
+
walkthroughMode?: boolean;
|
|
327
|
+
}): boolean;
|
|
328
|
+
/** Whether any ground is veiled now, wholesale or through the eye's window. */
|
|
329
|
+
export declare function anyGroundVeiled(state: {
|
|
330
|
+
belowGrade: boolean;
|
|
331
|
+
groundMode: GroundMode;
|
|
332
|
+
gradeStanding?: LevelGradeStanding;
|
|
333
|
+
groundWindowVeiled: boolean;
|
|
334
|
+
walkthroughMode?: boolean;
|
|
335
|
+
}): boolean;
|
|
336
|
+
/**
|
|
337
|
+
* Whether the site draws its own ground. `showGround: false` says other geometry supplies the
|
|
338
|
+
* ground (an authored landscape), which stands on a level above a basement; while a level below
|
|
339
|
+
* grade is shown, the level display hides the storeys above it (`belowGrade`) and the landscape
|
|
340
|
+
* with them. The site's ground stands in then, with its veil, hole and pit, so the basement is
|
|
341
|
+
* seen through an opening and not through nothing. With a level at or above grade shown, the
|
|
342
|
+
* landscape is shown and `showGround` is the author's.
|
|
343
|
+
*/
|
|
344
|
+
export declare function siteGroundShown(site: {
|
|
345
|
+
showGround?: boolean;
|
|
346
|
+
}, state: {
|
|
347
|
+
belowGrade: boolean;
|
|
348
|
+
}): boolean;
|
|
181
349
|
/** Apply an authoritative country code (e.g. IP-derived by the host app) as
|
|
182
350
|
* the unit default. Stronger signal than the timezone heuristic used at store
|
|
183
351
|
* creation, but still a default: it never overrides an explicit user choice
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-viewer.d.ts","sourceRoot":"","sources":["../../src/store/use-viewer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,QAAQ,EACT,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAIrC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"use-viewer.d.ts","sourceRoot":"","sources":["../../src/store/use-viewer.ts"],"names":[],"mappings":"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"}
|