@reearth/core 0.0.7-alpha.0 → 0.0.7-alpha.10

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 (436) hide show
  1. package/dist/core.js +34320 -34354
  2. package/dist/core.umd.cjs +3868 -3826
  3. package/dist/{index-DqatWUTw.js → index-DqGWVPtz.js} +0 -1
  4. package/dist/index.d.ts +217 -212
  5. package/package.json +8 -8
  6. package/src/Map/ClusteredLayers/index.tsx +2 -2
  7. package/src/Map/Layer/index.tsx +3 -3
  8. package/src/Map/Layers/hooks.ts +10 -0
  9. package/src/Map/Layers/index.tsx +2 -2
  10. package/src/Map/Sketch/hooks.ts +52 -72
  11. package/src/Map/Sketch/index.tsx +2 -24
  12. package/src/Map/Sketch/preset.ts +2 -0
  13. package/src/Map/Sketch/types.ts +31 -0
  14. package/src/Map/hooks.ts +0 -4
  15. package/src/Map/index.tsx +8 -5
  16. package/src/Map/ref.ts +4 -7
  17. package/src/Map/types/index.ts +34 -216
  18. package/src/Map/types/viewerProperty.ts +215 -0
  19. package/src/Map/useTimelineManager.ts +5 -3
  20. package/src/Map/utils.ts +1 -43
  21. package/src/Visualizer/coreContext.tsx +1 -8
  22. package/src/Visualizer/hooks.ts +20 -77
  23. package/src/Visualizer/index.stories.tsx +4 -48
  24. package/src/Visualizer/index.tsx +8 -6
  25. package/src/Visualizer/useCoreAPI.ts +30 -0
  26. package/src/engines/Cesium/Feature/Ellipse/index.stories.tsx +1 -1
  27. package/src/engines/Cesium/Feature/Frustum/index.stories.tsx +1 -1
  28. package/src/engines/Cesium/Feature/Model/index.stories.tsx +1 -1
  29. package/src/engines/Cesium/Feature/Model/index.tsx +10 -9
  30. package/src/engines/Cesium/Feature/Polygon/index.stories.tsx +8 -6
  31. package/src/engines/Cesium/Feature/Raster/index.stories.tsx +2 -2
  32. package/src/engines/Cesium/Feature/Resource/index.stories.tsx +1 -1
  33. package/src/engines/Cesium/Feature/Tileset/hooks.ts +12 -11
  34. package/src/engines/Cesium/Feature/Tileset/index.stories.tsx +1 -1
  35. package/src/engines/Cesium/Feature/Tileset/index.tsx +4 -4
  36. package/src/engines/Cesium/Feature/Tileset/useClippingBox.ts +10 -1
  37. package/src/engines/Cesium/Feature/index.tsx +5 -4
  38. package/src/engines/Cesium/Feature/utils.tsx +3 -2
  39. package/src/engines/Cesium/Shaders/OverriddenShaders/GlobeFS/IBL.glsl +6 -10
  40. package/src/engines/Cesium/core/Globe.tsx +36 -68
  41. package/src/engines/Cesium/core/Imagery.test.ts +9 -9
  42. package/src/engines/Cesium/core/Imagery.tsx +17 -19
  43. package/src/engines/Cesium/core/Indicator/Indicator.tsx +8 -8
  44. package/src/engines/Cesium/hooks/useCamera.ts +135 -0
  45. package/src/engines/Cesium/{cameraLimiter.ts → hooks/useCameraLimiter.ts} +22 -45
  46. package/src/engines/Cesium/{useEngineRef.test.tsx → hooks/useEngineRef.test.tsx} +38 -34
  47. package/src/engines/Cesium/{useEngineRef.ts → hooks/useEngineRef.ts} +43 -41
  48. package/src/engines/Cesium/hooks/useExplicitRender.ts +65 -0
  49. package/src/engines/Cesium/hooks/useLayerDragDrop.ts +77 -0
  50. package/src/engines/Cesium/{VertexTerrainElevationMaterial.ts → hooks/useOverrideGlobeShader/VertexTerrainElevationMaterial.ts} +3 -2
  51. package/src/engines/Cesium/{useOverrideGlobeShader.ts → hooks/useOverrideGlobeShader/useOverrideGlobeShader.ts} +20 -17
  52. package/src/engines/Cesium/hooks/useViewerProperty.ts +90 -0
  53. package/src/engines/Cesium/hooks.ts +129 -366
  54. package/src/engines/Cesium/index.stories.tsx +1 -1
  55. package/src/engines/Cesium/index.tsx +60 -62
  56. package/src/engines/index.ts +1 -1
  57. package/src/mantle/atoms/compute.ts +5 -1
  58. package/src/mantle/compat/types.ts +7 -7
  59. package/src/mantle/data/geojson.ts +53 -22
  60. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_0.json +0 -1
  61. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_1.json +0 -1
  62. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_10.json +0 -1
  63. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_11.json +0 -1
  64. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_12.json +0 -1
  65. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_13.json +0 -1
  66. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_14.json +0 -1
  67. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_15.json +0 -1
  68. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_16.json +0 -1
  69. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_17.json +0 -1
  70. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_18.json +0 -1
  71. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_19.json +0 -1
  72. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_2.json +0 -1
  73. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_20.json +0 -1
  74. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_21.json +0 -1
  75. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_22.json +0 -1
  76. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_23.json +0 -1
  77. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_24.json +0 -1
  78. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_25.json +0 -1
  79. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_26.json +0 -1
  80. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_27.json +0 -1
  81. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_3.json +0 -1
  82. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_4.json +0 -1
  83. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_5.json +0 -1
  84. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_6.json +0 -1
  85. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_7.json +0 -1
  86. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_8.json +0 -1
  87. package/dist/cesium/Assets/IAU2006_XYS/IAU2006_XYS_9.json +0 -1
  88. package/dist/cesium/Assets/Images/bing_maps_credit.png +0 -0
  89. package/dist/cesium/Assets/Images/cesium_credit.png +0 -0
  90. package/dist/cesium/Assets/Images/google_earth_credit.png +0 -0
  91. package/dist/cesium/Assets/Images/ion-credit.png +0 -0
  92. package/dist/cesium/Assets/Textures/LensFlare/DirtMask.jpg +0 -0
  93. package/dist/cesium/Assets/Textures/LensFlare/StarBurst.jpg +0 -0
  94. package/dist/cesium/Assets/Textures/NaturalEarthII/0/0/0.jpg +0 -0
  95. package/dist/cesium/Assets/Textures/NaturalEarthII/0/1/0.jpg +0 -0
  96. package/dist/cesium/Assets/Textures/NaturalEarthII/1/0/0.jpg +0 -0
  97. package/dist/cesium/Assets/Textures/NaturalEarthII/1/0/1.jpg +0 -0
  98. package/dist/cesium/Assets/Textures/NaturalEarthII/1/1/0.jpg +0 -0
  99. package/dist/cesium/Assets/Textures/NaturalEarthII/1/1/1.jpg +0 -0
  100. package/dist/cesium/Assets/Textures/NaturalEarthII/1/2/0.jpg +0 -0
  101. package/dist/cesium/Assets/Textures/NaturalEarthII/1/2/1.jpg +0 -0
  102. package/dist/cesium/Assets/Textures/NaturalEarthII/1/3/0.jpg +0 -0
  103. package/dist/cesium/Assets/Textures/NaturalEarthII/1/3/1.jpg +0 -0
  104. package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/0.jpg +0 -0
  105. package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/1.jpg +0 -0
  106. package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/2.jpg +0 -0
  107. package/dist/cesium/Assets/Textures/NaturalEarthII/2/0/3.jpg +0 -0
  108. package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/0.jpg +0 -0
  109. package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/1.jpg +0 -0
  110. package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/2.jpg +0 -0
  111. package/dist/cesium/Assets/Textures/NaturalEarthII/2/1/3.jpg +0 -0
  112. package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/0.jpg +0 -0
  113. package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/1.jpg +0 -0
  114. package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/2.jpg +0 -0
  115. package/dist/cesium/Assets/Textures/NaturalEarthII/2/2/3.jpg +0 -0
  116. package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/0.jpg +0 -0
  117. package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/1.jpg +0 -0
  118. package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/2.jpg +0 -0
  119. package/dist/cesium/Assets/Textures/NaturalEarthII/2/3/3.jpg +0 -0
  120. package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/0.jpg +0 -0
  121. package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/1.jpg +0 -0
  122. package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/2.jpg +0 -0
  123. package/dist/cesium/Assets/Textures/NaturalEarthII/2/4/3.jpg +0 -0
  124. package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/0.jpg +0 -0
  125. package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/1.jpg +0 -0
  126. package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/2.jpg +0 -0
  127. package/dist/cesium/Assets/Textures/NaturalEarthII/2/5/3.jpg +0 -0
  128. package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/0.jpg +0 -0
  129. package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/1.jpg +0 -0
  130. package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/2.jpg +0 -0
  131. package/dist/cesium/Assets/Textures/NaturalEarthII/2/6/3.jpg +0 -0
  132. package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/0.jpg +0 -0
  133. package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/1.jpg +0 -0
  134. package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/2.jpg +0 -0
  135. package/dist/cesium/Assets/Textures/NaturalEarthII/2/7/3.jpg +0 -0
  136. package/dist/cesium/Assets/Textures/NaturalEarthII/tilemapresource.xml +0 -14
  137. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg +0 -0
  138. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_my.jpg +0 -0
  139. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg +0 -0
  140. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_px.jpg +0 -0
  141. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_py.jpg +0 -0
  142. package/dist/cesium/Assets/Textures/SkyBox/tycho2t3_80_pz.jpg +0 -0
  143. package/dist/cesium/Assets/Textures/maki/airfield.png +0 -0
  144. package/dist/cesium/Assets/Textures/maki/airport.png +0 -0
  145. package/dist/cesium/Assets/Textures/maki/alcohol-shop.png +0 -0
  146. package/dist/cesium/Assets/Textures/maki/america-football.png +0 -0
  147. package/dist/cesium/Assets/Textures/maki/art-gallery.png +0 -0
  148. package/dist/cesium/Assets/Textures/maki/bakery.png +0 -0
  149. package/dist/cesium/Assets/Textures/maki/bank.png +0 -0
  150. package/dist/cesium/Assets/Textures/maki/bar.png +0 -0
  151. package/dist/cesium/Assets/Textures/maki/baseball.png +0 -0
  152. package/dist/cesium/Assets/Textures/maki/basketball.png +0 -0
  153. package/dist/cesium/Assets/Textures/maki/beer.png +0 -0
  154. package/dist/cesium/Assets/Textures/maki/bicycle.png +0 -0
  155. package/dist/cesium/Assets/Textures/maki/building.png +0 -0
  156. package/dist/cesium/Assets/Textures/maki/bus.png +0 -0
  157. package/dist/cesium/Assets/Textures/maki/cafe.png +0 -0
  158. package/dist/cesium/Assets/Textures/maki/camera.png +0 -0
  159. package/dist/cesium/Assets/Textures/maki/campsite.png +0 -0
  160. package/dist/cesium/Assets/Textures/maki/car.png +0 -0
  161. package/dist/cesium/Assets/Textures/maki/cemetery.png +0 -0
  162. package/dist/cesium/Assets/Textures/maki/cesium.png +0 -0
  163. package/dist/cesium/Assets/Textures/maki/chemist.png +0 -0
  164. package/dist/cesium/Assets/Textures/maki/cinema.png +0 -0
  165. package/dist/cesium/Assets/Textures/maki/circle-stroked.png +0 -0
  166. package/dist/cesium/Assets/Textures/maki/circle.png +0 -0
  167. package/dist/cesium/Assets/Textures/maki/city.png +0 -0
  168. package/dist/cesium/Assets/Textures/maki/clothing-store.png +0 -0
  169. package/dist/cesium/Assets/Textures/maki/college.png +0 -0
  170. package/dist/cesium/Assets/Textures/maki/commercial.png +0 -0
  171. package/dist/cesium/Assets/Textures/maki/cricket.png +0 -0
  172. package/dist/cesium/Assets/Textures/maki/cross.png +0 -0
  173. package/dist/cesium/Assets/Textures/maki/dam.png +0 -0
  174. package/dist/cesium/Assets/Textures/maki/danger.png +0 -0
  175. package/dist/cesium/Assets/Textures/maki/disability.png +0 -0
  176. package/dist/cesium/Assets/Textures/maki/dog-park.png +0 -0
  177. package/dist/cesium/Assets/Textures/maki/embassy.png +0 -0
  178. package/dist/cesium/Assets/Textures/maki/emergency-telephone.png +0 -0
  179. package/dist/cesium/Assets/Textures/maki/entrance.png +0 -0
  180. package/dist/cesium/Assets/Textures/maki/farm.png +0 -0
  181. package/dist/cesium/Assets/Textures/maki/fast-food.png +0 -0
  182. package/dist/cesium/Assets/Textures/maki/ferry.png +0 -0
  183. package/dist/cesium/Assets/Textures/maki/fire-station.png +0 -0
  184. package/dist/cesium/Assets/Textures/maki/fuel.png +0 -0
  185. package/dist/cesium/Assets/Textures/maki/garden.png +0 -0
  186. package/dist/cesium/Assets/Textures/maki/gift.png +0 -0
  187. package/dist/cesium/Assets/Textures/maki/golf.png +0 -0
  188. package/dist/cesium/Assets/Textures/maki/grocery.png +0 -0
  189. package/dist/cesium/Assets/Textures/maki/hairdresser.png +0 -0
  190. package/dist/cesium/Assets/Textures/maki/harbor.png +0 -0
  191. package/dist/cesium/Assets/Textures/maki/heart.png +0 -0
  192. package/dist/cesium/Assets/Textures/maki/heliport.png +0 -0
  193. package/dist/cesium/Assets/Textures/maki/hospital.png +0 -0
  194. package/dist/cesium/Assets/Textures/maki/ice-cream.png +0 -0
  195. package/dist/cesium/Assets/Textures/maki/industrial.png +0 -0
  196. package/dist/cesium/Assets/Textures/maki/land-use.png +0 -0
  197. package/dist/cesium/Assets/Textures/maki/laundry.png +0 -0
  198. package/dist/cesium/Assets/Textures/maki/library.png +0 -0
  199. package/dist/cesium/Assets/Textures/maki/lighthouse.png +0 -0
  200. package/dist/cesium/Assets/Textures/maki/lodging.png +0 -0
  201. package/dist/cesium/Assets/Textures/maki/logging.png +0 -0
  202. package/dist/cesium/Assets/Textures/maki/london-underground.png +0 -0
  203. package/dist/cesium/Assets/Textures/maki/marker-stroked.png +0 -0
  204. package/dist/cesium/Assets/Textures/maki/marker.png +0 -0
  205. package/dist/cesium/Assets/Textures/maki/minefield.png +0 -0
  206. package/dist/cesium/Assets/Textures/maki/mobilephone.png +0 -0
  207. package/dist/cesium/Assets/Textures/maki/monument.png +0 -0
  208. package/dist/cesium/Assets/Textures/maki/museum.png +0 -0
  209. package/dist/cesium/Assets/Textures/maki/music.png +0 -0
  210. package/dist/cesium/Assets/Textures/maki/oil-well.png +0 -0
  211. package/dist/cesium/Assets/Textures/maki/park.png +0 -0
  212. package/dist/cesium/Assets/Textures/maki/park2.png +0 -0
  213. package/dist/cesium/Assets/Textures/maki/parking-garage.png +0 -0
  214. package/dist/cesium/Assets/Textures/maki/parking.png +0 -0
  215. package/dist/cesium/Assets/Textures/maki/pharmacy.png +0 -0
  216. package/dist/cesium/Assets/Textures/maki/pitch.png +0 -0
  217. package/dist/cesium/Assets/Textures/maki/place-of-worship.png +0 -0
  218. package/dist/cesium/Assets/Textures/maki/playground.png +0 -0
  219. package/dist/cesium/Assets/Textures/maki/police.png +0 -0
  220. package/dist/cesium/Assets/Textures/maki/polling-place.png +0 -0
  221. package/dist/cesium/Assets/Textures/maki/post.png +0 -0
  222. package/dist/cesium/Assets/Textures/maki/prison.png +0 -0
  223. package/dist/cesium/Assets/Textures/maki/rail-above.png +0 -0
  224. package/dist/cesium/Assets/Textures/maki/rail-light.png +0 -0
  225. package/dist/cesium/Assets/Textures/maki/rail-metro.png +0 -0
  226. package/dist/cesium/Assets/Textures/maki/rail-underground.png +0 -0
  227. package/dist/cesium/Assets/Textures/maki/rail.png +0 -0
  228. package/dist/cesium/Assets/Textures/maki/religious-christian.png +0 -0
  229. package/dist/cesium/Assets/Textures/maki/religious-jewish.png +0 -0
  230. package/dist/cesium/Assets/Textures/maki/religious-muslim.png +0 -0
  231. package/dist/cesium/Assets/Textures/maki/restaurant.png +0 -0
  232. package/dist/cesium/Assets/Textures/maki/roadblock.png +0 -0
  233. package/dist/cesium/Assets/Textures/maki/rocket.png +0 -0
  234. package/dist/cesium/Assets/Textures/maki/school.png +0 -0
  235. package/dist/cesium/Assets/Textures/maki/scooter.png +0 -0
  236. package/dist/cesium/Assets/Textures/maki/shop.png +0 -0
  237. package/dist/cesium/Assets/Textures/maki/skiing.png +0 -0
  238. package/dist/cesium/Assets/Textures/maki/slaughterhouse.png +0 -0
  239. package/dist/cesium/Assets/Textures/maki/soccer.png +0 -0
  240. package/dist/cesium/Assets/Textures/maki/square-stroked.png +0 -0
  241. package/dist/cesium/Assets/Textures/maki/square.png +0 -0
  242. package/dist/cesium/Assets/Textures/maki/star-stroked.png +0 -0
  243. package/dist/cesium/Assets/Textures/maki/star.png +0 -0
  244. package/dist/cesium/Assets/Textures/maki/suitcase.png +0 -0
  245. package/dist/cesium/Assets/Textures/maki/swimming.png +0 -0
  246. package/dist/cesium/Assets/Textures/maki/telephone.png +0 -0
  247. package/dist/cesium/Assets/Textures/maki/tennis.png +0 -0
  248. package/dist/cesium/Assets/Textures/maki/theatre.png +0 -0
  249. package/dist/cesium/Assets/Textures/maki/toilets.png +0 -0
  250. package/dist/cesium/Assets/Textures/maki/town-hall.png +0 -0
  251. package/dist/cesium/Assets/Textures/maki/town.png +0 -0
  252. package/dist/cesium/Assets/Textures/maki/triangle-stroked.png +0 -0
  253. package/dist/cesium/Assets/Textures/maki/triangle.png +0 -0
  254. package/dist/cesium/Assets/Textures/maki/village.png +0 -0
  255. package/dist/cesium/Assets/Textures/maki/warehouse.png +0 -0
  256. package/dist/cesium/Assets/Textures/maki/waste-basket.png +0 -0
  257. package/dist/cesium/Assets/Textures/maki/water.png +0 -0
  258. package/dist/cesium/Assets/Textures/maki/wetland.png +0 -0
  259. package/dist/cesium/Assets/Textures/maki/zoo.png +0 -0
  260. package/dist/cesium/Assets/Textures/moonSmall.jpg +0 -0
  261. package/dist/cesium/Assets/Textures/pin.svg +0 -1
  262. package/dist/cesium/Assets/Textures/waterNormals.jpg +0 -0
  263. package/dist/cesium/Assets/Textures/waterNormalsSmall.jpg +0 -0
  264. package/dist/cesium/Assets/approximateTerrainHeights.json +0 -1
  265. package/dist/cesium/ThirdParty/Workers/package.json +0 -1
  266. package/dist/cesium/ThirdParty/Workers/pako_deflate.min.js +0 -1
  267. package/dist/cesium/ThirdParty/Workers/pako_inflate.min.js +0 -1
  268. package/dist/cesium/ThirdParty/Workers/z-worker-pako.js +0 -1
  269. package/dist/cesium/ThirdParty/basis_transcoder.wasm +0 -0
  270. package/dist/cesium/ThirdParty/draco_decoder.wasm +0 -0
  271. package/dist/cesium/ThirdParty/google-earth-dbroot-parser.js +0 -1
  272. package/dist/cesium/Widgets/Animation/Animation.css +0 -127
  273. package/dist/cesium/Widgets/Animation/lighter.css +0 -70
  274. package/dist/cesium/Widgets/BaseLayerPicker/BaseLayerPicker.css +0 -108
  275. package/dist/cesium/Widgets/BaseLayerPicker/lighter.css +0 -22
  276. package/dist/cesium/Widgets/Cesium3DTilesInspector/Cesium3DTilesInspector.css +0 -102
  277. package/dist/cesium/Widgets/CesiumInspector/CesiumInspector.css +0 -113
  278. package/dist/cesium/Widgets/CesiumWidget/CesiumWidget.css +0 -124
  279. package/dist/cesium/Widgets/CesiumWidget/lighter.css +0 -14
  280. package/dist/cesium/Widgets/FullscreenButton/FullscreenButton.css +0 -8
  281. package/dist/cesium/Widgets/Geocoder/Geocoder.css +0 -70
  282. package/dist/cesium/Widgets/Geocoder/lighter.css +0 -17
  283. package/dist/cesium/Widgets/I3SBuildingSceneLayerExplorer/I3SBuildingSceneLayerExplorer.css +0 -27
  284. package/dist/cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldHillshade.png +0 -0
  285. package/dist/cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldImagery.png +0 -0
  286. package/dist/cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldOcean.png +0 -0
  287. package/dist/cesium/Widgets/Images/ImageryProviders/bingAerial.png +0 -0
  288. package/dist/cesium/Widgets/Images/ImageryProviders/bingAerialLabels.png +0 -0
  289. package/dist/cesium/Widgets/Images/ImageryProviders/bingRoads.png +0 -0
  290. package/dist/cesium/Widgets/Images/ImageryProviders/blueMarble.png +0 -0
  291. package/dist/cesium/Widgets/Images/ImageryProviders/earthAtNight.png +0 -0
  292. package/dist/cesium/Widgets/Images/ImageryProviders/mapQuestOpenStreetMap.png +0 -0
  293. package/dist/cesium/Widgets/Images/ImageryProviders/mapboxSatellite.png +0 -0
  294. package/dist/cesium/Widgets/Images/ImageryProviders/mapboxStreets.png +0 -0
  295. package/dist/cesium/Widgets/Images/ImageryProviders/mapboxTerrain.png +0 -0
  296. package/dist/cesium/Widgets/Images/ImageryProviders/naturalEarthII.png +0 -0
  297. package/dist/cesium/Widgets/Images/ImageryProviders/openStreetMap.png +0 -0
  298. package/dist/cesium/Widgets/Images/ImageryProviders/sentinel-2.png +0 -0
  299. package/dist/cesium/Widgets/Images/ImageryProviders/stadiaAlidadeSmooth.png +0 -0
  300. package/dist/cesium/Widgets/Images/ImageryProviders/stadiaAlidadeSmoothDark.png +0 -0
  301. package/dist/cesium/Widgets/Images/ImageryProviders/stamenToner.png +0 -0
  302. package/dist/cesium/Widgets/Images/ImageryProviders/stamenWatercolor.png +0 -0
  303. package/dist/cesium/Widgets/Images/NavigationHelp/Mouse.svg +0 -84
  304. package/dist/cesium/Widgets/Images/NavigationHelp/MouseLeft.svg +0 -76
  305. package/dist/cesium/Widgets/Images/NavigationHelp/MouseMiddle.svg +0 -76
  306. package/dist/cesium/Widgets/Images/NavigationHelp/MouseRight.svg +0 -76
  307. package/dist/cesium/Widgets/Images/NavigationHelp/Touch.svg +0 -120
  308. package/dist/cesium/Widgets/Images/NavigationHelp/TouchDrag.svg +0 -129
  309. package/dist/cesium/Widgets/Images/NavigationHelp/TouchRotate.svg +0 -76
  310. package/dist/cesium/Widgets/Images/NavigationHelp/TouchTilt.svg +0 -135
  311. package/dist/cesium/Widgets/Images/NavigationHelp/TouchZoom.svg +0 -74
  312. package/dist/cesium/Widgets/Images/TerrainProviders/CesiumWorldTerrain.png +0 -0
  313. package/dist/cesium/Widgets/Images/TerrainProviders/Ellipsoid.png +0 -0
  314. package/dist/cesium/Widgets/Images/TimelineIcons.png +0 -0
  315. package/dist/cesium/Widgets/Images/info-loading.gif +0 -0
  316. package/dist/cesium/Widgets/InfoBox/InfoBox.css +0 -92
  317. package/dist/cesium/Widgets/InfoBox/InfoBoxDescription.css +0 -178
  318. package/dist/cesium/Widgets/NavigationHelpButton/NavigationHelpButton.css +0 -93
  319. package/dist/cesium/Widgets/NavigationHelpButton/lighter.css +0 -38
  320. package/dist/cesium/Widgets/PerformanceWatchdog/PerformanceWatchdog.css +0 -15
  321. package/dist/cesium/Widgets/ProjectionPicker/ProjectionPicker.css +0 -38
  322. package/dist/cesium/Widgets/SceneModePicker/SceneModePicker.css +0 -56
  323. package/dist/cesium/Widgets/SelectionIndicator/SelectionIndicator.css +0 -20
  324. package/dist/cesium/Widgets/Timeline/Timeline.css +0 -103
  325. package/dist/cesium/Widgets/Timeline/lighter.css +0 -23
  326. package/dist/cesium/Widgets/VRButton/VRButton.css +0 -8
  327. package/dist/cesium/Widgets/Viewer/Viewer.css +0 -107
  328. package/dist/cesium/Widgets/VoxelInspector/VoxelInspector.css +0 -16
  329. package/dist/cesium/Widgets/lighter.css +0 -237
  330. package/dist/cesium/Widgets/lighterShared.css +0 -46
  331. package/dist/cesium/Widgets/shared.css +0 -103
  332. package/dist/cesium/Widgets/widgets.css +0 -1346
  333. package/dist/cesium/Workers/chunk-2ED5WI77.js +0 -26
  334. package/dist/cesium/Workers/chunk-2MBPFWCP.js +0 -26
  335. package/dist/cesium/Workers/chunk-3C74MLG3.js +0 -26
  336. package/dist/cesium/Workers/chunk-45U7TTT3.js +0 -26
  337. package/dist/cesium/Workers/chunk-4N7SRDH5.js +0 -26
  338. package/dist/cesium/Workers/chunk-4T6AS6BZ.js +0 -26
  339. package/dist/cesium/Workers/chunk-5AG2MVRM.js +0 -26
  340. package/dist/cesium/Workers/chunk-5Z6L2FHX.js +0 -26
  341. package/dist/cesium/Workers/chunk-6AUUBDOF.js +0 -26
  342. package/dist/cesium/Workers/chunk-74N6MC2V.js +0 -26
  343. package/dist/cesium/Workers/chunk-7VJK3KHI.js +0 -26
  344. package/dist/cesium/Workers/chunk-7VZHIB6P.js +0 -26
  345. package/dist/cesium/Workers/chunk-7X2YQ6I4.js +0 -27
  346. package/dist/cesium/Workers/chunk-B2SKQ7LU.js +0 -26
  347. package/dist/cesium/Workers/chunk-B4TQDFIE.js +0 -26
  348. package/dist/cesium/Workers/chunk-B6TRTFAA.js +0 -26
  349. package/dist/cesium/Workers/chunk-BK3HCS7I.js +0 -26
  350. package/dist/cesium/Workers/chunk-BOPB43LN.js +0 -26
  351. package/dist/cesium/Workers/chunk-C6DMEJQ7.js +0 -26
  352. package/dist/cesium/Workers/chunk-CN7UN2OZ.js +0 -26
  353. package/dist/cesium/Workers/chunk-CSISXEG7.js +0 -26
  354. package/dist/cesium/Workers/chunk-CUOR5F7T.js +0 -28
  355. package/dist/cesium/Workers/chunk-DGCK3LD2.js +0 -30
  356. package/dist/cesium/Workers/chunk-DXEZYE3K.js +0 -62
  357. package/dist/cesium/Workers/chunk-EXBFEYPQ.js +0 -26
  358. package/dist/cesium/Workers/chunk-FK5KFB6H.js +0 -26
  359. package/dist/cesium/Workers/chunk-HPBHKP5S.js +0 -26
  360. package/dist/cesium/Workers/chunk-JCJ24DHF.js +0 -26
  361. package/dist/cesium/Workers/chunk-JEWHFDAA.js +0 -26
  362. package/dist/cesium/Workers/chunk-JZLZJJQD.js +0 -26
  363. package/dist/cesium/Workers/chunk-KRZBI2MU.js +0 -26
  364. package/dist/cesium/Workers/chunk-KTTUANTJ.js +0 -26
  365. package/dist/cesium/Workers/chunk-LDCAXLGS.js +0 -26
  366. package/dist/cesium/Workers/chunk-LOPN5R3I.js +0 -26
  367. package/dist/cesium/Workers/chunk-MDLPQIMP.js +0 -26
  368. package/dist/cesium/Workers/chunk-MRR3RGFO.js +0 -26
  369. package/dist/cesium/Workers/chunk-NPBZI5YA.js +0 -26
  370. package/dist/cesium/Workers/chunk-NUSW5B6A.js +0 -26
  371. package/dist/cesium/Workers/chunk-OUXRUXNB.js +0 -26
  372. package/dist/cesium/Workers/chunk-QPOPEH3M.js +0 -26
  373. package/dist/cesium/Workers/chunk-R2AN7EKC.js +0 -26
  374. package/dist/cesium/Workers/chunk-RURL6ZX2.js +0 -26
  375. package/dist/cesium/Workers/chunk-SUQM3OSW.js +0 -28
  376. package/dist/cesium/Workers/chunk-UBIRX2SP.js +0 -26
  377. package/dist/cesium/Workers/chunk-VAKC5J5C.js +0 -26
  378. package/dist/cesium/Workers/chunk-VHNZBQTR.js +0 -27
  379. package/dist/cesium/Workers/chunk-VKV642QV.js +0 -26
  380. package/dist/cesium/Workers/chunk-VMSXG4OA.js +0 -26
  381. package/dist/cesium/Workers/chunk-VQZSIOZW.js +0 -26
  382. package/dist/cesium/Workers/chunk-WZUWQMI7.js +0 -26
  383. package/dist/cesium/Workers/chunk-YBI55DLZ.js +0 -26
  384. package/dist/cesium/Workers/chunk-YEJWCH6C.js +0 -26
  385. package/dist/cesium/Workers/chunk-YPDO7SPO.js +0 -26
  386. package/dist/cesium/Workers/chunk-ZYWD6OQH.js +0 -26
  387. package/dist/cesium/Workers/combineGeometry.js +0 -26
  388. package/dist/cesium/Workers/createBoxGeometry.js +0 -26
  389. package/dist/cesium/Workers/createBoxOutlineGeometry.js +0 -26
  390. package/dist/cesium/Workers/createCircleGeometry.js +0 -26
  391. package/dist/cesium/Workers/createCircleOutlineGeometry.js +0 -26
  392. package/dist/cesium/Workers/createCoplanarPolygonGeometry.js +0 -26
  393. package/dist/cesium/Workers/createCoplanarPolygonOutlineGeometry.js +0 -26
  394. package/dist/cesium/Workers/createCorridorGeometry.js +0 -26
  395. package/dist/cesium/Workers/createCorridorOutlineGeometry.js +0 -26
  396. package/dist/cesium/Workers/createCylinderGeometry.js +0 -26
  397. package/dist/cesium/Workers/createCylinderOutlineGeometry.js +0 -26
  398. package/dist/cesium/Workers/createEllipseGeometry.js +0 -26
  399. package/dist/cesium/Workers/createEllipseOutlineGeometry.js +0 -26
  400. package/dist/cesium/Workers/createEllipsoidGeometry.js +0 -26
  401. package/dist/cesium/Workers/createEllipsoidOutlineGeometry.js +0 -26
  402. package/dist/cesium/Workers/createFrustumGeometry.js +0 -26
  403. package/dist/cesium/Workers/createFrustumOutlineGeometry.js +0 -26
  404. package/dist/cesium/Workers/createGeometry.js +0 -26
  405. package/dist/cesium/Workers/createGroundPolylineGeometry.js +0 -26
  406. package/dist/cesium/Workers/createPlaneGeometry.js +0 -26
  407. package/dist/cesium/Workers/createPlaneOutlineGeometry.js +0 -26
  408. package/dist/cesium/Workers/createPolygonGeometry.js +0 -26
  409. package/dist/cesium/Workers/createPolygonOutlineGeometry.js +0 -26
  410. package/dist/cesium/Workers/createPolylineGeometry.js +0 -26
  411. package/dist/cesium/Workers/createPolylineVolumeGeometry.js +0 -26
  412. package/dist/cesium/Workers/createPolylineVolumeOutlineGeometry.js +0 -26
  413. package/dist/cesium/Workers/createRectangleGeometry.js +0 -26
  414. package/dist/cesium/Workers/createRectangleOutlineGeometry.js +0 -26
  415. package/dist/cesium/Workers/createSimplePolylineGeometry.js +0 -26
  416. package/dist/cesium/Workers/createSphereGeometry.js +0 -26
  417. package/dist/cesium/Workers/createSphereOutlineGeometry.js +0 -26
  418. package/dist/cesium/Workers/createTaskProcessorWorker.js +0 -26
  419. package/dist/cesium/Workers/createVectorTileClampedPolylines.js +0 -26
  420. package/dist/cesium/Workers/createVectorTileGeometries.js +0 -26
  421. package/dist/cesium/Workers/createVectorTilePoints.js +0 -26
  422. package/dist/cesium/Workers/createVectorTilePolygons.js +0 -26
  423. package/dist/cesium/Workers/createVectorTilePolylines.js +0 -26
  424. package/dist/cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +0 -26
  425. package/dist/cesium/Workers/createVerticesFromHeightmap.js +0 -26
  426. package/dist/cesium/Workers/createVerticesFromQuantizedTerrainMesh.js +0 -26
  427. package/dist/cesium/Workers/createWallGeometry.js +0 -26
  428. package/dist/cesium/Workers/createWallOutlineGeometry.js +0 -26
  429. package/dist/cesium/Workers/decodeDraco.js +0 -26
  430. package/dist/cesium/Workers/decodeGoogleEarthEnterprisePacket.js +0 -26
  431. package/dist/cesium/Workers/decodeI3S.js +0 -26
  432. package/dist/cesium/Workers/transcodeKTX2.js +0 -56
  433. package/dist/cesium/Workers/transferTypedArrayTest.js +0 -26
  434. package/dist/cesium/Workers/upsampleQuantizedTerrainMesh.js +0 -26
  435. /package/src/engines/Cesium/{JapanSeaLevelEllipsoid.ts → hooks/useOverrideGlobeShader/JapanSeaLevelEllipsoid.ts} +0 -0
  436. /package/src/engines/Cesium/{vertexTerrainElevationMaterial.glsl → hooks/useOverrideGlobeShader/vertexTerrainElevationMaterial.glsl} +0 -0
