@reearth/core 0.0.6 → 0.0.7-alpha.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.
Files changed (49) hide show
  1. package/dist/core.js +8312 -8318
  2. package/dist/core.umd.cjs +75 -75
  3. package/dist/index.d.ts +183 -184
  4. package/package.json +1 -1
  5. package/src/Map/ClusteredLayers/index.tsx +2 -2
  6. package/src/Map/Layer/index.tsx +3 -3
  7. package/src/Map/Layers/index.tsx +2 -2
  8. package/src/Map/hooks.ts +0 -4
  9. package/src/Map/index.tsx +8 -5
  10. package/src/Map/types/index.ts +5 -182
  11. package/src/Map/types/viewerProperty.ts +216 -0
  12. package/src/Map/useTimelineManager.ts +2 -2
  13. package/src/Map/utils.ts +1 -43
  14. package/src/Visualizer/coreContext.tsx +1 -8
  15. package/src/Visualizer/hooks.ts +6 -75
  16. package/src/Visualizer/index.stories.tsx +4 -48
  17. package/src/Visualizer/index.tsx +8 -6
  18. package/src/Visualizer/useCoreAPI.ts +30 -0
  19. package/src/engines/Cesium/Feature/Ellipse/index.stories.tsx +1 -1
  20. package/src/engines/Cesium/Feature/Frustum/index.stories.tsx +1 -1
  21. package/src/engines/Cesium/Feature/Model/index.stories.tsx +1 -1
  22. package/src/engines/Cesium/Feature/Model/index.tsx +10 -9
  23. package/src/engines/Cesium/Feature/Polygon/index.stories.tsx +8 -6
  24. package/src/engines/Cesium/Feature/Raster/index.stories.tsx +2 -2
  25. package/src/engines/Cesium/Feature/Resource/index.stories.tsx +1 -1
  26. package/src/engines/Cesium/Feature/Tileset/hooks.ts +12 -11
  27. package/src/engines/Cesium/Feature/Tileset/index.stories.tsx +1 -1
  28. package/src/engines/Cesium/Feature/Tileset/index.tsx +4 -4
  29. package/src/engines/Cesium/Feature/index.tsx +5 -4
  30. package/src/engines/Cesium/Feature/utils.tsx +2 -2
  31. package/src/engines/Cesium/core/Globe.tsx +36 -68
  32. package/src/engines/Cesium/core/Imagery.test.ts +9 -9
  33. package/src/engines/Cesium/core/Imagery.tsx +17 -19
  34. package/src/engines/Cesium/core/Indicator/Indicator.tsx +8 -8
  35. package/src/engines/Cesium/hooks/useCamera.ts +144 -0
  36. package/src/engines/Cesium/{cameraLimiter.ts → hooks/useCameraLimiter.ts} +22 -45
  37. package/src/engines/Cesium/{useEngineRef.test.tsx → hooks/useEngineRef.test.tsx} +14 -10
  38. package/src/engines/Cesium/{useEngineRef.ts → hooks/useEngineRef.ts} +17 -17
  39. package/src/engines/Cesium/hooks/useExplicitRender.ts +65 -0
  40. package/src/engines/Cesium/hooks/useLayerDragDrop.ts +77 -0
  41. package/src/engines/Cesium/{VertexTerrainElevationMaterial.ts → hooks/useOverrideGlobeShader/VertexTerrainElevationMaterial.ts} +3 -2
  42. package/src/engines/Cesium/{useOverrideGlobeShader.ts → hooks/useOverrideGlobeShader/useOverrideGlobeShader.ts} +19 -16
  43. package/src/engines/Cesium/hooks/useViewerProperty.ts +90 -0
  44. package/src/engines/Cesium/hooks.ts +117 -353
  45. package/src/engines/Cesium/index.stories.tsx +1 -1
  46. package/src/engines/Cesium/index.tsx +48 -50
  47. package/src/engines/index.ts +1 -1
  48. /package/src/engines/Cesium/{JapanSeaLevelEllipsoid.ts → hooks/useOverrideGlobeShader/JapanSeaLevelEllipsoid.ts} +0 -0
  49. /package/src/engines/Cesium/{vertexTerrainElevationMaterial.glsl → hooks/useOverrideGlobeShader/vertexTerrainElevationMaterial.glsl} +0 -0
