@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
@@ -36,6 +36,7 @@ const Cesium: React.ForwardRefRenderFunction<EngineRef, EngineProps> = (
36
36
  className,
37
37
  style,
38
38
  property,
39
+ time,
39
40
  camera,
40
41
  small,
41
42
  ready,
@@ -66,48 +67,51 @@ const Cesium: React.ForwardRefRenderFunction<EngineRef, EngineProps> = (
66
67
  ref,
67
68
  ) => {
68
69
  const {
69
- backgroundColor,
70
70
  cesium,
71
- cameraViewBoundaries,
72
- cameraViewOuterBoundaries,
73
- cameraViewBoundariesMaterial,
74
71
  mouseEventHandles,
75
72
  cesiumIonAccessToken,
76
73
  context,
77
- light,
78
74
  layerSelectWithRectEventHandlers,
79
- handleMount,
80
- handleUnmount,
81
- handleUpdate,
82
- handleClick,
75
+ sceneLight,
76
+ sceneBackgroundColor,
77
+ sceneMsaaSamples,
78
+ sceneMode,
79
+ cameraViewBoundaries,
80
+ cameraViewOuterBoundaries,
81
+ cameraViewBoundariesMaterial,
83
82
  handleCameraChange,
84
83
  handleCameraMoveEnd,
84
+ handleUpdate,
85
+ handleClick,
86
+ handleMount,
87
+ handleUnmount,
85
88
  } = useHooks({
86
89
  ref,
87
90
  property,
88
- camera,
91
+ time,
89
92
  selectedLayerId,
90
93
  selectionReason: layerSelectionReason,
91
- isLayerDraggable,
92
- isLayerDragging,
93
94
  meta,
94
95
  layersRef,
95
96
  featureFlags,
96
- requestingRenderMode,
97
- shouldRender,
98
97
  timelineManagerRef,
98
+ isLayerDraggable,
99
+ isLayerDragging,
100
+ shouldRender,
101
+ requestingRenderMode,
102
+ camera,
99
103
  cameraForceHorizontalRoll,
100
- onLayerSelect,
101
- onCameraChange,
102
104
  onLayerDrag,
103
105
  onLayerDrop,
106
+ onLayerSelect,
104
107
  onLayerEdit,
105
108
  onLayerSelectWithRectStart,
106
109
  onLayerSelectWithRectMove,
107
110
  onLayerSelectWithRectEnd,
108
- onMount,
109
111
  onLayerVisibility,
110
112
  onLayerLoad,
113
+ onCameraChange,
114
+ onMount,
111
115
  });
112
116
 
113
117
  return (
@@ -137,7 +141,7 @@ const Cesium: React.ForwardRefRenderFunction<EngineRef, EngineProps> = (
137
141
  cursor: isLayerDragging ? "grab" : undefined,
138
142
  ...style,
139
143
  }}
140
- shadows={!!(property?.atmosphere?.shadows ?? property?.globeShadow?.globeShadow)}
144
+ shadows={!!property?.scene?.shadow?.enabled}
141
145
  onClick={handleClick}
142
146
  onDoubleClick={mouseEventHandles.doubleclick}
143
147
  onMouseDown={mouseEventHandles.mousedown}
@@ -196,20 +200,18 @@ const Cesium: React.ForwardRefRenderFunction<EngineRef, EngineProps> = (
196
200
  </ScreenSpaceEventHandler>
197
201
  <ScreenSpaceCameraController
198
202
  maximumZoomDistance={
199
- property?.cameraLimiter?.cameraLimitterEnabled
200
- ? property.cameraLimiter?.cameraLimitterTargetArea?.height ?? Number.POSITIVE_INFINITY
203
+ property?.camera?.limiter?.enabled
204
+ ? property.camera?.limiter?.targetArea?.height ?? Number.POSITIVE_INFINITY
201
205
  : Number.POSITIVE_INFINITY
202
206
  }
203
- enableCollisionDetection={
204
- !(property?.default?.allowEnterGround ?? property?.camera?.allowEnterGround)
205
- }
207
+ enableCollisionDetection={!property?.camera?.allowEnterGround}
206
208
  />
207
209
  <Camera
208
- onChange={handleCameraChange}
209
210
  percentageChanged={0.2}
211
+ onChange={handleCameraChange}
210
212
  onMoveEnd={handleCameraMoveEnd}
211
213
  />
212
- {cameraViewBoundaries && property?.cameraLimiter?.cameraLimitterShowHelper && (
214
+ {cameraViewBoundaries && property?.camera?.limiter?.showHelper && (
213
215
  <Entity>
214
216
  <PolylineGraphics
215
217
  positions={cameraViewBoundaries}
@@ -219,7 +221,7 @@ const Cesium: React.ForwardRefRenderFunction<EngineRef, EngineProps> = (
219
221
  />
220
222
  </Entity>
221
223
  )}
222
- {cameraViewOuterBoundaries && property?.cameraLimiter?.cameraLimitterShowHelper && (
224
+ {cameraViewOuterBoundaries && property?.camera?.limiter?.showHelper && (
223
225
  <Entity>
224
226
  <PolylineGraphics
225
227
  positions={cameraViewOuterBoundaries}
@@ -229,39 +231,35 @@ const Cesium: React.ForwardRefRenderFunction<EngineRef, EngineProps> = (
229
231
  />
230
232
  </Entity>
231
233
  )}
232
- {/* NOTE: useWebVR={false} will crash Cesium */}
233
234
  <Scene
234
- backgroundColor={backgroundColor}
235
- useWebVR={!!property?.default?.vr || undefined}
236
- light={light}
235
+ backgroundColor={sceneBackgroundColor}
236
+ light={sceneLight}
237
+ mode={sceneMode}
238
+ msaaSamples={sceneMsaaSamples}
237
239
  useDepthPicking={false}
238
- debugShowFramesPerSecond={!!property?.render?.debugFramePerSecond}
239
- verticalExaggerationRelativeHeight={property?.terrain?.terrainExaggerationRelativeHeight}
240
- verticalExaggeration={property?.terrain?.terrainExaggeration}
240
+ useWebVR={!!property?.scene?.vr || undefined} // NOTE: useWebVR={false} will crash Cesium
241
+ debugShowFramesPerSecond={!!property?.debug?.showFramesPerSecond}
242
+ verticalExaggerationRelativeHeight={property?.scene?.verticalExaggerationRelativeHeight}
243
+ verticalExaggeration={property?.scene?.verticalExaggeration}
241
244
  />
242
- <SkyBox show={property?.default?.skybox ?? property?.skyBox?.skyBox ?? true} />
243
- <Fog
244
- enabled={property?.atmosphere?.fog ?? true}
245
- density={property?.atmosphere?.fog_density}
246
- />
247
- <Sun show={property?.atmosphere?.enable_sun ?? property?.sun?.sun ?? true} />
248
- <Moon show={property?.atmosphere?.enableMoon ?? property?.moon?.moon ?? true} />
245
+ <SkyBox show={property?.sky?.skyBox?.show ?? true} />
246
+ <Fog enabled={property?.sky?.fog?.enabled ?? true} density={property?.sky?.fog?.density} />
247
+ <Sun show={property?.sky?.sun?.show ?? true} />
248
+ <Moon show={property?.sky?.moon?.show ?? true} />
249
249
  <SkyAtmosphere
250
- show={
251
- property?.atmosphere?.sky_atmosphere ?? property?.skyAtmosphere?.skyAtmosphere ?? true
252
- }
253
- saturationShift={property?.atmosphere?.skyboxSurturationShift}
254
- atmosphereLightIntensity={property?.skyAtmosphere?.skyAtmosphereIntensity}
255
- brightnessShift={property?.atmosphere?.skyboxBrightnessShift}
250
+ show={property?.sky?.skyAtmosphere?.show ?? true}
251
+ atmosphereLightIntensity={property?.sky?.skyAtmosphere?.lightIntensity}
252
+ saturationShift={property?.sky?.skyAtmosphere?.saturationShift}
253
+ brightnessShift={property?.sky?.skyAtmosphere?.brightnessShift}
256
254
  />
257
255
  <Globe property={property} cesiumIonAccessToken={cesiumIonAccessToken} />
258
256
  <featureContext.Provider value={context}>{ready ? children : null}</featureContext.Provider>
259
257
  <AmbientOcclusion
260
- {...AMBIENT_OCCLUSION_QUALITY[property?.ambientOcclusion?.quality || "low"]}
261
- enabled={!!property?.ambientOcclusion?.enabled}
262
- intensity={property?.ambientOcclusion?.intensity ?? 100}
258
+ {...AMBIENT_OCCLUSION_QUALITY[property?.render?.ambientOcclusion?.quality || "low"]}
259
+ enabled={!!property?.render?.ambientOcclusion?.enabled}
260
+ intensity={property?.render?.ambientOcclusion?.intensity ?? 100}
263
261
  outputType={
264
- property?.ambientOcclusion?.ambientOcclusionOnly
262
+ property?.render?.ambientOcclusion?.ambientOcclusionOnly
265
263
  ? AmbientOcclusionOutputType.Occlusion
266
264
  : null
267
265
  }
@@ -5,7 +5,7 @@ export type {
5
5
  EngineRef,
6
6
  EngineProps,
7
7
  LayerSelectionReason,
8
- SceneProperty,
8
+ ViewerProperty,
9
9
  MouseEventProps,
10
10
  MouseEvents,
11
11
  Geometry,