@@ -6,8 +6,7 @@
6
6
  // https://github.com/CesiumGS/cesium/blob/1.106/packages/engine/Source/Shaders/Model/ImageBasedLightingStageFS.glsl
7
7
  // Specular term was removed, as I never apply it on terrain.
8
8
  vec3 reearth_imageBasedLightingStage(vec3 positionEC, vec3 normalEC,
9
- vec3 lightDirectionEC, vec3 lightColorHdr,
10
- czm_pbrParameters pbrParameters) {
9
+ vec3 lightDirectionEC, czm_modelMaterial material) {
11
10
  vec3 v = -positionEC;
12
11
  vec3 n = normalEC;
13
12
  vec3 l = normalize(lightDirectionEC);
@@ -24,21 +23,18 @@ vec3 reearth_imageBasedLightingStage(vec3 positionEC, vec3 normalEC,
24
23
  vec3 diffuseIrradiance =
25
24
  czm_sphericalHarmonics(cubeDir, u_reearth_sphericalHarmonicCoefficients);
26
25
 
27
- return pbrParameters.diffuseColor * diffuseIrradiance;
26
+ return material.diffuse * diffuseIrradiance;
28
27
  }
29
28
 
30
29
  vec4 reearth_computeImageBasedLightingColor(vec4 color) {
31
30
  if (u_reearth_globeImageBasedLighting) {
32
- czm_pbrParameters pbrParameters;
33
- pbrParameters.diffuseColor = color.rgb;
31
+ czm_modelMaterial material;
32
+ material.diffuse = color.rgb;
34
33
 
35
34
  vec3 normalEC = normalize(v_normalEC);
36
35
  vec3 lighting =
37
- czm_pbrLighting(v_positionEC, normalEC, czm_lightDirectionEC,
38
- czm_lightColorHdr, pbrParameters);
39
- lighting += reearth_imageBasedLightingStage(
40
- v_positionEC, normalEC, czm_lightDirectionEC,
41
- czm_lightColorHdr, pbrParameters) *
36
+ czm_pbrLighting(v_positionEC, normalEC, czm_lightDirectionEC, material) * czm_lightColorHdr;
37
+ lighting += reearth_imageBasedLightingStage(v_positionEC, normalEC, czm_lightDirectionEC, material) *
42
38
  u_vertexShadowDarkness;
43
39
 
44
40
  #ifndef HDR
@@ -5,16 +5,15 @@ import {
5
5
  IonResource,
6
6
  TerrainProvider,
7
7
  } from "cesium";
8
- import { pick } from "lodash-es";
9
8
  import { useMemo } from "react";
10
9
  import { Globe as CesiumGlobe } from "resium";
11
10
 
12
- import type { SceneProperty, TerrainProperty } from "../..";
13
- import { objKeys } from "../../../utils";
11
+ import type { ViewerProperty, TerrainProperty } from "../..";
12
+ import { AssetsCesiumProperty } from "../../../Map";
14
13
  import { toColor } from "../common";
15
14
 
16
15
  export type Props = {
17
- property?: SceneProperty;
16
+ property?: ViewerProperty;
18
17
  cesiumIonAccessToken?: string;
19
18
  };
20
19
 
@@ -22,93 +21,67 @@ export default function Globe({ property, cesiumIonAccessToken }: Props): JSX.El
22
21
  const terrainProperty = useMemo(
23
22
  (): TerrainProperty => ({
24
23
  ...property?.terrain,
25
- ...pick(property?.default, terrainPropertyKeys),
26
24
  }),
27
- [property?.terrain, property?.default],
25
+ [property?.terrain],
28
26
  );
29
27
 
30
28
  const terrainProvider = useMemo((): Promise<TerrainProvider> | TerrainProvider | undefined => {
31
29
  const opts = {
32
- terrain: terrainProperty?.terrain,
33
- terrainType: terrainProperty?.terrainType,
34
- terrainNormal: terrainProperty?.terrainNormal,
35
- terrainCesiumIonAccessToken:
36
- terrainProperty?.terrainCesiumIonAccessToken || cesiumIonAccessToken,
37
- terrainCesiumIonAsset: terrainProperty?.terrainCesiumIonAsset,
38
- terrainCesiumIonUrl: terrainProperty?.terrainCesiumIonUrl,
30
+ terrain: terrainProperty?.enabled,
31
+ terrainType: terrainProperty?.type,
32
+ normal: terrainProperty?.normal,
33
+ ionAccessToken: property?.assets?.cesium?.terrain?.ionAccessToken || cesiumIonAccessToken,
34
+ ionAsset: property?.assets?.cesium?.terrain?.ionAsset,
35
+ ionUrl: property?.assets?.cesium?.terrain?.ionUrl,
39
36
  };
40
37
  const provider = opts.terrain ? terrainProviders[opts.terrainType || "cesium"] : undefined;
41
38
  return (typeof provider === "function" ? provider(opts) : provider) ?? defaultTerrainProvider;
42
39
  }, [
43
- terrainProperty?.terrain,
44
- terrainProperty?.terrainType,
45
- terrainProperty?.terrainCesiumIonAccessToken,
46
- terrainProperty?.terrainCesiumIonAsset,
47
- terrainProperty?.terrainCesiumIonUrl,
48
- terrainProperty?.terrainNormal,
40
+ terrainProperty?.enabled,
41
+ terrainProperty?.type,
42
+ terrainProperty?.normal,
43
+ property?.assets?.cesium?.terrain?.ionAccessToken,
44
+ property?.assets?.cesium?.terrain?.ionAsset,
45
+ property?.assets?.cesium?.terrain?.ionUrl,
49
46
  cesiumIonAccessToken,
50
47
  ]);
51
48
 
52
49
  const baseColor = useMemo(
53
- () => toColor(property?.atmosphere?.globeBaseColor),
54
- [property?.atmosphere?.globeBaseColor],
50
+ () => toColor(property?.globe?.baseColor),
51
+ [property?.globe?.baseColor],
55
52
  );
56
53
 
57
54
  return (
58
55
  <CesiumGlobe
59
56
  baseColor={baseColor}
60
- enableLighting={
61
- !!(property?.atmosphere?.enable_lighting ?? property?.globeLighting?.globeLighting)
62
- }
63
- showGroundAtmosphere={
64
- property?.atmosphere?.ground_atmosphere ??
65
- property?.globeAtmosphere?.globeAtmosphere ??
66
- true
67
- }
68
- atmosphereLightIntensity={property?.globeAtmosphere?.globeAtmosphereIntensity}
69
- atmosphereSaturationShift={property?.atmosphere?.surturation_shift}
70
- atmosphereHueShift={property?.atmosphere?.hue_shift}
71
- atmosphereBrightnessShift={property?.atmosphere?.brightness_shift}
57
+ enableLighting={!!property?.globe?.enableLighting}
58
+ showGroundAtmosphere={property?.globe?.atmosphere?.enabled ?? true}
59
+ atmosphereLightIntensity={property?.globe?.atmosphere?.lightIntensity}
60
+ atmosphereSaturationShift={property?.globe?.atmosphere?.saturationShift}
61
+ atmosphereHueShift={property?.globe?.atmosphere?.hueShift}
62
+ atmosphereBrightnessShift={property?.globe?.atmosphere?.brightnessShift}
72
63
  terrainProvider={terrainProvider}
73
- depthTestAgainstTerrain={!!terrainProperty.depthTestAgainstTerrain}
64
+ depthTestAgainstTerrain={!!property?.globe?.depthTestAgainstTerrain}
74
65
  />
75
66
  );
76
67
  }
77
68
 
78
- const terrainPropertyKeys = objKeys<TerrainProperty>({
79
- terrain: 0,
80
- terrainType: 0,
81
- terrainExaggeration: 0,
82
- terrainExaggerationRelativeHeight: 0,
83
- depthTestAgainstTerrain: 0,
84
- terrainCesiumIonAsset: 0,
85
- terrainCesiumIonAccessToken: 0,
86
- terrainCesiumIonUrl: 0,
87
- terrainUrl: 0,
88
- });
89
-
90
69
  const defaultTerrainProvider = new EllipsoidTerrainProvider();
91
70
 
92
71
  const terrainProviders: {
93
- [k in NonNullable<TerrainProperty["terrainType"]>]:
72
+ [k in NonNullable<TerrainProperty["type"]>]:
94
73
  | TerrainProvider
95
74
  | ((
96
- opts: Pick<
97
- TerrainProperty,
98
- | "terrainCesiumIonAccessToken"
99
- | "terrainCesiumIonAsset"
100
- | "terrainCesiumIonUrl"
101
- | "terrainNormal"
102
- >,
75
+ opts: Pick<TerrainProperty, "normal"> & AssetsCesiumProperty["terrain"],
103
76
  ) => Promise<TerrainProvider> | TerrainProvider | null);
104
77
  } = {
105
- cesium: ({ terrainCesiumIonAccessToken, terrainNormal }) =>
78
+ cesium: ({ ionAccessToken, normal }) =>
106
79
  CesiumTerrainProvider.fromUrl(
107
80
  IonResource.fromAssetId(1, {
108
- accessToken: terrainCesiumIonAccessToken,
81
+ accessToken: ionAccessToken,
109
82
  }),
110
83
  {
111
- requestVertexNormals: terrainNormal,
84
+ requestVertexNormals: normal,
112
85
  requestWaterMask: false,
113
86
  },
114
87
  ),
@@ -116,20 +89,15 @@ const terrainProviders: {
116
89
  ArcGISTiledElevationTerrainProvider.fromUrl(
117
90
  "https://elevation3d.arcgis.com/arcgis/rest/services/WorldElevation3D/Terrain3D/ImageServer",
118
91
  ),
119
- cesiumion: ({
120
- terrainCesiumIonAccessToken,
121
- terrainCesiumIonAsset,
122
- terrainCesiumIonUrl,
123
- terrainNormal,
124
- }) =>
125
- terrainCesiumIonAsset
92
+ cesiumion: ({ ionAccessToken, ionAsset, ionUrl, normal }) =>
93
+ ionAsset
126
94
  ? CesiumTerrainProvider.fromUrl(
127
- terrainCesiumIonUrl ||
128
- IonResource.fromAssetId(parseInt(terrainCesiumIonAsset, 10), {
129
- accessToken: terrainCesiumIonAccessToken,
95
+ ionUrl ||
96
+ IonResource.fromAssetId(parseInt(ionAsset, 10), {
97
+ accessToken: ionAccessToken,
130
98
  }),
131
99
  {
132
- requestVertexNormals: terrainNormal,
100
+ requestVertexNormals: normal,
133
101
  },
134
102
  )
135
103
  : null,
@@ -14,7 +14,7 @@ test("useImageryProviders", () => {
14
14
  presets,
15
15
  cesiumIonAccessToken,
16
16
  }),
17
- { initialProps: { tiles: [{ id: "1", tile_type: "default" }] } },
17
+ { initialProps: { tiles: [{ id: "1", type: "default" }] } },
18
18
  );
19
19
 
20
20
  expect(result.current.providers).toEqual({ "1": ["default", undefined, { hoge: undefined }] });
@@ -23,14 +23,14 @@ test("useImageryProviders", () => {
23
23
  const prevImageryProvider = result.current.providers["1"][2];
24
24
 
25
25
  // re-render with same tiles
26
- rerender({ tiles: [{ id: "1", tile_type: "default" }] });
26
+ rerender({ tiles: [{ id: "1", type: "default" }] });
27
27
 
28
28
  expect(result.current.providers).toEqual({ "1": ["default", undefined, { hoge: undefined }] });
29
29
  expect(result.current.providers["1"][2]).toBe(prevImageryProvider); // 1's provider should be reused
30
30
  expect(provider).toBeCalledTimes(1);
31
31
 
32
32
  // update a tile URL
33
- rerender({ tiles: [{ id: "1", tile_type: "default", tile_url: "a" }] });
33
+ rerender({ tiles: [{ id: "1", type: "default", url: "a" }] });
34
34
 
35
35
  expect(result.current.providers).toEqual({ "1": ["default", "a", { hoge: "a" }] });
36
36
  expect(result.current.providers["1"][2]).not.toBe(prevImageryProvider);
@@ -42,8 +42,8 @@ test("useImageryProviders", () => {
42
42
  // add a tile with URL
43
43
  rerender({
44
44
  tiles: [
45
- { id: "2", tile_type: "default" },
46
- { id: "1", tile_type: "default", tile_url: "a" },
45
+ { id: "2", type: "default" },
46
+ { id: "1", type: "default", url: "a" },
47
47
  ],
48
48
  });
49
49
 
@@ -58,8 +58,8 @@ test("useImageryProviders", () => {
58
58
  // sort tiles
59
59
  rerender({
60
60
  tiles: [
61
- { id: "1", tile_type: "default", tile_url: "a" },
62
- { id: "2", tile_type: "default" },
61
+ { id: "1", type: "default", url: "a" },
62
+ { id: "2", type: "default" },
63
63
  ],
64
64
  });
65
65
 
@@ -73,7 +73,7 @@ test("useImageryProviders", () => {
73
73
 
74
74
  // delete a tile
75
75
  rerender({
76
- tiles: [{ id: "1", tile_type: "default", tile_url: "a" }],
76
+ tiles: [{ id: "1", type: "default", url: "a" }],
77
77
  cesiumIonAccessToken: "a",
78
78
  });
79
79
 
@@ -86,7 +86,7 @@ test("useImageryProviders", () => {
86
86
 
87
87
  // update a tile type
88
88
  rerender({
89
- tiles: [{ id: "1", tile_type: "foobar", tile_url: "u" }],
89
+ tiles: [{ id: "1", type: "foobar", url: "u" }],
90
90
  cesiumIonAccessToken: "a",
91
91
  });
92
92
 
@@ -20,11 +20,11 @@ export type ImageryLayerData = {
20
20
 
21
21
  export type Tile = {
22
22
  id: string;
23
- tile_url?: string;
24
- tile_type?: string;
25
- tile_opacity?: number;
26
- tile_zoomLevel?: number[];
27
- tile_zoomLevelForURL?: number[];
23
+ url?: string;
24
+ type?: string;
25
+ opacity?: number;
26
+ zoomLevel?: number[];
27
+ zoomLevelForURL?: number[];
28
28
  heatmap?: boolean;
29
29
  };
30
30
 
@@ -55,13 +55,13 @@ export default function ImageryLayers({ tiles, cesiumIonAccessToken }: Props) {
55
55
  id,
56
56
  provider: providers[id]?.[2],
57
57
  }))
58
- .map(({ id, tile_opacity: opacity, tile_zoomLevel, provider, heatmap }, i) =>
58
+ .map(({ id, opacity, zoomLevel, provider, heatmap }, i) =>
59
59
  provider ? (
60
60
  <ImageryLayer
61
61
  key={`${id}_${i}_${counter}`}
62
62
  imageryProvider={provider}
63
- minimumTerrainLevel={tile_zoomLevel?.[0]}
64
- maximumTerrainLevel={tile_zoomLevel?.[1]}
63
+ minimumTerrainLevel={zoomLevel?.[0]}
64
+ maximumTerrainLevel={zoomLevel?.[1]}
65
65
  alpha={opacity}
66
66
  index={i}
67
67
  colorToAlpha={heatmap ? Color.WHITE : undefined}
@@ -89,17 +89,17 @@ export function useImageryProviders({
89
89
  url?: string;
90
90
  cesiumIonAccessToken?: string;
91
91
  heatmap?: boolean;
92
- tile_zoomLevel?: number[];
92
+ zoomLevel?: number[];
93
93
  }) => Promise<ImageryProvider> | ImageryProvider | null;
94
94
  };
95
95
  }): { providers: Providers; updated: boolean } {
96
96
  const newTile = useCallback(
97
97
  (t: Tile, ciat?: string) =>
98
- presets[t.tile_type || "default"]({
99
- url: t.tile_url,
98
+ presets[t.type || "default"]({
99
+ url: t.url,
100
100
  cesiumIonAccessToken: ciat,
101
101
  heatmap: t.heatmap,
102
- tile_zoomLevel: t.tile_zoomLevelForURL,
102
+ zoomLevel: t.zoomLevelForURL,
103
103
  }),
104
104
  [presets],
105
105
  );
@@ -152,10 +152,10 @@ export function useImageryProviders({
152
152
  : [
153
153
  key,
154
154
  added ||
155
- prevType !== tile.tile_type ||
156
- prevUrl !== tile.tile_url ||
157
- (isCesiumAccessTokenUpdated && (!tile.tile_type || tile.tile_type === "default"))
158
- ? [tile.tile_type, tile.tile_url, newTile(tile, cesiumIonAccessToken)]
155
+ prevType !== tile.type ||
156
+ prevUrl !== tile.url ||
157
+ (isCesiumAccessTokenUpdated && (!tile.type || tile.type === "default"))
158
+ ? [tile.type, tile.url, newTile(tile, cesiumIonAccessToken)]
159
159
  : [prevType, prevUrl, prevProvider],
160
160
  ],
161
161
  )
@@ -169,9 +169,7 @@ export function useImageryProviders({
169
169
  !!added.length ||
170
170
  !!isCesiumAccessTokenUpdated ||
171
171
  !isEqual(prevTileKeys.current, tileKeys) ||
172
- rawProviders.some(
173
- p => p.tile && (p.prevType !== p.tile.tile_type || p.prevUrl !== p.tile.tile_url),
174
- );
172
+ rawProviders.some(p => p.tile && (p.prevType !== p.tile.type || p.prevUrl !== p.tile.url));
175
173
 
176
174
  prevTileKeys.current = tileKeys;
177
175
  prevCesiumIonAccessToken.current = cesiumIonAccessToken;
@@ -4,7 +4,7 @@ import { BoundingSphere, Cartesian3, SceneTransforms, Cartesian2, JulianDate } f
4
4
  import { useEffect, useState } from "react";
5
5
  import { useCesium } from "resium";
6
6
 
7
- import type { SceneProperty } from "../../..";
7
+ import type { ViewerProperty } from "../../..";
8
8
  import { TimelineManagerRef } from "../../../../Map/useTimelineManager";
9
9
  import { useIcon } from "../../common";
10
10
 
@@ -12,7 +12,7 @@ import Crosshair from "./crosshair.svg?react";
12
12
 
13
13
  export type Props = {
14
14
  className?: string;
15
- property?: SceneProperty;
15
+ property?: ViewerProperty;
16
16
  timelineManagerRef?: TimelineManagerRef;
17
17
  };
18
18
 
@@ -29,17 +29,17 @@ export default function Indicator({
29
29
  mountOnEnter: true,
30
30
  unmountOnExit: true,
31
31
  });
32
- const { indicator_type, indicator_image, indicator_image_scale } = property?.indicator ?? {};
33
- const [img, w, h] = useIcon({ image: indicator_image, imageSize: indicator_image_scale });
32
+ const { type, image, imageScale } = property?.indicator ?? {};
33
+ const [img, w, h] = useIcon({ image: image, imageSize: imageScale });
34
34
 
35
35
  useEffect(() => {
36
- !(!indicator_type || indicator_type === "default")
36
+ !(!type || type === "default")
37
37
  ? viewer?.selectionIndicator.viewModel.selectionIndicatorElement.setAttribute(
38
38
  "hidden",
39
39
  "true",
40
40
  )
41
41
  : viewer?.selectionIndicator.viewModel.selectionIndicatorElement.removeAttribute("hidden");
42
- }, [indicator_type, viewer, viewer?.selectionIndicator]);
42
+ }, [type, viewer, viewer?.selectionIndicator]);
43
43
 
44
44
  useEffect(() => {
45
45
  if (!viewer) return;
@@ -90,7 +90,7 @@ export default function Indicator({
90
90
  }, [viewer, timelineManagerRef]);
91
91
 
92
92
  return transition !== "unmounted" && pos ? (
93
- indicator_type === "crosshair" ? (
93
+ type === "crosshair" ? (
94
94
  <div
95
95
  className={className}
96
96
  style={{
@@ -109,7 +109,7 @@ export default function Indicator({
109
109
  }}>
110
110
  <Crosshair />
111
111
  </div>
112
- ) : indicator_type === "custom" ? (
112
+ ) : type === "custom" ? (
113
113
  <img
114
114
  src={img}
115
115
  width={w}
@@ -0,0 +1,135 @@
1
+ import { Math as CesiumMath, Scene, Viewer } from "cesium";
2
+ import { isEqual } from "lodash-es";
3
+ import { useCallback, useEffect, useRef } from "react";
4
+ import { CesiumComponentRef } from "resium";
5
+ import { RefObject } from "use-callback-ref/dist/es5/types";
6
+ import { useCustomCompareCallback } from "use-custom-compare";
7
+
8
+ import { EngineRef, ViewerProperty } from "../..";
9
+ import { Camera } from "../../../mantle";
10
+ import { FEATURE_FLAGS } from "../../../Visualizer";
11
+ import { getCamera } from "../common";
12
+
13
+ import { useCameraLimiter } from "./useCameraLimiter";
14
+
15
+ export default ({
16
+ cesium,
17
+ property,
18
+ camera,
19
+ featureFlags,
20
+ engineAPI,
21
+ cameraForceHorizontalRoll = false,
22
+ onCameraChange,
23
+ }: {
24
+ cesium: RefObject<CesiumComponentRef<Viewer>>;
25
+ property?: ViewerProperty;
26
+ engineAPI: EngineRef;
27
+ featureFlags: number;
28
+ camera?: Camera;
29
+ cameraForceHorizontalRoll?: boolean;
30
+ onCameraChange?: (camera: Camera) => void;
31
+ }) => {
32
+ // cache the camera data emitted from viewer camera change
33
+ const emittedCamera = useRef<Camera[]>([]);
34
+ const updateCamera = useCallback(() => {
35
+ const viewer = cesium?.current?.cesiumElement;
36
+ if (!viewer || viewer.isDestroyed() || !onCameraChange) return;
37
+
38
+ const c = getCamera(viewer);
39
+ if (c && !isEqual(c, camera)) {
40
+ emittedCamera.current.push(c);
41
+ // The state change is not sync now. This number is how many state updates can actually happen to be merged within one re-render.
42
+ if (emittedCamera.current.length > 10) {
43
+ emittedCamera.current.shift();
44
+ }
45
+ onCameraChange?.(c);
46
+ }
47
+ }, [cesium, camera, onCameraChange]);
48
+
49
+ const handleCameraChange = useCallback(() => {
50
+ updateCamera();
51
+ }, [updateCamera]);
52
+
53
+ const handleCameraMoveEnd = useCallback(() => {
54
+ updateCamera();
55
+ }, [updateCamera]);
56
+
57
+ useEffect(() => {
58
+ if (camera && !emittedCamera.current.includes(camera)) {
59
+ engineAPI.flyTo(camera, { duration: 0 });
60
+ emittedCamera.current = [];
61
+ }
62
+ }, [camera, engineAPI]);
63
+
64
+ useEffect(() => {
65
+ if (!cesium.current?.cesiumElement) return;
66
+ const allowCameraMove = !!(featureFlags & FEATURE_FLAGS.CAMERA_MOVE);
67
+ const allowCameraZoom = !!(featureFlags & FEATURE_FLAGS.CAMERA_ZOOM);
68
+ const allowCameraTilt = !!(featureFlags & FEATURE_FLAGS.CAMERA_TILT);
69
+ const allowCameraLook = !!(featureFlags & FEATURE_FLAGS.CAMERA_LOOK);
70
+ cesium.current.cesiumElement.scene.screenSpaceCameraController.enableTranslate =
71
+ allowCameraMove;
72
+ cesium.current.cesiumElement.scene.screenSpaceCameraController.enableRotate = allowCameraMove;
73
+ cesium.current.cesiumElement.scene.screenSpaceCameraController.enableLook = allowCameraLook;
74
+ cesium.current.cesiumElement.scene.screenSpaceCameraController.enableTilt = allowCameraTilt;
75
+ cesium.current.cesiumElement.scene.screenSpaceCameraController.enableZoom = allowCameraZoom;
76
+ }, [cesium, featureFlags]);
77
+
78
+ // move to initial position at startup
79
+ const initialCameraFlight = useRef(false);
80
+
81
+ const mountCamera = useCustomCompareCallback(
82
+ () => {
83
+ if (initialCameraFlight.current) return;
84
+ initialCameraFlight.current = true;
85
+ if (property?.camera?.limiter?.enabled && property?.camera?.limiter?.targetArea) {
86
+ engineAPI.flyTo(property?.camera?.limiter?.targetArea, { duration: 0 });
87
+ } else if (camera) {
88
+ engineAPI.flyTo(camera, { duration: 0 });
89
+ }
90
+ },
91
+ [engineAPI, property?.camera?.limiter?.enabled],
92
+ (prevDeps, nextDeps) => prevDeps[0] === nextDeps[0] && prevDeps[1] === nextDeps[1],
93
+ );
94
+
95
+ const unmountCamera = useCallback(() => {
96
+ initialCameraFlight.current = false;
97
+ }, []);
98
+
99
+ // camera limiter
100
+ const { cameraViewBoundaries, cameraViewOuterBoundaries, cameraViewBoundariesMaterial } =
101
+ useCameraLimiter(cesium, camera, property?.camera?.limiter);
102
+
103
+ // horizontal roll
104
+ const fixCameraHorizontal = useCallback(
105
+ (scene: Scene) => {
106
+ if (!scene.camera || !cameraForceHorizontalRoll) return;
107
+ if (Math.abs(CesiumMath.negativePiToPi(scene.camera.roll)) > Math.PI / 86400) {
108
+ scene.camera.setView({
109
+ orientation: {
110
+ heading: scene.camera.heading,
111
+ pitch: scene.camera.pitch,
112
+ roll: 0,
113
+ },
114
+ });
115
+ }
116
+ },
117
+ [cameraForceHorizontalRoll],
118
+ );
119
+
120
+ useEffect(() => {
121
+ const viewer = cesium.current?.cesiumElement;
122
+ if (!viewer) return;
123
+ return viewer.scene.preRender.addEventListener(fixCameraHorizontal);
124
+ }, [cesium, fixCameraHorizontal]);
125
+
126
+ return {
127
+ cameraViewBoundaries,
128
+ cameraViewOuterBoundaries,
129
+ cameraViewBoundariesMaterial,
130
+ mountCamera,
131
+ unmountCamera,
132
+ handleCameraChange,
133
+ handleCameraMoveEnd,
134
+ };
135
+ };
@@ -12,10 +12,9 @@ import type { Viewer as CesiumViewer } from "cesium";
12
12
  import { useEffect, useMemo, useState, RefObject } from "react";
13
13
  import { CesiumComponentRef } from "resium";
14
14
 
15
- import type { SceneProperty } from "..";
16
- import { Camera } from "../../utils";
17
-
18
- import { getCamera } from "./common";
15
+ import { CameraLimiterProperty } from "../../../Map";
16
+ import { Camera } from "../../../utils";
17
+ import { getCamera } from "../common";
19
18
 
20
19
  const targetWidth = 1000000;
21
20
  const targetLength = 1000000;
@@ -23,44 +22,30 @@ const targetLength = 1000000;
23
22
  export function useCameraLimiter(
24
23
  cesium: RefObject<CesiumComponentRef<CesiumViewer>>,
25
24
  camera: Camera | undefined,
26
- property: SceneProperty["cameraLimiter"] | undefined,
25
+ property: CameraLimiterProperty | undefined,
27
26
  ) {
28
27
  const geodesic = useMemo(() => {
29
28
  const viewer = cesium.current?.cesiumElement;
30
29
  if (
31
30
  !viewer ||
32
31
  viewer.isDestroyed() ||
33
- !property?.cameraLimitterEnabled ||
34
- !property.cameraLimitterTargetArea?.lng ||
35
- !property.cameraLimitterTargetArea.lat
32
+ !property?.enabled ||
33
+ !property.targetArea?.lng ||
34
+ !property.targetArea.lat
36
35
  ) {
37
36
  return undefined;
38
37
  }
39
38
 
40
- return getGeodesic(
41
- viewer,
42
- property.cameraLimitterTargetArea.lng,
43
- property.cameraLimitterTargetArea.lat,
44
- );
45
- }, [
46
- cesium,
47
- property?.cameraLimitterEnabled,
48
- property?.cameraLimitterTargetArea?.lng,
49
- property?.cameraLimitterTargetArea?.lat,
50
- ]);
39
+ return getGeodesic(viewer, property.targetArea.lng, property.targetArea.lat);
40
+ }, [cesium, property?.enabled, property?.targetArea?.lng, property?.targetArea?.lat]);
51
41
 
52
42
  // calculate inner limiter dimensions
53
43
  const limiterDimensions = useMemo((): InnerLimiterDimensions | undefined => {
54
44
  if (!geodesic) return undefined;
55
45
 
56
- const width =
57
- typeof property?.cameraLimitterTargetWidth === "number"
58
- ? property.cameraLimitterTargetWidth
59
- : targetWidth;
46
+ const width = typeof property?.targetWidth === "number" ? property.targetWidth : targetWidth;
60
47
  const length =
61
- typeof property?.cameraLimitterTargetLength === "number"
62
- ? property.cameraLimitterTargetLength
63
- : targetLength;
48
+ typeof property?.targetLength === "number" ? property.targetLength : targetLength;
64
49
 
65
50
  const { cartesianArray, cartographicDimensions } = calcBoundaryBox(
66
51
  geodesic,
@@ -72,7 +57,7 @@ export function useCameraLimiter(
72
57
  cartographicDimensions,
73
58
  cartesianArray,
74
59
  };
75
- }, [property?.cameraLimitterTargetWidth, property?.cameraLimitterTargetLength, geodesic]);
60
+ }, [property?.targetWidth, property?.targetLength, geodesic]);
76
61
 
77
62
  // calculate maximum camera view (outer boundaries)
78
63
  const [cameraViewOuterBoundaries, setCameraViewOuterBoundaries] = useState<
@@ -81,19 +66,19 @@ export function useCameraLimiter(
81
66
 
82
67
  useEffect(() => {
83
68
  const viewer = cesium.current?.cesiumElement;
84
- if (!viewer || viewer.isDestroyed() || !property?.cameraLimitterTargetArea || !geodesic) return;
69
+ if (!viewer || viewer.isDestroyed() || !property?.targetArea || !geodesic) return;
85
70
 
86
71
  const camera = new CesiumCamera(viewer.scene);
87
72
  camera.setView({
88
73
  destination: Cartesian3.fromDegrees(
89
- property.cameraLimitterTargetArea.lng,
90
- property.cameraLimitterTargetArea.lat,
91
- property.cameraLimitterTargetArea.height,
74
+ property.targetArea.lng,
75
+ property.targetArea.lat,
76
+ property.targetArea.height,
92
77
  ),
93
78
  orientation: {
94
- heading: property?.cameraLimitterTargetArea.heading,
95
- pitch: property?.cameraLimitterTargetArea.pitch,
96
- roll: property?.cameraLimitterTargetArea.roll,
79
+ heading: property?.targetArea.heading,
80
+ pitch: property?.targetArea.pitch,
81
+ roll: property?.targetArea.roll,
97
82
  up: camera.up,
98
83
  },
99
84
  });
@@ -103,10 +88,8 @@ export function useCameraLimiter(
103
88
  const rectangleHalfWidth = Rectangle.computeWidth(computedViewRectangle) * Math.PI * 1000000;
104
89
  const rectangleHalfHeight = Rectangle.computeHeight(computedViewRectangle) * Math.PI * 1000000;
105
90
 
106
- const {
107
- cameraLimitterTargetWidth: width = targetWidth,
108
- cameraLimitterTargetLength: length = targetLength,
109
- } = property ?? {};
91
+ const { targetWidth: width = targetWidth, targetLength: length = targetLength } =
92
+ property ?? {};
110
93
 
111
94
  const { cartesianArray } = calcBoundaryBox(
112
95
  geodesic,
@@ -121,13 +104,7 @@ export function useCameraLimiter(
121
104
  useEffect(() => {
122
105
  const viewer = cesium?.current?.cesiumElement;
123
106
  const camera = getCamera(cesium?.current?.cesiumElement);
124
- if (
125
- !viewer ||
126
- viewer.isDestroyed() ||
127
- !camera ||
128
- !property?.cameraLimitterEnabled ||
129
- !limiterDimensions
130
- )
107
+ if (!viewer || viewer.isDestroyed() || !camera || !property?.enabled || !limiterDimensions)
131
108
  return;
132
109
  viewer.camera.setView({
133
110
  destination: getAllowedCameraDestination(camera, limiterDimensions),