@@ -1,4 +1,3 @@
1
- import { clone } from "lodash-es";
2
1
  import { Ref, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from "react";
3
2
 
4
3
  import type { ComputedFeature, Feature, LatLng, SelectedFeatureInfo } from "../mantle";
@@ -7,7 +6,6 @@ import type {
7
6
  LayerSelectionReason,
8
7
  Camera,
9
8
  ComputedLayer,
10
- SceneProperty,
11
9
  LayerEditEvent,
12
10
  CursorType,
13
11
  LayerVisibilityEvent,
@@ -15,21 +13,22 @@ import type {
15
13
  LayerSelectWithRectStart,
16
14
  LayerSelectWithRectMove,
17
15
  LayerSelectWithRectEnd,
16
+ ViewerProperty,
18
17
  } from "../Map";
19
- import { useOverriddenProperty } from "../Map";
20
18
  import { SketchEventCallback, SketchEventProps, SketchType } from "../Map/Sketch/types";
21
19
  import { TimelineManagerRef } from "../Map/useTimelineManager";
22
20
 
23
21
  import type { InteractionModeType } from "./interactionMode";
24
22
  import { INTERACTION_MODES } from "./interactionMode";
23
+ import useCoreAPI from "./useCoreAPI";
25
24
  import useViewport from "./useViewport";
26
25
 
27
26
  export default function useHooks(
28
27
  {
29
28
  camera: initialCamera,
30
29
  interactionMode: initialInteractionMode,
31
- sceneProperty,
32
30
  zoomedLayerId,
31
+ viewerProperty,
33
32
  onLayerSelect,
34
33
  onCameraChange,
35
34
  onInteractionModeChange,
@@ -39,8 +38,8 @@ export default function useHooks(
39
38
  }: {
40
39
  camera?: Camera;
41
40
  interactionMode?: InteractionModeType;
42
- sceneProperty?: SceneProperty;
43
41
  zoomedLayerId?: string;
42
+ viewerProperty?: ViewerProperty;
44
43
  onLayerSelect?: (
45
44
  layerId: string | undefined,
46
45
  layer: (() => Promise<ComputedLayer | undefined>) | undefined,
@@ -111,70 +110,6 @@ export default function useHooks(
111
110
 
112
111
  const timelineManagerRef: TimelineManagerRef = useRef();
113
112
 
114
- // scene
115
- const [overriddenSceneProperty, originalOverrideSceneProperty] =
116
- useOverriddenProperty(sceneProperty);
117
-
118
- const overrideSceneProperty = useCallback(
119
- (pluginId: string, property: SceneProperty) => {
120
- if (property.timeline) {
121
- const filteredTimeline = clone(property.timeline);
122
- delete filteredTimeline.visible;
123
- if (Object.keys(filteredTimeline).length > 0) {
124
- if (
125
- filteredTimeline.current !== undefined ||
126
- filteredTimeline.start !== undefined ||
127
- filteredTimeline.stop !== undefined
128
- ) {
129
- timelineManagerRef?.current?.commit({
130
- cmd: "SET_TIME",
131
- payload: {
132
- start:
133
- filteredTimeline.start ?? timelineManagerRef?.current?.computedTimeline.start,
134
- stop: filteredTimeline.stop ?? timelineManagerRef?.current?.computedTimeline.stop,
135
- current:
136
- filteredTimeline.current ?? timelineManagerRef?.current?.computedTimeline.current,
137
- },
138
- committer: {
139
- source: "overrideSceneProperty",
140
- id: pluginId,
141
- },
142
- });
143
- }
144
- if (
145
- filteredTimeline.multiplier !== undefined ||
146
- filteredTimeline.stepType !== undefined ||
147
- filteredTimeline.rangeType !== undefined
148
- ) {
149
- timelineManagerRef?.current?.commit({
150
- cmd: "SET_OPTIONS",
151
- payload: {
152
- stepType: filteredTimeline.stepType,
153
- multiplier: filteredTimeline.multiplier,
154
- rangeType: filteredTimeline.rangeType,
155
- },
156
- committer: {
157
- source: "overrideSceneProperty",
158
- id: pluginId,
159
- },
160
- });
161
- }
162
- if (filteredTimeline.animation !== undefined) {
163
- timelineManagerRef?.current?.commit({
164
- cmd: filteredTimeline.animation ? "PLAY" : "PAUSE",
165
- committer: {
166
- source: "overrideSceneProperty",
167
- id: pluginId,
168
- },
169
- });
170
- }
171
- }
172
- }
173
- originalOverrideSceneProperty(pluginId, property);
174
- },
175
- [timelineManagerRef, originalOverrideSceneProperty],
176
- );
177
-
178
113
  // camera
179
114
  const [camera, changeCamera] = useValue(initialCamera, onCameraChange);
180
115
 
@@ -306,8 +241,6 @@ export default function useHooks(
306
241
  selectedLayer,
307
242
  selectedComputedFeature,
308
243
  viewport,
309
- overriddenSceneProperty,
310
- overrideSceneProperty,
311
244
  handleCameraForceHorizontalRollChange,
312
245
  handleInteractionModeChange: changeInteractionMode,
313
246
  onSketchPluginFeatureCreate,
@@ -324,8 +257,6 @@ export default function useHooks(
324
257
  selectedLayer,
325
258
  selectedComputedFeature,
326
259
  viewport,
327
- overriddenSceneProperty,
328
- overrideSceneProperty,
329
260
  changeInteractionMode,
330
261
  handleCameraForceHorizontalRollChange,
331
262
  onLayerEdit,
@@ -349,20 +280,20 @@ export default function useHooks(
349
280
  [],
350
281
  );
351
282
 
283
+ useCoreAPI({ viewerProperty });
284
+
352
285
  return {
353
286
  mapRef,
354
287
  wrapperRef,
355
288
  selectedFeature,
356
289
  camera,
357
290
  featureFlags,
358
- overriddenSceneProperty,
359
291
  isLayerDragging,
360
292
  timelineManagerRef,
361
293
  cursor,
362
294
  cameraForceHorizontalRoll,
363
295
  coreContextValue,
364
296
  containerStyle,
365
- overrideSceneProperty,
366
297
  handleLayerSelect,
367
298
  handleLayerDrag,
368
299
  handleLayerDrop,
@@ -15,11 +15,11 @@ export const Cesium: Story = {
15
15
  args: {
16
16
  ready: true,
17
17
  engine: "cesium",
18
- sceneProperty: {
18
+ viewerProperty: {
19
19
  tiles: [
20
20
  {
21
21
  id: "default",
22
- tile_type: "default",
22
+ type: "default",
23
23
  },
24
24
  ],
25
25
  },
@@ -72,57 +72,13 @@ export const API: Story = {
72
72
  args: {
73
73
  ready: true,
74
74
  engine: "cesium",
75
- sceneProperty: {
75
+ viewerProperty: {
76
76
  tiles: [
77
77
  {
78
78
  id: "default",
79
- tile_type: "default",
79
+ type: "default",
80
80
  },
81
81
  ],
82
82
  },
83
83
  },
84
84
  };
85
-
86
- export const Plugin = {
87
- args: {
88
- ready: true,
89
- engine: "cesium",
90
- sceneProperty: {
91
- tiles: [
92
- {
93
- id: "default",
94
- tile_type: "default",
95
- },
96
- ],
97
- },
98
- widgetAlignSystem: {
99
- outer: {
100
- left: {
101
- top: {
102
- align: "start",
103
- widgets: [
104
- {
105
- id: "plugin",
106
- pluginId: "plugin",
107
- extensionId: "test",
108
- ...({
109
- __REEARTH_SOURCECODE: `reearth.layers.add(${JSON.stringify({
110
- id: "l",
111
- type: "simple",
112
- data: {
113
- type: "geojson",
114
- value: { type: "Feature", geometry: { type: "Point", coordinates: [0, 0] } },
115
- },
116
- marker: {
117
- imageColor: "#fff",
118
- },
119
- })});`,
120
- } as any),
121
- },
122
- ],
123
- },
124
- },
125
- },
126
- },
127
- },
128
- };
@@ -5,7 +5,7 @@ import { ComputedFeature } from "../mantle";
5
5
  import {
6
6
  Map,
7
7
  type MapRef,
8
- type SceneProperty,
8
+ type ViewerProperty,
9
9
  type Layer,
10
10
  type LayerSelectionReason,
11
11
  type Camera,
@@ -33,9 +33,10 @@ export type CoreVisualizerProps = {
33
33
  engine?: EngineType;
34
34
  isBuilt?: boolean;
35
35
  isEditable?: boolean;
36
- sceneProperty?: SceneProperty;
36
+ viewerProperty?: ViewerProperty;
37
37
  layers?: Layer[];
38
38
  clusters?: Cluster[]; // TODO: remove completely from beta core
39
+ time?: string | Date;
39
40
  camera?: Camera;
40
41
  interactionMode?: InteractionModeType;
41
42
  shouldRender?: boolean;
@@ -67,13 +68,14 @@ export const CoreVisualizer = memo(
67
68
  engine,
68
69
  isBuilt,
69
70
  isEditable,
70
- sceneProperty,
71
+ viewerProperty,
71
72
  layers,
72
73
  clusters,
73
74
  small,
74
75
  ready,
75
76
  hiddenLayers,
76
77
  camera: initialCamera,
78
+ time,
77
79
  interactionMode,
78
80
  shouldRender,
79
81
  meta,
@@ -97,7 +99,6 @@ export const CoreVisualizer = memo(
97
99
  selectedFeature,
98
100
  camera,
99
101
  featureFlags,
100
- overriddenSceneProperty,
101
102
  isLayerDragging,
102
103
  timelineManagerRef,
103
104
  cursor,
@@ -121,8 +122,8 @@ export const CoreVisualizer = memo(
121
122
  {
122
123
  camera: initialCamera,
123
124
  interactionMode,
124
- sceneProperty,
125
125
  zoomedLayerId,
126
+ viewerProperty,
126
127
  onLayerSelect,
127
128
  onCameraChange,
128
129
  onZoomToLayer,
@@ -154,7 +155,8 @@ export const CoreVisualizer = memo(
154
155
  style={style}
155
156
  featureFlags={featureFlags}
156
157
  shouldRender={shouldRender}
157
- property={overriddenSceneProperty}
158
+ property={viewerProperty}
159
+ time={time}
158
160
  small={small}
159
161
  ready={ready}
160
162
  timelineManagerRef={timelineManagerRef}
@@ -0,0 +1,30 @@
1
+ import { useEffect, useMemo, useRef } from "react";
2
+
3
+ import { version } from "../../package.json";
4
+ import { ViewerProperty } from "../engines";
5
+
6
+ interface CoreAPI {
7
+ readonly version: string;
8
+ readonly property?: ViewerProperty;
9
+ }
10
+
11
+ export default ({ viewerProperty }: { viewerProperty?: ViewerProperty }) => {
12
+ const viewerPropertyRef = useRef(viewerProperty);
13
+ viewerPropertyRef.current = viewerProperty;
14
+
15
+ const coreAPI: CoreAPI = useMemo(
16
+ () => ({
17
+ get version() {
18
+ return version;
19
+ },
20
+ get property() {
21
+ return viewerPropertyRef.current;
22
+ },
23
+ }),
24
+ [],
25
+ );
26
+
27
+ useEffect(() => {
28
+ (window as any).reearth_core = coreAPI;
29
+ }, [coreAPI]);
30
+ };
@@ -41,7 +41,7 @@ Default.args = {
41
41
  tiles: [
42
42
  {
43
43
  id: "default",
44
- tile_type: "default",
44
+ type: "default",
45
45
  },
46
46
  ],
47
47
  },
@@ -42,7 +42,7 @@ Default.args = {
42
42
  tiles: [
43
43
  {
44
44
  id: "default",
45
- tile_type: "default",
45
+ type: "default",
46
46
  },
47
47
  ],
48
48
  },
@@ -41,7 +41,7 @@ Default.args = {
41
41
  tiles: [
42
42
  {
43
43
  id: "default",
44
- tile_type: "default",
44
+ type: "default",
45
45
  },
46
46
  ],
47
47
  },
@@ -39,7 +39,7 @@ export default function Model({
39
39
  id,
40
40
  isVisible,
41
41
  property,
42
- sceneProperty,
42
+ viewerProperty,
43
43
  geometry,
44
44
  layer,
45
45
  feature,
@@ -120,18 +120,19 @@ export default function Model({
120
120
  if (
121
121
  !property?.specularEnvironmentMaps &&
122
122
  !property?.sphericalHarmonicCoefficients &&
123
- !sceneProperty?.light?.specularEnvironmentMaps &&
124
- !sceneProperty?.light?.sphericalHarmonicCoefficients
123
+ !viewerProperty?.scene?.imageBasedLighting?.specularEnvironmentMaps &&
124
+ !viewerProperty?.scene?.imageBasedLighting?.sphericalHarmonicCoefficients
125
125
  )
126
126
  return ibl;
127
127
 
128
128
  const specularEnvironmentMaps =
129
- property?.specularEnvironmentMaps ?? sceneProperty?.light?.specularEnvironmentMaps;
129
+ property?.specularEnvironmentMaps ??
130
+ viewerProperty?.scene?.imageBasedLighting?.specularEnvironmentMaps;
130
131
  const imageBasedLightIntensity =
131
- property?.imageBasedLightIntensity ?? sceneProperty?.light?.imageBasedLightIntensity;
132
+ property?.imageBasedLightIntensity ?? viewerProperty?.scene?.imageBasedLighting?.intensity;
132
133
  const sphericalHarmonicCoefficients = arrayToCartecian3(
133
134
  property?.sphericalHarmonicCoefficients ??
134
- sceneProperty?.light?.sphericalHarmonicCoefficients,
135
+ viewerProperty?.scene?.imageBasedLighting?.sphericalHarmonicCoefficients,
135
136
  imageBasedLightIntensity,
136
137
  );
137
138
 
@@ -146,9 +147,9 @@ export default function Model({
146
147
  property?.specularEnvironmentMaps,
147
148
  property?.sphericalHarmonicCoefficients,
148
149
  property?.imageBasedLightIntensity,
149
- sceneProperty?.light?.specularEnvironmentMaps,
150
- sceneProperty?.light?.sphericalHarmonicCoefficients,
151
- sceneProperty?.light?.imageBasedLightIntensity,
150
+ viewerProperty?.scene?.imageBasedLighting?.specularEnvironmentMaps,
151
+ viewerProperty?.scene?.imageBasedLighting?.sphericalHarmonicCoefficients,
152
+ viewerProperty?.scene?.imageBasedLighting?.intensity,
152
153
  ]);
153
154
 
154
155
  const { viewer } = useCesium();
@@ -58,7 +58,7 @@ Basic.args = {
58
58
  tiles: [
59
59
  {
60
60
  id: "default",
61
- tile_type: "default",
61
+ type: "default",
62
62
  },
63
63
  ],
64
64
  },
@@ -113,7 +113,7 @@ Excluded.args = {
113
113
  tiles: [
114
114
  {
115
115
  id: "default",
116
- tile_type: "default",
116
+ type: "default",
117
117
  },
118
118
  ],
119
119
  },
@@ -162,13 +162,15 @@ ClampToGround.args = {
162
162
  tiles: [
163
163
  {
164
164
  id: "default",
165
- tile_type: "default",
165
+ type: "default",
166
166
  },
167
167
  ],
168
- terrain: {
169
- terrain: true,
170
- terrainType: "cesium",
168
+ globe: {
171
169
  depthTestAgainstTerrain: true,
172
170
  },
171
+ terrain: {
172
+ enabled: true,
173
+ type: "cesium",
174
+ },
173
175
  },
174
176
  };
@@ -35,7 +35,7 @@ WMS.args = {
35
35
  tiles: [
36
36
  {
37
37
  id: "default",
38
- tile_type: "default",
38
+ type: "default",
39
39
  },
40
40
  ],
41
41
  },
@@ -70,7 +70,7 @@ MVT.args = {
70
70
  tiles: [
71
71
  {
72
72
  id: "default",
73
- tile_type: "default",
73
+ type: "default",
74
74
  },
75
75
  ],
76
76
  },
@@ -39,7 +39,7 @@ Default.args = {
39
39
  tiles: [
40
40
  {
41
41
  id: "default",
42
- tile_type: "default",
42
+ type: "default",
43
43
  },
44
44
  ],
45
45
  },
@@ -32,7 +32,7 @@ import type {
32
32
  ComputedLayer,
33
33
  Feature,
34
34
  EvalFeature,
35
- SceneProperty,
35
+ ViewerProperty,
36
36
  Cesium3DTilesAppearance,
37
37
  } from "../../..";
38
38
  import { useRefValue } from "../../../../hooks";
@@ -429,7 +429,7 @@ export const useHooks = ({
429
429
  boxId,
430
430
  isVisible,
431
431
  property,
432
- sceneProperty,
432
+ viewerProperty,
433
433
  layer,
434
434
  meta,
435
435
  evalFeature,
@@ -440,7 +440,7 @@ export const useHooks = ({
440
440
  boxId: string;
441
441
  isVisible?: boolean;
442
442
  property?: Property;
443
- sceneProperty?: SceneProperty;
443
+ viewerProperty?: ViewerProperty;
444
444
  layer?: ComputedLayer;
445
445
  feature?: ComputedFeature;
446
446
  meta?: Record<string, unknown>;
@@ -738,19 +738,20 @@ export const useHooks = ({
738
738
  if (
739
739
  !property?.specularEnvironmentMaps &&
740
740
  !property?.sphericalHarmonicCoefficients &&
741
- !sceneProperty?.light?.specularEnvironmentMaps &&
742
- !sceneProperty?.light?.sphericalHarmonicCoefficients
741
+ !viewerProperty?.scene?.imageBasedLighting?.specularEnvironmentMaps &&
742
+ !viewerProperty?.scene?.imageBasedLighting?.sphericalHarmonicCoefficients
743
743
  )
744
744
  return;
745
745
 
746
746
  const ibl = new ImageBasedLighting();
747
747
  const specularEnvironmentMaps =
748
- property?.specularEnvironmentMaps ?? sceneProperty?.light?.specularEnvironmentMaps;
748
+ property?.specularEnvironmentMaps ??
749
+ viewerProperty?.scene?.imageBasedLighting?.specularEnvironmentMaps;
749
750
  const imageBasedLightIntensity =
750
- property?.imageBasedLightIntensity ?? sceneProperty?.light?.imageBasedLightIntensity;
751
+ property?.imageBasedLightIntensity ?? viewerProperty?.scene?.imageBasedLighting?.intensity;
751
752
  const sphericalHarmonicCoefficients = arrayToCartecian3(
752
753
  property?.sphericalHarmonicCoefficients ??
753
- sceneProperty?.light?.sphericalHarmonicCoefficients,
754
+ viewerProperty?.scene?.imageBasedLighting?.sphericalHarmonicCoefficients,
754
755
  imageBasedLightIntensity,
755
756
  );
756
757
 
@@ -765,9 +766,9 @@ export const useHooks = ({
765
766
  property?.specularEnvironmentMaps,
766
767
  property?.sphericalHarmonicCoefficients,
767
768
  property?.imageBasedLightIntensity,
768
- sceneProperty?.light?.specularEnvironmentMaps,
769
- sceneProperty?.light?.sphericalHarmonicCoefficients,
770
- sceneProperty?.light?.imageBasedLightIntensity,
769
+ viewerProperty?.scene?.imageBasedLighting?.specularEnvironmentMaps,
770
+ viewerProperty?.scene?.imageBasedLighting?.sphericalHarmonicCoefficients,
771
+ viewerProperty?.scene?.imageBasedLighting?.intensity,
771
772
  ]);
772
773
 
773
774
  const handleReady = useCallback(
@@ -34,7 +34,7 @@ Default.args = {
34
34
  tiles: [
35
35
  {
36
36
  id: "default",
37
- tile_type: "default",
37
+ type: "default",
38
38
  },
39
39
  ],
40
40
  },
@@ -26,7 +26,7 @@ function Tileset({
26
26
  property,
27
27
  layer,
28
28
  feature,
29
- sceneProperty,
29
+ viewerProperty,
30
30
  meta,
31
31
  evalFeature,
32
32
  onComputedFeatureFetch,
@@ -53,7 +53,7 @@ function Tileset({
53
53
  layer,
54
54
  feature,
55
55
  property,
56
- sceneProperty,
56
+ viewerProperty,
57
57
  meta,
58
58
  evalFeature,
59
59
  onComputedFeatureFetch,
@@ -95,7 +95,7 @@ function Tileset({
95
95
  <Box
96
96
  {...props}
97
97
  id={boxId}
98
- sceneProperty={sceneProperty}
98
+ viewerProperty={viewerProperty}
99
99
  property={boxProperty as any}
100
100
  geometry={builtinBoxProps.geometry}
101
101
  feature={feature}
@@ -117,7 +117,7 @@ export default memo(
117
117
  prev.isVisible === next.isVisible &&
118
118
  prev.property === next.property &&
119
119
  prev.layer?.layer === next.layer?.layer &&
120
- prev.sceneProperty === next.sceneProperty &&
120
+ prev.viewerProperty === next.viewerProperty &&
121
121
  prev.meta === next.meta &&
122
122
  prev.evalFeature === next.evalFeature &&
123
123
  prev.onComputedFeatureFetch === next.onComputedFeatureFetch &&
@@ -127,8 +127,9 @@ export default function Feature({
127
127
  if (!isRenderableAppearance(k)) return null;
128
128
 
129
129
  const useSceneSphericalHarmonicCoefficients =
130
- !!props.sceneProperty?.light?.sphericalHarmonicCoefficients;
131
- const useSceneSpecularEnvironmentMaps = !!props.sceneProperty?.light?.specularEnvironmentMaps;
130
+ !!props.viewerProperty?.scene?.imageBasedLighting?.sphericalHarmonicCoefficients;
131
+ const useSceneSpecularEnvironmentMaps =
132
+ !!props.viewerProperty?.scene?.imageBasedLighting?.specularEnvironmentMaps;
132
133
 
133
134
  const isVisible = layer.layer.visible !== false && !isHidden;
134
135
 
@@ -205,9 +206,9 @@ export default function Feature({
205
206
  const isVisible = layer.layer.visible !== false && !isHidden;
206
207
  // NOTE: IBL for 3dtiles is not updated unless Tileset feature component is re-created.
207
208
  const useSceneSphericalHarmonicCoefficients =
208
- !!props.sceneProperty?.light?.sphericalHarmonicCoefficients;
209
+ !!props.viewerProperty?.scene?.imageBasedLighting?.sphericalHarmonicCoefficients;
209
210
  const useSceneSpecularEnvironmentMaps =
210
- !!props.sceneProperty?.light?.specularEnvironmentMaps;
211
+ !!props.viewerProperty?.scene?.imageBasedLighting?.specularEnvironmentMaps;
211
212
  const use3dtilesSphericalHarmonicCoefficients =
212
213
  layer?.layer?.type === "simple" &&
213
214
  !!layer?.layer?.["3dtiles"]?.sphericalHarmonicCoefficients;
@@ -35,7 +35,7 @@ import type {
35
35
  ComputedLayer,
36
36
  FeatureComponentProps,
37
37
  Geometry,
38
- SceneProperty,
38
+ ViewerProperty,
39
39
  } from "../..";
40
40
  import { Data, Layer, LayerSimple, TimeInterval } from "../../../mantle";
41
41
  import { FeatureIndex } from "../FeatureIndex";
@@ -48,7 +48,7 @@ export type FeatureProps<P = any> = {
48
48
  layer?: ComputedLayer;
49
49
  feature?: ComputedFeature;
50
50
  geometry?: Geometry;
51
- sceneProperty?: SceneProperty;
51
+ viewerProperty?: ViewerProperty;
52
52
  } & Omit<FeatureComponentProps, "layer">;
53
53
 
54
54
  export type FeatureComponent = ComponentType<FeatureProps>;