@cesium/engine 0.1.0

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 (1731) hide show
  1. package/Build/ThirdParty/Workers/basis_transcoder.js +2233 -0
  2. package/Build/ThirdParty/Workers/draco_decoder_nodejs.js +1872 -0
  3. package/Build/ThirdParty/Workers/package.json +1 -0
  4. package/Build/ThirdParty/Workers/pako_deflate.min.js +589 -0
  5. package/Build/ThirdParty/Workers/pako_inflate.min.js +798 -0
  6. package/Build/ThirdParty/Workers/z-worker-pako.js +503 -0
  7. package/Build/ThirdParty/basis_transcoder.wasm +0 -0
  8. package/Build/ThirdParty/draco_decoder.wasm +0 -0
  9. package/Build/ThirdParty/google-earth-dbroot-parser.js +8019 -0
  10. package/Build/Widget/CesiumWidget.css +120 -0
  11. package/Build/Widget/lighter.css +13 -0
  12. package/Build/Workers/ArcType-ce2e50ab.js +37 -0
  13. package/Build/Workers/AttributeCompression-4589338a.js +716 -0
  14. package/Build/Workers/AxisAlignedBoundingBox-bfb1234f.js +258 -0
  15. package/Build/Workers/BoundingRectangle-7ffc2153.js +369 -0
  16. package/Build/Workers/BoxGeometry-93f344a3.js +884 -0
  17. package/Build/Workers/Check-666ab1a0.js +290 -0
  18. package/Build/Workers/Color-0c5aaf47.js +2262 -0
  19. package/Build/Workers/ComponentDatatype-f7b11d02.js +341 -0
  20. package/Build/Workers/CoplanarPolygonGeometryLibrary-6597982a.js +132 -0
  21. package/Build/Workers/CorridorGeometryLibrary-2119580e.js +498 -0
  22. package/Build/Workers/CylinderGeometry-f9503c6d.js +467 -0
  23. package/Build/Workers/CylinderGeometryLibrary-372c07d8.js +63 -0
  24. package/Build/Workers/EllipseGeometry-fedf72d5.js +1304 -0
  25. package/Build/Workers/EllipseGeometryLibrary-4ea68687.js +366 -0
  26. package/Build/Workers/EllipseOutlineGeometry-e2ae6a35.js +443 -0
  27. package/Build/Workers/EllipsoidGeodesic-16de63ea.js +520 -0
  28. package/Build/Workers/EllipsoidGeometry-95c0330e.js +637 -0
  29. package/Build/Workers/EllipsoidOutlineGeometry-d6d2ceec.js +454 -0
  30. package/Build/Workers/EllipsoidRhumbLine-ae5e65e0.js +741 -0
  31. package/Build/Workers/EllipsoidTangentPlane-bfc674bf.js +373 -0
  32. package/Build/Workers/EncodedCartesian3-f473ea18.js +171 -0
  33. package/Build/Workers/FrustumGeometry-3bf2e4eb.js +2512 -0
  34. package/Build/Workers/GeometryAttribute-df5f473e.js +619 -0
  35. package/Build/Workers/GeometryAttributes-f06a2792.js +91 -0
  36. package/Build/Workers/GeometryInstance-aa75b4cf.js +121 -0
  37. package/Build/Workers/GeometryOffsetAttribute-04332ce7.js +16 -0
  38. package/Build/Workers/GeometryPipeline-f0e46c42.js +3690 -0
  39. package/Build/Workers/IndexDatatype-a55ceaa1.js +200 -0
  40. package/Build/Workers/IntersectionTests-9de29d51.js +1836 -0
  41. package/Build/Workers/Math-2dbd6b93.js +1330 -0
  42. package/Build/Workers/Matrix2-ce637455.js +7084 -0
  43. package/Build/Workers/Matrix3-4f4df527.js +4282 -0
  44. package/Build/Workers/OrientedBoundingBox-d3ff3d4d.js +1257 -0
  45. package/Build/Workers/Plane-b81241c2.js +309 -0
  46. package/Build/Workers/PolygonGeometryLibrary-6f4937bb.js +1074 -0
  47. package/Build/Workers/PolygonPipeline-774a8aaf.js +1341 -0
  48. package/Build/Workers/PolylinePipeline-2e2b015c.js +573 -0
  49. package/Build/Workers/PolylineVolumeGeometryLibrary-7ee1d449.js +781 -0
  50. package/Build/Workers/PrimitivePipeline-a9b7aae0.js +966 -0
  51. package/Build/Workers/RectangleGeometryLibrary-9aa6c8f6.js +280 -0
  52. package/Build/Workers/RuntimeError-06c93819.js +68 -0
  53. package/Build/Workers/TerrainEncoding-b52dcfc5.js +1227 -0
  54. package/Build/Workers/Transforms-2f755df8.js +14683 -0
  55. package/Build/Workers/VertexFormat-6b480673.js +312 -0
  56. package/Build/Workers/WallGeometryLibrary-ab19a93d.js +211 -0
  57. package/Build/Workers/WebGLConstants-a8cc3e8c.js +620 -0
  58. package/Build/Workers/WebMercatorProjection-9f25de49.js +151 -0
  59. package/Build/Workers/arrayRemoveDuplicates-c2038105.js +129 -0
  60. package/Build/Workers/cesiumWorkerBootstrapper.js +1273 -0
  61. package/Build/Workers/combine-ca22a614.js +82 -0
  62. package/Build/Workers/combineGeometry.js +17 -0
  63. package/Build/Workers/createBoxGeometry.js +12 -0
  64. package/Build/Workers/createBoxOutlineGeometry.js +313 -0
  65. package/Build/Workers/createCircleGeometry.js +213 -0
  66. package/Build/Workers/createCircleOutlineGeometry.js +160 -0
  67. package/Build/Workers/createCoplanarPolygonGeometry.js +586 -0
  68. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +236 -0
  69. package/Build/Workers/createCorridorGeometry.js +1407 -0
  70. package/Build/Workers/createCorridorOutlineGeometry.js +603 -0
  71. package/Build/Workers/createCylinderGeometry.js +12 -0
  72. package/Build/Workers/createCylinderOutlineGeometry.js +265 -0
  73. package/Build/Workers/createEllipseGeometry.js +14 -0
  74. package/Build/Workers/createEllipseOutlineGeometry.js +14 -0
  75. package/Build/Workers/createEllipsoidGeometry.js +12 -0
  76. package/Build/Workers/createEllipsoidOutlineGeometry.js +15 -0
  77. package/Build/Workers/createFrustumGeometry.js +12 -0
  78. package/Build/Workers/createFrustumOutlineGeometry.js +251 -0
  79. package/Build/Workers/createGeometry.js +55 -0
  80. package/Build/Workers/createGroundPolylineGeometry.js +2134 -0
  81. package/Build/Workers/createPlaneGeometry.js +250 -0
  82. package/Build/Workers/createPlaneOutlineGeometry.js +115 -0
  83. package/Build/Workers/createPolygonGeometry.js +1420 -0
  84. package/Build/Workers/createPolygonOutlineGeometry.js +683 -0
  85. package/Build/Workers/createPolylineGeometry.js +571 -0
  86. package/Build/Workers/createPolylineVolumeGeometry.js +411 -0
  87. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +301 -0
  88. package/Build/Workers/createRectangleGeometry.js +1476 -0
  89. package/Build/Workers/createRectangleOutlineGeometry.js +535 -0
  90. package/Build/Workers/createSimplePolylineGeometry.js +458 -0
  91. package/Build/Workers/createSphereGeometry.js +123 -0
  92. package/Build/Workers/createSphereOutlineGeometry.js +126 -0
  93. package/Build/Workers/createTaskProcessorWorker.js +127 -0
  94. package/Build/Workers/createVectorTileClampedPolylines.js +535 -0
  95. package/Build/Workers/createVectorTileGeometries.js +445 -0
  96. package/Build/Workers/createVectorTilePoints.js +79 -0
  97. package/Build/Workers/createVectorTilePolygons.js +406 -0
  98. package/Build/Workers/createVectorTilePolylines.js +254 -0
  99. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +640 -0
  100. package/Build/Workers/createVerticesFromHeightmap.js +2707 -0
  101. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +994 -0
  102. package/Build/Workers/createWallGeometry.js +623 -0
  103. package/Build/Workers/createWallOutlineGeometry.js +432 -0
  104. package/Build/Workers/decodeDraco.js +381 -0
  105. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +3668 -0
  106. package/Build/Workers/decodeI3S.js +1040 -0
  107. package/Build/Workers/defaultValue-0a909f67.js +51 -0
  108. package/Build/Workers/package.js +2 -0
  109. package/Build/Workers/transcodeKTX2.js +1516 -0
  110. package/Build/Workers/transferTypedArrayTest.js +18 -0
  111. package/Build/Workers/upsampleQuantizedTerrainMesh.js +1023 -0
  112. package/LICENSE.md +933 -0
  113. package/README.md +58 -0
  114. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_0.json +1 -0
  115. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_1.json +1 -0
  116. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_10.json +1 -0
  117. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_11.json +1 -0
  118. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_12.json +1 -0
  119. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_13.json +1 -0
  120. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_14.json +1 -0
  121. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_15.json +1 -0
  122. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_16.json +1 -0
  123. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_17.json +1 -0
  124. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_18.json +1 -0
  125. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_19.json +1 -0
  126. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_2.json +1 -0
  127. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_20.json +1 -0
  128. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_21.json +1 -0
  129. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_22.json +1 -0
  130. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_23.json +1 -0
  131. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_24.json +1 -0
  132. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_25.json +1 -0
  133. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_26.json +1 -0
  134. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_27.json +1 -0
  135. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_3.json +1 -0
  136. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_4.json +1 -0
  137. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_5.json +1 -0
  138. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_6.json +1 -0
  139. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_7.json +1 -0
  140. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_8.json +1 -0
  141. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_9.json +1 -0
  142. package/Source/Assets/Images/bing_maps_credit.png +0 -0
  143. package/Source/Assets/Images/cesium_credit.png +0 -0
  144. package/Source/Assets/Images/google_earth_credit.png +0 -0
  145. package/Source/Assets/Images/ion-credit.png +0 -0
  146. package/Source/Assets/Textures/LensFlare/DirtMask.jpg +0 -0
  147. package/Source/Assets/Textures/LensFlare/StarBurst.jpg +0 -0
  148. package/Source/Assets/Textures/NaturalEarthII/0/0/0.jpg +0 -0
  149. package/Source/Assets/Textures/NaturalEarthII/0/1/0.jpg +0 -0
  150. package/Source/Assets/Textures/NaturalEarthII/1/0/0.jpg +0 -0
  151. package/Source/Assets/Textures/NaturalEarthII/1/0/1.jpg +0 -0
  152. package/Source/Assets/Textures/NaturalEarthII/1/1/0.jpg +0 -0
  153. package/Source/Assets/Textures/NaturalEarthII/1/1/1.jpg +0 -0
  154. package/Source/Assets/Textures/NaturalEarthII/1/2/0.jpg +0 -0
  155. package/Source/Assets/Textures/NaturalEarthII/1/2/1.jpg +0 -0
  156. package/Source/Assets/Textures/NaturalEarthII/1/3/0.jpg +0 -0
  157. package/Source/Assets/Textures/NaturalEarthII/1/3/1.jpg +0 -0
  158. package/Source/Assets/Textures/NaturalEarthII/2/0/0.jpg +0 -0
  159. package/Source/Assets/Textures/NaturalEarthII/2/0/1.jpg +0 -0
  160. package/Source/Assets/Textures/NaturalEarthII/2/0/2.jpg +0 -0
  161. package/Source/Assets/Textures/NaturalEarthII/2/0/3.jpg +0 -0
  162. package/Source/Assets/Textures/NaturalEarthII/2/1/0.jpg +0 -0
  163. package/Source/Assets/Textures/NaturalEarthII/2/1/1.jpg +0 -0
  164. package/Source/Assets/Textures/NaturalEarthII/2/1/2.jpg +0 -0
  165. package/Source/Assets/Textures/NaturalEarthII/2/1/3.jpg +0 -0
  166. package/Source/Assets/Textures/NaturalEarthII/2/2/0.jpg +0 -0
  167. package/Source/Assets/Textures/NaturalEarthII/2/2/1.jpg +0 -0
  168. package/Source/Assets/Textures/NaturalEarthII/2/2/2.jpg +0 -0
  169. package/Source/Assets/Textures/NaturalEarthII/2/2/3.jpg +0 -0
  170. package/Source/Assets/Textures/NaturalEarthII/2/3/0.jpg +0 -0
  171. package/Source/Assets/Textures/NaturalEarthII/2/3/1.jpg +0 -0
  172. package/Source/Assets/Textures/NaturalEarthII/2/3/2.jpg +0 -0
  173. package/Source/Assets/Textures/NaturalEarthII/2/3/3.jpg +0 -0
  174. package/Source/Assets/Textures/NaturalEarthII/2/4/0.jpg +0 -0
  175. package/Source/Assets/Textures/NaturalEarthII/2/4/1.jpg +0 -0
  176. package/Source/Assets/Textures/NaturalEarthII/2/4/2.jpg +0 -0
  177. package/Source/Assets/Textures/NaturalEarthII/2/4/3.jpg +0 -0
  178. package/Source/Assets/Textures/NaturalEarthII/2/5/0.jpg +0 -0
  179. package/Source/Assets/Textures/NaturalEarthII/2/5/1.jpg +0 -0
  180. package/Source/Assets/Textures/NaturalEarthII/2/5/2.jpg +0 -0
  181. package/Source/Assets/Textures/NaturalEarthII/2/5/3.jpg +0 -0
  182. package/Source/Assets/Textures/NaturalEarthII/2/6/0.jpg +0 -0
  183. package/Source/Assets/Textures/NaturalEarthII/2/6/1.jpg +0 -0
  184. package/Source/Assets/Textures/NaturalEarthII/2/6/2.jpg +0 -0
  185. package/Source/Assets/Textures/NaturalEarthII/2/6/3.jpg +0 -0
  186. package/Source/Assets/Textures/NaturalEarthII/2/7/0.jpg +0 -0
  187. package/Source/Assets/Textures/NaturalEarthII/2/7/1.jpg +0 -0
  188. package/Source/Assets/Textures/NaturalEarthII/2/7/2.jpg +0 -0
  189. package/Source/Assets/Textures/NaturalEarthII/2/7/3.jpg +0 -0
  190. package/Source/Assets/Textures/NaturalEarthII/tilemapresource.xml +14 -0
  191. package/Source/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg +0 -0
  192. package/Source/Assets/Textures/SkyBox/tycho2t3_80_my.jpg +0 -0
  193. package/Source/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg +0 -0
  194. package/Source/Assets/Textures/SkyBox/tycho2t3_80_px.jpg +0 -0
  195. package/Source/Assets/Textures/SkyBox/tycho2t3_80_py.jpg +0 -0
  196. package/Source/Assets/Textures/SkyBox/tycho2t3_80_pz.jpg +0 -0
  197. package/Source/Assets/Textures/maki/airfield.png +0 -0
  198. package/Source/Assets/Textures/maki/airport.png +0 -0
  199. package/Source/Assets/Textures/maki/alcohol-shop.png +0 -0
  200. package/Source/Assets/Textures/maki/america-football.png +0 -0
  201. package/Source/Assets/Textures/maki/art-gallery.png +0 -0
  202. package/Source/Assets/Textures/maki/bakery.png +0 -0
  203. package/Source/Assets/Textures/maki/bank.png +0 -0
  204. package/Source/Assets/Textures/maki/bar.png +0 -0
  205. package/Source/Assets/Textures/maki/baseball.png +0 -0
  206. package/Source/Assets/Textures/maki/basketball.png +0 -0
  207. package/Source/Assets/Textures/maki/beer.png +0 -0
  208. package/Source/Assets/Textures/maki/bicycle.png +0 -0
  209. package/Source/Assets/Textures/maki/building.png +0 -0
  210. package/Source/Assets/Textures/maki/bus.png +0 -0
  211. package/Source/Assets/Textures/maki/cafe.png +0 -0
  212. package/Source/Assets/Textures/maki/camera.png +0 -0
  213. package/Source/Assets/Textures/maki/campsite.png +0 -0
  214. package/Source/Assets/Textures/maki/car.png +0 -0
  215. package/Source/Assets/Textures/maki/cemetery.png +0 -0
  216. package/Source/Assets/Textures/maki/cesium.png +0 -0
  217. package/Source/Assets/Textures/maki/chemist.png +0 -0
  218. package/Source/Assets/Textures/maki/cinema.png +0 -0
  219. package/Source/Assets/Textures/maki/circle-stroked.png +0 -0
  220. package/Source/Assets/Textures/maki/circle.png +0 -0
  221. package/Source/Assets/Textures/maki/city.png +0 -0
  222. package/Source/Assets/Textures/maki/clothing-store.png +0 -0
  223. package/Source/Assets/Textures/maki/college.png +0 -0
  224. package/Source/Assets/Textures/maki/commercial.png +0 -0
  225. package/Source/Assets/Textures/maki/cricket.png +0 -0
  226. package/Source/Assets/Textures/maki/cross.png +0 -0
  227. package/Source/Assets/Textures/maki/dam.png +0 -0
  228. package/Source/Assets/Textures/maki/danger.png +0 -0
  229. package/Source/Assets/Textures/maki/disability.png +0 -0
  230. package/Source/Assets/Textures/maki/dog-park.png +0 -0
  231. package/Source/Assets/Textures/maki/embassy.png +0 -0
  232. package/Source/Assets/Textures/maki/emergency-telephone.png +0 -0
  233. package/Source/Assets/Textures/maki/entrance.png +0 -0
  234. package/Source/Assets/Textures/maki/farm.png +0 -0
  235. package/Source/Assets/Textures/maki/fast-food.png +0 -0
  236. package/Source/Assets/Textures/maki/ferry.png +0 -0
  237. package/Source/Assets/Textures/maki/fire-station.png +0 -0
  238. package/Source/Assets/Textures/maki/fuel.png +0 -0
  239. package/Source/Assets/Textures/maki/garden.png +0 -0
  240. package/Source/Assets/Textures/maki/gift.png +0 -0
  241. package/Source/Assets/Textures/maki/golf.png +0 -0
  242. package/Source/Assets/Textures/maki/grocery.png +0 -0
  243. package/Source/Assets/Textures/maki/hairdresser.png +0 -0
  244. package/Source/Assets/Textures/maki/harbor.png +0 -0
  245. package/Source/Assets/Textures/maki/heart.png +0 -0
  246. package/Source/Assets/Textures/maki/heliport.png +0 -0
  247. package/Source/Assets/Textures/maki/hospital.png +0 -0
  248. package/Source/Assets/Textures/maki/ice-cream.png +0 -0
  249. package/Source/Assets/Textures/maki/industrial.png +0 -0
  250. package/Source/Assets/Textures/maki/land-use.png +0 -0
  251. package/Source/Assets/Textures/maki/laundry.png +0 -0
  252. package/Source/Assets/Textures/maki/library.png +0 -0
  253. package/Source/Assets/Textures/maki/lighthouse.png +0 -0
  254. package/Source/Assets/Textures/maki/lodging.png +0 -0
  255. package/Source/Assets/Textures/maki/logging.png +0 -0
  256. package/Source/Assets/Textures/maki/london-underground.png +0 -0
  257. package/Source/Assets/Textures/maki/marker-stroked.png +0 -0
  258. package/Source/Assets/Textures/maki/marker.png +0 -0
  259. package/Source/Assets/Textures/maki/minefield.png +0 -0
  260. package/Source/Assets/Textures/maki/mobilephone.png +0 -0
  261. package/Source/Assets/Textures/maki/monument.png +0 -0
  262. package/Source/Assets/Textures/maki/museum.png +0 -0
  263. package/Source/Assets/Textures/maki/music.png +0 -0
  264. package/Source/Assets/Textures/maki/oil-well.png +0 -0
  265. package/Source/Assets/Textures/maki/park.png +0 -0
  266. package/Source/Assets/Textures/maki/park2.png +0 -0
  267. package/Source/Assets/Textures/maki/parking-garage.png +0 -0
  268. package/Source/Assets/Textures/maki/parking.png +0 -0
  269. package/Source/Assets/Textures/maki/pharmacy.png +0 -0
  270. package/Source/Assets/Textures/maki/pitch.png +0 -0
  271. package/Source/Assets/Textures/maki/place-of-worship.png +0 -0
  272. package/Source/Assets/Textures/maki/playground.png +0 -0
  273. package/Source/Assets/Textures/maki/police.png +0 -0
  274. package/Source/Assets/Textures/maki/polling-place.png +0 -0
  275. package/Source/Assets/Textures/maki/post.png +0 -0
  276. package/Source/Assets/Textures/maki/prison.png +0 -0
  277. package/Source/Assets/Textures/maki/rail-above.png +0 -0
  278. package/Source/Assets/Textures/maki/rail-light.png +0 -0
  279. package/Source/Assets/Textures/maki/rail-metro.png +0 -0
  280. package/Source/Assets/Textures/maki/rail-underground.png +0 -0
  281. package/Source/Assets/Textures/maki/rail.png +0 -0
  282. package/Source/Assets/Textures/maki/religious-christian.png +0 -0
  283. package/Source/Assets/Textures/maki/religious-jewish.png +0 -0
  284. package/Source/Assets/Textures/maki/religious-muslim.png +0 -0
  285. package/Source/Assets/Textures/maki/restaurant.png +0 -0
  286. package/Source/Assets/Textures/maki/roadblock.png +0 -0
  287. package/Source/Assets/Textures/maki/rocket.png +0 -0
  288. package/Source/Assets/Textures/maki/school.png +0 -0
  289. package/Source/Assets/Textures/maki/scooter.png +0 -0
  290. package/Source/Assets/Textures/maki/shop.png +0 -0
  291. package/Source/Assets/Textures/maki/skiing.png +0 -0
  292. package/Source/Assets/Textures/maki/slaughterhouse.png +0 -0
  293. package/Source/Assets/Textures/maki/soccer.png +0 -0
  294. package/Source/Assets/Textures/maki/square-stroked.png +0 -0
  295. package/Source/Assets/Textures/maki/square.png +0 -0
  296. package/Source/Assets/Textures/maki/star-stroked.png +0 -0
  297. package/Source/Assets/Textures/maki/star.png +0 -0
  298. package/Source/Assets/Textures/maki/suitcase.png +0 -0
  299. package/Source/Assets/Textures/maki/swimming.png +0 -0
  300. package/Source/Assets/Textures/maki/telephone.png +0 -0
  301. package/Source/Assets/Textures/maki/tennis.png +0 -0
  302. package/Source/Assets/Textures/maki/theatre.png +0 -0
  303. package/Source/Assets/Textures/maki/toilets.png +0 -0
  304. package/Source/Assets/Textures/maki/town-hall.png +0 -0
  305. package/Source/Assets/Textures/maki/town.png +0 -0
  306. package/Source/Assets/Textures/maki/triangle-stroked.png +0 -0
  307. package/Source/Assets/Textures/maki/triangle.png +0 -0
  308. package/Source/Assets/Textures/maki/village.png +0 -0
  309. package/Source/Assets/Textures/maki/warehouse.png +0 -0
  310. package/Source/Assets/Textures/maki/waste-basket.png +0 -0
  311. package/Source/Assets/Textures/maki/water.png +0 -0
  312. package/Source/Assets/Textures/maki/wetland.png +0 -0
  313. package/Source/Assets/Textures/maki/zoo.png +0 -0
  314. package/Source/Assets/Textures/moonSmall.jpg +0 -0
  315. package/Source/Assets/Textures/pin.svg +1 -0
  316. package/Source/Assets/Textures/waterNormals.jpg +0 -0
  317. package/Source/Assets/Textures/waterNormalsSmall.jpg +0 -0
  318. package/Source/Assets/approximateTerrainHeights.json +1 -0
  319. package/Source/Core/ApproximateTerrainHeights.js +256 -0
  320. package/Source/Core/ArcGISTiledElevationTerrainProvider.js +728 -0
  321. package/Source/Core/ArcType.js +31 -0
  322. package/Source/Core/ArticulationStageType.js +23 -0
  323. package/Source/Core/AssociativeArray.js +127 -0
  324. package/Source/Core/AttributeCompression.js +527 -0
  325. package/Source/Core/AxisAlignedBoundingBox.js +259 -0
  326. package/Source/Core/BingMapsGeocoderService.js +107 -0
  327. package/Source/Core/BoundingRectangle.js +373 -0
  328. package/Source/Core/BoundingSphere.js +1505 -0
  329. package/Source/Core/BoxGeometry.js +893 -0
  330. package/Source/Core/BoxOutlineGeometry.js +314 -0
  331. package/Source/Core/Cartesian2.js +824 -0
  332. package/Source/Core/Cartesian3.js +1218 -0
  333. package/Source/Core/Cartesian4.js +980 -0
  334. package/Source/Core/Cartographic.js +302 -0
  335. package/Source/Core/CartographicGeocoderService.js +58 -0
  336. package/Source/Core/CatmullRomSpline.js +324 -0
  337. package/Source/Core/CesiumTerrainProvider.js +1318 -0
  338. package/Source/Core/Check.js +213 -0
  339. package/Source/Core/CircleGeometry.js +203 -0
  340. package/Source/Core/CircleOutlineGeometry.js +149 -0
  341. package/Source/Core/Clock.js +319 -0
  342. package/Source/Core/ClockRange.js +39 -0
  343. package/Source/Core/ClockStep.js +38 -0
  344. package/Source/Core/Color.js +2263 -0
  345. package/Source/Core/ColorGeometryInstanceAttribute.js +182 -0
  346. package/Source/Core/ComponentDatatype.js +340 -0
  347. package/Source/Core/CompressedTextureBuffer.js +114 -0
  348. package/Source/Core/ConstantSpline.js +119 -0
  349. package/Source/Core/CoplanarPolygonGeometry.js +599 -0
  350. package/Source/Core/CoplanarPolygonGeometryLibrary.js +132 -0
  351. package/Source/Core/CoplanarPolygonOutlineGeometry.js +237 -0
  352. package/Source/Core/CornerType.js +37 -0
  353. package/Source/Core/CorridorGeometry.js +1416 -0
  354. package/Source/Core/CorridorGeometryLibrary.js +501 -0
  355. package/Source/Core/CorridorOutlineGeometry.js +604 -0
  356. package/Source/Core/Credit.js +166 -0
  357. package/Source/Core/CubicRealPolynomial.js +238 -0
  358. package/Source/Core/CullingVolume.js +217 -0
  359. package/Source/Core/CustomHeightmapTerrainProvider.js +299 -0
  360. package/Source/Core/CylinderGeometry.js +479 -0
  361. package/Source/Core/CylinderGeometryLibrary.js +59 -0
  362. package/Source/Core/CylinderOutlineGeometry.js +269 -0
  363. package/Source/Core/DefaultProxy.js +26 -0
  364. package/Source/Core/DeveloperError.js +75 -0
  365. package/Source/Core/DistanceDisplayCondition.js +172 -0
  366. package/Source/Core/DistanceDisplayConditionGeometryInstanceAttribute.js +181 -0
  367. package/Source/Core/DoubleEndedPriorityQueue.js +405 -0
  368. package/Source/Core/DoublyLinkedList.js +112 -0
  369. package/Source/Core/EarthOrientationParameters.js +431 -0
  370. package/Source/Core/EarthOrientationParametersSample.js +52 -0
  371. package/Source/Core/EasingFunction.js +257 -0
  372. package/Source/Core/EllipseGeometry.js +1325 -0
  373. package/Source/Core/EllipseGeometryLibrary.js +365 -0
  374. package/Source/Core/EllipseOutlineGeometry.js +454 -0
  375. package/Source/Core/Ellipsoid.js +804 -0
  376. package/Source/Core/EllipsoidGeodesic.js +523 -0
  377. package/Source/Core/EllipsoidGeometry.js +649 -0
  378. package/Source/Core/EllipsoidOutlineGeometry.js +464 -0
  379. package/Source/Core/EllipsoidRhumbLine.js +745 -0
  380. package/Source/Core/EllipsoidTangentPlane.js +383 -0
  381. package/Source/Core/EllipsoidTerrainProvider.js +230 -0
  382. package/Source/Core/EllipsoidalOccluder.js +559 -0
  383. package/Source/Core/EncodedCartesian3.js +170 -0
  384. package/Source/Core/Event.js +164 -0
  385. package/Source/Core/EventHelper.js +74 -0
  386. package/Source/Core/ExtrapolationType.js +34 -0
  387. package/Source/Core/FeatureDetection.js +411 -0
  388. package/Source/Core/FrustumGeometry.js +583 -0
  389. package/Source/Core/FrustumOutlineGeometry.js +254 -0
  390. package/Source/Core/Fullscreen.js +249 -0
  391. package/Source/Core/GeocodeType.js +24 -0
  392. package/Source/Core/GeocoderService.js +29 -0
  393. package/Source/Core/GeographicProjection.js +105 -0
  394. package/Source/Core/GeographicTilingScheme.js +251 -0
  395. package/Source/Core/Geometry.js +376 -0
  396. package/Source/Core/GeometryAttribute.js +138 -0
  397. package/Source/Core/GeometryAttributes.js +88 -0
  398. package/Source/Core/GeometryFactory.js +25 -0
  399. package/Source/Core/GeometryInstance.js +121 -0
  400. package/Source/Core/GeometryInstanceAttribute.js +138 -0
  401. package/Source/Core/GeometryOffsetAttribute.js +10 -0
  402. package/Source/Core/GeometryPipeline.js +3296 -0
  403. package/Source/Core/GeometryType.js +10 -0
  404. package/Source/Core/GoogleEarthEnterpriseMetadata.js +597 -0
  405. package/Source/Core/GoogleEarthEnterpriseTerrainData.js +607 -0
  406. package/Source/Core/GoogleEarthEnterpriseTerrainProvider.js +641 -0
  407. package/Source/Core/GoogleEarthEnterpriseTileInformation.js +136 -0
  408. package/Source/Core/GregorianDate.js +69 -0
  409. package/Source/Core/GroundPolylineGeometry.js +1658 -0
  410. package/Source/Core/HeadingPitchRange.js +60 -0
  411. package/Source/Core/HeadingPitchRoll.js +236 -0
  412. package/Source/Core/Heap.js +234 -0
  413. package/Source/Core/HeightmapEncoding.js +25 -0
  414. package/Source/Core/HeightmapTerrainData.js +925 -0
  415. package/Source/Core/HeightmapTessellator.js +535 -0
  416. package/Source/Core/HermitePolynomialApproximation.js +342 -0
  417. package/Source/Core/HermiteSpline.js +620 -0
  418. package/Source/Core/HilbertOrder.js +118 -0
  419. package/Source/Core/Iau2000Orientation.js +167 -0
  420. package/Source/Core/Iau2006XysData.js +277 -0
  421. package/Source/Core/Iau2006XysSample.js +32 -0
  422. package/Source/Core/IauOrientationAxes.js +105 -0
  423. package/Source/Core/IauOrientationParameters.js +54 -0
  424. package/Source/Core/IndexDatatype.js +199 -0
  425. package/Source/Core/InterpolationAlgorithm.js +65 -0
  426. package/Source/Core/InterpolationType.js +14 -0
  427. package/Source/Core/Intersect.js +34 -0
  428. package/Source/Core/IntersectionTests.js +1047 -0
  429. package/Source/Core/Intersections2D.js +358 -0
  430. package/Source/Core/Interval.js +25 -0
  431. package/Source/Core/Ion.js +57 -0
  432. package/Source/Core/IonGeocoderService.js +64 -0
  433. package/Source/Core/IonResource.js +270 -0
  434. package/Source/Core/Iso8601.js +54 -0
  435. package/Source/Core/JulianDate.js +1233 -0
  436. package/Source/Core/KTX2Transcoder.js +95 -0
  437. package/Source/Core/KeyboardEventModifier.js +32 -0
  438. package/Source/Core/LagrangePolynomialApproximation.js +71 -0
  439. package/Source/Core/LeapSecond.js +24 -0
  440. package/Source/Core/LinearApproximation.js +83 -0
  441. package/Source/Core/LinearSpline.js +166 -0
  442. package/Source/Core/ManagedArray.js +163 -0
  443. package/Source/Core/MapProjection.js +62 -0
  444. package/Source/Core/Math.js +1119 -0
  445. package/Source/Core/Matrix2.js +1092 -0
  446. package/Source/Core/Matrix3.js +1838 -0
  447. package/Source/Core/Matrix4.js +3232 -0
  448. package/Source/Core/MorphWeightSpline.js +161 -0
  449. package/Source/Core/MortonOrder.js +214 -0
  450. package/Source/Core/NearFarScalar.js +174 -0
  451. package/Source/Core/Occluder.js +732 -0
  452. package/Source/Core/OffsetGeometryInstanceAttribute.js +126 -0
  453. package/Source/Core/OpenCageGeocoderService.js +118 -0
  454. package/Source/Core/OrientedBoundingBox.js +1270 -0
  455. package/Source/Core/OrthographicFrustum.js +338 -0
  456. package/Source/Core/OrthographicOffCenterFrustum.js +463 -0
  457. package/Source/Core/Packable.js +40 -0
  458. package/Source/Core/PackableForInterpolation.js +43 -0
  459. package/Source/Core/PeliasGeocoderService.js +93 -0
  460. package/Source/Core/PerspectiveFrustum.js +439 -0
  461. package/Source/Core/PerspectiveOffCenterFrustum.js +523 -0
  462. package/Source/Core/PinBuilder.js +234 -0
  463. package/Source/Core/PixelFormat.js +493 -0
  464. package/Source/Core/Plane.js +312 -0
  465. package/Source/Core/PlaneGeometry.js +250 -0
  466. package/Source/Core/PlaneOutlineGeometry.js +113 -0
  467. package/Source/Core/PolygonGeometry.js +1436 -0
  468. package/Source/Core/PolygonGeometryLibrary.js +981 -0
  469. package/Source/Core/PolygonHierarchy.js +25 -0
  470. package/Source/Core/PolygonOutlineGeometry.js +692 -0
  471. package/Source/Core/PolygonPipeline.js +633 -0
  472. package/Source/Core/PolylineGeometry.js +578 -0
  473. package/Source/Core/PolylinePipeline.js +580 -0
  474. package/Source/Core/PolylineVolumeGeometry.js +417 -0
  475. package/Source/Core/PolylineVolumeGeometryLibrary.js +701 -0
  476. package/Source/Core/PolylineVolumeOutlineGeometry.js +299 -0
  477. package/Source/Core/PrimitiveType.js +107 -0
  478. package/Source/Core/Proxy.js +24 -0
  479. package/Source/Core/QuadraticRealPolynomial.js +147 -0
  480. package/Source/Core/QuantizedMeshTerrainData.js +772 -0
  481. package/Source/Core/QuarticRealPolynomial.js +342 -0
  482. package/Source/Core/Quaternion.js +1142 -0
  483. package/Source/Core/QuaternionSpline.js +155 -0
  484. package/Source/Core/Queue.js +126 -0
  485. package/Source/Core/Ray.js +80 -0
  486. package/Source/Core/Rectangle.js +982 -0
  487. package/Source/Core/RectangleCollisionChecker.js +95 -0
  488. package/Source/Core/RectangleGeometry.js +1489 -0
  489. package/Source/Core/RectangleGeometryLibrary.js +283 -0
  490. package/Source/Core/RectangleOutlineGeometry.js +537 -0
  491. package/Source/Core/ReferenceFrame.js +23 -0
  492. package/Source/Core/Request.js +192 -0
  493. package/Source/Core/RequestErrorEvent.js +58 -0
  494. package/Source/Core/RequestScheduler.js +520 -0
  495. package/Source/Core/RequestState.js +55 -0
  496. package/Source/Core/RequestType.js +39 -0
  497. package/Source/Core/Resource.js +2307 -0
  498. package/Source/Core/RuntimeError.js +65 -0
  499. package/Source/Core/S2Cell.js +811 -0
  500. package/Source/Core/ScreenSpaceEventHandler.js +1140 -0
  501. package/Source/Core/ScreenSpaceEventType.js +127 -0
  502. package/Source/Core/ShowGeometryInstanceAttribute.js +123 -0
  503. package/Source/Core/Simon1994PlanetaryPositions.js +682 -0
  504. package/Source/Core/SimplePolylineGeometry.js +457 -0
  505. package/Source/Core/SphereGeometry.js +118 -0
  506. package/Source/Core/SphereOutlineGeometry.js +120 -0
  507. package/Source/Core/Spherical.js +184 -0
  508. package/Source/Core/Spline.js +189 -0
  509. package/Source/Core/SteppedSpline.js +160 -0
  510. package/Source/Core/TaskProcessor.js +377 -0
  511. package/Source/Core/TerrainData.js +125 -0
  512. package/Source/Core/TerrainEncoding.js +607 -0
  513. package/Source/Core/TerrainExaggeration.js +49 -0
  514. package/Source/Core/TerrainMesh.js +156 -0
  515. package/Source/Core/TerrainProvider.js +461 -0
  516. package/Source/Core/TerrainQuantization.js +25 -0
  517. package/Source/Core/TileAvailability.js +564 -0
  518. package/Source/Core/TileEdge.js +14 -0
  519. package/Source/Core/TileProviderError.js +171 -0
  520. package/Source/Core/TilingScheme.js +132 -0
  521. package/Source/Core/TimeConstants.js +83 -0
  522. package/Source/Core/TimeInterval.js +438 -0
  523. package/Source/Core/TimeIntervalCollection.js +1136 -0
  524. package/Source/Core/TimeStandard.js +30 -0
  525. package/Source/Core/Tipsify.js +314 -0
  526. package/Source/Core/Transforms.js +1132 -0
  527. package/Source/Core/TranslationRotationScale.js +60 -0
  528. package/Source/Core/TridiagonalSystemSolver.js +113 -0
  529. package/Source/Core/TrustedServers.js +146 -0
  530. package/Source/Core/VRTheWorldTerrainProvider.js +450 -0
  531. package/Source/Core/VertexFormat.js +311 -0
  532. package/Source/Core/VideoSynchronizer.js +222 -0
  533. package/Source/Core/Visibility.js +34 -0
  534. package/Source/Core/VulkanConstants.js +286 -0
  535. package/Source/Core/WallGeometry.js +626 -0
  536. package/Source/Core/WallGeometryLibrary.js +212 -0
  537. package/Source/Core/WallOutlineGeometry.js +434 -0
  538. package/Source/Core/WebGLConstants.js +614 -0
  539. package/Source/Core/WebMercatorProjection.js +154 -0
  540. package/Source/Core/WebMercatorTilingScheme.js +297 -0
  541. package/Source/Core/WindingOrder.js +36 -0
  542. package/Source/Core/WireframeIndexGenerator.js +238 -0
  543. package/Source/Core/appendForwardSlash.js +10 -0
  544. package/Source/Core/arrayRemoveDuplicates.js +130 -0
  545. package/Source/Core/barycentricCoordinates.js +109 -0
  546. package/Source/Core/binarySearch.js +67 -0
  547. package/Source/Core/buildModuleUrl.js +151 -0
  548. package/Source/Core/cancelAnimationFrame.js +53 -0
  549. package/Source/Core/clone.js +32 -0
  550. package/Source/Core/combine.js +80 -0
  551. package/Source/Core/createGuid.js +22 -0
  552. package/Source/Core/createWorldTerrain.js +42 -0
  553. package/Source/Core/decodeGoogleEarthEnterpriseData.js +93 -0
  554. package/Source/Core/decodeVectorPolylinePositions.js +51 -0
  555. package/Source/Core/defaultValue.js +29 -0
  556. package/Source/Core/defer.js +44 -0
  557. package/Source/Core/defined.js +17 -0
  558. package/Source/Core/deprecationWarning.js +53 -0
  559. package/Source/Core/destroyObject.js +57 -0
  560. package/Source/Core/formatError.js +30 -0
  561. package/Source/Core/getAbsoluteUri.js +47 -0
  562. package/Source/Core/getBaseUri.js +47 -0
  563. package/Source/Core/getExtensionFromUri.js +38 -0
  564. package/Source/Core/getFilenameFromUri.js +32 -0
  565. package/Source/Core/getImageFromTypedArray.js +24 -0
  566. package/Source/Core/getImagePixels.js +43 -0
  567. package/Source/Core/getJsonFromTypedArray.js +21 -0
  568. package/Source/Core/getMagic.js +15 -0
  569. package/Source/Core/getStringFromTypedArray.js +166 -0
  570. package/Source/Core/getTimestamp.js +26 -0
  571. package/Source/Core/isBitSet.js +7 -0
  572. package/Source/Core/isBlobUri.js +22 -0
  573. package/Source/Core/isCrossOriginUrl.js +30 -0
  574. package/Source/Core/isDataUri.js +22 -0
  575. package/Source/Core/isLeapYear.js +23 -0
  576. package/Source/Core/loadAndExecuteScript.js +27 -0
  577. package/Source/Core/loadImageFromTypedArray.js +64 -0
  578. package/Source/Core/loadKTX2.js +104 -0
  579. package/Source/Core/mergeSort.js +111 -0
  580. package/Source/Core/objectToQuery.js +57 -0
  581. package/Source/Core/oneTimeWarning.js +52 -0
  582. package/Source/Core/parseResponseHeaders.js +37 -0
  583. package/Source/Core/pointInsideTriangle.js +39 -0
  584. package/Source/Core/queryToObject.js +60 -0
  585. package/Source/Core/requestAnimationFrame.js +83 -0
  586. package/Source/Core/resizeImageToNextPowerOfTwo.js +31 -0
  587. package/Source/Core/sampleTerrain.js +257 -0
  588. package/Source/Core/sampleTerrainMostDetailed.js +117 -0
  589. package/Source/Core/scaleToGeodeticSurface.js +147 -0
  590. package/Source/Core/subdivideArray.js +35 -0
  591. package/Source/Core/webGLConstantToGlslType.js +25 -0
  592. package/Source/Core/wrapFunction.js +26 -0
  593. package/Source/Core/writeTextToCanvas.js +222 -0
  594. package/Source/DataSources/BillboardGraphics.js +429 -0
  595. package/Source/DataSources/BillboardVisualizer.js +341 -0
  596. package/Source/DataSources/BoundingSphereState.js +26 -0
  597. package/Source/DataSources/BoxGeometryUpdater.js +325 -0
  598. package/Source/DataSources/BoxGraphics.js +213 -0
  599. package/Source/DataSources/CallbackProperty.js +111 -0
  600. package/Source/DataSources/Cesium3DTilesetGraphics.js +113 -0
  601. package/Source/DataSources/Cesium3DTilesetVisualizer.js +249 -0
  602. package/Source/DataSources/CheckerboardMaterialProperty.js +151 -0
  603. package/Source/DataSources/ColorMaterialProperty.js +106 -0
  604. package/Source/DataSources/CompositeEntityCollection.js +592 -0
  605. package/Source/DataSources/CompositeMaterialProperty.js +129 -0
  606. package/Source/DataSources/CompositePositionProperty.js +149 -0
  607. package/Source/DataSources/CompositeProperty.js +154 -0
  608. package/Source/DataSources/ConstantPositionProperty.js +146 -0
  609. package/Source/DataSources/ConstantProperty.js +116 -0
  610. package/Source/DataSources/CorridorGeometryUpdater.js +404 -0
  611. package/Source/DataSources/CorridorGraphics.js +328 -0
  612. package/Source/DataSources/CustomDataSource.js +173 -0
  613. package/Source/DataSources/CylinderGeometryUpdater.js +373 -0
  614. package/Source/DataSources/CylinderGraphics.js +265 -0
  615. package/Source/DataSources/CzmlDataSource.js +5141 -0
  616. package/Source/DataSources/DataSource.js +121 -0
  617. package/Source/DataSources/DataSourceClock.js +165 -0
  618. package/Source/DataSources/DataSourceCollection.js +336 -0
  619. package/Source/DataSources/DataSourceDisplay.js +510 -0
  620. package/Source/DataSources/DynamicGeometryBatch.js +56 -0
  621. package/Source/DataSources/DynamicGeometryUpdater.js +274 -0
  622. package/Source/DataSources/EllipseGeometryUpdater.js +430 -0
  623. package/Source/DataSources/EllipseGraphics.js +357 -0
  624. package/Source/DataSources/EllipsoidGeometryUpdater.js +710 -0
  625. package/Source/DataSources/EllipsoidGraphics.js +323 -0
  626. package/Source/DataSources/Entity.js +752 -0
  627. package/Source/DataSources/EntityCluster.js +997 -0
  628. package/Source/DataSources/EntityCollection.js +440 -0
  629. package/Source/DataSources/EntityView.js +426 -0
  630. package/Source/DataSources/GeoJsonDataSource.js +1064 -0
  631. package/Source/DataSources/GeometryUpdater.js +545 -0
  632. package/Source/DataSources/GeometryVisualizer.js +620 -0
  633. package/Source/DataSources/GpxDataSource.js +1023 -0
  634. package/Source/DataSources/GridMaterialProperty.js +198 -0
  635. package/Source/DataSources/GroundGeometryUpdater.js +232 -0
  636. package/Source/DataSources/ImageMaterialProperty.js +166 -0
  637. package/Source/DataSources/KmlCamera.js +13 -0
  638. package/Source/DataSources/KmlDataSource.js +4326 -0
  639. package/Source/DataSources/KmlLookAt.js +12 -0
  640. package/Source/DataSources/KmlTour.js +176 -0
  641. package/Source/DataSources/KmlTourFlyTo.js +109 -0
  642. package/Source/DataSources/KmlTourWait.js +52 -0
  643. package/Source/DataSources/LabelGraphics.js +430 -0
  644. package/Source/DataSources/LabelVisualizer.js +360 -0
  645. package/Source/DataSources/MaterialProperty.js +105 -0
  646. package/Source/DataSources/ModelGraphics.js +447 -0
  647. package/Source/DataSources/ModelVisualizer.js +548 -0
  648. package/Source/DataSources/NodeTransformationProperty.js +144 -0
  649. package/Source/DataSources/PathGraphics.js +163 -0
  650. package/Source/DataSources/PathVisualizer.js +759 -0
  651. package/Source/DataSources/PlaneGeometryUpdater.js +384 -0
  652. package/Source/DataSources/PlaneGraphics.js +210 -0
  653. package/Source/DataSources/PointGraphics.js +221 -0
  654. package/Source/DataSources/PointVisualizer.js +426 -0
  655. package/Source/DataSources/PolygonGeometryUpdater.js +575 -0
  656. package/Source/DataSources/PolygonGraphics.js +400 -0
  657. package/Source/DataSources/PolylineArrowMaterialProperty.js +104 -0
  658. package/Source/DataSources/PolylineDashMaterialProperty.js +168 -0
  659. package/Source/DataSources/PolylineGeometryUpdater.js +886 -0
  660. package/Source/DataSources/PolylineGlowMaterialProperty.js +146 -0
  661. package/Source/DataSources/PolylineGraphics.js +248 -0
  662. package/Source/DataSources/PolylineOutlineMaterialProperty.js +152 -0
  663. package/Source/DataSources/PolylineVisualizer.js +414 -0
  664. package/Source/DataSources/PolylineVolumeGeometryUpdater.js +304 -0
  665. package/Source/DataSources/PolylineVolumeGraphics.js +237 -0
  666. package/Source/DataSources/PositionProperty.js +133 -0
  667. package/Source/DataSources/PositionPropertyArray.js +187 -0
  668. package/Source/DataSources/Property.js +138 -0
  669. package/Source/DataSources/PropertyArray.js +147 -0
  670. package/Source/DataSources/PropertyBag.js +275 -0
  671. package/Source/DataSources/RectangleGeometryUpdater.js +422 -0
  672. package/Source/DataSources/RectangleGraphics.js +329 -0
  673. package/Source/DataSources/ReferenceProperty.js +365 -0
  674. package/Source/DataSources/Rotation.js +156 -0
  675. package/Source/DataSources/SampledPositionProperty.js +325 -0
  676. package/Source/DataSources/SampledProperty.js +834 -0
  677. package/Source/DataSources/ScaledPositionProperty.js +97 -0
  678. package/Source/DataSources/StaticGeometryColorBatch.js +570 -0
  679. package/Source/DataSources/StaticGeometryPerMaterialBatch.js +488 -0
  680. package/Source/DataSources/StaticGroundGeometryColorBatch.js +395 -0
  681. package/Source/DataSources/StaticGroundGeometryPerMaterialBatch.js +426 -0
  682. package/Source/DataSources/StaticGroundPolylinePerMaterialBatch.js +434 -0
  683. package/Source/DataSources/StaticOutlineGeometryBatch.js +466 -0
  684. package/Source/DataSources/StripeMaterialProperty.js +187 -0
  685. package/Source/DataSources/StripeOrientation.js +19 -0
  686. package/Source/DataSources/TerrainOffsetProperty.js +246 -0
  687. package/Source/DataSources/TimeIntervalCollectionPositionProperty.js +152 -0
  688. package/Source/DataSources/TimeIntervalCollectionProperty.js +136 -0
  689. package/Source/DataSources/VelocityOrientationProperty.js +154 -0
  690. package/Source/DataSources/VelocityVectorProperty.js +216 -0
  691. package/Source/DataSources/Visualizer.js +61 -0
  692. package/Source/DataSources/WallGeometryUpdater.js +275 -0
  693. package/Source/DataSources/WallGraphics.js +244 -0
  694. package/Source/DataSources/createMaterialPropertyDescriptor.js +35 -0
  695. package/Source/DataSources/createPropertyDescriptor.js +72 -0
  696. package/Source/DataSources/createRawPropertyDescriptor.js +13 -0
  697. package/Source/DataSources/exportKml.js +1519 -0
  698. package/Source/DataSources/getElement.js +26 -0
  699. package/Source/DataSources/heightReferenceOnEntityPropertyChanged.js +47 -0
  700. package/Source/Renderer/AutomaticUniforms.js +1625 -0
  701. package/Source/Renderer/Buffer.js +420 -0
  702. package/Source/Renderer/BufferUsage.js +19 -0
  703. package/Source/Renderer/ClearCommand.js +102 -0
  704. package/Source/Renderer/ComputeCommand.js +119 -0
  705. package/Source/Renderer/ComputeEngine.js +135 -0
  706. package/Source/Renderer/Context.js +1601 -0
  707. package/Source/Renderer/ContextLimits.js +297 -0
  708. package/Source/Renderer/CubeMap.js +631 -0
  709. package/Source/Renderer/CubeMapFace.js +361 -0
  710. package/Source/Renderer/DrawCommand.js +610 -0
  711. package/Source/Renderer/Framebuffer.js +448 -0
  712. package/Source/Renderer/FramebufferManager.js +497 -0
  713. package/Source/Renderer/MipmapHint.js +19 -0
  714. package/Source/Renderer/MultisampleFramebuffer.js +115 -0
  715. package/Source/Renderer/Pass.js +26 -0
  716. package/Source/Renderer/PassState.js +57 -0
  717. package/Source/Renderer/PixelDatatype.js +98 -0
  718. package/Source/Renderer/RenderState.js +996 -0
  719. package/Source/Renderer/Renderbuffer.js +103 -0
  720. package/Source/Renderer/RenderbufferFormat.js +42 -0
  721. package/Source/Renderer/Sampler.js +109 -0
  722. package/Source/Renderer/ShaderBuilder.js +593 -0
  723. package/Source/Renderer/ShaderCache.js +291 -0
  724. package/Source/Renderer/ShaderDestination.js +51 -0
  725. package/Source/Renderer/ShaderFunction.js +66 -0
  726. package/Source/Renderer/ShaderProgram.js +612 -0
  727. package/Source/Renderer/ShaderSource.js +519 -0
  728. package/Source/Renderer/ShaderStruct.js +55 -0
  729. package/Source/Renderer/Texture.js +1035 -0
  730. package/Source/Renderer/TextureCache.js +81 -0
  731. package/Source/Renderer/TextureMagnificationFilter.js +41 -0
  732. package/Source/Renderer/TextureMinificationFilter.js +94 -0
  733. package/Source/Renderer/TextureWrap.js +19 -0
  734. package/Source/Renderer/UniformState.js +1710 -0
  735. package/Source/Renderer/VertexArray.js +853 -0
  736. package/Source/Renderer/VertexArrayFacade.js +514 -0
  737. package/Source/Renderer/createUniform.js +419 -0
  738. package/Source/Renderer/createUniformArray.js +637 -0
  739. package/Source/Renderer/freezeRenderState.js +30 -0
  740. package/Source/Renderer/loadCubeMap.js +93 -0
  741. package/Source/Renderer/modernizeShader.js +242 -0
  742. package/Source/Scene/AlphaMode.js +33 -0
  743. package/Source/Scene/Appearance.js +204 -0
  744. package/Source/Scene/ArcGisMapServerImageryProvider.js +905 -0
  745. package/Source/Scene/AttributeType.js +200 -0
  746. package/Source/Scene/AutoExposure.js +387 -0
  747. package/Source/Scene/Axis.js +111 -0
  748. package/Source/Scene/B3dmParser.js +174 -0
  749. package/Source/Scene/BatchTable.js +636 -0
  750. package/Source/Scene/BatchTableHierarchy.js +556 -0
  751. package/Source/Scene/BatchTexture.js +574 -0
  752. package/Source/Scene/Billboard.js +1552 -0
  753. package/Source/Scene/BillboardCollection.js +2417 -0
  754. package/Source/Scene/BingMapsImageryProvider.js +855 -0
  755. package/Source/Scene/BingMapsStyle.js +93 -0
  756. package/Source/Scene/BlendEquation.js +53 -0
  757. package/Source/Scene/BlendFunction.js +129 -0
  758. package/Source/Scene/BlendOption.js +28 -0
  759. package/Source/Scene/BlendingState.js +73 -0
  760. package/Source/Scene/BoxEmitter.js +75 -0
  761. package/Source/Scene/BrdfLutGenerator.js +75 -0
  762. package/Source/Scene/BufferLoader.js +146 -0
  763. package/Source/Scene/Camera.js +3951 -0
  764. package/Source/Scene/CameraEventAggregator.js +565 -0
  765. package/Source/Scene/CameraEventType.js +47 -0
  766. package/Source/Scene/CameraFlightPath.js +576 -0
  767. package/Source/Scene/Cesium3DContentGroup.js +44 -0
  768. package/Source/Scene/Cesium3DTile.js +2115 -0
  769. package/Source/Scene/Cesium3DTileBatchTable.js +1176 -0
  770. package/Source/Scene/Cesium3DTileColorBlendMode.js +52 -0
  771. package/Source/Scene/Cesium3DTileContent.js +397 -0
  772. package/Source/Scene/Cesium3DTileContentFactory.js +104 -0
  773. package/Source/Scene/Cesium3DTileContentState.js +12 -0
  774. package/Source/Scene/Cesium3DTileContentType.js +160 -0
  775. package/Source/Scene/Cesium3DTileFeature.js +444 -0
  776. package/Source/Scene/Cesium3DTileFeatureTable.js +132 -0
  777. package/Source/Scene/Cesium3DTileOptimizationHint.js +13 -0
  778. package/Source/Scene/Cesium3DTileOptimizations.js +115 -0
  779. package/Source/Scene/Cesium3DTilePass.js +82 -0
  780. package/Source/Scene/Cesium3DTilePassState.js +52 -0
  781. package/Source/Scene/Cesium3DTilePointFeature.js +864 -0
  782. package/Source/Scene/Cesium3DTileRefine.js +29 -0
  783. package/Source/Scene/Cesium3DTileStyle.js +1475 -0
  784. package/Source/Scene/Cesium3DTileStyleEngine.js +78 -0
  785. package/Source/Scene/Cesium3DTileset.js +3158 -0
  786. package/Source/Scene/Cesium3DTilesetCache.js +82 -0
  787. package/Source/Scene/Cesium3DTilesetHeatmap.js +165 -0
  788. package/Source/Scene/Cesium3DTilesetMetadata.js +199 -0
  789. package/Source/Scene/Cesium3DTilesetMostDetailedTraversal.js +144 -0
  790. package/Source/Scene/Cesium3DTilesetStatistics.js +129 -0
  791. package/Source/Scene/Cesium3DTilesetTraversal.js +773 -0
  792. package/Source/Scene/CircleEmitter.js +62 -0
  793. package/Source/Scene/ClassificationPrimitive.js +1433 -0
  794. package/Source/Scene/ClassificationType.js +35 -0
  795. package/Source/Scene/ClippingPlane.js +184 -0
  796. package/Source/Scene/ClippingPlaneCollection.js +771 -0
  797. package/Source/Scene/CloudCollection.js +1050 -0
  798. package/Source/Scene/CloudType.js +33 -0
  799. package/Source/Scene/ColorBlendMode.js +33 -0
  800. package/Source/Scene/Composite3DTileContent.js +346 -0
  801. package/Source/Scene/ConditionsExpression.js +218 -0
  802. package/Source/Scene/ConeEmitter.js +62 -0
  803. package/Source/Scene/ContentMetadata.js +184 -0
  804. package/Source/Scene/CreditDisplay.js +610 -0
  805. package/Source/Scene/CullFace.js +33 -0
  806. package/Source/Scene/CumulusCloud.js +353 -0
  807. package/Source/Scene/DebugAppearance.js +268 -0
  808. package/Source/Scene/DebugCameraPrimitive.js +257 -0
  809. package/Source/Scene/DebugInspector.js +151 -0
  810. package/Source/Scene/DebugModelMatrixPrimitive.js +222 -0
  811. package/Source/Scene/DepthFunction.js +73 -0
  812. package/Source/Scene/DepthPlane.js +245 -0
  813. package/Source/Scene/DerivedCommand.js +433 -0
  814. package/Source/Scene/DeviceOrientationCameraController.js +120 -0
  815. package/Source/Scene/DirectionalLight.js +50 -0
  816. package/Source/Scene/DiscardEmptyTileImagePolicy.js +54 -0
  817. package/Source/Scene/DiscardMissingTileImagePolicy.js +148 -0
  818. package/Source/Scene/DracoLoader.js +76 -0
  819. package/Source/Scene/EllipsoidPrimitive.js +511 -0
  820. package/Source/Scene/EllipsoidSurfaceAppearance.js +282 -0
  821. package/Source/Scene/Empty3DTileContent.js +151 -0
  822. package/Source/Scene/Expression.js +2232 -0
  823. package/Source/Scene/ExpressionNodeType.js +25 -0
  824. package/Source/Scene/Fog.js +205 -0
  825. package/Source/Scene/FrameRateMonitor.js +384 -0
  826. package/Source/Scene/FrameState.js +419 -0
  827. package/Source/Scene/FrustumCommands.js +30 -0
  828. package/Source/Scene/Geometry3DTileContent.js +526 -0
  829. package/Source/Scene/GetFeatureInfoFormat.js +395 -0
  830. package/Source/Scene/Globe.js +1121 -0
  831. package/Source/Scene/GlobeDepth.js +378 -0
  832. package/Source/Scene/GlobeSurfaceShaderSet.js +413 -0
  833. package/Source/Scene/GlobeSurfaceTile.js +997 -0
  834. package/Source/Scene/GlobeSurfaceTileProvider.js +2818 -0
  835. package/Source/Scene/GlobeTranslucency.js +239 -0
  836. package/Source/Scene/GlobeTranslucencyFramebuffer.js +201 -0
  837. package/Source/Scene/GlobeTranslucencyState.js +1117 -0
  838. package/Source/Scene/GltfBufferViewLoader.js +268 -0
  839. package/Source/Scene/GltfDracoLoader.js +250 -0
  840. package/Source/Scene/GltfImageLoader.js +327 -0
  841. package/Source/Scene/GltfIndexBufferLoader.js +429 -0
  842. package/Source/Scene/GltfJsonLoader.js +301 -0
  843. package/Source/Scene/GltfLoader.js +2663 -0
  844. package/Source/Scene/GltfLoaderUtil.js +201 -0
  845. package/Source/Scene/GltfPipeline/ForEach.js +424 -0
  846. package/Source/Scene/GltfPipeline/addBuffer.js +30 -0
  847. package/Source/Scene/GltfPipeline/addDefaults.js +236 -0
  848. package/Source/Scene/GltfPipeline/addExtensionsRequired.js +24 -0
  849. package/Source/Scene/GltfPipeline/addExtensionsUsed.js +22 -0
  850. package/Source/Scene/GltfPipeline/addPipelineExtras.js +36 -0
  851. package/Source/Scene/GltfPipeline/addToArray.js +25 -0
  852. package/Source/Scene/GltfPipeline/findAccessorMinMax.js +71 -0
  853. package/Source/Scene/GltfPipeline/forEachTextureInMaterial.js +139 -0
  854. package/Source/Scene/GltfPipeline/getAccessorByteStride.js +29 -0
  855. package/Source/Scene/GltfPipeline/getComponentReader.js +147 -0
  856. package/Source/Scene/GltfPipeline/moveTechniqueRenderStates.js +138 -0
  857. package/Source/Scene/GltfPipeline/moveTechniquesToExtension.js +145 -0
  858. package/Source/Scene/GltfPipeline/numberOfComponentsForType.js +29 -0
  859. package/Source/Scene/GltfPipeline/parseGlb.js +122 -0
  860. package/Source/Scene/GltfPipeline/readAccessorPacked.js +54 -0
  861. package/Source/Scene/GltfPipeline/removeExtension.js +64 -0
  862. package/Source/Scene/GltfPipeline/removeExtensionsRequired.js +24 -0
  863. package/Source/Scene/GltfPipeline/removeExtensionsUsed.js +26 -0
  864. package/Source/Scene/GltfPipeline/removePipelineExtras.js +42 -0
  865. package/Source/Scene/GltfPipeline/removeUnusedElements.js +881 -0
  866. package/Source/Scene/GltfPipeline/updateAccessorComponentTypes.js +53 -0
  867. package/Source/Scene/GltfPipeline/updateVersion.js +1151 -0
  868. package/Source/Scene/GltfPipeline/usesExtension.js +18 -0
  869. package/Source/Scene/GltfStructuralMetadataLoader.js +504 -0
  870. package/Source/Scene/GltfTextureLoader.js +383 -0
  871. package/Source/Scene/GltfVertexBufferLoader.js +470 -0
  872. package/Source/Scene/GoogleEarthEnterpriseImageryProvider.js +758 -0
  873. package/Source/Scene/GoogleEarthEnterpriseMapsProvider.js +756 -0
  874. package/Source/Scene/GridImageryProvider.js +436 -0
  875. package/Source/Scene/GroundPolylinePrimitive.js +926 -0
  876. package/Source/Scene/GroundPrimitive.js +1040 -0
  877. package/Source/Scene/GroupMetadata.js +203 -0
  878. package/Source/Scene/HeightReference.js +28 -0
  879. package/Source/Scene/HorizontalOrigin.js +41 -0
  880. package/Source/Scene/I3SDataProvider.js +668 -0
  881. package/Source/Scene/I3SFeature.js +63 -0
  882. package/Source/Scene/I3SField.js +255 -0
  883. package/Source/Scene/I3SGeometry.js +409 -0
  884. package/Source/Scene/I3SLayer.js +365 -0
  885. package/Source/Scene/I3SNode.js +816 -0
  886. package/Source/Scene/I3dmParser.js +141 -0
  887. package/Source/Scene/ImageBasedLighting.js +510 -0
  888. package/Source/Scene/Imagery.js +120 -0
  889. package/Source/Scene/ImageryLayer.js +1541 -0
  890. package/Source/Scene/ImageryLayerCollection.js +621 -0
  891. package/Source/Scene/ImageryLayerFeatureInfo.js +112 -0
  892. package/Source/Scene/ImageryProvider.js +387 -0
  893. package/Source/Scene/ImageryState.js +14 -0
  894. package/Source/Scene/Implicit3DTileContent.js +1154 -0
  895. package/Source/Scene/ImplicitAvailabilityBitstream.js +137 -0
  896. package/Source/Scene/ImplicitMetadataView.js +178 -0
  897. package/Source/Scene/ImplicitSubdivisionScheme.js +48 -0
  898. package/Source/Scene/ImplicitSubtree.js +1146 -0
  899. package/Source/Scene/ImplicitSubtreeMetadata.js +191 -0
  900. package/Source/Scene/ImplicitTileCoordinates.js +647 -0
  901. package/Source/Scene/ImplicitTileset.js +263 -0
  902. package/Source/Scene/InstanceAttributeSemantic.js +79 -0
  903. package/Source/Scene/InvertClassification.js +382 -0
  904. package/Source/Scene/IonImageryProvider.js +555 -0
  905. package/Source/Scene/IonWorldImageryStyle.js +33 -0
  906. package/Source/Scene/JobScheduler.js +199 -0
  907. package/Source/Scene/JobType.js +10 -0
  908. package/Source/Scene/JsonMetadataTable.js +114 -0
  909. package/Source/Scene/Label.js +1588 -0
  910. package/Source/Scene/LabelCollection.js +994 -0
  911. package/Source/Scene/LabelStyle.js +33 -0
  912. package/Source/Scene/Light.js +34 -0
  913. package/Source/Scene/MapMode2D.js +23 -0
  914. package/Source/Scene/MapboxImageryProvider.js +448 -0
  915. package/Source/Scene/MapboxStyleImageryProvider.js +457 -0
  916. package/Source/Scene/Material.js +1742 -0
  917. package/Source/Scene/MaterialAppearance.js +334 -0
  918. package/Source/Scene/MetadataClass.js +167 -0
  919. package/Source/Scene/MetadataClassProperty.js +1104 -0
  920. package/Source/Scene/MetadataComponentType.js +448 -0
  921. package/Source/Scene/MetadataEntity.js +425 -0
  922. package/Source/Scene/MetadataEnum.js +186 -0
  923. package/Source/Scene/MetadataEnumValue.js +97 -0
  924. package/Source/Scene/MetadataSchema.js +173 -0
  925. package/Source/Scene/MetadataSchemaLoader.js +145 -0
  926. package/Source/Scene/MetadataSemantic.js +145 -0
  927. package/Source/Scene/MetadataTable.js +357 -0
  928. package/Source/Scene/MetadataTableProperty.js +859 -0
  929. package/Source/Scene/MetadataType.js +208 -0
  930. package/Source/Scene/Model/AlphaPipelineStage.js +52 -0
  931. package/Source/Scene/Model/B3dmLoader.js +379 -0
  932. package/Source/Scene/Model/BatchTexturePipelineStage.js +72 -0
  933. package/Source/Scene/Model/CPUStylingPipelineStage.js +77 -0
  934. package/Source/Scene/Model/ClassificationModelDrawCommand.js +533 -0
  935. package/Source/Scene/Model/ClassificationPipelineStage.js +132 -0
  936. package/Source/Scene/Model/CustomShader.js +473 -0
  937. package/Source/Scene/Model/CustomShaderMode.js +40 -0
  938. package/Source/Scene/Model/CustomShaderPipelineStage.js +654 -0
  939. package/Source/Scene/Model/CustomShaderTranslucencyMode.js +35 -0
  940. package/Source/Scene/Model/DequantizationPipelineStage.js +178 -0
  941. package/Source/Scene/Model/FeatureIdPipelineStage.js +504 -0
  942. package/Source/Scene/Model/GeoJsonLoader.js +722 -0
  943. package/Source/Scene/Model/GeometryPipelineStage.js +558 -0
  944. package/Source/Scene/Model/I3dmLoader.js +909 -0
  945. package/Source/Scene/Model/ImageBasedLightingPipelineStage.js +147 -0
  946. package/Source/Scene/Model/InstancingPipelineStage.js +1043 -0
  947. package/Source/Scene/Model/LightingModel.js +30 -0
  948. package/Source/Scene/Model/LightingPipelineStage.js +75 -0
  949. package/Source/Scene/Model/MaterialPipelineStage.js +510 -0
  950. package/Source/Scene/Model/MetadataPipelineStage.js +638 -0
  951. package/Source/Scene/Model/Model.js +2847 -0
  952. package/Source/Scene/Model/Model3DTileContent.js +451 -0
  953. package/Source/Scene/Model/ModelAlphaOptions.js +26 -0
  954. package/Source/Scene/Model/ModelAnimation.js +422 -0
  955. package/Source/Scene/Model/ModelAnimationChannel.js +293 -0
  956. package/Source/Scene/Model/ModelAnimationCollection.js +553 -0
  957. package/Source/Scene/Model/ModelArticulation.js +214 -0
  958. package/Source/Scene/Model/ModelArticulationStage.js +261 -0
  959. package/Source/Scene/Model/ModelClippingPlanesPipelineStage.js +126 -0
  960. package/Source/Scene/Model/ModelColorPipelineStage.js +99 -0
  961. package/Source/Scene/Model/ModelDrawCommand.js +864 -0
  962. package/Source/Scene/Model/ModelFeature.js +229 -0
  963. package/Source/Scene/Model/ModelFeatureTable.js +322 -0
  964. package/Source/Scene/Model/ModelLightingOptions.js +29 -0
  965. package/Source/Scene/Model/ModelMatrixUpdateStage.js +108 -0
  966. package/Source/Scene/Model/ModelNode.js +125 -0
  967. package/Source/Scene/Model/ModelRenderResources.js +106 -0
  968. package/Source/Scene/Model/ModelRuntimeNode.js +648 -0
  969. package/Source/Scene/Model/ModelRuntimePrimitive.js +340 -0
  970. package/Source/Scene/Model/ModelSceneGraph.js +968 -0
  971. package/Source/Scene/Model/ModelSilhouettePipelineStage.js +109 -0
  972. package/Source/Scene/Model/ModelSkin.js +180 -0
  973. package/Source/Scene/Model/ModelSplitterPipelineStage.js +66 -0
  974. package/Source/Scene/Model/ModelStatistics.js +197 -0
  975. package/Source/Scene/Model/ModelType.js +94 -0
  976. package/Source/Scene/Model/ModelUtility.js +386 -0
  977. package/Source/Scene/Model/MorphTargetsPipelineStage.js +249 -0
  978. package/Source/Scene/Model/NodeRenderResources.js +160 -0
  979. package/Source/Scene/Model/NodeStatisticsPipelineStage.js +75 -0
  980. package/Source/Scene/Model/PickingPipelineStage.js +219 -0
  981. package/Source/Scene/Model/PntsLoader.js +717 -0
  982. package/Source/Scene/Model/PointCloudStylingPipelineStage.js +396 -0
  983. package/Source/Scene/Model/PrimitiveOutlineGenerator.js +689 -0
  984. package/Source/Scene/Model/PrimitiveOutlinePipelineStage.js +99 -0
  985. package/Source/Scene/Model/PrimitiveRenderResources.js +297 -0
  986. package/Source/Scene/Model/PrimitiveStatisticsPipelineStage.js +253 -0
  987. package/Source/Scene/Model/SceneMode2DPipelineStage.js +301 -0
  988. package/Source/Scene/Model/SelectedFeatureIdPipelineStage.js +185 -0
  989. package/Source/Scene/Model/SkinningPipelineStage.js +118 -0
  990. package/Source/Scene/Model/StyleCommandsNeeded.js +29 -0
  991. package/Source/Scene/Model/TextureManager.js +244 -0
  992. package/Source/Scene/Model/TextureUniform.js +74 -0
  993. package/Source/Scene/Model/TilesetPipelineStage.js +73 -0
  994. package/Source/Scene/Model/UniformType.js +124 -0
  995. package/Source/Scene/Model/VaryingType.js +61 -0
  996. package/Source/Scene/Model/WireframePipelineStage.js +118 -0
  997. package/Source/Scene/Model/buildDrawCommand.js +153 -0
  998. package/Source/Scene/ModelAnimationLoop.js +33 -0
  999. package/Source/Scene/ModelAnimationState.js +9 -0
  1000. package/Source/Scene/ModelComponents.js +1466 -0
  1001. package/Source/Scene/Moon.js +174 -0
  1002. package/Source/Scene/Multiple3DTileContent.js +674 -0
  1003. package/Source/Scene/NeverTileDiscardPolicy.js +28 -0
  1004. package/Source/Scene/OIT.js +893 -0
  1005. package/Source/Scene/OctahedralProjectedCubeMap.js +456 -0
  1006. package/Source/Scene/OpenStreetMapImageryProvider.js +124 -0
  1007. package/Source/Scene/OrderedGroundPrimitiveCollection.js +219 -0
  1008. package/Source/Scene/Particle.js +155 -0
  1009. package/Source/Scene/ParticleBurst.js +51 -0
  1010. package/Source/Scene/ParticleEmitter.js +36 -0
  1011. package/Source/Scene/ParticleSystem.js +910 -0
  1012. package/Source/Scene/PerInstanceColorAppearance.js +296 -0
  1013. package/Source/Scene/PerformanceDisplay.js +120 -0
  1014. package/Source/Scene/PickDepth.js +105 -0
  1015. package/Source/Scene/PickDepthFramebuffer.js +79 -0
  1016. package/Source/Scene/PickFramebuffer.js +125 -0
  1017. package/Source/Scene/Picking.js +1316 -0
  1018. package/Source/Scene/PntsParser.js +480 -0
  1019. package/Source/Scene/PointCloud.js +1425 -0
  1020. package/Source/Scene/PointCloudEyeDomeLighting.js +279 -0
  1021. package/Source/Scene/PointCloudShading.js +113 -0
  1022. package/Source/Scene/PointPrimitive.js +668 -0
  1023. package/Source/Scene/PointPrimitiveCollection.js +1217 -0
  1024. package/Source/Scene/Polyline.js +431 -0
  1025. package/Source/Scene/PolylineCollection.js +1962 -0
  1026. package/Source/Scene/PolylineColorAppearance.js +224 -0
  1027. package/Source/Scene/PolylineMaterialAppearance.js +236 -0
  1028. package/Source/Scene/PostProcessStage.js +1023 -0
  1029. package/Source/Scene/PostProcessStageCollection.js +888 -0
  1030. package/Source/Scene/PostProcessStageComposite.js +362 -0
  1031. package/Source/Scene/PostProcessStageLibrary.js +838 -0
  1032. package/Source/Scene/PostProcessStageSampleMode.js +22 -0
  1033. package/Source/Scene/PostProcessStageTextureCache.js +454 -0
  1034. package/Source/Scene/Primitive.js +2536 -0
  1035. package/Source/Scene/PrimitiveCollection.js +467 -0
  1036. package/Source/Scene/PrimitiveLoadPlan.js +280 -0
  1037. package/Source/Scene/PrimitivePipeline.js +855 -0
  1038. package/Source/Scene/PrimitiveState.js +13 -0
  1039. package/Source/Scene/PropertyAttribute.js +160 -0
  1040. package/Source/Scene/PropertyAttributeProperty.js +165 -0
  1041. package/Source/Scene/PropertyTable.js +541 -0
  1042. package/Source/Scene/PropertyTexture.js +162 -0
  1043. package/Source/Scene/PropertyTextureProperty.js +263 -0
  1044. package/Source/Scene/QuadtreeOccluders.js +30 -0
  1045. package/Source/Scene/QuadtreePrimitive.js +1546 -0
  1046. package/Source/Scene/QuadtreeTile.js +539 -0
  1047. package/Source/Scene/QuadtreeTileLoadState.js +39 -0
  1048. package/Source/Scene/QuadtreeTileProvider.js +226 -0
  1049. package/Source/Scene/ResourceCache.js +810 -0
  1050. package/Source/Scene/ResourceCacheKey.js +567 -0
  1051. package/Source/Scene/ResourceCacheStatistics.js +183 -0
  1052. package/Source/Scene/ResourceLoader.js +139 -0
  1053. package/Source/Scene/ResourceLoaderState.js +48 -0
  1054. package/Source/Scene/SDFSettings.js +39 -0
  1055. package/Source/Scene/Scene.js +4498 -0
  1056. package/Source/Scene/SceneFramebuffer.js +106 -0
  1057. package/Source/Scene/SceneMode.js +56 -0
  1058. package/Source/Scene/SceneTransforms.js +466 -0
  1059. package/Source/Scene/SceneTransitioner.js +1111 -0
  1060. package/Source/Scene/ScreenSpaceCameraController.js +2933 -0
  1061. package/Source/Scene/ShadowMap.js +1958 -0
  1062. package/Source/Scene/ShadowMapShader.js +395 -0
  1063. package/Source/Scene/ShadowMode.js +78 -0
  1064. package/Source/Scene/ShadowVolumeAppearance.js +937 -0
  1065. package/Source/Scene/SingleTileImageryProvider.js +501 -0
  1066. package/Source/Scene/SkyAtmosphere.js +402 -0
  1067. package/Source/Scene/SkyBox.js +252 -0
  1068. package/Source/Scene/SphereEmitter.js +66 -0
  1069. package/Source/Scene/SplitDirection.js +34 -0
  1070. package/Source/Scene/Splitter.js +49 -0
  1071. package/Source/Scene/StencilConstants.js +37 -0
  1072. package/Source/Scene/StencilFunction.js +73 -0
  1073. package/Source/Scene/StencilOperation.js +73 -0
  1074. package/Source/Scene/StructuralMetadata.js +243 -0
  1075. package/Source/Scene/StyleExpression.js +86 -0
  1076. package/Source/Scene/Sun.js +359 -0
  1077. package/Source/Scene/SunLight.js +31 -0
  1078. package/Source/Scene/SunPostProcess.js +288 -0
  1079. package/Source/Scene/SupportedImageFormats.js +18 -0
  1080. package/Source/Scene/TerrainFillMesh.js +2220 -0
  1081. package/Source/Scene/TerrainState.js +13 -0
  1082. package/Source/Scene/TextureAtlas.js +556 -0
  1083. package/Source/Scene/TileBoundingRegion.js +490 -0
  1084. package/Source/Scene/TileBoundingS2Cell.js +703 -0
  1085. package/Source/Scene/TileBoundingSphere.js +167 -0
  1086. package/Source/Scene/TileBoundingVolume.js +68 -0
  1087. package/Source/Scene/TileCoordinatesImageryProvider.js +379 -0
  1088. package/Source/Scene/TileDiscardPolicy.js +34 -0
  1089. package/Source/Scene/TileImagery.js +130 -0
  1090. package/Source/Scene/TileMapServiceImageryProvider.js +403 -0
  1091. package/Source/Scene/TileMetadata.js +184 -0
  1092. package/Source/Scene/TileOrientedBoundingBox.js +219 -0
  1093. package/Source/Scene/TileReplacementQueue.js +119 -0
  1094. package/Source/Scene/TileSelectionResult.js +80 -0
  1095. package/Source/Scene/TileState.js +10 -0
  1096. package/Source/Scene/Tileset3DTileContent.js +158 -0
  1097. package/Source/Scene/TilesetMetadata.js +186 -0
  1098. package/Source/Scene/TimeDynamicImagery.js +308 -0
  1099. package/Source/Scene/TimeDynamicPointCloud.js +819 -0
  1100. package/Source/Scene/Tonemapper.js +52 -0
  1101. package/Source/Scene/TranslucentTileClassification.js +524 -0
  1102. package/Source/Scene/TweenCollection.js +588 -0
  1103. package/Source/Scene/UrlTemplateImageryProvider.js +1240 -0
  1104. package/Source/Scene/Vector3DTileBatch.js +37 -0
  1105. package/Source/Scene/Vector3DTileClampedPolylines.js +772 -0
  1106. package/Source/Scene/Vector3DTileContent.js +774 -0
  1107. package/Source/Scene/Vector3DTileGeometry.js +490 -0
  1108. package/Source/Scene/Vector3DTilePoints.js +529 -0
  1109. package/Source/Scene/Vector3DTilePolygons.js +479 -0
  1110. package/Source/Scene/Vector3DTilePolylines.js +676 -0
  1111. package/Source/Scene/Vector3DTilePrimitive.js +1282 -0
  1112. package/Source/Scene/VertexAttributeSemantic.js +273 -0
  1113. package/Source/Scene/VerticalOrigin.js +49 -0
  1114. package/Source/Scene/View.js +431 -0
  1115. package/Source/Scene/ViewportQuad.js +182 -0
  1116. package/Source/Scene/WebMapServiceImageryProvider.js +768 -0
  1117. package/Source/Scene/WebMapTileServiceImageryProvider.js +711 -0
  1118. package/Source/Scene/computeFlyToLocationForRectangle.js +69 -0
  1119. package/Source/Scene/createBillboardPointCallback.js +70 -0
  1120. package/Source/Scene/createElevationBandMaterial.js +585 -0
  1121. package/Source/Scene/createOsmBuildings.js +75 -0
  1122. package/Source/Scene/createTangentSpaceDebugPrimitive.js +116 -0
  1123. package/Source/Scene/createWorldImagery.js +38 -0
  1124. package/Source/Scene/findContentMetadata.js +54 -0
  1125. package/Source/Scene/findGroupMetadata.js +39 -0
  1126. package/Source/Scene/findTileMetadata.js +56 -0
  1127. package/Source/Scene/getBinaryAccessor.js +56 -0
  1128. package/Source/Scene/getClipAndStyleCode.js +34 -0
  1129. package/Source/Scene/getClippingFunction.js +163 -0
  1130. package/Source/Scene/hasExtension.js +19 -0
  1131. package/Source/Scene/parseBatchTable.js +439 -0
  1132. package/Source/Scene/parseBoundingVolumeSemantics.js +121 -0
  1133. package/Source/Scene/parseFeatureMetadataLegacy.js +139 -0
  1134. package/Source/Scene/parseStructuralMetadata.js +102 -0
  1135. package/Source/Scene/preprocess3DTileContent.js +94 -0
  1136. package/Source/Shaders/AdjustTranslucentFS.glsl +24 -0
  1137. package/Source/Shaders/AdjustTranslucentFS.js +26 -0
  1138. package/Source/Shaders/Appearances/AllMaterialAppearanceFS.glsl +29 -0
  1139. package/Source/Shaders/Appearances/AllMaterialAppearanceFS.js +31 -0
  1140. package/Source/Shaders/Appearances/AllMaterialAppearanceVS.glsl +26 -0
  1141. package/Source/Shaders/Appearances/AllMaterialAppearanceVS.js +28 -0
  1142. package/Source/Shaders/Appearances/BasicMaterialAppearanceFS.glsl +23 -0
  1143. package/Source/Shaders/Appearances/BasicMaterialAppearanceFS.js +25 -0
  1144. package/Source/Shaders/Appearances/BasicMaterialAppearanceVS.glsl +17 -0
  1145. package/Source/Shaders/Appearances/BasicMaterialAppearanceVS.js +19 -0
  1146. package/Source/Shaders/Appearances/EllipsoidSurfaceAppearanceFS.glsl +33 -0
  1147. package/Source/Shaders/Appearances/EllipsoidSurfaceAppearanceFS.js +35 -0
  1148. package/Source/Shaders/Appearances/EllipsoidSurfaceAppearanceVS.glsl +19 -0
  1149. package/Source/Shaders/Appearances/EllipsoidSurfaceAppearanceVS.js +21 -0
  1150. package/Source/Shaders/Appearances/PerInstanceColorAppearanceFS.glsl +24 -0
  1151. package/Source/Shaders/Appearances/PerInstanceColorAppearanceFS.js +26 -0
  1152. package/Source/Shaders/Appearances/PerInstanceColorAppearanceVS.glsl +20 -0
  1153. package/Source/Shaders/Appearances/PerInstanceColorAppearanceVS.js +22 -0
  1154. package/Source/Shaders/Appearances/PerInstanceFlatColorAppearanceFS.glsl +6 -0
  1155. package/Source/Shaders/Appearances/PerInstanceFlatColorAppearanceFS.js +8 -0
  1156. package/Source/Shaders/Appearances/PerInstanceFlatColorAppearanceVS.glsl +15 -0
  1157. package/Source/Shaders/Appearances/PerInstanceFlatColorAppearanceVS.js +17 -0
  1158. package/Source/Shaders/Appearances/PolylineColorAppearanceVS.glsl +28 -0
  1159. package/Source/Shaders/Appearances/PolylineColorAppearanceVS.js +30 -0
  1160. package/Source/Shaders/Appearances/PolylineMaterialAppearanceVS.glsl +33 -0
  1161. package/Source/Shaders/Appearances/PolylineMaterialAppearanceVS.js +35 -0
  1162. package/Source/Shaders/Appearances/TexturedMaterialAppearanceFS.glsl +25 -0
  1163. package/Source/Shaders/Appearances/TexturedMaterialAppearanceFS.js +27 -0
  1164. package/Source/Shaders/Appearances/TexturedMaterialAppearanceVS.glsl +20 -0
  1165. package/Source/Shaders/Appearances/TexturedMaterialAppearanceVS.js +22 -0
  1166. package/Source/Shaders/AtmosphereCommon.glsl +152 -0
  1167. package/Source/Shaders/AtmosphereCommon.js +154 -0
  1168. package/Source/Shaders/BillboardCollectionFS.glsl +208 -0
  1169. package/Source/Shaders/BillboardCollectionFS.js +210 -0
  1170. package/Source/Shaders/BillboardCollectionVS.glsl +434 -0
  1171. package/Source/Shaders/BillboardCollectionVS.js +436 -0
  1172. package/Source/Shaders/BrdfLutGeneratorFS.glsl +83 -0
  1173. package/Source/Shaders/BrdfLutGeneratorFS.js +85 -0
  1174. package/Source/Shaders/Builtin/Constants/degreesPerRadian.glsl +16 -0
  1175. package/Source/Shaders/Builtin/Constants/degreesPerRadian.js +18 -0
  1176. package/Source/Shaders/Builtin/Constants/depthRange.glsl +14 -0
  1177. package/Source/Shaders/Builtin/Constants/depthRange.js +16 -0
  1178. package/Source/Shaders/Builtin/Constants/epsilon1.glsl +7 -0
  1179. package/Source/Shaders/Builtin/Constants/epsilon1.js +9 -0
  1180. package/Source/Shaders/Builtin/Constants/epsilon2.glsl +7 -0
  1181. package/Source/Shaders/Builtin/Constants/epsilon2.js +9 -0
  1182. package/Source/Shaders/Builtin/Constants/epsilon3.glsl +7 -0
  1183. package/Source/Shaders/Builtin/Constants/epsilon3.js +9 -0
  1184. package/Source/Shaders/Builtin/Constants/epsilon4.glsl +7 -0
  1185. package/Source/Shaders/Builtin/Constants/epsilon4.js +9 -0
  1186. package/Source/Shaders/Builtin/Constants/epsilon5.glsl +7 -0
  1187. package/Source/Shaders/Builtin/Constants/epsilon5.js +9 -0
  1188. package/Source/Shaders/Builtin/Constants/epsilon6.glsl +7 -0
  1189. package/Source/Shaders/Builtin/Constants/epsilon6.js +9 -0
  1190. package/Source/Shaders/Builtin/Constants/epsilon7.glsl +7 -0
  1191. package/Source/Shaders/Builtin/Constants/epsilon7.js +9 -0
  1192. package/Source/Shaders/Builtin/Constants/infinity.glsl +7 -0
  1193. package/Source/Shaders/Builtin/Constants/infinity.js +9 -0
  1194. package/Source/Shaders/Builtin/Constants/oneOverPi.glsl +16 -0
  1195. package/Source/Shaders/Builtin/Constants/oneOverPi.js +18 -0
  1196. package/Source/Shaders/Builtin/Constants/oneOverTwoPi.glsl +16 -0
  1197. package/Source/Shaders/Builtin/Constants/oneOverTwoPi.js +18 -0
  1198. package/Source/Shaders/Builtin/Constants/passCesium3DTile.glsl +9 -0
  1199. package/Source/Shaders/Builtin/Constants/passCesium3DTile.js +11 -0
  1200. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.glsl +9 -0
  1201. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.js +11 -0
  1202. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.glsl +9 -0
  1203. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.js +11 -0
  1204. package/Source/Shaders/Builtin/Constants/passClassification.glsl +9 -0
  1205. package/Source/Shaders/Builtin/Constants/passClassification.js +11 -0
  1206. package/Source/Shaders/Builtin/Constants/passCompute.glsl +9 -0
  1207. package/Source/Shaders/Builtin/Constants/passCompute.js +11 -0
  1208. package/Source/Shaders/Builtin/Constants/passEnvironment.glsl +9 -0
  1209. package/Source/Shaders/Builtin/Constants/passEnvironment.js +11 -0
  1210. package/Source/Shaders/Builtin/Constants/passGlobe.glsl +9 -0
  1211. package/Source/Shaders/Builtin/Constants/passGlobe.js +11 -0
  1212. package/Source/Shaders/Builtin/Constants/passOpaque.glsl +9 -0
  1213. package/Source/Shaders/Builtin/Constants/passOpaque.js +11 -0
  1214. package/Source/Shaders/Builtin/Constants/passOverlay.glsl +9 -0
  1215. package/Source/Shaders/Builtin/Constants/passOverlay.js +11 -0
  1216. package/Source/Shaders/Builtin/Constants/passTerrainClassification.glsl +9 -0
  1217. package/Source/Shaders/Builtin/Constants/passTerrainClassification.js +11 -0
  1218. package/Source/Shaders/Builtin/Constants/passTranslucent.glsl +9 -0
  1219. package/Source/Shaders/Builtin/Constants/passTranslucent.js +11 -0
  1220. package/Source/Shaders/Builtin/Constants/pi.glsl +16 -0
  1221. package/Source/Shaders/Builtin/Constants/pi.js +18 -0
  1222. package/Source/Shaders/Builtin/Constants/piOverFour.glsl +16 -0
  1223. package/Source/Shaders/Builtin/Constants/piOverFour.js +18 -0
  1224. package/Source/Shaders/Builtin/Constants/piOverSix.glsl +16 -0
  1225. package/Source/Shaders/Builtin/Constants/piOverSix.js +18 -0
  1226. package/Source/Shaders/Builtin/Constants/piOverThree.glsl +16 -0
  1227. package/Source/Shaders/Builtin/Constants/piOverThree.js +18 -0
  1228. package/Source/Shaders/Builtin/Constants/piOverTwo.glsl +16 -0
  1229. package/Source/Shaders/Builtin/Constants/piOverTwo.js +18 -0
  1230. package/Source/Shaders/Builtin/Constants/radiansPerDegree.glsl +16 -0
  1231. package/Source/Shaders/Builtin/Constants/radiansPerDegree.js +18 -0
  1232. package/Source/Shaders/Builtin/Constants/sceneMode2D.glsl +11 -0
  1233. package/Source/Shaders/Builtin/Constants/sceneMode2D.js +13 -0
  1234. package/Source/Shaders/Builtin/Constants/sceneMode3D.glsl +11 -0
  1235. package/Source/Shaders/Builtin/Constants/sceneMode3D.js +13 -0
  1236. package/Source/Shaders/Builtin/Constants/sceneModeColumbusView.glsl +11 -0
  1237. package/Source/Shaders/Builtin/Constants/sceneModeColumbusView.js +13 -0
  1238. package/Source/Shaders/Builtin/Constants/sceneModeMorphing.glsl +11 -0
  1239. package/Source/Shaders/Builtin/Constants/sceneModeMorphing.js +13 -0
  1240. package/Source/Shaders/Builtin/Constants/solarRadius.glsl +13 -0
  1241. package/Source/Shaders/Builtin/Constants/solarRadius.js +15 -0
  1242. package/Source/Shaders/Builtin/Constants/threePiOver2.glsl +16 -0
  1243. package/Source/Shaders/Builtin/Constants/threePiOver2.js +18 -0
  1244. package/Source/Shaders/Builtin/Constants/twoPi.glsl +16 -0
  1245. package/Source/Shaders/Builtin/Constants/twoPi.js +18 -0
  1246. package/Source/Shaders/Builtin/Constants/webMercatorMaxLatitude.glsl +16 -0
  1247. package/Source/Shaders/Builtin/Constants/webMercatorMaxLatitude.js +18 -0
  1248. package/Source/Shaders/Builtin/CzmBuiltins.js +262 -0
  1249. package/Source/Shaders/Builtin/Functions/HSBToRGB.glsl +24 -0
  1250. package/Source/Shaders/Builtin/Functions/HSBToRGB.js +26 -0
  1251. package/Source/Shaders/Builtin/Functions/HSLToRGB.glsl +31 -0
  1252. package/Source/Shaders/Builtin/Functions/HSLToRGB.js +33 -0
  1253. package/Source/Shaders/Builtin/Functions/RGBToHSB.glsl +27 -0
  1254. package/Source/Shaders/Builtin/Functions/RGBToHSB.js +29 -0
  1255. package/Source/Shaders/Builtin/Functions/RGBToHSL.glsl +34 -0
  1256. package/Source/Shaders/Builtin/Functions/RGBToHSL.js +36 -0
  1257. package/Source/Shaders/Builtin/Functions/RGBToXYZ.glsl +30 -0
  1258. package/Source/Shaders/Builtin/Functions/RGBToXYZ.js +32 -0
  1259. package/Source/Shaders/Builtin/Functions/XYZToRGB.glsl +30 -0
  1260. package/Source/Shaders/Builtin/Functions/XYZToRGB.js +32 -0
  1261. package/Source/Shaders/Builtin/Functions/acesTonemapping.glsl +16 -0
  1262. package/Source/Shaders/Builtin/Functions/acesTonemapping.js +18 -0
  1263. package/Source/Shaders/Builtin/Functions/alphaWeight.glsl +11 -0
  1264. package/Source/Shaders/Builtin/Functions/alphaWeight.js +13 -0
  1265. package/Source/Shaders/Builtin/Functions/antialias.glsl +39 -0
  1266. package/Source/Shaders/Builtin/Functions/antialias.js +41 -0
  1267. package/Source/Shaders/Builtin/Functions/approximateSphericalCoordinates.glsl +18 -0
  1268. package/Source/Shaders/Builtin/Functions/approximateSphericalCoordinates.js +20 -0
  1269. package/Source/Shaders/Builtin/Functions/backFacing.glsl +13 -0
  1270. package/Source/Shaders/Builtin/Functions/backFacing.js +15 -0
  1271. package/Source/Shaders/Builtin/Functions/branchFreeTernary.glsl +71 -0
  1272. package/Source/Shaders/Builtin/Functions/branchFreeTernary.js +73 -0
  1273. package/Source/Shaders/Builtin/Functions/cascadeColor.glsl +8 -0
  1274. package/Source/Shaders/Builtin/Functions/cascadeColor.js +10 -0
  1275. package/Source/Shaders/Builtin/Functions/cascadeDistance.glsl +7 -0
  1276. package/Source/Shaders/Builtin/Functions/cascadeDistance.js +9 -0
  1277. package/Source/Shaders/Builtin/Functions/cascadeMatrix.glsl +10 -0
  1278. package/Source/Shaders/Builtin/Functions/cascadeMatrix.js +12 -0
  1279. package/Source/Shaders/Builtin/Functions/cascadeWeights.glsl +10 -0
  1280. package/Source/Shaders/Builtin/Functions/cascadeWeights.js +12 -0
  1281. package/Source/Shaders/Builtin/Functions/columbusViewMorph.glsl +12 -0
  1282. package/Source/Shaders/Builtin/Functions/columbusViewMorph.js +14 -0
  1283. package/Source/Shaders/Builtin/Functions/computePosition.glsl +22 -0
  1284. package/Source/Shaders/Builtin/Functions/computePosition.js +24 -0
  1285. package/Source/Shaders/Builtin/Functions/cosineAndSine.glsl +211 -0
  1286. package/Source/Shaders/Builtin/Functions/cosineAndSine.js +213 -0
  1287. package/Source/Shaders/Builtin/Functions/decompressTextureCoordinates.glsl +17 -0
  1288. package/Source/Shaders/Builtin/Functions/decompressTextureCoordinates.js +19 -0
  1289. package/Source/Shaders/Builtin/Functions/defaultPbrMaterial.glsl +16 -0
  1290. package/Source/Shaders/Builtin/Functions/defaultPbrMaterial.js +18 -0
  1291. package/Source/Shaders/Builtin/Functions/depthClamp.glsl +47 -0
  1292. package/Source/Shaders/Builtin/Functions/depthClamp.js +49 -0
  1293. package/Source/Shaders/Builtin/Functions/eastNorthUpToEyeCoordinates.glsl +33 -0
  1294. package/Source/Shaders/Builtin/Functions/eastNorthUpToEyeCoordinates.js +35 -0
  1295. package/Source/Shaders/Builtin/Functions/ellipsoidContainsPoint.glsl +12 -0
  1296. package/Source/Shaders/Builtin/Functions/ellipsoidContainsPoint.js +14 -0
  1297. package/Source/Shaders/Builtin/Functions/ellipsoidWgs84TextureCoordinates.glsl +10 -0
  1298. package/Source/Shaders/Builtin/Functions/ellipsoidWgs84TextureCoordinates.js +12 -0
  1299. package/Source/Shaders/Builtin/Functions/equalsEpsilon.glsl +36 -0
  1300. package/Source/Shaders/Builtin/Functions/equalsEpsilon.js +38 -0
  1301. package/Source/Shaders/Builtin/Functions/eyeOffset.glsl +20 -0
  1302. package/Source/Shaders/Builtin/Functions/eyeOffset.js +22 -0
  1303. package/Source/Shaders/Builtin/Functions/eyeToWindowCoordinates.glsl +32 -0
  1304. package/Source/Shaders/Builtin/Functions/eyeToWindowCoordinates.js +34 -0
  1305. package/Source/Shaders/Builtin/Functions/fastApproximateAtan.glsl +55 -0
  1306. package/Source/Shaders/Builtin/Functions/fastApproximateAtan.js +57 -0
  1307. package/Source/Shaders/Builtin/Functions/fog.glsl +38 -0
  1308. package/Source/Shaders/Builtin/Functions/fog.js +40 -0
  1309. package/Source/Shaders/Builtin/Functions/gammaCorrect.glsl +22 -0
  1310. package/Source/Shaders/Builtin/Functions/gammaCorrect.js +24 -0
  1311. package/Source/Shaders/Builtin/Functions/geodeticSurfaceNormal.glsl +16 -0
  1312. package/Source/Shaders/Builtin/Functions/geodeticSurfaceNormal.js +18 -0
  1313. package/Source/Shaders/Builtin/Functions/getDefaultMaterial.glsl +27 -0
  1314. package/Source/Shaders/Builtin/Functions/getDefaultMaterial.js +29 -0
  1315. package/Source/Shaders/Builtin/Functions/getLambertDiffuse.glsl +22 -0
  1316. package/Source/Shaders/Builtin/Functions/getLambertDiffuse.js +24 -0
  1317. package/Source/Shaders/Builtin/Functions/getSpecular.glsl +29 -0
  1318. package/Source/Shaders/Builtin/Functions/getSpecular.js +31 -0
  1319. package/Source/Shaders/Builtin/Functions/getWaterNoise.glsl +37 -0
  1320. package/Source/Shaders/Builtin/Functions/getWaterNoise.js +39 -0
  1321. package/Source/Shaders/Builtin/Functions/hue.glsl +30 -0
  1322. package/Source/Shaders/Builtin/Functions/hue.js +32 -0
  1323. package/Source/Shaders/Builtin/Functions/inverseGamma.glsl +12 -0
  1324. package/Source/Shaders/Builtin/Functions/inverseGamma.js +14 -0
  1325. package/Source/Shaders/Builtin/Functions/isEmpty.glsl +19 -0
  1326. package/Source/Shaders/Builtin/Functions/isEmpty.js +21 -0
  1327. package/Source/Shaders/Builtin/Functions/isFull.glsl +19 -0
  1328. package/Source/Shaders/Builtin/Functions/isFull.js +21 -0
  1329. package/Source/Shaders/Builtin/Functions/latitudeToWebMercatorFraction.glsl +21 -0
  1330. package/Source/Shaders/Builtin/Functions/latitudeToWebMercatorFraction.js +23 -0
  1331. package/Source/Shaders/Builtin/Functions/lineDistance.glsl +14 -0
  1332. package/Source/Shaders/Builtin/Functions/lineDistance.js +16 -0
  1333. package/Source/Shaders/Builtin/Functions/linearToSrgb.glsl +16 -0
  1334. package/Source/Shaders/Builtin/Functions/linearToSrgb.js +18 -0
  1335. package/Source/Shaders/Builtin/Functions/luminance.glsl +20 -0
  1336. package/Source/Shaders/Builtin/Functions/luminance.js +22 -0
  1337. package/Source/Shaders/Builtin/Functions/metersPerPixel.glsl +61 -0
  1338. package/Source/Shaders/Builtin/Functions/metersPerPixel.js +63 -0
  1339. package/Source/Shaders/Builtin/Functions/modelToWindowCoordinates.glsl +37 -0
  1340. package/Source/Shaders/Builtin/Functions/modelToWindowCoordinates.js +39 -0
  1341. package/Source/Shaders/Builtin/Functions/multiplyWithColorBalance.glsl +18 -0
  1342. package/Source/Shaders/Builtin/Functions/multiplyWithColorBalance.js +20 -0
  1343. package/Source/Shaders/Builtin/Functions/nearFarScalar.glsl +26 -0
  1344. package/Source/Shaders/Builtin/Functions/nearFarScalar.js +28 -0
  1345. package/Source/Shaders/Builtin/Functions/octDecode.glsl +83 -0
  1346. package/Source/Shaders/Builtin/Functions/octDecode.js +85 -0
  1347. package/Source/Shaders/Builtin/Functions/packDepth.glsl +18 -0
  1348. package/Source/Shaders/Builtin/Functions/packDepth.js +20 -0
  1349. package/Source/Shaders/Builtin/Functions/pbrLighting.glsl +99 -0
  1350. package/Source/Shaders/Builtin/Functions/pbrLighting.js +101 -0
  1351. package/Source/Shaders/Builtin/Functions/pbrMetallicRoughnessMaterial.glsl +37 -0
  1352. package/Source/Shaders/Builtin/Functions/pbrMetallicRoughnessMaterial.js +39 -0
  1353. package/Source/Shaders/Builtin/Functions/pbrSpecularGlossinessMaterial.glsl +30 -0
  1354. package/Source/Shaders/Builtin/Functions/pbrSpecularGlossinessMaterial.js +32 -0
  1355. package/Source/Shaders/Builtin/Functions/phong.glsl +63 -0
  1356. package/Source/Shaders/Builtin/Functions/phong.js +65 -0
  1357. package/Source/Shaders/Builtin/Functions/planeDistance.glsl +28 -0
  1358. package/Source/Shaders/Builtin/Functions/planeDistance.js +30 -0
  1359. package/Source/Shaders/Builtin/Functions/pointAlongRay.glsl +19 -0
  1360. package/Source/Shaders/Builtin/Functions/pointAlongRay.js +21 -0
  1361. package/Source/Shaders/Builtin/Functions/rayEllipsoidIntersectionInterval.glsl +83 -0
  1362. package/Source/Shaders/Builtin/Functions/rayEllipsoidIntersectionInterval.js +85 -0
  1363. package/Source/Shaders/Builtin/Functions/raySphereIntersectionInterval.glsl +36 -0
  1364. package/Source/Shaders/Builtin/Functions/raySphereIntersectionInterval.js +38 -0
  1365. package/Source/Shaders/Builtin/Functions/readDepth.glsl +4 -0
  1366. package/Source/Shaders/Builtin/Functions/readDepth.js +6 -0
  1367. package/Source/Shaders/Builtin/Functions/readNonPerspective.glsl +31 -0
  1368. package/Source/Shaders/Builtin/Functions/readNonPerspective.js +33 -0
  1369. package/Source/Shaders/Builtin/Functions/reverseLogDepth.glsl +11 -0
  1370. package/Source/Shaders/Builtin/Functions/reverseLogDepth.js +13 -0
  1371. package/Source/Shaders/Builtin/Functions/round.glsl +22 -0
  1372. package/Source/Shaders/Builtin/Functions/round.js +24 -0
  1373. package/Source/Shaders/Builtin/Functions/sampleOctahedralProjection.glsl +78 -0
  1374. package/Source/Shaders/Builtin/Functions/sampleOctahedralProjection.js +80 -0
  1375. package/Source/Shaders/Builtin/Functions/saturation.glsl +22 -0
  1376. package/Source/Shaders/Builtin/Functions/saturation.js +24 -0
  1377. package/Source/Shaders/Builtin/Functions/shadowDepthCompare.glsl +24 -0
  1378. package/Source/Shaders/Builtin/Functions/shadowDepthCompare.js +26 -0
  1379. package/Source/Shaders/Builtin/Functions/shadowVisibility.glsl +66 -0
  1380. package/Source/Shaders/Builtin/Functions/shadowVisibility.js +68 -0
  1381. package/Source/Shaders/Builtin/Functions/signNotZero.glsl +29 -0
  1382. package/Source/Shaders/Builtin/Functions/signNotZero.js +31 -0
  1383. package/Source/Shaders/Builtin/Functions/sphericalHarmonics.glsl +42 -0
  1384. package/Source/Shaders/Builtin/Functions/sphericalHarmonics.js +44 -0
  1385. package/Source/Shaders/Builtin/Functions/srgbToLinear.glsl +16 -0
  1386. package/Source/Shaders/Builtin/Functions/srgbToLinear.js +18 -0
  1387. package/Source/Shaders/Builtin/Functions/tangentToEyeSpaceMatrix.glsl +25 -0
  1388. package/Source/Shaders/Builtin/Functions/tangentToEyeSpaceMatrix.js +27 -0
  1389. package/Source/Shaders/Builtin/Functions/transformPlane.glsl +15 -0
  1390. package/Source/Shaders/Builtin/Functions/transformPlane.js +17 -0
  1391. package/Source/Shaders/Builtin/Functions/translateRelativeToEye.glsl +40 -0
  1392. package/Source/Shaders/Builtin/Functions/translateRelativeToEye.js +42 -0
  1393. package/Source/Shaders/Builtin/Functions/translucentPhong.glsl +27 -0
  1394. package/Source/Shaders/Builtin/Functions/translucentPhong.js +29 -0
  1395. package/Source/Shaders/Builtin/Functions/transpose.glsl +45 -0
  1396. package/Source/Shaders/Builtin/Functions/transpose.js +47 -0
  1397. package/Source/Shaders/Builtin/Functions/unpackDepth.glsl +16 -0
  1398. package/Source/Shaders/Builtin/Functions/unpackDepth.js +18 -0
  1399. package/Source/Shaders/Builtin/Functions/unpackFloat.glsl +24 -0
  1400. package/Source/Shaders/Builtin/Functions/unpackFloat.js +26 -0
  1401. package/Source/Shaders/Builtin/Functions/unpackUint.glsl +31 -0
  1402. package/Source/Shaders/Builtin/Functions/unpackUint.js +33 -0
  1403. package/Source/Shaders/Builtin/Functions/valueTransform.glsl +38 -0
  1404. package/Source/Shaders/Builtin/Functions/valueTransform.js +40 -0
  1405. package/Source/Shaders/Builtin/Functions/vertexLogDepth.glsl +64 -0
  1406. package/Source/Shaders/Builtin/Functions/vertexLogDepth.js +66 -0
  1407. package/Source/Shaders/Builtin/Functions/windowToEyeCoordinates.glsl +99 -0
  1408. package/Source/Shaders/Builtin/Functions/windowToEyeCoordinates.js +101 -0
  1409. package/Source/Shaders/Builtin/Functions/writeDepthClamp.glsl +27 -0
  1410. package/Source/Shaders/Builtin/Functions/writeDepthClamp.js +29 -0
  1411. package/Source/Shaders/Builtin/Functions/writeLogDepth.glsl +82 -0
  1412. package/Source/Shaders/Builtin/Functions/writeLogDepth.js +84 -0
  1413. package/Source/Shaders/Builtin/Functions/writeNonPerspective.glsl +32 -0
  1414. package/Source/Shaders/Builtin/Functions/writeNonPerspective.js +34 -0
  1415. package/Source/Shaders/Builtin/Structs/depthRangeStruct.glsl +9 -0
  1416. package/Source/Shaders/Builtin/Structs/depthRangeStruct.js +11 -0
  1417. package/Source/Shaders/Builtin/Structs/material.glsl +22 -0
  1418. package/Source/Shaders/Builtin/Structs/material.js +24 -0
  1419. package/Source/Shaders/Builtin/Structs/materialInput.glsl +28 -0
  1420. package/Source/Shaders/Builtin/Structs/materialInput.js +30 -0
  1421. package/Source/Shaders/Builtin/Structs/modelMaterial.glsl +29 -0
  1422. package/Source/Shaders/Builtin/Structs/modelMaterial.js +31 -0
  1423. package/Source/Shaders/Builtin/Structs/modelVertexOutput.glsl +16 -0
  1424. package/Source/Shaders/Builtin/Structs/modelVertexOutput.js +18 -0
  1425. package/Source/Shaders/Builtin/Structs/pbrParameters.glsl +16 -0
  1426. package/Source/Shaders/Builtin/Structs/pbrParameters.js +18 -0
  1427. package/Source/Shaders/Builtin/Structs/ray.glsl +11 -0
  1428. package/Source/Shaders/Builtin/Structs/ray.js +13 -0
  1429. package/Source/Shaders/Builtin/Structs/raySegment.glsl +27 -0
  1430. package/Source/Shaders/Builtin/Structs/raySegment.js +29 -0
  1431. package/Source/Shaders/Builtin/Structs/shadowParameters.glsl +15 -0
  1432. package/Source/Shaders/Builtin/Structs/shadowParameters.js +17 -0
  1433. package/Source/Shaders/CloudCollectionFS.glsl +263 -0
  1434. package/Source/Shaders/CloudCollectionFS.js +265 -0
  1435. package/Source/Shaders/CloudCollectionVS.glsl +48 -0
  1436. package/Source/Shaders/CloudCollectionVS.js +50 -0
  1437. package/Source/Shaders/CloudNoiseFS.glsl +92 -0
  1438. package/Source/Shaders/CloudNoiseFS.js +94 -0
  1439. package/Source/Shaders/CloudNoiseVS.glsl +18 -0
  1440. package/Source/Shaders/CloudNoiseVS.js +20 -0
  1441. package/Source/Shaders/CompareAndPackTranslucentDepth.glsl +12 -0
  1442. package/Source/Shaders/CompareAndPackTranslucentDepth.js +14 -0
  1443. package/Source/Shaders/CompositeOITFS.glsl +31 -0
  1444. package/Source/Shaders/CompositeOITFS.js +33 -0
  1445. package/Source/Shaders/DepthPlaneFS.glsl +36 -0
  1446. package/Source/Shaders/DepthPlaneFS.js +38 -0
  1447. package/Source/Shaders/DepthPlaneVS.glsl +11 -0
  1448. package/Source/Shaders/DepthPlaneVS.js +13 -0
  1449. package/Source/Shaders/EllipsoidFS.glsl +112 -0
  1450. package/Source/Shaders/EllipsoidFS.js +114 -0
  1451. package/Source/Shaders/EllipsoidVS.glsl +28 -0
  1452. package/Source/Shaders/EllipsoidVS.js +30 -0
  1453. package/Source/Shaders/FXAA3_11.glsl +648 -0
  1454. package/Source/Shaders/FXAA3_11.js +678 -0
  1455. package/Source/Shaders/GlobeFS.glsl +652 -0
  1456. package/Source/Shaders/GlobeFS.js +654 -0
  1457. package/Source/Shaders/GlobeVS.glsl +253 -0
  1458. package/Source/Shaders/GlobeVS.js +255 -0
  1459. package/Source/Shaders/GroundAtmosphere.glsl +18 -0
  1460. package/Source/Shaders/GroundAtmosphere.js +20 -0
  1461. package/Source/Shaders/Materials/AspectRampMaterial.glsl +11 -0
  1462. package/Source/Shaders/Materials/AspectRampMaterial.js +13 -0
  1463. package/Source/Shaders/Materials/BumpMapMaterial.glsl +29 -0
  1464. package/Source/Shaders/Materials/BumpMapMaterial.js +31 -0
  1465. package/Source/Shaders/Materials/CheckerboardMaterial.glsl +29 -0
  1466. package/Source/Shaders/Materials/CheckerboardMaterial.js +31 -0
  1467. package/Source/Shaders/Materials/DotMaterial.glsl +18 -0
  1468. package/Source/Shaders/Materials/DotMaterial.js +20 -0
  1469. package/Source/Shaders/Materials/ElevationBandMaterial.glsl +74 -0
  1470. package/Source/Shaders/Materials/ElevationBandMaterial.js +76 -0
  1471. package/Source/Shaders/Materials/ElevationContourMaterial.glsl +29 -0
  1472. package/Source/Shaders/Materials/ElevationContourMaterial.js +31 -0
  1473. package/Source/Shaders/Materials/ElevationRampMaterial.glsl +14 -0
  1474. package/Source/Shaders/Materials/ElevationRampMaterial.js +16 -0
  1475. package/Source/Shaders/Materials/FadeMaterial.glsl +37 -0
  1476. package/Source/Shaders/Materials/FadeMaterial.js +39 -0
  1477. package/Source/Shaders/Materials/GridMaterial.glsl +60 -0
  1478. package/Source/Shaders/Materials/GridMaterial.js +62 -0
  1479. package/Source/Shaders/Materials/NormalMapMaterial.glsl +19 -0
  1480. package/Source/Shaders/Materials/NormalMapMaterial.js +21 -0
  1481. package/Source/Shaders/Materials/PolylineArrowMaterial.glsl +66 -0
  1482. package/Source/Shaders/Materials/PolylineArrowMaterial.js +68 -0
  1483. package/Source/Shaders/Materials/PolylineDashMaterial.glsl +39 -0
  1484. package/Source/Shaders/Materials/PolylineDashMaterial.js +41 -0
  1485. package/Source/Shaders/Materials/PolylineGlowMaterial.glsl +25 -0
  1486. package/Source/Shaders/Materials/PolylineGlowMaterial.js +27 -0
  1487. package/Source/Shaders/Materials/PolylineOutlineMaterial.glsl +29 -0
  1488. package/Source/Shaders/Materials/PolylineOutlineMaterial.js +31 -0
  1489. package/Source/Shaders/Materials/RimLightingMaterial.glsl +21 -0
  1490. package/Source/Shaders/Materials/RimLightingMaterial.js +23 -0
  1491. package/Source/Shaders/Materials/SlopeRampMaterial.glsl +11 -0
  1492. package/Source/Shaders/Materials/SlopeRampMaterial.js +13 -0
  1493. package/Source/Shaders/Materials/StripeMaterial.glsl +24 -0
  1494. package/Source/Shaders/Materials/StripeMaterial.js +26 -0
  1495. package/Source/Shaders/Materials/Water.glsl +58 -0
  1496. package/Source/Shaders/Materials/Water.js +60 -0
  1497. package/Source/Shaders/Model/CPUStylingStageFS.glsl +49 -0
  1498. package/Source/Shaders/Model/CPUStylingStageFS.js +51 -0
  1499. package/Source/Shaders/Model/CPUStylingStageVS.glsl +30 -0
  1500. package/Source/Shaders/Model/CPUStylingStageVS.js +32 -0
  1501. package/Source/Shaders/Model/CustomShaderStageFS.glsl +18 -0
  1502. package/Source/Shaders/Model/CustomShaderStageFS.js +20 -0
  1503. package/Source/Shaders/Model/CustomShaderStageVS.glsl +19 -0
  1504. package/Source/Shaders/Model/CustomShaderStageVS.js +21 -0
  1505. package/Source/Shaders/Model/FeatureIdStageFS.glsl +4 -0
  1506. package/Source/Shaders/Model/FeatureIdStageFS.js +6 -0
  1507. package/Source/Shaders/Model/FeatureIdStageVS.glsl +6 -0
  1508. package/Source/Shaders/Model/FeatureIdStageVS.js +8 -0
  1509. package/Source/Shaders/Model/GeometryStageFS.glsl +25 -0
  1510. package/Source/Shaders/Model/GeometryStageFS.js +27 -0
  1511. package/Source/Shaders/Model/GeometryStageVS.glsl +42 -0
  1512. package/Source/Shaders/Model/GeometryStageVS.js +44 -0
  1513. package/Source/Shaders/Model/ImageBasedLightingStageFS.glsl +165 -0
  1514. package/Source/Shaders/Model/ImageBasedLightingStageFS.js +166 -0
  1515. package/Source/Shaders/Model/InstancingStageCommon.glsl +67 -0
  1516. package/Source/Shaders/Model/InstancingStageCommon.js +69 -0
  1517. package/Source/Shaders/Model/InstancingStageVS.glsl +18 -0
  1518. package/Source/Shaders/Model/InstancingStageVS.js +20 -0
  1519. package/Source/Shaders/Model/LegacyInstancingStageVS.glsl +20 -0
  1520. package/Source/Shaders/Model/LegacyInstancingStageVS.js +22 -0
  1521. package/Source/Shaders/Model/LightingStageFS.glsl +73 -0
  1522. package/Source/Shaders/Model/LightingStageFS.js +75 -0
  1523. package/Source/Shaders/Model/MaterialStageFS.glsl +226 -0
  1524. package/Source/Shaders/Model/MaterialStageFS.js +228 -0
  1525. package/Source/Shaders/Model/MetadataStageFS.glsl +9 -0
  1526. package/Source/Shaders/Model/MetadataStageFS.js +11 -0
  1527. package/Source/Shaders/Model/MetadataStageVS.glsl +10 -0
  1528. package/Source/Shaders/Model/MetadataStageVS.js +12 -0
  1529. package/Source/Shaders/Model/ModelClippingPlanesStageFS.glsl +88 -0
  1530. package/Source/Shaders/Model/ModelClippingPlanesStageFS.js +90 -0
  1531. package/Source/Shaders/Model/ModelColorStageFS.glsl +7 -0
  1532. package/Source/Shaders/Model/ModelColorStageFS.js +8 -0
  1533. package/Source/Shaders/Model/ModelFS.glsl +89 -0
  1534. package/Source/Shaders/Model/ModelFS.js +91 -0
  1535. package/Source/Shaders/Model/ModelSilhouetteStageFS.glsl +5 -0
  1536. package/Source/Shaders/Model/ModelSilhouetteStageFS.js +6 -0
  1537. package/Source/Shaders/Model/ModelSilhouetteStageVS.glsl +10 -0
  1538. package/Source/Shaders/Model/ModelSilhouetteStageVS.js +12 -0
  1539. package/Source/Shaders/Model/ModelSplitterStageFS.glsl +9 -0
  1540. package/Source/Shaders/Model/ModelSplitterStageFS.js +11 -0
  1541. package/Source/Shaders/Model/ModelVS.glsl +136 -0
  1542. package/Source/Shaders/Model/ModelVS.js +138 -0
  1543. package/Source/Shaders/Model/MorphTargetsStageVS.glsl +15 -0
  1544. package/Source/Shaders/Model/MorphTargetsStageVS.js +16 -0
  1545. package/Source/Shaders/Model/PointCloudStylingStageVS.glsl +45 -0
  1546. package/Source/Shaders/Model/PointCloudStylingStageVS.js +46 -0
  1547. package/Source/Shaders/Model/PrimitiveOutlineStageFS.glsl +16 -0
  1548. package/Source/Shaders/Model/PrimitiveOutlineStageFS.js +18 -0
  1549. package/Source/Shaders/Model/PrimitiveOutlineStageVS.glsl +3 -0
  1550. package/Source/Shaders/Model/PrimitiveOutlineStageVS.js +5 -0
  1551. package/Source/Shaders/Model/SelectedFeatureIdStageCommon.glsl +51 -0
  1552. package/Source/Shaders/Model/SelectedFeatureIdStageCommon.js +53 -0
  1553. package/Source/Shaders/Model/SkinningStageVS.glsl +18 -0
  1554. package/Source/Shaders/Model/SkinningStageVS.js +19 -0
  1555. package/Source/Shaders/OctahedralProjectionAtlasFS.glsl +89 -0
  1556. package/Source/Shaders/OctahedralProjectionAtlasFS.js +91 -0
  1557. package/Source/Shaders/OctahedralProjectionFS.glsl +14 -0
  1558. package/Source/Shaders/OctahedralProjectionFS.js +16 -0
  1559. package/Source/Shaders/OctahedralProjectionVS.glsl +10 -0
  1560. package/Source/Shaders/OctahedralProjectionVS.js +12 -0
  1561. package/Source/Shaders/PointPrimitiveCollectionFS.glsl +43 -0
  1562. package/Source/Shaders/PointPrimitiveCollectionFS.js +45 -0
  1563. package/Source/Shaders/PointPrimitiveCollectionVS.glsl +180 -0
  1564. package/Source/Shaders/PointPrimitiveCollectionVS.js +182 -0
  1565. package/Source/Shaders/PolylineCommon.glsl +176 -0
  1566. package/Source/Shaders/PolylineCommon.js +178 -0
  1567. package/Source/Shaders/PolylineFS.glsl +25 -0
  1568. package/Source/Shaders/PolylineFS.js +27 -0
  1569. package/Source/Shaders/PolylineShadowVolumeFS.glsl +90 -0
  1570. package/Source/Shaders/PolylineShadowVolumeFS.js +92 -0
  1571. package/Source/Shaders/PolylineShadowVolumeMorphFS.glsl +45 -0
  1572. package/Source/Shaders/PolylineShadowVolumeMorphFS.js +47 -0
  1573. package/Source/Shaders/PolylineShadowVolumeMorphVS.glsl +177 -0
  1574. package/Source/Shaders/PolylineShadowVolumeMorphVS.js +179 -0
  1575. package/Source/Shaders/PolylineShadowVolumeVS.glsl +168 -0
  1576. package/Source/Shaders/PolylineShadowVolumeVS.js +170 -0
  1577. package/Source/Shaders/PolylineVS.glsl +103 -0
  1578. package/Source/Shaders/PolylineVS.js +105 -0
  1579. package/Source/Shaders/PostProcessStages/AcesTonemappingStage.glsl +21 -0
  1580. package/Source/Shaders/PostProcessStages/AcesTonemappingStage.js +23 -0
  1581. package/Source/Shaders/PostProcessStages/AdditiveBlend.glsl +17 -0
  1582. package/Source/Shaders/PostProcessStages/AdditiveBlend.js +19 -0
  1583. package/Source/Shaders/PostProcessStages/AmbientOcclusionGenerate.glsl +115 -0
  1584. package/Source/Shaders/PostProcessStages/AmbientOcclusionGenerate.js +117 -0
  1585. package/Source/Shaders/PostProcessStages/AmbientOcclusionModulate.glsl +11 -0
  1586. package/Source/Shaders/PostProcessStages/AmbientOcclusionModulate.js +13 -0
  1587. package/Source/Shaders/PostProcessStages/BlackAndWhite.glsl +19 -0
  1588. package/Source/Shaders/PostProcessStages/BlackAndWhite.js +21 -0
  1589. package/Source/Shaders/PostProcessStages/BloomComposite.glsl +20 -0
  1590. package/Source/Shaders/PostProcessStages/BloomComposite.js +22 -0
  1591. package/Source/Shaders/PostProcessStages/BrightPass.glsl +30 -0
  1592. package/Source/Shaders/PostProcessStages/BrightPass.js +32 -0
  1593. package/Source/Shaders/PostProcessStages/Brightness.glsl +11 -0
  1594. package/Source/Shaders/PostProcessStages/Brightness.js +13 -0
  1595. package/Source/Shaders/PostProcessStages/CompositeTranslucentClassification.glsl +31 -0
  1596. package/Source/Shaders/PostProcessStages/CompositeTranslucentClassification.js +33 -0
  1597. package/Source/Shaders/PostProcessStages/ContrastBias.glsl +17 -0
  1598. package/Source/Shaders/PostProcessStages/ContrastBias.js +19 -0
  1599. package/Source/Shaders/PostProcessStages/DepthOfField.glsl +39 -0
  1600. package/Source/Shaders/PostProcessStages/DepthOfField.js +41 -0
  1601. package/Source/Shaders/PostProcessStages/DepthView.glsl +9 -0
  1602. package/Source/Shaders/PostProcessStages/DepthView.js +11 -0
  1603. package/Source/Shaders/PostProcessStages/DepthViewPacked.glsl +14 -0
  1604. package/Source/Shaders/PostProcessStages/DepthViewPacked.js +16 -0
  1605. package/Source/Shaders/PostProcessStages/EdgeDetection.glsl +60 -0
  1606. package/Source/Shaders/PostProcessStages/EdgeDetection.js +62 -0
  1607. package/Source/Shaders/PostProcessStages/FXAA.glsl +21 -0
  1608. package/Source/Shaders/PostProcessStages/FXAA.js +23 -0
  1609. package/Source/Shaders/PostProcessStages/FilmicTonemapping.glsl +36 -0
  1610. package/Source/Shaders/PostProcessStages/FilmicTonemapping.js +38 -0
  1611. package/Source/Shaders/PostProcessStages/GaussianBlur1D.glsl +47 -0
  1612. package/Source/Shaders/PostProcessStages/GaussianBlur1D.js +49 -0
  1613. package/Source/Shaders/PostProcessStages/LensFlare.glsl +153 -0
  1614. package/Source/Shaders/PostProcessStages/LensFlare.js +155 -0
  1615. package/Source/Shaders/PostProcessStages/ModifiedReinhardTonemapping.glsl +24 -0
  1616. package/Source/Shaders/PostProcessStages/ModifiedReinhardTonemapping.js +26 -0
  1617. package/Source/Shaders/PostProcessStages/NightVision.glsl +16 -0
  1618. package/Source/Shaders/PostProcessStages/NightVision.js +18 -0
  1619. package/Source/Shaders/PostProcessStages/PassThrough.glsl +8 -0
  1620. package/Source/Shaders/PostProcessStages/PassThrough.js +10 -0
  1621. package/Source/Shaders/PostProcessStages/PassThroughDepth.glsl +8 -0
  1622. package/Source/Shaders/PostProcessStages/PassThroughDepth.js +10 -0
  1623. package/Source/Shaders/PostProcessStages/PointCloudEyeDomeLighting.glsl +63 -0
  1624. package/Source/Shaders/PostProcessStages/PointCloudEyeDomeLighting.js +65 -0
  1625. package/Source/Shaders/PostProcessStages/ReinhardTonemapping.glsl +23 -0
  1626. package/Source/Shaders/PostProcessStages/ReinhardTonemapping.js +25 -0
  1627. package/Source/Shaders/PostProcessStages/Silhouette.glsl +11 -0
  1628. package/Source/Shaders/PostProcessStages/Silhouette.js +13 -0
  1629. package/Source/Shaders/ReprojectWebMercatorFS.glsl +8 -0
  1630. package/Source/Shaders/ReprojectWebMercatorFS.js +10 -0
  1631. package/Source/Shaders/ReprojectWebMercatorVS.glsl +12 -0
  1632. package/Source/Shaders/ReprojectWebMercatorVS.js +14 -0
  1633. package/Source/Shaders/ShadowVolumeAppearanceFS.glsl +165 -0
  1634. package/Source/Shaders/ShadowVolumeAppearanceFS.js +167 -0
  1635. package/Source/Shaders/ShadowVolumeAppearanceVS.glsl +101 -0
  1636. package/Source/Shaders/ShadowVolumeAppearanceVS.js +103 -0
  1637. package/Source/Shaders/ShadowVolumeFS.glsl +17 -0
  1638. package/Source/Shaders/ShadowVolumeFS.js +19 -0
  1639. package/Source/Shaders/SkyAtmosphereCommon.glsl +91 -0
  1640. package/Source/Shaders/SkyAtmosphereCommon.js +93 -0
  1641. package/Source/Shaders/SkyAtmosphereFS.glsl +64 -0
  1642. package/Source/Shaders/SkyAtmosphereFS.js +66 -0
  1643. package/Source/Shaders/SkyAtmosphereVS.glsl +30 -0
  1644. package/Source/Shaders/SkyAtmosphereVS.js +32 -0
  1645. package/Source/Shaders/SkyBoxFS.glsl +9 -0
  1646. package/Source/Shaders/SkyBoxFS.js +11 -0
  1647. package/Source/Shaders/SkyBoxVS.glsl +10 -0
  1648. package/Source/Shaders/SkyBoxVS.js +12 -0
  1649. package/Source/Shaders/SunFS.glsl +9 -0
  1650. package/Source/Shaders/SunFS.js +11 -0
  1651. package/Source/Shaders/SunTextureFS.glsl +55 -0
  1652. package/Source/Shaders/SunTextureFS.js +57 -0
  1653. package/Source/Shaders/SunVS.glsl +28 -0
  1654. package/Source/Shaders/SunVS.js +30 -0
  1655. package/Source/Shaders/Vector3DTileClampedPolylinesFS.glsl +52 -0
  1656. package/Source/Shaders/Vector3DTileClampedPolylinesFS.js +54 -0
  1657. package/Source/Shaders/Vector3DTileClampedPolylinesVS.glsl +85 -0
  1658. package/Source/Shaders/Vector3DTileClampedPolylinesVS.js +87 -0
  1659. package/Source/Shaders/Vector3DTilePolylinesVS.glsl +22 -0
  1660. package/Source/Shaders/Vector3DTilePolylinesVS.js +24 -0
  1661. package/Source/Shaders/VectorTileVS.glsl +9 -0
  1662. package/Source/Shaders/VectorTileVS.js +11 -0
  1663. package/Source/Shaders/ViewportQuadFS.glsl +16 -0
  1664. package/Source/Shaders/ViewportQuadFS.js +18 -0
  1665. package/Source/Shaders/ViewportQuadVS.glsl +10 -0
  1666. package/Source/Shaders/ViewportQuadVS.js +12 -0
  1667. package/Source/ThirdParty/Workers/basis_transcoder.js +21 -0
  1668. package/Source/ThirdParty/Workers/draco_decoder_nodejs.js +118 -0
  1669. package/Source/ThirdParty/Workers/package.json +1 -0
  1670. package/Source/ThirdParty/Workers/pako_deflate.min.js +2 -0
  1671. package/Source/ThirdParty/Workers/pako_inflate.min.js +2 -0
  1672. package/Source/ThirdParty/Workers/z-worker-pako.js +1 -0
  1673. package/Source/ThirdParty/basis_transcoder.wasm +0 -0
  1674. package/Source/ThirdParty/draco_decoder.wasm +0 -0
  1675. package/Source/ThirdParty/google-earth-dbroot-parser.js +8337 -0
  1676. package/Source/Widget/CesiumWidget.css +124 -0
  1677. package/Source/Widget/CesiumWidget.js +807 -0
  1678. package/Source/Widget/lighter.css +14 -0
  1679. package/Source/Workers/cesiumWorkerBootstrapper.js +2290 -0
  1680. package/Source/Workers/package.json +1 -0
  1681. package/Source/Workers/transferTypedArrayTest.js +22 -0
  1682. package/Source/WorkersES6/combineGeometry.js +14 -0
  1683. package/Source/WorkersES6/createBoxGeometry.js +10 -0
  1684. package/Source/WorkersES6/createBoxOutlineGeometry.js +10 -0
  1685. package/Source/WorkersES6/createCircleGeometry.js +18 -0
  1686. package/Source/WorkersES6/createCircleOutlineGeometry.js +18 -0
  1687. package/Source/WorkersES6/createCoplanarPolygonGeometry.js +10 -0
  1688. package/Source/WorkersES6/createCoplanarPolygonOutlineGeometry.js +15 -0
  1689. package/Source/WorkersES6/createCorridorGeometry.js +12 -0
  1690. package/Source/WorkersES6/createCorridorOutlineGeometry.js +17 -0
  1691. package/Source/WorkersES6/createCylinderGeometry.js +10 -0
  1692. package/Source/WorkersES6/createCylinderOutlineGeometry.js +10 -0
  1693. package/Source/WorkersES6/createEllipseGeometry.js +14 -0
  1694. package/Source/WorkersES6/createEllipseOutlineGeometry.js +14 -0
  1695. package/Source/WorkersES6/createEllipsoidGeometry.js +10 -0
  1696. package/Source/WorkersES6/createEllipsoidOutlineGeometry.js +13 -0
  1697. package/Source/WorkersES6/createFrustumGeometry.js +10 -0
  1698. package/Source/WorkersES6/createFrustumOutlineGeometry.js +10 -0
  1699. package/Source/WorkersES6/createGeometry.js +52 -0
  1700. package/Source/WorkersES6/createGroundPolylineGeometry.js +16 -0
  1701. package/Source/WorkersES6/createPlaneGeometry.js +10 -0
  1702. package/Source/WorkersES6/createPlaneOutlineGeometry.js +10 -0
  1703. package/Source/WorkersES6/createPolygonGeometry.js +12 -0
  1704. package/Source/WorkersES6/createPolygonOutlineGeometry.js +12 -0
  1705. package/Source/WorkersES6/createPolylineGeometry.js +12 -0
  1706. package/Source/WorkersES6/createPolylineVolumeGeometry.js +17 -0
  1707. package/Source/WorkersES6/createPolylineVolumeOutlineGeometry.js +22 -0
  1708. package/Source/WorkersES6/createRectangleGeometry.js +14 -0
  1709. package/Source/WorkersES6/createRectangleOutlineGeometry.js +17 -0
  1710. package/Source/WorkersES6/createSimplePolylineGeometry.js +17 -0
  1711. package/Source/WorkersES6/createSphereGeometry.js +10 -0
  1712. package/Source/WorkersES6/createSphereOutlineGeometry.js +10 -0
  1713. package/Source/WorkersES6/createTaskProcessorWorker.js +129 -0
  1714. package/Source/WorkersES6/createVectorTileClampedPolylines.js +541 -0
  1715. package/Source/WorkersES6/createVectorTileGeometries.js +414 -0
  1716. package/Source/WorkersES6/createVectorTilePoints.js +81 -0
  1717. package/Source/WorkersES6/createVectorTilePolygons.js +412 -0
  1718. package/Source/WorkersES6/createVectorTilePolylines.js +210 -0
  1719. package/Source/WorkersES6/createVerticesFromGoogleEarthEnterpriseBuffer.js +653 -0
  1720. package/Source/WorkersES6/createVerticesFromHeightmap.js +53 -0
  1721. package/Source/WorkersES6/createVerticesFromQuantizedTerrainMesh.js +549 -0
  1722. package/Source/WorkersES6/createWallGeometry.js +12 -0
  1723. package/Source/WorkersES6/createWallOutlineGeometry.js +12 -0
  1724. package/Source/WorkersES6/decodeDraco.js +381 -0
  1725. package/Source/WorkersES6/decodeGoogleEarthEnterprisePacket.js +268 -0
  1726. package/Source/WorkersES6/decodeI3S.js +1044 -0
  1727. package/Source/WorkersES6/transcodeKTX2.js +316 -0
  1728. package/Source/WorkersES6/upsampleQuantizedTerrainMesh.js +680 -0
  1729. package/index.d.ts +41767 -0
  1730. package/index.js +1085 -0
  1731. package/package.json +73 -0
@@ -0,0 +1,2933 @@
1
+ import Cartesian2 from "../Core/Cartesian2.js";
2
+ import Cartesian3 from "../Core/Cartesian3.js";
3
+ import Cartesian4 from "../Core/Cartesian4.js";
4
+ import Cartographic from "../Core/Cartographic.js";
5
+ import defaultValue from "../Core/defaultValue.js";
6
+ import defined from "../Core/defined.js";
7
+ import destroyObject from "../Core/destroyObject.js";
8
+ import DeveloperError from "../Core/DeveloperError.js";
9
+ import Ellipsoid from "../Core/Ellipsoid.js";
10
+ import HeadingPitchRoll from "../Core/HeadingPitchRoll.js";
11
+ import IntersectionTests from "../Core/IntersectionTests.js";
12
+ import KeyboardEventModifier from "../Core/KeyboardEventModifier.js";
13
+ import CesiumMath from "../Core/Math.js";
14
+ import Matrix3 from "../Core/Matrix3.js";
15
+ import Matrix4 from "../Core/Matrix4.js";
16
+ import OrthographicFrustum from "../Core/OrthographicFrustum.js";
17
+ import Plane from "../Core/Plane.js";
18
+ import Quaternion from "../Core/Quaternion.js";
19
+ import Ray from "../Core/Ray.js";
20
+ import TerrainExaggeration from "../Core/TerrainExaggeration.js";
21
+ import Transforms from "../Core/Transforms.js";
22
+ import CameraEventAggregator from "./CameraEventAggregator.js";
23
+ import CameraEventType from "./CameraEventType.js";
24
+ import MapMode2D from "./MapMode2D.js";
25
+ import SceneMode from "./SceneMode.js";
26
+ import SceneTransforms from "./SceneTransforms.js";
27
+ import TweenCollection from "./TweenCollection.js";
28
+
29
+ /**
30
+ * Modifies the camera position and orientation based on mouse input to a canvas.
31
+ * @alias ScreenSpaceCameraController
32
+ * @constructor
33
+ *
34
+ * @param {Scene} scene The scene.
35
+ */
36
+ function ScreenSpaceCameraController(scene) {
37
+ //>>includeStart('debug', pragmas.debug);
38
+ if (!defined(scene)) {
39
+ throw new DeveloperError("scene is required.");
40
+ }
41
+ //>>includeEnd('debug');
42
+
43
+ /**
44
+ * If true, inputs are allowed conditionally with the flags enableTranslate, enableZoom,
45
+ * enableRotate, enableTilt, and enableLook. If false, all inputs are disabled.
46
+ *
47
+ * NOTE: This setting is for temporary use cases, such as camera flights and
48
+ * drag-selection of regions (see Picking demo). It is typically set to false at the
49
+ * start of such events, and set true on completion. To keep inputs disabled
50
+ * past the end of camera flights, you must use the other booleans (enableTranslate,
51
+ * enableZoom, enableRotate, enableTilt, and enableLook).
52
+ * @type {Boolean}
53
+ * @default true
54
+ */
55
+ this.enableInputs = true;
56
+ /**
57
+ * If true, allows the user to pan around the map. If false, the camera stays locked at the current position.
58
+ * This flag only applies in 2D and Columbus view modes.
59
+ * @type {Boolean}
60
+ * @default true
61
+ */
62
+ this.enableTranslate = true;
63
+ /**
64
+ * If true, allows the user to zoom in and out. If false, the camera is locked to the current distance from the ellipsoid.
65
+ * @type {Boolean}
66
+ * @default true
67
+ */
68
+ this.enableZoom = true;
69
+ /**
70
+ * If true, allows the user to rotate the world which translates the user's position.
71
+ * This flag only applies in 2D and 3D.
72
+ * @type {Boolean}
73
+ * @default true
74
+ */
75
+ this.enableRotate = true;
76
+ /**
77
+ * If true, allows the user to tilt the camera. If false, the camera is locked to the current heading.
78
+ * This flag only applies in 3D and Columbus view.
79
+ * @type {Boolean}
80
+ * @default true
81
+ */
82
+ this.enableTilt = true;
83
+ /**
84
+ * If true, allows the user to use free-look. If false, the camera view direction can only be changed through translating
85
+ * or rotating. This flag only applies in 3D and Columbus view modes.
86
+ * @type {Boolean}
87
+ * @default true
88
+ */
89
+ this.enableLook = true;
90
+ /**
91
+ * A parameter in the range <code>[0, 1)</code> used to determine how long
92
+ * the camera will continue to spin because of inertia.
93
+ * With value of zero, the camera will have no inertia.
94
+ * @type {Number}
95
+ * @default 0.9
96
+ */
97
+ this.inertiaSpin = 0.9;
98
+ /**
99
+ * A parameter in the range <code>[0, 1)</code> used to determine how long
100
+ * the camera will continue to translate because of inertia.
101
+ * With value of zero, the camera will have no inertia.
102
+ * @type {Number}
103
+ * @default 0.9
104
+ */
105
+ this.inertiaTranslate = 0.9;
106
+ /**
107
+ * A parameter in the range <code>[0, 1)</code> used to determine how long
108
+ * the camera will continue to zoom because of inertia.
109
+ * With value of zero, the camera will have no inertia.
110
+ * @type {Number}
111
+ * @default 0.8
112
+ */
113
+ this.inertiaZoom = 0.8;
114
+ /**
115
+ * A parameter in the range <code>[0, 1)</code> used to limit the range
116
+ * of various user inputs to a percentage of the window width/height per animation frame.
117
+ * This helps keep the camera under control in low-frame-rate situations.
118
+ * @type {Number}
119
+ * @default 0.1
120
+ */
121
+ this.maximumMovementRatio = 0.1;
122
+ /**
123
+ * Sets the duration, in seconds, of the bounce back animations in 2D and Columbus view.
124
+ * @type {Number}
125
+ * @default 3.0
126
+ */
127
+ this.bounceAnimationTime = 3.0;
128
+ /**
129
+ * The minimum magnitude, in meters, of the camera position when zooming. Defaults to 1.0.
130
+ * @type {Number}
131
+ * @default 1.0
132
+ */
133
+ this.minimumZoomDistance = 1.0;
134
+ /**
135
+ * The maximum magnitude, in meters, of the camera position when zooming. Defaults to positive infinity.
136
+ * @type {Number}
137
+ * @default {@link Number.POSITIVE_INFINITY}
138
+ */
139
+ this.maximumZoomDistance = Number.POSITIVE_INFINITY;
140
+ /**
141
+ * The input that allows the user to pan around the map. This only applies in 2D and Columbus view modes.
142
+ * <p>
143
+ * The type came be a {@link CameraEventType}, <code>undefined</code>, an object with <code>eventType</code>
144
+ * and <code>modifier</code> properties with types <code>CameraEventType</code> and {@link KeyboardEventModifier},
145
+ * or an array of any of the preceding.
146
+ * </p>
147
+ * @type {CameraEventType|Array|undefined}
148
+ * @default {@link CameraEventType.LEFT_DRAG}
149
+ */
150
+ this.translateEventTypes = CameraEventType.LEFT_DRAG;
151
+ /**
152
+ * The input that allows the user to zoom in/out.
153
+ * <p>
154
+ * The type came be a {@link CameraEventType}, <code>undefined</code>, an object with <code>eventType</code>
155
+ * and <code>modifier</code> properties with types <code>CameraEventType</code> and {@link KeyboardEventModifier},
156
+ * or an array of any of the preceding.
157
+ * </p>
158
+ * @type {CameraEventType|Array|undefined}
159
+ * @default [{@link CameraEventType.RIGHT_DRAG}, {@link CameraEventType.WHEEL}, {@link CameraEventType.PINCH}]
160
+ */
161
+ this.zoomEventTypes = [
162
+ CameraEventType.RIGHT_DRAG,
163
+ CameraEventType.WHEEL,
164
+ CameraEventType.PINCH,
165
+ ];
166
+ /**
167
+ * The input that allows the user to rotate around the globe or another object. This only applies in 3D and Columbus view modes.
168
+ * <p>
169
+ * The type came be a {@link CameraEventType}, <code>undefined</code>, an object with <code>eventType</code>
170
+ * and <code>modifier</code> properties with types <code>CameraEventType</code> and {@link KeyboardEventModifier},
171
+ * or an array of any of the preceding.
172
+ * </p>
173
+ * @type {CameraEventType|Array|undefined}
174
+ * @default {@link CameraEventType.LEFT_DRAG}
175
+ */
176
+ this.rotateEventTypes = CameraEventType.LEFT_DRAG;
177
+ /**
178
+ * The input that allows the user to tilt in 3D and Columbus view or twist in 2D.
179
+ * <p>
180
+ * The type came be a {@link CameraEventType}, <code>undefined</code>, an object with <code>eventType</code>
181
+ * and <code>modifier</code> properties with types <code>CameraEventType</code> and {@link KeyboardEventModifier},
182
+ * or an array of any of the preceding.
183
+ * </p>
184
+ * @type {CameraEventType|Array|undefined}
185
+ * @default [{@link CameraEventType.MIDDLE_DRAG}, {@link CameraEventType.PINCH}, {
186
+ * eventType : {@link CameraEventType.LEFT_DRAG},
187
+ * modifier : {@link KeyboardEventModifier.CTRL}
188
+ * }, {
189
+ * eventType : {@link CameraEventType.RIGHT_DRAG},
190
+ * modifier : {@link KeyboardEventModifier.CTRL}
191
+ * }]
192
+ */
193
+ this.tiltEventTypes = [
194
+ CameraEventType.MIDDLE_DRAG,
195
+ CameraEventType.PINCH,
196
+ {
197
+ eventType: CameraEventType.LEFT_DRAG,
198
+ modifier: KeyboardEventModifier.CTRL,
199
+ },
200
+ {
201
+ eventType: CameraEventType.RIGHT_DRAG,
202
+ modifier: KeyboardEventModifier.CTRL,
203
+ },
204
+ ];
205
+ /**
206
+ * The input that allows the user to change the direction the camera is viewing. This only applies in 3D and Columbus view modes.
207
+ * <p>
208
+ * The type came be a {@link CameraEventType}, <code>undefined</code>, an object with <code>eventType</code>
209
+ * and <code>modifier</code> properties with types <code>CameraEventType</code> and {@link KeyboardEventModifier},
210
+ * or an array of any of the preceding.
211
+ * </p>
212
+ * @type {CameraEventType|Array|undefined}
213
+ * @default { eventType : {@link CameraEventType.LEFT_DRAG}, modifier : {@link KeyboardEventModifier.SHIFT} }
214
+ */
215
+ this.lookEventTypes = {
216
+ eventType: CameraEventType.LEFT_DRAG,
217
+ modifier: KeyboardEventModifier.SHIFT,
218
+ };
219
+ /**
220
+ * The minimum height the camera must be before picking the terrain instead of the ellipsoid.
221
+ * @type {Number}
222
+ * @default 150000.0
223
+ */
224
+ this.minimumPickingTerrainHeight = 150000.0;
225
+ this._minimumPickingTerrainHeight = this.minimumPickingTerrainHeight;
226
+ /**
227
+ * The minimum height the camera must be before testing for collision with terrain.
228
+ * @type {Number}
229
+ * @default 15000.0
230
+ */
231
+ this.minimumCollisionTerrainHeight = 15000.0;
232
+ this._minimumCollisionTerrainHeight = this.minimumCollisionTerrainHeight;
233
+ /**
234
+ * The minimum height the camera must be before switching from rotating a track ball to
235
+ * free look when clicks originate on the sky or in space.
236
+ * @type {Number}
237
+ * @default 7500000.0
238
+ */
239
+ this.minimumTrackBallHeight = 7500000.0;
240
+ this._minimumTrackBallHeight = this.minimumTrackBallHeight;
241
+ /**
242
+ * Enables or disables camera collision detection with terrain.
243
+ * @type {Boolean}
244
+ * @default true
245
+ */
246
+ this.enableCollisionDetection = true;
247
+
248
+ this._scene = scene;
249
+ this._globe = undefined;
250
+ this._ellipsoid = undefined;
251
+
252
+ this._aggregator = new CameraEventAggregator(scene.canvas);
253
+
254
+ this._lastInertiaSpinMovement = undefined;
255
+ this._lastInertiaZoomMovement = undefined;
256
+ this._lastInertiaTranslateMovement = undefined;
257
+ this._lastInertiaTiltMovement = undefined;
258
+
259
+ // Zoom disables tilt, spin, and translate inertia
260
+ // Tilt disables spin and translate inertia
261
+ this._inertiaDisablers = {
262
+ _lastInertiaZoomMovement: [
263
+ "_lastInertiaSpinMovement",
264
+ "_lastInertiaTranslateMovement",
265
+ "_lastInertiaTiltMovement",
266
+ ],
267
+ _lastInertiaTiltMovement: [
268
+ "_lastInertiaSpinMovement",
269
+ "_lastInertiaTranslateMovement",
270
+ ],
271
+ };
272
+
273
+ this._tweens = new TweenCollection();
274
+ this._tween = undefined;
275
+
276
+ this._horizontalRotationAxis = undefined;
277
+
278
+ this._tiltCenterMousePosition = new Cartesian2(-1.0, -1.0);
279
+ this._tiltCenter = new Cartesian3();
280
+ this._rotateMousePosition = new Cartesian2(-1.0, -1.0);
281
+ this._rotateStartPosition = new Cartesian3();
282
+ this._strafeStartPosition = new Cartesian3();
283
+ this._strafeMousePosition = new Cartesian2();
284
+ this._strafeEndMousePosition = new Cartesian2();
285
+ this._zoomMouseStart = new Cartesian2(-1.0, -1.0);
286
+ this._zoomWorldPosition = new Cartesian3();
287
+ this._useZoomWorldPosition = false;
288
+ this._tiltCVOffMap = false;
289
+ this._looking = false;
290
+ this._rotating = false;
291
+ this._strafing = false;
292
+ this._zoomingOnVector = false;
293
+ this._zoomingUnderground = false;
294
+ this._rotatingZoom = false;
295
+ this._adjustedHeightForTerrain = false;
296
+ this._cameraUnderground = false;
297
+
298
+ const projection = scene.mapProjection;
299
+ this._maxCoord = projection.project(
300
+ new Cartographic(Math.PI, CesiumMath.PI_OVER_TWO)
301
+ );
302
+
303
+ // Constants, Make any of these public?
304
+ this._zoomFactor = 5.0;
305
+ this._rotateFactor = undefined;
306
+ this._rotateRateRangeAdjustment = undefined;
307
+ this._maximumRotateRate = 1.77;
308
+ this._minimumRotateRate = 1.0 / 5000.0;
309
+ this._minimumZoomRate = 20.0;
310
+ this._maximumZoomRate = 5906376272000.0; // distance from the Sun to Pluto in meters.
311
+ this._minimumUndergroundPickDistance = 2000.0;
312
+ this._maximumUndergroundPickDistance = 10000.0;
313
+ }
314
+
315
+ function decay(time, coefficient) {
316
+ if (time < 0) {
317
+ return 0.0;
318
+ }
319
+
320
+ const tau = (1.0 - coefficient) * 25.0;
321
+ return Math.exp(-tau * time);
322
+ }
323
+
324
+ function sameMousePosition(movement) {
325
+ return Cartesian2.equalsEpsilon(
326
+ movement.startPosition,
327
+ movement.endPosition,
328
+ CesiumMath.EPSILON14
329
+ );
330
+ }
331
+
332
+ // If the time between mouse down and mouse up is not between
333
+ // these thresholds, the camera will not move with inertia.
334
+ // This value is probably dependent on the browser and/or the
335
+ // hardware. Should be investigated further.
336
+ const inertiaMaxClickTimeThreshold = 0.4;
337
+
338
+ function maintainInertia(
339
+ aggregator,
340
+ type,
341
+ modifier,
342
+ decayCoef,
343
+ action,
344
+ object,
345
+ lastMovementName
346
+ ) {
347
+ let movementState = object[lastMovementName];
348
+ if (!defined(movementState)) {
349
+ movementState = object[lastMovementName] = {
350
+ startPosition: new Cartesian2(),
351
+ endPosition: new Cartesian2(),
352
+ motion: new Cartesian2(),
353
+ inertiaEnabled: true,
354
+ };
355
+ }
356
+
357
+ const ts = aggregator.getButtonPressTime(type, modifier);
358
+ const tr = aggregator.getButtonReleaseTime(type, modifier);
359
+
360
+ const threshold = ts && tr && (tr.getTime() - ts.getTime()) / 1000.0;
361
+ const now = new Date();
362
+ const fromNow = tr && (now.getTime() - tr.getTime()) / 1000.0;
363
+
364
+ if (ts && tr && threshold < inertiaMaxClickTimeThreshold) {
365
+ const d = decay(fromNow, decayCoef);
366
+
367
+ const lastMovement = aggregator.getLastMovement(type, modifier);
368
+ if (
369
+ !defined(lastMovement) ||
370
+ sameMousePosition(lastMovement) ||
371
+ !movementState.inertiaEnabled
372
+ ) {
373
+ return;
374
+ }
375
+
376
+ movementState.motion.x =
377
+ (lastMovement.endPosition.x - lastMovement.startPosition.x) * 0.5;
378
+ movementState.motion.y =
379
+ (lastMovement.endPosition.y - lastMovement.startPosition.y) * 0.5;
380
+
381
+ movementState.startPosition = Cartesian2.clone(
382
+ lastMovement.startPosition,
383
+ movementState.startPosition
384
+ );
385
+
386
+ movementState.endPosition = Cartesian2.multiplyByScalar(
387
+ movementState.motion,
388
+ d,
389
+ movementState.endPosition
390
+ );
391
+ movementState.endPosition = Cartesian2.add(
392
+ movementState.startPosition,
393
+ movementState.endPosition,
394
+ movementState.endPosition
395
+ );
396
+
397
+ // If value from the decreasing exponential function is close to zero,
398
+ // the end coordinates may be NaN.
399
+ if (
400
+ isNaN(movementState.endPosition.x) ||
401
+ isNaN(movementState.endPosition.y) ||
402
+ Cartesian2.distance(
403
+ movementState.startPosition,
404
+ movementState.endPosition
405
+ ) < 0.5
406
+ ) {
407
+ return;
408
+ }
409
+
410
+ if (!aggregator.isButtonDown(type, modifier)) {
411
+ const startPosition = aggregator.getStartMousePosition(type, modifier);
412
+ action(object, startPosition, movementState);
413
+ }
414
+ }
415
+ }
416
+
417
+ function activateInertia(controller, inertiaStateName) {
418
+ if (defined(inertiaStateName)) {
419
+ // Re-enable inertia if it was disabled
420
+ let movementState = controller[inertiaStateName];
421
+ if (defined(movementState)) {
422
+ movementState.inertiaEnabled = true;
423
+ }
424
+ // Disable inertia on other movements
425
+ const inertiasToDisable = controller._inertiaDisablers[inertiaStateName];
426
+ if (defined(inertiasToDisable)) {
427
+ const length = inertiasToDisable.length;
428
+ for (let i = 0; i < length; ++i) {
429
+ movementState = controller[inertiasToDisable[i]];
430
+ if (defined(movementState)) {
431
+ movementState.inertiaEnabled = false;
432
+ }
433
+ }
434
+ }
435
+ }
436
+ }
437
+
438
+ const scratchEventTypeArray = [];
439
+
440
+ function reactToInput(
441
+ controller,
442
+ enabled,
443
+ eventTypes,
444
+ action,
445
+ inertiaConstant,
446
+ inertiaStateName
447
+ ) {
448
+ if (!defined(eventTypes)) {
449
+ return;
450
+ }
451
+
452
+ const aggregator = controller._aggregator;
453
+
454
+ if (!Array.isArray(eventTypes)) {
455
+ scratchEventTypeArray[0] = eventTypes;
456
+ eventTypes = scratchEventTypeArray;
457
+ }
458
+
459
+ const length = eventTypes.length;
460
+ for (let i = 0; i < length; ++i) {
461
+ const eventType = eventTypes[i];
462
+ const type = defined(eventType.eventType) ? eventType.eventType : eventType;
463
+ const modifier = eventType.modifier;
464
+
465
+ const movement =
466
+ aggregator.isMoving(type, modifier) &&
467
+ aggregator.getMovement(type, modifier);
468
+ const startPosition = aggregator.getStartMousePosition(type, modifier);
469
+
470
+ if (controller.enableInputs && enabled) {
471
+ if (movement) {
472
+ action(controller, startPosition, movement);
473
+ activateInertia(controller, inertiaStateName);
474
+ } else if (inertiaConstant < 1.0) {
475
+ maintainInertia(
476
+ aggregator,
477
+ type,
478
+ modifier,
479
+ inertiaConstant,
480
+ action,
481
+ controller,
482
+ inertiaStateName
483
+ );
484
+ }
485
+ }
486
+ }
487
+ }
488
+
489
+ const scratchZoomPickRay = new Ray();
490
+ const scratchPickCartesian = new Cartesian3();
491
+ const scratchZoomOffset = new Cartesian2();
492
+ const scratchZoomDirection = new Cartesian3();
493
+ const scratchCenterPixel = new Cartesian2();
494
+ const scratchCenterPosition = new Cartesian3();
495
+ const scratchPositionNormal = new Cartesian3();
496
+ const scratchPickNormal = new Cartesian3();
497
+ const scratchZoomAxis = new Cartesian3();
498
+ const scratchCameraPositionNormal = new Cartesian3();
499
+
500
+ // Scratch variables used in zooming algorithm
501
+ const scratchTargetNormal = new Cartesian3();
502
+ const scratchCameraPosition = new Cartesian3();
503
+ const scratchCameraUpNormal = new Cartesian3();
504
+ const scratchCameraRightNormal = new Cartesian3();
505
+ const scratchForwardNormal = new Cartesian3();
506
+ const scratchPositionToTarget = new Cartesian3();
507
+ const scratchPositionToTargetNormal = new Cartesian3();
508
+ const scratchPan = new Cartesian3();
509
+ const scratchCenterMovement = new Cartesian3();
510
+ const scratchCenter = new Cartesian3();
511
+ const scratchCartesian = new Cartesian3();
512
+ const scratchCartesianTwo = new Cartesian3();
513
+ const scratchCartesianThree = new Cartesian3();
514
+ const scratchZoomViewOptions = {
515
+ orientation: new HeadingPitchRoll(),
516
+ };
517
+
518
+ function handleZoom(
519
+ object,
520
+ startPosition,
521
+ movement,
522
+ zoomFactor,
523
+ distanceMeasure,
524
+ unitPositionDotDirection
525
+ ) {
526
+ let percentage = 1.0;
527
+ if (defined(unitPositionDotDirection)) {
528
+ percentage = CesiumMath.clamp(
529
+ Math.abs(unitPositionDotDirection),
530
+ 0.25,
531
+ 1.0
532
+ );
533
+ }
534
+
535
+ const diff = movement.endPosition.y - movement.startPosition.y;
536
+
537
+ // distanceMeasure should be the height above the ellipsoid.
538
+ // When approaching the surface, the zoomRate slows and stops minimumZoomDistance above it.
539
+ const approachingSurface = diff > 0;
540
+ const minHeight = approachingSurface
541
+ ? object.minimumZoomDistance * percentage
542
+ : 0;
543
+ const maxHeight = object.maximumZoomDistance;
544
+
545
+ const minDistance = distanceMeasure - minHeight;
546
+ let zoomRate = zoomFactor * minDistance;
547
+ zoomRate = CesiumMath.clamp(
548
+ zoomRate,
549
+ object._minimumZoomRate,
550
+ object._maximumZoomRate
551
+ );
552
+
553
+ let rangeWindowRatio = diff / object._scene.canvas.clientHeight;
554
+ rangeWindowRatio = Math.min(rangeWindowRatio, object.maximumMovementRatio);
555
+ let distance = zoomRate * rangeWindowRatio;
556
+
557
+ if (
558
+ object.enableCollisionDetection ||
559
+ object.minimumZoomDistance === 0.0 ||
560
+ !defined(object._globe) // look-at mode
561
+ ) {
562
+ if (distance > 0.0 && Math.abs(distanceMeasure - minHeight) < 1.0) {
563
+ return;
564
+ }
565
+
566
+ if (distance < 0.0 && Math.abs(distanceMeasure - maxHeight) < 1.0) {
567
+ return;
568
+ }
569
+
570
+ if (distanceMeasure - distance < minHeight) {
571
+ distance = distanceMeasure - minHeight - 1.0;
572
+ } else if (distanceMeasure - distance > maxHeight) {
573
+ distance = distanceMeasure - maxHeight;
574
+ }
575
+ }
576
+
577
+ const scene = object._scene;
578
+ const camera = scene.camera;
579
+ const mode = scene.mode;
580
+
581
+ const orientation = scratchZoomViewOptions.orientation;
582
+ orientation.heading = camera.heading;
583
+ orientation.pitch = camera.pitch;
584
+ orientation.roll = camera.roll;
585
+
586
+ if (camera.frustum instanceof OrthographicFrustum) {
587
+ if (Math.abs(distance) > 0.0) {
588
+ camera.zoomIn(distance);
589
+ camera._adjustOrthographicFrustum();
590
+ }
591
+ return;
592
+ }
593
+
594
+ const sameStartPosition = Cartesian2.equals(
595
+ startPosition,
596
+ object._zoomMouseStart
597
+ );
598
+ let zoomingOnVector = object._zoomingOnVector;
599
+ let rotatingZoom = object._rotatingZoom;
600
+ let pickedPosition;
601
+
602
+ if (!sameStartPosition) {
603
+ object._zoomMouseStart = Cartesian2.clone(
604
+ startPosition,
605
+ object._zoomMouseStart
606
+ );
607
+
608
+ if (defined(object._globe)) {
609
+ if (mode === SceneMode.SCENE2D) {
610
+ pickedPosition = camera.getPickRay(startPosition, scratchZoomPickRay)
611
+ .origin;
612
+ pickedPosition = Cartesian3.fromElements(
613
+ pickedPosition.y,
614
+ pickedPosition.z,
615
+ pickedPosition.x
616
+ );
617
+ } else {
618
+ pickedPosition = pickGlobe(object, startPosition, scratchPickCartesian);
619
+ }
620
+ }
621
+ if (defined(pickedPosition)) {
622
+ object._useZoomWorldPosition = true;
623
+ object._zoomWorldPosition = Cartesian3.clone(
624
+ pickedPosition,
625
+ object._zoomWorldPosition
626
+ );
627
+ } else {
628
+ object._useZoomWorldPosition = false;
629
+ }
630
+
631
+ zoomingOnVector = object._zoomingOnVector = false;
632
+ rotatingZoom = object._rotatingZoom = false;
633
+ object._zoomingUnderground = object._cameraUnderground;
634
+ }
635
+
636
+ if (!object._useZoomWorldPosition) {
637
+ camera.zoomIn(distance);
638
+ return;
639
+ }
640
+
641
+ let zoomOnVector = mode === SceneMode.COLUMBUS_VIEW;
642
+
643
+ if (camera.positionCartographic.height < 2000000) {
644
+ rotatingZoom = true;
645
+ }
646
+
647
+ if (!sameStartPosition || rotatingZoom) {
648
+ if (mode === SceneMode.SCENE2D) {
649
+ const worldPosition = object._zoomWorldPosition;
650
+ const endPosition = camera.position;
651
+
652
+ if (
653
+ !Cartesian3.equals(worldPosition, endPosition) &&
654
+ camera.positionCartographic.height < object._maxCoord.x * 2.0
655
+ ) {
656
+ const savedX = camera.position.x;
657
+
658
+ const direction = Cartesian3.subtract(
659
+ worldPosition,
660
+ endPosition,
661
+ scratchZoomDirection
662
+ );
663
+ Cartesian3.normalize(direction, direction);
664
+
665
+ const d =
666
+ (Cartesian3.distance(worldPosition, endPosition) * distance) /
667
+ (camera.getMagnitude() * 0.5);
668
+ camera.move(direction, d * 0.5);
669
+
670
+ if (
671
+ (camera.position.x < 0.0 && savedX > 0.0) ||
672
+ (camera.position.x > 0.0 && savedX < 0.0)
673
+ ) {
674
+ pickedPosition = camera.getPickRay(startPosition, scratchZoomPickRay)
675
+ .origin;
676
+ pickedPosition = Cartesian3.fromElements(
677
+ pickedPosition.y,
678
+ pickedPosition.z,
679
+ pickedPosition.x
680
+ );
681
+ object._zoomWorldPosition = Cartesian3.clone(
682
+ pickedPosition,
683
+ object._zoomWorldPosition
684
+ );
685
+ }
686
+ }
687
+ } else if (mode === SceneMode.SCENE3D) {
688
+ const cameraPositionNormal = Cartesian3.normalize(
689
+ camera.position,
690
+ scratchCameraPositionNormal
691
+ );
692
+ if (
693
+ object._cameraUnderground ||
694
+ object._zoomingUnderground ||
695
+ (camera.positionCartographic.height < 3000.0 &&
696
+ Math.abs(Cartesian3.dot(camera.direction, cameraPositionNormal)) <
697
+ 0.6)
698
+ ) {
699
+ zoomOnVector = true;
700
+ } else {
701
+ const canvas = scene.canvas;
702
+
703
+ const centerPixel = scratchCenterPixel;
704
+ centerPixel.x = canvas.clientWidth / 2;
705
+ centerPixel.y = canvas.clientHeight / 2;
706
+ const centerPosition = pickGlobe(
707
+ object,
708
+ centerPixel,
709
+ scratchCenterPosition
710
+ );
711
+ // If centerPosition is not defined, it means the globe does not cover the center position of screen
712
+
713
+ if (!defined(centerPosition)) {
714
+ zoomOnVector = true;
715
+ } else if (camera.positionCartographic.height < 1000000) {
716
+ // The math in the else block assumes the camera
717
+ // points toward the earth surface, so we check it here.
718
+ // Theoretically, we should check for 90 degree, but it doesn't behave well when parallel
719
+ // to the earth surface
720
+ if (Cartesian3.dot(camera.direction, cameraPositionNormal) >= -0.5) {
721
+ zoomOnVector = true;
722
+ } else {
723
+ const cameraPosition = scratchCameraPosition;
724
+ Cartesian3.clone(camera.position, cameraPosition);
725
+ const target = object._zoomWorldPosition;
726
+
727
+ let targetNormal = scratchTargetNormal;
728
+
729
+ targetNormal = Cartesian3.normalize(target, targetNormal);
730
+
731
+ if (Cartesian3.dot(targetNormal, cameraPositionNormal) < 0.0) {
732
+ return;
733
+ }
734
+
735
+ const center = scratchCenter;
736
+ const forward = scratchForwardNormal;
737
+ Cartesian3.clone(camera.direction, forward);
738
+ Cartesian3.add(
739
+ cameraPosition,
740
+ Cartesian3.multiplyByScalar(forward, 1000, scratchCartesian),
741
+ center
742
+ );
743
+
744
+ const positionToTarget = scratchPositionToTarget;
745
+ const positionToTargetNormal = scratchPositionToTargetNormal;
746
+ Cartesian3.subtract(target, cameraPosition, positionToTarget);
747
+
748
+ Cartesian3.normalize(positionToTarget, positionToTargetNormal);
749
+
750
+ const alphaDot = Cartesian3.dot(
751
+ cameraPositionNormal,
752
+ positionToTargetNormal
753
+ );
754
+ if (alphaDot >= 0.0) {
755
+ // We zoomed past the target, and this zoom is not valid anymore.
756
+ // This line causes the next zoom movement to pick a new starting point.
757
+ object._zoomMouseStart.x = -1;
758
+ return;
759
+ }
760
+ const alpha = Math.acos(-alphaDot);
761
+ const cameraDistance = Cartesian3.magnitude(cameraPosition);
762
+ const targetDistance = Cartesian3.magnitude(target);
763
+ const remainingDistance = cameraDistance - distance;
764
+ const positionToTargetDistance = Cartesian3.magnitude(
765
+ positionToTarget
766
+ );
767
+
768
+ const gamma = Math.asin(
769
+ CesiumMath.clamp(
770
+ (positionToTargetDistance / targetDistance) * Math.sin(alpha),
771
+ -1.0,
772
+ 1.0
773
+ )
774
+ );
775
+ const delta = Math.asin(
776
+ CesiumMath.clamp(
777
+ (remainingDistance / targetDistance) * Math.sin(alpha),
778
+ -1.0,
779
+ 1.0
780
+ )
781
+ );
782
+ const beta = gamma - delta + alpha;
783
+
784
+ const up = scratchCameraUpNormal;
785
+ Cartesian3.normalize(cameraPosition, up);
786
+ let right = scratchCameraRightNormal;
787
+ right = Cartesian3.cross(positionToTargetNormal, up, right);
788
+ right = Cartesian3.normalize(right, right);
789
+
790
+ Cartesian3.normalize(
791
+ Cartesian3.cross(up, right, scratchCartesian),
792
+ forward
793
+ );
794
+
795
+ // Calculate new position to move to
796
+ Cartesian3.multiplyByScalar(
797
+ Cartesian3.normalize(center, scratchCartesian),
798
+ Cartesian3.magnitude(center) - distance,
799
+ center
800
+ );
801
+ Cartesian3.normalize(cameraPosition, cameraPosition);
802
+ Cartesian3.multiplyByScalar(
803
+ cameraPosition,
804
+ remainingDistance,
805
+ cameraPosition
806
+ );
807
+
808
+ // Pan
809
+ const pMid = scratchPan;
810
+ Cartesian3.multiplyByScalar(
811
+ Cartesian3.add(
812
+ Cartesian3.multiplyByScalar(
813
+ up,
814
+ Math.cos(beta) - 1,
815
+ scratchCartesianTwo
816
+ ),
817
+ Cartesian3.multiplyByScalar(
818
+ forward,
819
+ Math.sin(beta),
820
+ scratchCartesianThree
821
+ ),
822
+ scratchCartesian
823
+ ),
824
+ remainingDistance,
825
+ pMid
826
+ );
827
+ Cartesian3.add(cameraPosition, pMid, cameraPosition);
828
+
829
+ Cartesian3.normalize(center, up);
830
+ Cartesian3.normalize(
831
+ Cartesian3.cross(up, right, scratchCartesian),
832
+ forward
833
+ );
834
+
835
+ const cMid = scratchCenterMovement;
836
+ Cartesian3.multiplyByScalar(
837
+ Cartesian3.add(
838
+ Cartesian3.multiplyByScalar(
839
+ up,
840
+ Math.cos(beta) - 1,
841
+ scratchCartesianTwo
842
+ ),
843
+ Cartesian3.multiplyByScalar(
844
+ forward,
845
+ Math.sin(beta),
846
+ scratchCartesianThree
847
+ ),
848
+ scratchCartesian
849
+ ),
850
+ Cartesian3.magnitude(center),
851
+ cMid
852
+ );
853
+ Cartesian3.add(center, cMid, center);
854
+
855
+ // Update camera
856
+
857
+ // Set new position
858
+ Cartesian3.clone(cameraPosition, camera.position);
859
+
860
+ // Set new direction
861
+ Cartesian3.normalize(
862
+ Cartesian3.subtract(center, cameraPosition, scratchCartesian),
863
+ camera.direction
864
+ );
865
+ Cartesian3.clone(camera.direction, camera.direction);
866
+
867
+ // Set new right & up vectors
868
+ Cartesian3.cross(camera.direction, camera.up, camera.right);
869
+ Cartesian3.cross(camera.right, camera.direction, camera.up);
870
+
871
+ camera.setView(scratchZoomViewOptions);
872
+ return;
873
+ }
874
+ } else {
875
+ const positionNormal = Cartesian3.normalize(
876
+ centerPosition,
877
+ scratchPositionNormal
878
+ );
879
+ const pickedNormal = Cartesian3.normalize(
880
+ object._zoomWorldPosition,
881
+ scratchPickNormal
882
+ );
883
+ const dotProduct = Cartesian3.dot(pickedNormal, positionNormal);
884
+
885
+ if (dotProduct > 0.0 && dotProduct < 1.0) {
886
+ const angle = CesiumMath.acosClamped(dotProduct);
887
+ const axis = Cartesian3.cross(
888
+ pickedNormal,
889
+ positionNormal,
890
+ scratchZoomAxis
891
+ );
892
+
893
+ const denom =
894
+ Math.abs(angle) > CesiumMath.toRadians(20.0)
895
+ ? camera.positionCartographic.height * 0.75
896
+ : camera.positionCartographic.height - distance;
897
+ const scalar = distance / denom;
898
+ camera.rotate(axis, angle * scalar);
899
+ }
900
+ }
901
+ }
902
+ }
903
+
904
+ object._rotatingZoom = !zoomOnVector;
905
+ }
906
+
907
+ if ((!sameStartPosition && zoomOnVector) || zoomingOnVector) {
908
+ let ray;
909
+ const zoomMouseStart = SceneTransforms.wgs84ToWindowCoordinates(
910
+ scene,
911
+ object._zoomWorldPosition,
912
+ scratchZoomOffset
913
+ );
914
+ if (
915
+ mode !== SceneMode.COLUMBUS_VIEW &&
916
+ Cartesian2.equals(startPosition, object._zoomMouseStart) &&
917
+ defined(zoomMouseStart)
918
+ ) {
919
+ ray = camera.getPickRay(zoomMouseStart, scratchZoomPickRay);
920
+ } else {
921
+ ray = camera.getPickRay(startPosition, scratchZoomPickRay);
922
+ }
923
+
924
+ const rayDirection = ray.direction;
925
+ if (mode === SceneMode.COLUMBUS_VIEW || mode === SceneMode.SCENE2D) {
926
+ Cartesian3.fromElements(
927
+ rayDirection.y,
928
+ rayDirection.z,
929
+ rayDirection.x,
930
+ rayDirection
931
+ );
932
+ }
933
+
934
+ camera.move(rayDirection, distance);
935
+
936
+ object._zoomingOnVector = true;
937
+ } else {
938
+ camera.zoomIn(distance);
939
+ }
940
+
941
+ if (!object._cameraUnderground) {
942
+ camera.setView(scratchZoomViewOptions);
943
+ }
944
+ }
945
+
946
+ const translate2DStart = new Ray();
947
+ const translate2DEnd = new Ray();
948
+ const scratchTranslateP0 = new Cartesian3();
949
+
950
+ function translate2D(controller, startPosition, movement) {
951
+ const scene = controller._scene;
952
+ const camera = scene.camera;
953
+ let start = camera.getPickRay(movement.startPosition, translate2DStart)
954
+ .origin;
955
+ let end = camera.getPickRay(movement.endPosition, translate2DEnd).origin;
956
+
957
+ start = Cartesian3.fromElements(start.y, start.z, start.x, start);
958
+ end = Cartesian3.fromElements(end.y, end.z, end.x, end);
959
+
960
+ const direction = Cartesian3.subtract(start, end, scratchTranslateP0);
961
+ const distance = Cartesian3.magnitude(direction);
962
+
963
+ if (distance > 0.0) {
964
+ Cartesian3.normalize(direction, direction);
965
+ camera.move(direction, distance);
966
+ }
967
+ }
968
+
969
+ function zoom2D(controller, startPosition, movement) {
970
+ if (defined(movement.distance)) {
971
+ movement = movement.distance;
972
+ }
973
+
974
+ const scene = controller._scene;
975
+ const camera = scene.camera;
976
+
977
+ handleZoom(
978
+ controller,
979
+ startPosition,
980
+ movement,
981
+ controller._zoomFactor,
982
+ camera.getMagnitude()
983
+ );
984
+ }
985
+
986
+ const twist2DStart = new Cartesian2();
987
+ const twist2DEnd = new Cartesian2();
988
+
989
+ function twist2D(controller, startPosition, movement) {
990
+ if (defined(movement.angleAndHeight)) {
991
+ singleAxisTwist2D(controller, startPosition, movement.angleAndHeight);
992
+ return;
993
+ }
994
+
995
+ const scene = controller._scene;
996
+ const camera = scene.camera;
997
+ const canvas = scene.canvas;
998
+ const width = canvas.clientWidth;
999
+ const height = canvas.clientHeight;
1000
+
1001
+ let start = twist2DStart;
1002
+ start.x = (2.0 / width) * movement.startPosition.x - 1.0;
1003
+ start.y = (2.0 / height) * (height - movement.startPosition.y) - 1.0;
1004
+ start = Cartesian2.normalize(start, start);
1005
+
1006
+ let end = twist2DEnd;
1007
+ end.x = (2.0 / width) * movement.endPosition.x - 1.0;
1008
+ end.y = (2.0 / height) * (height - movement.endPosition.y) - 1.0;
1009
+ end = Cartesian2.normalize(end, end);
1010
+
1011
+ let startTheta = CesiumMath.acosClamped(start.x);
1012
+ if (start.y < 0) {
1013
+ startTheta = CesiumMath.TWO_PI - startTheta;
1014
+ }
1015
+ let endTheta = CesiumMath.acosClamped(end.x);
1016
+ if (end.y < 0) {
1017
+ endTheta = CesiumMath.TWO_PI - endTheta;
1018
+ }
1019
+ const theta = endTheta - startTheta;
1020
+
1021
+ camera.twistRight(theta);
1022
+ }
1023
+
1024
+ function singleAxisTwist2D(controller, startPosition, movement) {
1025
+ let rotateRate =
1026
+ controller._rotateFactor * controller._rotateRateRangeAdjustment;
1027
+
1028
+ if (rotateRate > controller._maximumRotateRate) {
1029
+ rotateRate = controller._maximumRotateRate;
1030
+ }
1031
+
1032
+ if (rotateRate < controller._minimumRotateRate) {
1033
+ rotateRate = controller._minimumRotateRate;
1034
+ }
1035
+
1036
+ const scene = controller._scene;
1037
+ const camera = scene.camera;
1038
+ const canvas = scene.canvas;
1039
+
1040
+ let phiWindowRatio =
1041
+ (movement.endPosition.x - movement.startPosition.x) / canvas.clientWidth;
1042
+ phiWindowRatio = Math.min(phiWindowRatio, controller.maximumMovementRatio);
1043
+
1044
+ const deltaPhi = rotateRate * phiWindowRatio * Math.PI * 4.0;
1045
+
1046
+ camera.twistRight(deltaPhi);
1047
+ }
1048
+
1049
+ function update2D(controller) {
1050
+ const rotatable2D = controller._scene.mapMode2D === MapMode2D.ROTATE;
1051
+ if (!Matrix4.equals(Matrix4.IDENTITY, controller._scene.camera.transform)) {
1052
+ reactToInput(
1053
+ controller,
1054
+ controller.enableZoom,
1055
+ controller.zoomEventTypes,
1056
+ zoom2D,
1057
+ controller.inertiaZoom,
1058
+ "_lastInertiaZoomMovement"
1059
+ );
1060
+ if (rotatable2D) {
1061
+ reactToInput(
1062
+ controller,
1063
+ controller.enableRotate,
1064
+ controller.translateEventTypes,
1065
+ twist2D,
1066
+ controller.inertiaSpin,
1067
+ "_lastInertiaSpinMovement"
1068
+ );
1069
+ }
1070
+ } else {
1071
+ reactToInput(
1072
+ controller,
1073
+ controller.enableTranslate,
1074
+ controller.translateEventTypes,
1075
+ translate2D,
1076
+ controller.inertiaTranslate,
1077
+ "_lastInertiaTranslateMovement"
1078
+ );
1079
+ reactToInput(
1080
+ controller,
1081
+ controller.enableZoom,
1082
+ controller.zoomEventTypes,
1083
+ zoom2D,
1084
+ controller.inertiaZoom,
1085
+ "_lastInertiaZoomMovement"
1086
+ );
1087
+ if (rotatable2D) {
1088
+ reactToInput(
1089
+ controller,
1090
+ controller.enableRotate,
1091
+ controller.tiltEventTypes,
1092
+ twist2D,
1093
+ controller.inertiaSpin,
1094
+ "_lastInertiaTiltMovement"
1095
+ );
1096
+ }
1097
+ }
1098
+ }
1099
+
1100
+ const pickGlobeScratchRay = new Ray();
1101
+ const scratchDepthIntersection = new Cartesian3();
1102
+ const scratchRayIntersection = new Cartesian3();
1103
+
1104
+ function pickGlobe(controller, mousePosition, result) {
1105
+ const scene = controller._scene;
1106
+ const globe = controller._globe;
1107
+ const camera = scene.camera;
1108
+
1109
+ if (!defined(globe)) {
1110
+ return undefined;
1111
+ }
1112
+
1113
+ const cullBackFaces = !controller._cameraUnderground;
1114
+
1115
+ let depthIntersection;
1116
+ if (scene.pickPositionSupported) {
1117
+ depthIntersection = scene.pickPositionWorldCoordinates(
1118
+ mousePosition,
1119
+ scratchDepthIntersection
1120
+ );
1121
+ }
1122
+
1123
+ const ray = camera.getPickRay(mousePosition, pickGlobeScratchRay);
1124
+ const rayIntersection = globe.pickWorldCoordinates(
1125
+ ray,
1126
+ scene,
1127
+ cullBackFaces,
1128
+ scratchRayIntersection
1129
+ );
1130
+
1131
+ const pickDistance = defined(depthIntersection)
1132
+ ? Cartesian3.distance(depthIntersection, camera.positionWC)
1133
+ : Number.POSITIVE_INFINITY;
1134
+ const rayDistance = defined(rayIntersection)
1135
+ ? Cartesian3.distance(rayIntersection, camera.positionWC)
1136
+ : Number.POSITIVE_INFINITY;
1137
+
1138
+ if (pickDistance < rayDistance) {
1139
+ return Cartesian3.clone(depthIntersection, result);
1140
+ }
1141
+
1142
+ return Cartesian3.clone(rayIntersection, result);
1143
+ }
1144
+
1145
+ const scratchDistanceCartographic = new Cartographic();
1146
+
1147
+ function getDistanceFromSurface(controller) {
1148
+ const ellipsoid = controller._ellipsoid;
1149
+ const scene = controller._scene;
1150
+ const camera = scene.camera;
1151
+ const mode = scene.mode;
1152
+
1153
+ let height = 0.0;
1154
+ if (mode === SceneMode.SCENE3D) {
1155
+ const cartographic = ellipsoid.cartesianToCartographic(
1156
+ camera.position,
1157
+ scratchDistanceCartographic
1158
+ );
1159
+ if (defined(cartographic)) {
1160
+ height = cartographic.height;
1161
+ }
1162
+ } else {
1163
+ height = camera.position.z;
1164
+ }
1165
+ const globeHeight = defaultValue(controller._scene.globeHeight, 0.0);
1166
+ const distanceFromSurface = Math.abs(globeHeight - height);
1167
+ return distanceFromSurface;
1168
+ }
1169
+
1170
+ const scratchSurfaceNormal = new Cartesian3();
1171
+
1172
+ function getZoomDistanceUnderground(controller, ray) {
1173
+ const origin = ray.origin;
1174
+ const direction = ray.direction;
1175
+ const distanceFromSurface = getDistanceFromSurface(controller);
1176
+
1177
+ // Weight zoom distance based on how strongly the pick ray is pointing inward.
1178
+ // Geocentric normal is accurate enough for these purposes
1179
+ const surfaceNormal = Cartesian3.normalize(origin, scratchSurfaceNormal);
1180
+ let strength = Math.abs(Cartesian3.dot(surfaceNormal, direction));
1181
+ strength = Math.max(strength, 0.5) * 2.0;
1182
+ return distanceFromSurface * strength;
1183
+ }
1184
+
1185
+ function getTiltCenterUnderground(controller, ray, pickedPosition, result) {
1186
+ let distance = Cartesian3.distance(ray.origin, pickedPosition);
1187
+ const distanceFromSurface = getDistanceFromSurface(controller);
1188
+
1189
+ const maximumDistance = CesiumMath.clamp(
1190
+ distanceFromSurface * 5.0,
1191
+ controller._minimumUndergroundPickDistance,
1192
+ controller._maximumUndergroundPickDistance
1193
+ );
1194
+
1195
+ if (distance > maximumDistance) {
1196
+ // Simulate look-at behavior by tilting around a small invisible sphere
1197
+ distance = Math.min(distance, distanceFromSurface / 5.0);
1198
+ distance = Math.max(distance, 100.0);
1199
+ }
1200
+
1201
+ return Ray.getPoint(ray, distance, result);
1202
+ }
1203
+
1204
+ function getStrafeStartPositionUnderground(
1205
+ controller,
1206
+ ray,
1207
+ pickedPosition,
1208
+ result
1209
+ ) {
1210
+ let distance;
1211
+ if (!defined(pickedPosition)) {
1212
+ distance = getDistanceFromSurface(controller);
1213
+ } else {
1214
+ distance = Cartesian3.distance(ray.origin, pickedPosition);
1215
+ if (distance > controller._maximumUndergroundPickDistance) {
1216
+ // If the picked position is too far away set the strafe speed based on the
1217
+ // camera's height from the globe surface
1218
+ distance = getDistanceFromSurface(controller);
1219
+ }
1220
+ }
1221
+
1222
+ return Ray.getPoint(ray, distance, result);
1223
+ }
1224
+
1225
+ const scratchInertialDelta = new Cartesian2();
1226
+
1227
+ function continueStrafing(controller, movement) {
1228
+ // Update the end position continually based on the inertial delta
1229
+ const originalEndPosition = movement.endPosition;
1230
+ const inertialDelta = Cartesian2.subtract(
1231
+ movement.endPosition,
1232
+ movement.startPosition,
1233
+ scratchInertialDelta
1234
+ );
1235
+ const endPosition = controller._strafeEndMousePosition;
1236
+ Cartesian2.add(endPosition, inertialDelta, endPosition);
1237
+ movement.endPosition = endPosition;
1238
+ strafe(controller, movement, controller._strafeStartPosition);
1239
+ movement.endPosition = originalEndPosition;
1240
+ }
1241
+
1242
+ const translateCVStartRay = new Ray();
1243
+ const translateCVEndRay = new Ray();
1244
+ const translateCVStartPos = new Cartesian3();
1245
+ const translateCVEndPos = new Cartesian3();
1246
+ const translateCVDifference = new Cartesian3();
1247
+ const translateCVOrigin = new Cartesian3();
1248
+ const translateCVPlane = new Plane(Cartesian3.UNIT_X, 0.0);
1249
+ const translateCVStartMouse = new Cartesian2();
1250
+ const translateCVEndMouse = new Cartesian2();
1251
+
1252
+ function translateCV(controller, startPosition, movement) {
1253
+ if (!Cartesian3.equals(startPosition, controller._translateMousePosition)) {
1254
+ controller._looking = false;
1255
+ }
1256
+
1257
+ if (!Cartesian3.equals(startPosition, controller._strafeMousePosition)) {
1258
+ controller._strafing = false;
1259
+ }
1260
+
1261
+ if (controller._looking) {
1262
+ look3D(controller, startPosition, movement);
1263
+ return;
1264
+ }
1265
+
1266
+ if (controller._strafing) {
1267
+ continueStrafing(controller, movement);
1268
+ return;
1269
+ }
1270
+
1271
+ const scene = controller._scene;
1272
+ const camera = scene.camera;
1273
+ const cameraUnderground = controller._cameraUnderground;
1274
+ const startMouse = Cartesian2.clone(
1275
+ movement.startPosition,
1276
+ translateCVStartMouse
1277
+ );
1278
+ const endMouse = Cartesian2.clone(movement.endPosition, translateCVEndMouse);
1279
+ let startRay = camera.getPickRay(startMouse, translateCVStartRay);
1280
+
1281
+ const origin = Cartesian3.clone(Cartesian3.ZERO, translateCVOrigin);
1282
+ const normal = Cartesian3.UNIT_X;
1283
+
1284
+ let globePos;
1285
+ if (camera.position.z < controller._minimumPickingTerrainHeight) {
1286
+ globePos = pickGlobe(controller, startMouse, translateCVStartPos);
1287
+ if (defined(globePos)) {
1288
+ origin.x = globePos.x;
1289
+ }
1290
+ }
1291
+
1292
+ if (
1293
+ cameraUnderground ||
1294
+ (origin.x > camera.position.z && defined(globePos))
1295
+ ) {
1296
+ let pickPosition = globePos;
1297
+ if (cameraUnderground) {
1298
+ pickPosition = getStrafeStartPositionUnderground(
1299
+ controller,
1300
+ startRay,
1301
+ globePos,
1302
+ translateCVStartPos
1303
+ );
1304
+ }
1305
+ Cartesian2.clone(startPosition, controller._strafeMousePosition);
1306
+ Cartesian2.clone(startPosition, controller._strafeEndMousePosition);
1307
+ Cartesian3.clone(pickPosition, controller._strafeStartPosition);
1308
+ controller._strafing = true;
1309
+ strafe(controller, movement, controller._strafeStartPosition);
1310
+ return;
1311
+ }
1312
+
1313
+ const plane = Plane.fromPointNormal(origin, normal, translateCVPlane);
1314
+
1315
+ startRay = camera.getPickRay(startMouse, translateCVStartRay);
1316
+ const startPlanePos = IntersectionTests.rayPlane(
1317
+ startRay,
1318
+ plane,
1319
+ translateCVStartPos
1320
+ );
1321
+
1322
+ const endRay = camera.getPickRay(endMouse, translateCVEndRay);
1323
+ const endPlanePos = IntersectionTests.rayPlane(
1324
+ endRay,
1325
+ plane,
1326
+ translateCVEndPos
1327
+ );
1328
+
1329
+ if (!defined(startPlanePos) || !defined(endPlanePos)) {
1330
+ controller._looking = true;
1331
+ look3D(controller, startPosition, movement);
1332
+ Cartesian2.clone(startPosition, controller._translateMousePosition);
1333
+ return;
1334
+ }
1335
+
1336
+ const diff = Cartesian3.subtract(
1337
+ startPlanePos,
1338
+ endPlanePos,
1339
+ translateCVDifference
1340
+ );
1341
+ const temp = diff.x;
1342
+ diff.x = diff.y;
1343
+ diff.y = diff.z;
1344
+ diff.z = temp;
1345
+ const mag = Cartesian3.magnitude(diff);
1346
+ if (mag > CesiumMath.EPSILON6) {
1347
+ Cartesian3.normalize(diff, diff);
1348
+ camera.move(diff, mag);
1349
+ }
1350
+ }
1351
+
1352
+ const rotateCVWindowPos = new Cartesian2();
1353
+ const rotateCVWindowRay = new Ray();
1354
+ const rotateCVCenter = new Cartesian3();
1355
+ const rotateCVVerticalCenter = new Cartesian3();
1356
+ const rotateCVTransform = new Matrix4();
1357
+ const rotateCVVerticalTransform = new Matrix4();
1358
+ const rotateCVOrigin = new Cartesian3();
1359
+ const rotateCVPlane = new Plane(Cartesian3.UNIT_X, 0.0);
1360
+ const rotateCVCartesian3 = new Cartesian3();
1361
+ const rotateCVCart = new Cartographic();
1362
+ const rotateCVOldTransform = new Matrix4();
1363
+ const rotateCVQuaternion = new Quaternion();
1364
+ const rotateCVMatrix = new Matrix3();
1365
+ const tilt3DCartesian3 = new Cartesian3();
1366
+
1367
+ function rotateCV(controller, startPosition, movement) {
1368
+ if (defined(movement.angleAndHeight)) {
1369
+ movement = movement.angleAndHeight;
1370
+ }
1371
+
1372
+ if (!Cartesian2.equals(startPosition, controller._tiltCenterMousePosition)) {
1373
+ controller._tiltCVOffMap = false;
1374
+ controller._looking = false;
1375
+ }
1376
+
1377
+ if (controller._looking) {
1378
+ look3D(controller, startPosition, movement);
1379
+ return;
1380
+ }
1381
+
1382
+ const scene = controller._scene;
1383
+ const camera = scene.camera;
1384
+
1385
+ if (
1386
+ controller._tiltCVOffMap ||
1387
+ !controller.onMap() ||
1388
+ Math.abs(camera.position.z) > controller._minimumPickingTerrainHeight
1389
+ ) {
1390
+ controller._tiltCVOffMap = true;
1391
+ rotateCVOnPlane(controller, startPosition, movement);
1392
+ } else {
1393
+ rotateCVOnTerrain(controller, startPosition, movement);
1394
+ }
1395
+ }
1396
+
1397
+ function rotateCVOnPlane(controller, startPosition, movement) {
1398
+ const scene = controller._scene;
1399
+ const camera = scene.camera;
1400
+ const canvas = scene.canvas;
1401
+
1402
+ const windowPosition = rotateCVWindowPos;
1403
+ windowPosition.x = canvas.clientWidth / 2;
1404
+ windowPosition.y = canvas.clientHeight / 2;
1405
+ const ray = camera.getPickRay(windowPosition, rotateCVWindowRay);
1406
+ const normal = Cartesian3.UNIT_X;
1407
+
1408
+ const position = ray.origin;
1409
+ const direction = ray.direction;
1410
+ let scalar;
1411
+ const normalDotDirection = Cartesian3.dot(normal, direction);
1412
+ if (Math.abs(normalDotDirection) > CesiumMath.EPSILON6) {
1413
+ scalar = -Cartesian3.dot(normal, position) / normalDotDirection;
1414
+ }
1415
+
1416
+ if (!defined(scalar) || scalar <= 0.0) {
1417
+ controller._looking = true;
1418
+ look3D(controller, startPosition, movement);
1419
+ Cartesian2.clone(startPosition, controller._tiltCenterMousePosition);
1420
+ return;
1421
+ }
1422
+
1423
+ const center = Cartesian3.multiplyByScalar(direction, scalar, rotateCVCenter);
1424
+ Cartesian3.add(position, center, center);
1425
+
1426
+ const projection = scene.mapProjection;
1427
+ const ellipsoid = projection.ellipsoid;
1428
+
1429
+ Cartesian3.fromElements(center.y, center.z, center.x, center);
1430
+ const cart = projection.unproject(center, rotateCVCart);
1431
+ ellipsoid.cartographicToCartesian(cart, center);
1432
+
1433
+ const transform = Transforms.eastNorthUpToFixedFrame(
1434
+ center,
1435
+ ellipsoid,
1436
+ rotateCVTransform
1437
+ );
1438
+
1439
+ const oldGlobe = controller._globe;
1440
+ const oldEllipsoid = controller._ellipsoid;
1441
+ controller._globe = undefined;
1442
+ controller._ellipsoid = Ellipsoid.UNIT_SPHERE;
1443
+ controller._rotateFactor = 1.0;
1444
+ controller._rotateRateRangeAdjustment = 1.0;
1445
+
1446
+ const oldTransform = Matrix4.clone(camera.transform, rotateCVOldTransform);
1447
+ camera._setTransform(transform);
1448
+
1449
+ rotate3D(controller, startPosition, movement, Cartesian3.UNIT_Z);
1450
+
1451
+ camera._setTransform(oldTransform);
1452
+ controller._globe = oldGlobe;
1453
+ controller._ellipsoid = oldEllipsoid;
1454
+
1455
+ const radius = oldEllipsoid.maximumRadius;
1456
+ controller._rotateFactor = 1.0 / radius;
1457
+ controller._rotateRateRangeAdjustment = radius;
1458
+ }
1459
+
1460
+ function rotateCVOnTerrain(controller, startPosition, movement) {
1461
+ const scene = controller._scene;
1462
+ const camera = scene.camera;
1463
+ const cameraUnderground = controller._cameraUnderground;
1464
+
1465
+ let center;
1466
+ let ray;
1467
+ const normal = Cartesian3.UNIT_X;
1468
+
1469
+ if (Cartesian2.equals(startPosition, controller._tiltCenterMousePosition)) {
1470
+ center = Cartesian3.clone(controller._tiltCenter, rotateCVCenter);
1471
+ } else {
1472
+ if (camera.position.z < controller._minimumPickingTerrainHeight) {
1473
+ center = pickGlobe(controller, startPosition, rotateCVCenter);
1474
+ }
1475
+
1476
+ if (!defined(center)) {
1477
+ ray = camera.getPickRay(startPosition, rotateCVWindowRay);
1478
+ const position = ray.origin;
1479
+ const direction = ray.direction;
1480
+
1481
+ let scalar;
1482
+ const normalDotDirection = Cartesian3.dot(normal, direction);
1483
+ if (Math.abs(normalDotDirection) > CesiumMath.EPSILON6) {
1484
+ scalar = -Cartesian3.dot(normal, position) / normalDotDirection;
1485
+ }
1486
+
1487
+ if (!defined(scalar) || scalar <= 0.0) {
1488
+ controller._looking = true;
1489
+ look3D(controller, startPosition, movement);
1490
+ Cartesian2.clone(startPosition, controller._tiltCenterMousePosition);
1491
+ return;
1492
+ }
1493
+
1494
+ center = Cartesian3.multiplyByScalar(direction, scalar, rotateCVCenter);
1495
+ Cartesian3.add(position, center, center);
1496
+ }
1497
+
1498
+ if (cameraUnderground) {
1499
+ if (!defined(ray)) {
1500
+ ray = camera.getPickRay(startPosition, rotateCVWindowRay);
1501
+ }
1502
+ getTiltCenterUnderground(controller, ray, center, center);
1503
+ }
1504
+
1505
+ Cartesian2.clone(startPosition, controller._tiltCenterMousePosition);
1506
+ Cartesian3.clone(center, controller._tiltCenter);
1507
+ }
1508
+
1509
+ const canvas = scene.canvas;
1510
+
1511
+ const windowPosition = rotateCVWindowPos;
1512
+ windowPosition.x = canvas.clientWidth / 2;
1513
+ windowPosition.y = controller._tiltCenterMousePosition.y;
1514
+ ray = camera.getPickRay(windowPosition, rotateCVWindowRay);
1515
+
1516
+ const origin = Cartesian3.clone(Cartesian3.ZERO, rotateCVOrigin);
1517
+ origin.x = center.x;
1518
+
1519
+ const plane = Plane.fromPointNormal(origin, normal, rotateCVPlane);
1520
+ const verticalCenter = IntersectionTests.rayPlane(
1521
+ ray,
1522
+ plane,
1523
+ rotateCVVerticalCenter
1524
+ );
1525
+
1526
+ const projection = camera._projection;
1527
+ const ellipsoid = projection.ellipsoid;
1528
+
1529
+ Cartesian3.fromElements(center.y, center.z, center.x, center);
1530
+ let cart = projection.unproject(center, rotateCVCart);
1531
+ ellipsoid.cartographicToCartesian(cart, center);
1532
+
1533
+ const transform = Transforms.eastNorthUpToFixedFrame(
1534
+ center,
1535
+ ellipsoid,
1536
+ rotateCVTransform
1537
+ );
1538
+
1539
+ let verticalTransform;
1540
+ if (defined(verticalCenter)) {
1541
+ Cartesian3.fromElements(
1542
+ verticalCenter.y,
1543
+ verticalCenter.z,
1544
+ verticalCenter.x,
1545
+ verticalCenter
1546
+ );
1547
+ cart = projection.unproject(verticalCenter, rotateCVCart);
1548
+ ellipsoid.cartographicToCartesian(cart, verticalCenter);
1549
+
1550
+ verticalTransform = Transforms.eastNorthUpToFixedFrame(
1551
+ verticalCenter,
1552
+ ellipsoid,
1553
+ rotateCVVerticalTransform
1554
+ );
1555
+ } else {
1556
+ verticalTransform = transform;
1557
+ }
1558
+
1559
+ const oldGlobe = controller._globe;
1560
+ const oldEllipsoid = controller._ellipsoid;
1561
+ controller._globe = undefined;
1562
+ controller._ellipsoid = Ellipsoid.UNIT_SPHERE;
1563
+ controller._rotateFactor = 1.0;
1564
+ controller._rotateRateRangeAdjustment = 1.0;
1565
+
1566
+ let constrainedAxis = Cartesian3.UNIT_Z;
1567
+
1568
+ const oldTransform = Matrix4.clone(camera.transform, rotateCVOldTransform);
1569
+ camera._setTransform(transform);
1570
+
1571
+ const tangent = Cartesian3.cross(
1572
+ Cartesian3.UNIT_Z,
1573
+ Cartesian3.normalize(camera.position, rotateCVCartesian3),
1574
+ rotateCVCartesian3
1575
+ );
1576
+ const dot = Cartesian3.dot(camera.right, tangent);
1577
+
1578
+ rotate3D(controller, startPosition, movement, constrainedAxis, false, true);
1579
+
1580
+ camera._setTransform(verticalTransform);
1581
+ if (dot < 0.0) {
1582
+ const movementDelta = movement.startPosition.y - movement.endPosition.y;
1583
+ if (
1584
+ (cameraUnderground && movementDelta < 0.0) ||
1585
+ (!cameraUnderground && movementDelta > 0.0)
1586
+ ) {
1587
+ // Prevent camera from flipping past the up axis
1588
+ constrainedAxis = undefined;
1589
+ }
1590
+
1591
+ const oldConstrainedAxis = camera.constrainedAxis;
1592
+ camera.constrainedAxis = undefined;
1593
+
1594
+ rotate3D(controller, startPosition, movement, constrainedAxis, true, false);
1595
+
1596
+ camera.constrainedAxis = oldConstrainedAxis;
1597
+ } else {
1598
+ rotate3D(controller, startPosition, movement, constrainedAxis, true, false);
1599
+ }
1600
+
1601
+ if (defined(camera.constrainedAxis)) {
1602
+ const right = Cartesian3.cross(
1603
+ camera.direction,
1604
+ camera.constrainedAxis,
1605
+ tilt3DCartesian3
1606
+ );
1607
+ if (
1608
+ !Cartesian3.equalsEpsilon(right, Cartesian3.ZERO, CesiumMath.EPSILON6)
1609
+ ) {
1610
+ if (Cartesian3.dot(right, camera.right) < 0.0) {
1611
+ Cartesian3.negate(right, right);
1612
+ }
1613
+
1614
+ Cartesian3.cross(right, camera.direction, camera.up);
1615
+ Cartesian3.cross(camera.direction, camera.up, camera.right);
1616
+
1617
+ Cartesian3.normalize(camera.up, camera.up);
1618
+ Cartesian3.normalize(camera.right, camera.right);
1619
+ }
1620
+ }
1621
+
1622
+ camera._setTransform(oldTransform);
1623
+ controller._globe = oldGlobe;
1624
+ controller._ellipsoid = oldEllipsoid;
1625
+
1626
+ const radius = oldEllipsoid.maximumRadius;
1627
+ controller._rotateFactor = 1.0 / radius;
1628
+ controller._rotateRateRangeAdjustment = radius;
1629
+
1630
+ const originalPosition = Cartesian3.clone(
1631
+ camera.positionWC,
1632
+ rotateCVCartesian3
1633
+ );
1634
+
1635
+ if (controller.enableCollisionDetection) {
1636
+ adjustHeightForTerrain(controller);
1637
+ }
1638
+
1639
+ if (!Cartesian3.equals(camera.positionWC, originalPosition)) {
1640
+ camera._setTransform(verticalTransform);
1641
+ camera.worldToCameraCoordinatesPoint(originalPosition, originalPosition);
1642
+
1643
+ const magSqrd = Cartesian3.magnitudeSquared(originalPosition);
1644
+ if (Cartesian3.magnitudeSquared(camera.position) > magSqrd) {
1645
+ Cartesian3.normalize(camera.position, camera.position);
1646
+ Cartesian3.multiplyByScalar(
1647
+ camera.position,
1648
+ Math.sqrt(magSqrd),
1649
+ camera.position
1650
+ );
1651
+ }
1652
+
1653
+ const angle = Cartesian3.angleBetween(originalPosition, camera.position);
1654
+ const axis = Cartesian3.cross(
1655
+ originalPosition,
1656
+ camera.position,
1657
+ originalPosition
1658
+ );
1659
+ Cartesian3.normalize(axis, axis);
1660
+
1661
+ const quaternion = Quaternion.fromAxisAngle(
1662
+ axis,
1663
+ angle,
1664
+ rotateCVQuaternion
1665
+ );
1666
+ const rotation = Matrix3.fromQuaternion(quaternion, rotateCVMatrix);
1667
+ Matrix3.multiplyByVector(rotation, camera.direction, camera.direction);
1668
+ Matrix3.multiplyByVector(rotation, camera.up, camera.up);
1669
+ Cartesian3.cross(camera.direction, camera.up, camera.right);
1670
+ Cartesian3.cross(camera.right, camera.direction, camera.up);
1671
+
1672
+ camera._setTransform(oldTransform);
1673
+ }
1674
+ }
1675
+
1676
+ const zoomCVWindowPos = new Cartesian2();
1677
+ const zoomCVWindowRay = new Ray();
1678
+ const zoomCVIntersection = new Cartesian3();
1679
+
1680
+ function zoomCV(controller, startPosition, movement) {
1681
+ if (defined(movement.distance)) {
1682
+ movement = movement.distance;
1683
+ }
1684
+
1685
+ const scene = controller._scene;
1686
+ const camera = scene.camera;
1687
+ const canvas = scene.canvas;
1688
+
1689
+ const cameraUnderground = controller._cameraUnderground;
1690
+
1691
+ let windowPosition;
1692
+
1693
+ if (cameraUnderground) {
1694
+ windowPosition = startPosition;
1695
+ } else {
1696
+ windowPosition = zoomCVWindowPos;
1697
+ windowPosition.x = canvas.clientWidth / 2;
1698
+ windowPosition.y = canvas.clientHeight / 2;
1699
+ }
1700
+
1701
+ const ray = camera.getPickRay(windowPosition, zoomCVWindowRay);
1702
+ const position = ray.origin;
1703
+ const direction = ray.direction;
1704
+ const height = camera.position.z;
1705
+
1706
+ let intersection;
1707
+ if (height < controller._minimumPickingTerrainHeight) {
1708
+ intersection = pickGlobe(controller, windowPosition, zoomCVIntersection);
1709
+ }
1710
+
1711
+ let distance;
1712
+ if (defined(intersection)) {
1713
+ distance = Cartesian3.distance(position, intersection);
1714
+ }
1715
+
1716
+ if (cameraUnderground) {
1717
+ const distanceUnderground = getZoomDistanceUnderground(
1718
+ controller,
1719
+ ray,
1720
+ height
1721
+ );
1722
+ if (defined(distance)) {
1723
+ distance = Math.min(distance, distanceUnderground);
1724
+ } else {
1725
+ distance = distanceUnderground;
1726
+ }
1727
+ }
1728
+
1729
+ if (!defined(distance)) {
1730
+ const normal = Cartesian3.UNIT_X;
1731
+ distance =
1732
+ -Cartesian3.dot(normal, position) / Cartesian3.dot(normal, direction);
1733
+ }
1734
+
1735
+ handleZoom(
1736
+ controller,
1737
+ startPosition,
1738
+ movement,
1739
+ controller._zoomFactor,
1740
+ distance
1741
+ );
1742
+ }
1743
+
1744
+ function updateCV(controller) {
1745
+ const scene = controller._scene;
1746
+ const camera = scene.camera;
1747
+
1748
+ if (!Matrix4.equals(Matrix4.IDENTITY, camera.transform)) {
1749
+ reactToInput(
1750
+ controller,
1751
+ controller.enableRotate,
1752
+ controller.rotateEventTypes,
1753
+ rotate3D,
1754
+ controller.inertiaSpin,
1755
+ "_lastInertiaSpinMovement"
1756
+ );
1757
+ reactToInput(
1758
+ controller,
1759
+ controller.enableZoom,
1760
+ controller.zoomEventTypes,
1761
+ zoom3D,
1762
+ controller.inertiaZoom,
1763
+ "_lastInertiaZoomMovement"
1764
+ );
1765
+ } else {
1766
+ const tweens = controller._tweens;
1767
+
1768
+ if (controller._aggregator.anyButtonDown) {
1769
+ tweens.removeAll();
1770
+ }
1771
+
1772
+ reactToInput(
1773
+ controller,
1774
+ controller.enableTilt,
1775
+ controller.tiltEventTypes,
1776
+ rotateCV,
1777
+ controller.inertiaSpin,
1778
+ "_lastInertiaTiltMovement"
1779
+ );
1780
+ reactToInput(
1781
+ controller,
1782
+ controller.enableTranslate,
1783
+ controller.translateEventTypes,
1784
+ translateCV,
1785
+ controller.inertiaTranslate,
1786
+ "_lastInertiaTranslateMovement"
1787
+ );
1788
+ reactToInput(
1789
+ controller,
1790
+ controller.enableZoom,
1791
+ controller.zoomEventTypes,
1792
+ zoomCV,
1793
+ controller.inertiaZoom,
1794
+ "_lastInertiaZoomMovement"
1795
+ );
1796
+ reactToInput(
1797
+ controller,
1798
+ controller.enableLook,
1799
+ controller.lookEventTypes,
1800
+ look3D
1801
+ );
1802
+
1803
+ if (
1804
+ !controller._aggregator.anyButtonDown &&
1805
+ !tweens.contains(controller._tween)
1806
+ ) {
1807
+ const tween = camera.createCorrectPositionTween(
1808
+ controller.bounceAnimationTime
1809
+ );
1810
+ if (defined(tween)) {
1811
+ controller._tween = tweens.add(tween);
1812
+ }
1813
+ }
1814
+
1815
+ tweens.update();
1816
+ }
1817
+ }
1818
+
1819
+ const scratchStrafeRay = new Ray();
1820
+ const scratchStrafePlane = new Plane(Cartesian3.UNIT_X, 0.0);
1821
+ const scratchStrafeIntersection = new Cartesian3();
1822
+ const scratchStrafeDirection = new Cartesian3();
1823
+ const scratchMousePos = new Cartesian3();
1824
+
1825
+ function strafe(controller, movement, strafeStartPosition) {
1826
+ const scene = controller._scene;
1827
+ const camera = scene.camera;
1828
+
1829
+ const ray = camera.getPickRay(movement.endPosition, scratchStrafeRay);
1830
+
1831
+ let direction = Cartesian3.clone(camera.direction, scratchStrafeDirection);
1832
+ if (scene.mode === SceneMode.COLUMBUS_VIEW) {
1833
+ Cartesian3.fromElements(direction.z, direction.x, direction.y, direction);
1834
+ }
1835
+
1836
+ const plane = Plane.fromPointNormal(
1837
+ strafeStartPosition,
1838
+ direction,
1839
+ scratchStrafePlane
1840
+ );
1841
+ const intersection = IntersectionTests.rayPlane(
1842
+ ray,
1843
+ plane,
1844
+ scratchStrafeIntersection
1845
+ );
1846
+ if (!defined(intersection)) {
1847
+ return;
1848
+ }
1849
+
1850
+ direction = Cartesian3.subtract(strafeStartPosition, intersection, direction);
1851
+ if (scene.mode === SceneMode.COLUMBUS_VIEW) {
1852
+ Cartesian3.fromElements(direction.y, direction.z, direction.x, direction);
1853
+ }
1854
+
1855
+ Cartesian3.add(camera.position, direction, camera.position);
1856
+ }
1857
+
1858
+ const spin3DPick = new Cartesian3();
1859
+ const scratchCartographic = new Cartographic();
1860
+ const scratchRadii = new Cartesian3();
1861
+ const scratchEllipsoid = new Ellipsoid();
1862
+ const scratchLookUp = new Cartesian3();
1863
+ const scratchNormal = new Cartesian3();
1864
+
1865
+ function spin3D(controller, startPosition, movement) {
1866
+ const scene = controller._scene;
1867
+ const camera = scene.camera;
1868
+ const cameraUnderground = controller._cameraUnderground;
1869
+ let ellipsoid = controller._ellipsoid;
1870
+
1871
+ if (!Matrix4.equals(camera.transform, Matrix4.IDENTITY)) {
1872
+ rotate3D(controller, startPosition, movement);
1873
+ return;
1874
+ }
1875
+
1876
+ let magnitude;
1877
+ let radii;
1878
+
1879
+ const up = ellipsoid.geodeticSurfaceNormal(camera.position, scratchLookUp);
1880
+
1881
+ if (Cartesian2.equals(startPosition, controller._rotateMousePosition)) {
1882
+ if (controller._looking) {
1883
+ look3D(controller, startPosition, movement, up);
1884
+ } else if (controller._rotating) {
1885
+ rotate3D(controller, startPosition, movement);
1886
+ } else if (controller._strafing) {
1887
+ continueStrafing(controller, movement);
1888
+ } else {
1889
+ if (
1890
+ Cartesian3.magnitude(camera.position) <
1891
+ Cartesian3.magnitude(controller._rotateStartPosition)
1892
+ ) {
1893
+ // Pan action is no longer valid if camera moves below the pan ellipsoid
1894
+ return;
1895
+ }
1896
+ magnitude = Cartesian3.magnitude(controller._rotateStartPosition);
1897
+ radii = scratchRadii;
1898
+ radii.x = radii.y = radii.z = magnitude;
1899
+ ellipsoid = Ellipsoid.fromCartesian3(radii, scratchEllipsoid);
1900
+ pan3D(controller, startPosition, movement, ellipsoid);
1901
+ }
1902
+ return;
1903
+ }
1904
+ controller._looking = false;
1905
+ controller._rotating = false;
1906
+ controller._strafing = false;
1907
+
1908
+ const height = ellipsoid.cartesianToCartographic(
1909
+ camera.positionWC,
1910
+ scratchCartographic
1911
+ ).height;
1912
+ const globe = controller._globe;
1913
+
1914
+ if (defined(globe) && height < controller._minimumPickingTerrainHeight) {
1915
+ const mousePos = pickGlobe(
1916
+ controller,
1917
+ movement.startPosition,
1918
+ scratchMousePos
1919
+ );
1920
+ if (defined(mousePos)) {
1921
+ let strafing = false;
1922
+ const ray = camera.getPickRay(
1923
+ movement.startPosition,
1924
+ pickGlobeScratchRay
1925
+ );
1926
+
1927
+ if (cameraUnderground) {
1928
+ strafing = true;
1929
+ getStrafeStartPositionUnderground(controller, ray, mousePos, mousePos);
1930
+ } else {
1931
+ const normal = ellipsoid.geodeticSurfaceNormal(mousePos, scratchNormal);
1932
+ const tangentPick =
1933
+ Math.abs(Cartesian3.dot(ray.direction, normal)) < 0.05;
1934
+
1935
+ if (tangentPick) {
1936
+ strafing = true;
1937
+ } else {
1938
+ strafing =
1939
+ Cartesian3.magnitude(camera.position) <
1940
+ Cartesian3.magnitude(mousePos);
1941
+ }
1942
+ }
1943
+
1944
+ if (strafing) {
1945
+ Cartesian2.clone(startPosition, controller._strafeEndMousePosition);
1946
+ Cartesian3.clone(mousePos, controller._strafeStartPosition);
1947
+ controller._strafing = true;
1948
+ strafe(controller, movement, controller._strafeStartPosition);
1949
+ } else {
1950
+ magnitude = Cartesian3.magnitude(mousePos);
1951
+ radii = scratchRadii;
1952
+ radii.x = radii.y = radii.z = magnitude;
1953
+ ellipsoid = Ellipsoid.fromCartesian3(radii, scratchEllipsoid);
1954
+ pan3D(controller, startPosition, movement, ellipsoid);
1955
+
1956
+ Cartesian3.clone(mousePos, controller._rotateStartPosition);
1957
+ }
1958
+ } else {
1959
+ controller._looking = true;
1960
+ look3D(controller, startPosition, movement, up);
1961
+ }
1962
+ } else if (
1963
+ defined(
1964
+ camera.pickEllipsoid(
1965
+ movement.startPosition,
1966
+ controller._ellipsoid,
1967
+ spin3DPick
1968
+ )
1969
+ )
1970
+ ) {
1971
+ pan3D(controller, startPosition, movement, controller._ellipsoid);
1972
+ Cartesian3.clone(spin3DPick, controller._rotateStartPosition);
1973
+ } else if (height > controller._minimumTrackBallHeight) {
1974
+ controller._rotating = true;
1975
+ rotate3D(controller, startPosition, movement);
1976
+ } else {
1977
+ controller._looking = true;
1978
+ look3D(controller, startPosition, movement, up);
1979
+ }
1980
+
1981
+ Cartesian2.clone(startPosition, controller._rotateMousePosition);
1982
+ }
1983
+
1984
+ function rotate3D(
1985
+ controller,
1986
+ startPosition,
1987
+ movement,
1988
+ constrainedAxis,
1989
+ rotateOnlyVertical,
1990
+ rotateOnlyHorizontal
1991
+ ) {
1992
+ rotateOnlyVertical = defaultValue(rotateOnlyVertical, false);
1993
+ rotateOnlyHorizontal = defaultValue(rotateOnlyHorizontal, false);
1994
+
1995
+ const scene = controller._scene;
1996
+ const camera = scene.camera;
1997
+ const canvas = scene.canvas;
1998
+
1999
+ const oldAxis = camera.constrainedAxis;
2000
+ if (defined(constrainedAxis)) {
2001
+ camera.constrainedAxis = constrainedAxis;
2002
+ }
2003
+
2004
+ const rho = Cartesian3.magnitude(camera.position);
2005
+ let rotateRate =
2006
+ controller._rotateFactor * (rho - controller._rotateRateRangeAdjustment);
2007
+
2008
+ if (rotateRate > controller._maximumRotateRate) {
2009
+ rotateRate = controller._maximumRotateRate;
2010
+ }
2011
+
2012
+ if (rotateRate < controller._minimumRotateRate) {
2013
+ rotateRate = controller._minimumRotateRate;
2014
+ }
2015
+
2016
+ let phiWindowRatio =
2017
+ (movement.startPosition.x - movement.endPosition.x) / canvas.clientWidth;
2018
+ let thetaWindowRatio =
2019
+ (movement.startPosition.y - movement.endPosition.y) / canvas.clientHeight;
2020
+ phiWindowRatio = Math.min(phiWindowRatio, controller.maximumMovementRatio);
2021
+ thetaWindowRatio = Math.min(
2022
+ thetaWindowRatio,
2023
+ controller.maximumMovementRatio
2024
+ );
2025
+
2026
+ const deltaPhi = rotateRate * phiWindowRatio * Math.PI * 2.0;
2027
+ const deltaTheta = rotateRate * thetaWindowRatio * Math.PI;
2028
+
2029
+ if (!rotateOnlyVertical) {
2030
+ camera.rotateRight(deltaPhi);
2031
+ }
2032
+
2033
+ if (!rotateOnlyHorizontal) {
2034
+ camera.rotateUp(deltaTheta);
2035
+ }
2036
+
2037
+ camera.constrainedAxis = oldAxis;
2038
+ }
2039
+
2040
+ const pan3DP0 = Cartesian4.clone(Cartesian4.UNIT_W);
2041
+ const pan3DP1 = Cartesian4.clone(Cartesian4.UNIT_W);
2042
+ const pan3DTemp0 = new Cartesian3();
2043
+ const pan3DTemp1 = new Cartesian3();
2044
+ const pan3DTemp2 = new Cartesian3();
2045
+ const pan3DTemp3 = new Cartesian3();
2046
+ const pan3DStartMousePosition = new Cartesian2();
2047
+ const pan3DEndMousePosition = new Cartesian2();
2048
+
2049
+ function pan3D(controller, startPosition, movement, ellipsoid) {
2050
+ const scene = controller._scene;
2051
+ const camera = scene.camera;
2052
+
2053
+ const startMousePosition = Cartesian2.clone(
2054
+ movement.startPosition,
2055
+ pan3DStartMousePosition
2056
+ );
2057
+ const endMousePosition = Cartesian2.clone(
2058
+ movement.endPosition,
2059
+ pan3DEndMousePosition
2060
+ );
2061
+
2062
+ let p0 = camera.pickEllipsoid(startMousePosition, ellipsoid, pan3DP0);
2063
+ let p1 = camera.pickEllipsoid(endMousePosition, ellipsoid, pan3DP1);
2064
+
2065
+ if (!defined(p0) || !defined(p1)) {
2066
+ controller._rotating = true;
2067
+ rotate3D(controller, startPosition, movement);
2068
+ return;
2069
+ }
2070
+
2071
+ p0 = camera.worldToCameraCoordinates(p0, p0);
2072
+ p1 = camera.worldToCameraCoordinates(p1, p1);
2073
+
2074
+ if (!defined(camera.constrainedAxis)) {
2075
+ Cartesian3.normalize(p0, p0);
2076
+ Cartesian3.normalize(p1, p1);
2077
+ const dot = Cartesian3.dot(p0, p1);
2078
+ const axis = Cartesian3.cross(p0, p1, pan3DTemp0);
2079
+
2080
+ if (
2081
+ dot < 1.0 &&
2082
+ !Cartesian3.equalsEpsilon(axis, Cartesian3.ZERO, CesiumMath.EPSILON14)
2083
+ ) {
2084
+ // dot is in [0, 1]
2085
+ const angle = Math.acos(dot);
2086
+ camera.rotate(axis, angle);
2087
+ }
2088
+ } else {
2089
+ const basis0 = camera.constrainedAxis;
2090
+ const basis1 = Cartesian3.mostOrthogonalAxis(basis0, pan3DTemp0);
2091
+ Cartesian3.cross(basis1, basis0, basis1);
2092
+ Cartesian3.normalize(basis1, basis1);
2093
+ const basis2 = Cartesian3.cross(basis0, basis1, pan3DTemp1);
2094
+
2095
+ const startRho = Cartesian3.magnitude(p0);
2096
+ const startDot = Cartesian3.dot(basis0, p0);
2097
+ const startTheta = Math.acos(startDot / startRho);
2098
+ const startRej = Cartesian3.multiplyByScalar(basis0, startDot, pan3DTemp2);
2099
+ Cartesian3.subtract(p0, startRej, startRej);
2100
+ Cartesian3.normalize(startRej, startRej);
2101
+
2102
+ const endRho = Cartesian3.magnitude(p1);
2103
+ const endDot = Cartesian3.dot(basis0, p1);
2104
+ const endTheta = Math.acos(endDot / endRho);
2105
+ const endRej = Cartesian3.multiplyByScalar(basis0, endDot, pan3DTemp3);
2106
+ Cartesian3.subtract(p1, endRej, endRej);
2107
+ Cartesian3.normalize(endRej, endRej);
2108
+
2109
+ let startPhi = Math.acos(Cartesian3.dot(startRej, basis1));
2110
+ if (Cartesian3.dot(startRej, basis2) < 0) {
2111
+ startPhi = CesiumMath.TWO_PI - startPhi;
2112
+ }
2113
+
2114
+ let endPhi = Math.acos(Cartesian3.dot(endRej, basis1));
2115
+ if (Cartesian3.dot(endRej, basis2) < 0) {
2116
+ endPhi = CesiumMath.TWO_PI - endPhi;
2117
+ }
2118
+
2119
+ const deltaPhi = startPhi - endPhi;
2120
+
2121
+ let east;
2122
+ if (
2123
+ Cartesian3.equalsEpsilon(basis0, camera.position, CesiumMath.EPSILON2)
2124
+ ) {
2125
+ east = camera.right;
2126
+ } else {
2127
+ east = Cartesian3.cross(basis0, camera.position, pan3DTemp0);
2128
+ }
2129
+
2130
+ const planeNormal = Cartesian3.cross(basis0, east, pan3DTemp0);
2131
+ const side0 = Cartesian3.dot(
2132
+ planeNormal,
2133
+ Cartesian3.subtract(p0, basis0, pan3DTemp1)
2134
+ );
2135
+ const side1 = Cartesian3.dot(
2136
+ planeNormal,
2137
+ Cartesian3.subtract(p1, basis0, pan3DTemp1)
2138
+ );
2139
+
2140
+ let deltaTheta;
2141
+ if (side0 > 0 && side1 > 0) {
2142
+ deltaTheta = endTheta - startTheta;
2143
+ } else if (side0 > 0 && side1 <= 0) {
2144
+ if (Cartesian3.dot(camera.position, basis0) > 0) {
2145
+ deltaTheta = -startTheta - endTheta;
2146
+ } else {
2147
+ deltaTheta = startTheta + endTheta;
2148
+ }
2149
+ } else {
2150
+ deltaTheta = startTheta - endTheta;
2151
+ }
2152
+
2153
+ camera.rotateRight(deltaPhi);
2154
+ camera.rotateUp(deltaTheta);
2155
+ }
2156
+ }
2157
+
2158
+ const zoom3DUnitPosition = new Cartesian3();
2159
+ const zoom3DCartographic = new Cartographic();
2160
+
2161
+ function zoom3D(controller, startPosition, movement) {
2162
+ if (defined(movement.distance)) {
2163
+ movement = movement.distance;
2164
+ }
2165
+
2166
+ const ellipsoid = controller._ellipsoid;
2167
+ const scene = controller._scene;
2168
+ const camera = scene.camera;
2169
+ const canvas = scene.canvas;
2170
+
2171
+ const cameraUnderground = controller._cameraUnderground;
2172
+
2173
+ let windowPosition;
2174
+
2175
+ if (cameraUnderground) {
2176
+ windowPosition = startPosition;
2177
+ } else {
2178
+ windowPosition = zoomCVWindowPos;
2179
+ windowPosition.x = canvas.clientWidth / 2;
2180
+ windowPosition.y = canvas.clientHeight / 2;
2181
+ }
2182
+
2183
+ const ray = camera.getPickRay(windowPosition, zoomCVWindowRay);
2184
+
2185
+ let intersection;
2186
+ const height = ellipsoid.cartesianToCartographic(
2187
+ camera.position,
2188
+ zoom3DCartographic
2189
+ ).height;
2190
+ if (height < controller._minimumPickingTerrainHeight) {
2191
+ intersection = pickGlobe(controller, windowPosition, zoomCVIntersection);
2192
+ }
2193
+
2194
+ let distance;
2195
+ if (defined(intersection)) {
2196
+ distance = Cartesian3.distance(ray.origin, intersection);
2197
+ }
2198
+
2199
+ if (cameraUnderground) {
2200
+ const distanceUnderground = getZoomDistanceUnderground(
2201
+ controller,
2202
+ ray,
2203
+ height
2204
+ );
2205
+ if (defined(distance)) {
2206
+ distance = Math.min(distance, distanceUnderground);
2207
+ } else {
2208
+ distance = distanceUnderground;
2209
+ }
2210
+ }
2211
+
2212
+ if (!defined(distance)) {
2213
+ distance = height;
2214
+ }
2215
+
2216
+ const unitPosition = Cartesian3.normalize(
2217
+ camera.position,
2218
+ zoom3DUnitPosition
2219
+ );
2220
+ handleZoom(
2221
+ controller,
2222
+ startPosition,
2223
+ movement,
2224
+ controller._zoomFactor,
2225
+ distance,
2226
+ Cartesian3.dot(unitPosition, camera.direction)
2227
+ );
2228
+ }
2229
+
2230
+ const tilt3DWindowPos = new Cartesian2();
2231
+ const tilt3DRay = new Ray();
2232
+ const tilt3DCenter = new Cartesian3();
2233
+ const tilt3DVerticalCenter = new Cartesian3();
2234
+ const tilt3DTransform = new Matrix4();
2235
+ const tilt3DVerticalTransform = new Matrix4();
2236
+ const tilt3DOldTransform = new Matrix4();
2237
+ const tilt3DQuaternion = new Quaternion();
2238
+ const tilt3DMatrix = new Matrix3();
2239
+ const tilt3DCart = new Cartographic();
2240
+ const tilt3DLookUp = new Cartesian3();
2241
+
2242
+ function tilt3D(controller, startPosition, movement) {
2243
+ const scene = controller._scene;
2244
+ const camera = scene.camera;
2245
+
2246
+ if (!Matrix4.equals(camera.transform, Matrix4.IDENTITY)) {
2247
+ return;
2248
+ }
2249
+
2250
+ if (defined(movement.angleAndHeight)) {
2251
+ movement = movement.angleAndHeight;
2252
+ }
2253
+
2254
+ if (!Cartesian2.equals(startPosition, controller._tiltCenterMousePosition)) {
2255
+ controller._tiltOnEllipsoid = false;
2256
+ controller._looking = false;
2257
+ }
2258
+
2259
+ if (controller._looking) {
2260
+ const up = controller._ellipsoid.geodeticSurfaceNormal(
2261
+ camera.position,
2262
+ tilt3DLookUp
2263
+ );
2264
+ look3D(controller, startPosition, movement, up);
2265
+ return;
2266
+ }
2267
+
2268
+ const ellipsoid = controller._ellipsoid;
2269
+ const cartographic = ellipsoid.cartesianToCartographic(
2270
+ camera.position,
2271
+ tilt3DCart
2272
+ );
2273
+
2274
+ if (
2275
+ controller._tiltOnEllipsoid ||
2276
+ cartographic.height > controller._minimumCollisionTerrainHeight
2277
+ ) {
2278
+ controller._tiltOnEllipsoid = true;
2279
+ tilt3DOnEllipsoid(controller, startPosition, movement);
2280
+ } else {
2281
+ tilt3DOnTerrain(controller, startPosition, movement);
2282
+ }
2283
+ }
2284
+
2285
+ const tilt3DOnEllipsoidCartographic = new Cartographic();
2286
+
2287
+ function tilt3DOnEllipsoid(controller, startPosition, movement) {
2288
+ const ellipsoid = controller._ellipsoid;
2289
+ const scene = controller._scene;
2290
+ const camera = scene.camera;
2291
+ const minHeight = controller.minimumZoomDistance * 0.25;
2292
+ const height = ellipsoid.cartesianToCartographic(
2293
+ camera.positionWC,
2294
+ tilt3DOnEllipsoidCartographic
2295
+ ).height;
2296
+ if (
2297
+ height - minHeight - 1.0 < CesiumMath.EPSILON3 &&
2298
+ movement.endPosition.y - movement.startPosition.y < 0
2299
+ ) {
2300
+ return;
2301
+ }
2302
+
2303
+ const canvas = scene.canvas;
2304
+
2305
+ const windowPosition = tilt3DWindowPos;
2306
+ windowPosition.x = canvas.clientWidth / 2;
2307
+ windowPosition.y = canvas.clientHeight / 2;
2308
+ const ray = camera.getPickRay(windowPosition, tilt3DRay);
2309
+
2310
+ let center;
2311
+ const intersection = IntersectionTests.rayEllipsoid(ray, ellipsoid);
2312
+ if (defined(intersection)) {
2313
+ center = Ray.getPoint(ray, intersection.start, tilt3DCenter);
2314
+ } else if (height > controller._minimumTrackBallHeight) {
2315
+ const grazingAltitudeLocation = IntersectionTests.grazingAltitudeLocation(
2316
+ ray,
2317
+ ellipsoid
2318
+ );
2319
+ if (!defined(grazingAltitudeLocation)) {
2320
+ return;
2321
+ }
2322
+ const grazingAltitudeCart = ellipsoid.cartesianToCartographic(
2323
+ grazingAltitudeLocation,
2324
+ tilt3DCart
2325
+ );
2326
+ grazingAltitudeCart.height = 0.0;
2327
+ center = ellipsoid.cartographicToCartesian(
2328
+ grazingAltitudeCart,
2329
+ tilt3DCenter
2330
+ );
2331
+ } else {
2332
+ controller._looking = true;
2333
+ const up = controller._ellipsoid.geodeticSurfaceNormal(
2334
+ camera.position,
2335
+ tilt3DLookUp
2336
+ );
2337
+ look3D(controller, startPosition, movement, up);
2338
+ Cartesian2.clone(startPosition, controller._tiltCenterMousePosition);
2339
+ return;
2340
+ }
2341
+
2342
+ const transform = Transforms.eastNorthUpToFixedFrame(
2343
+ center,
2344
+ ellipsoid,
2345
+ tilt3DTransform
2346
+ );
2347
+
2348
+ const oldGlobe = controller._globe;
2349
+ const oldEllipsoid = controller._ellipsoid;
2350
+ controller._globe = undefined;
2351
+ controller._ellipsoid = Ellipsoid.UNIT_SPHERE;
2352
+ controller._rotateFactor = 1.0;
2353
+ controller._rotateRateRangeAdjustment = 1.0;
2354
+
2355
+ const oldTransform = Matrix4.clone(camera.transform, tilt3DOldTransform);
2356
+ camera._setTransform(transform);
2357
+
2358
+ rotate3D(controller, startPosition, movement, Cartesian3.UNIT_Z);
2359
+
2360
+ camera._setTransform(oldTransform);
2361
+ controller._globe = oldGlobe;
2362
+ controller._ellipsoid = oldEllipsoid;
2363
+
2364
+ const radius = oldEllipsoid.maximumRadius;
2365
+ controller._rotateFactor = 1.0 / radius;
2366
+ controller._rotateRateRangeAdjustment = radius;
2367
+ }
2368
+
2369
+ function tilt3DOnTerrain(controller, startPosition, movement) {
2370
+ const ellipsoid = controller._ellipsoid;
2371
+ const scene = controller._scene;
2372
+ const camera = scene.camera;
2373
+ const cameraUnderground = controller._cameraUnderground;
2374
+
2375
+ let center;
2376
+ let ray;
2377
+ let intersection;
2378
+
2379
+ if (Cartesian2.equals(startPosition, controller._tiltCenterMousePosition)) {
2380
+ center = Cartesian3.clone(controller._tiltCenter, tilt3DCenter);
2381
+ } else {
2382
+ center = pickGlobe(controller, startPosition, tilt3DCenter);
2383
+
2384
+ if (!defined(center)) {
2385
+ ray = camera.getPickRay(startPosition, tilt3DRay);
2386
+ intersection = IntersectionTests.rayEllipsoid(ray, ellipsoid);
2387
+ if (!defined(intersection)) {
2388
+ const cartographic = ellipsoid.cartesianToCartographic(
2389
+ camera.position,
2390
+ tilt3DCart
2391
+ );
2392
+ if (cartographic.height <= controller._minimumTrackBallHeight) {
2393
+ controller._looking = true;
2394
+ const up = controller._ellipsoid.geodeticSurfaceNormal(
2395
+ camera.position,
2396
+ tilt3DLookUp
2397
+ );
2398
+ look3D(controller, startPosition, movement, up);
2399
+ Cartesian2.clone(startPosition, controller._tiltCenterMousePosition);
2400
+ }
2401
+ return;
2402
+ }
2403
+ center = Ray.getPoint(ray, intersection.start, tilt3DCenter);
2404
+ }
2405
+
2406
+ if (cameraUnderground) {
2407
+ if (!defined(ray)) {
2408
+ ray = camera.getPickRay(startPosition, tilt3DRay);
2409
+ }
2410
+ getTiltCenterUnderground(controller, ray, center, center);
2411
+ }
2412
+
2413
+ Cartesian2.clone(startPosition, controller._tiltCenterMousePosition);
2414
+ Cartesian3.clone(center, controller._tiltCenter);
2415
+ }
2416
+
2417
+ const canvas = scene.canvas;
2418
+
2419
+ const windowPosition = tilt3DWindowPos;
2420
+ windowPosition.x = canvas.clientWidth / 2;
2421
+ windowPosition.y = controller._tiltCenterMousePosition.y;
2422
+ ray = camera.getPickRay(windowPosition, tilt3DRay);
2423
+
2424
+ const mag = Cartesian3.magnitude(center);
2425
+ const radii = Cartesian3.fromElements(mag, mag, mag, scratchRadii);
2426
+ const newEllipsoid = Ellipsoid.fromCartesian3(radii, scratchEllipsoid);
2427
+
2428
+ intersection = IntersectionTests.rayEllipsoid(ray, newEllipsoid);
2429
+ if (!defined(intersection)) {
2430
+ return;
2431
+ }
2432
+
2433
+ const t =
2434
+ Cartesian3.magnitude(ray.origin) > mag
2435
+ ? intersection.start
2436
+ : intersection.stop;
2437
+ const verticalCenter = Ray.getPoint(ray, t, tilt3DVerticalCenter);
2438
+
2439
+ const transform = Transforms.eastNorthUpToFixedFrame(
2440
+ center,
2441
+ ellipsoid,
2442
+ tilt3DTransform
2443
+ );
2444
+ const verticalTransform = Transforms.eastNorthUpToFixedFrame(
2445
+ verticalCenter,
2446
+ newEllipsoid,
2447
+ tilt3DVerticalTransform
2448
+ );
2449
+
2450
+ const oldGlobe = controller._globe;
2451
+ const oldEllipsoid = controller._ellipsoid;
2452
+ controller._globe = undefined;
2453
+ controller._ellipsoid = Ellipsoid.UNIT_SPHERE;
2454
+ controller._rotateFactor = 1.0;
2455
+ controller._rotateRateRangeAdjustment = 1.0;
2456
+
2457
+ let constrainedAxis = Cartesian3.UNIT_Z;
2458
+
2459
+ const oldTransform = Matrix4.clone(camera.transform, tilt3DOldTransform);
2460
+ camera._setTransform(verticalTransform);
2461
+
2462
+ const tangent = Cartesian3.cross(
2463
+ verticalCenter,
2464
+ camera.positionWC,
2465
+ tilt3DCartesian3
2466
+ );
2467
+ const dot = Cartesian3.dot(camera.rightWC, tangent);
2468
+
2469
+ if (dot < 0.0) {
2470
+ const movementDelta = movement.startPosition.y - movement.endPosition.y;
2471
+ if (
2472
+ (cameraUnderground && movementDelta < 0.0) ||
2473
+ (!cameraUnderground && movementDelta > 0.0)
2474
+ ) {
2475
+ // Prevent camera from flipping past the up axis
2476
+ constrainedAxis = undefined;
2477
+ }
2478
+
2479
+ const oldConstrainedAxis = camera.constrainedAxis;
2480
+ camera.constrainedAxis = undefined;
2481
+
2482
+ rotate3D(controller, startPosition, movement, constrainedAxis, true, false);
2483
+
2484
+ camera.constrainedAxis = oldConstrainedAxis;
2485
+ } else {
2486
+ rotate3D(controller, startPosition, movement, constrainedAxis, true, false);
2487
+ }
2488
+
2489
+ camera._setTransform(transform);
2490
+ rotate3D(controller, startPosition, movement, constrainedAxis, false, true);
2491
+
2492
+ if (defined(camera.constrainedAxis)) {
2493
+ const right = Cartesian3.cross(
2494
+ camera.direction,
2495
+ camera.constrainedAxis,
2496
+ tilt3DCartesian3
2497
+ );
2498
+ if (
2499
+ !Cartesian3.equalsEpsilon(right, Cartesian3.ZERO, CesiumMath.EPSILON6)
2500
+ ) {
2501
+ if (Cartesian3.dot(right, camera.right) < 0.0) {
2502
+ Cartesian3.negate(right, right);
2503
+ }
2504
+
2505
+ Cartesian3.cross(right, camera.direction, camera.up);
2506
+ Cartesian3.cross(camera.direction, camera.up, camera.right);
2507
+
2508
+ Cartesian3.normalize(camera.up, camera.up);
2509
+ Cartesian3.normalize(camera.right, camera.right);
2510
+ }
2511
+ }
2512
+
2513
+ camera._setTransform(oldTransform);
2514
+ controller._globe = oldGlobe;
2515
+ controller._ellipsoid = oldEllipsoid;
2516
+
2517
+ const radius = oldEllipsoid.maximumRadius;
2518
+ controller._rotateFactor = 1.0 / radius;
2519
+ controller._rotateRateRangeAdjustment = radius;
2520
+
2521
+ const originalPosition = Cartesian3.clone(
2522
+ camera.positionWC,
2523
+ tilt3DCartesian3
2524
+ );
2525
+
2526
+ if (controller.enableCollisionDetection) {
2527
+ adjustHeightForTerrain(controller);
2528
+ }
2529
+
2530
+ if (!Cartesian3.equals(camera.positionWC, originalPosition)) {
2531
+ camera._setTransform(verticalTransform);
2532
+ camera.worldToCameraCoordinatesPoint(originalPosition, originalPosition);
2533
+
2534
+ const magSqrd = Cartesian3.magnitudeSquared(originalPosition);
2535
+ if (Cartesian3.magnitudeSquared(camera.position) > magSqrd) {
2536
+ Cartesian3.normalize(camera.position, camera.position);
2537
+ Cartesian3.multiplyByScalar(
2538
+ camera.position,
2539
+ Math.sqrt(magSqrd),
2540
+ camera.position
2541
+ );
2542
+ }
2543
+
2544
+ const angle = Cartesian3.angleBetween(originalPosition, camera.position);
2545
+ const axis = Cartesian3.cross(
2546
+ originalPosition,
2547
+ camera.position,
2548
+ originalPosition
2549
+ );
2550
+ Cartesian3.normalize(axis, axis);
2551
+
2552
+ const quaternion = Quaternion.fromAxisAngle(axis, angle, tilt3DQuaternion);
2553
+ const rotation = Matrix3.fromQuaternion(quaternion, tilt3DMatrix);
2554
+ Matrix3.multiplyByVector(rotation, camera.direction, camera.direction);
2555
+ Matrix3.multiplyByVector(rotation, camera.up, camera.up);
2556
+ Cartesian3.cross(camera.direction, camera.up, camera.right);
2557
+ Cartesian3.cross(camera.right, camera.direction, camera.up);
2558
+
2559
+ camera._setTransform(oldTransform);
2560
+ }
2561
+ }
2562
+
2563
+ const look3DStartPos = new Cartesian2();
2564
+ const look3DEndPos = new Cartesian2();
2565
+ const look3DStartRay = new Ray();
2566
+ const look3DEndRay = new Ray();
2567
+ const look3DNegativeRot = new Cartesian3();
2568
+ const look3DTan = new Cartesian3();
2569
+
2570
+ function look3D(controller, startPosition, movement, rotationAxis) {
2571
+ const scene = controller._scene;
2572
+ const camera = scene.camera;
2573
+
2574
+ const startPos = look3DStartPos;
2575
+ startPos.x = movement.startPosition.x;
2576
+ startPos.y = 0.0;
2577
+ const endPos = look3DEndPos;
2578
+ endPos.x = movement.endPosition.x;
2579
+ endPos.y = 0.0;
2580
+
2581
+ let startRay = camera.getPickRay(startPos, look3DStartRay);
2582
+ let endRay = camera.getPickRay(endPos, look3DEndRay);
2583
+ let angle = 0.0;
2584
+ let start;
2585
+ let end;
2586
+
2587
+ if (camera.frustum instanceof OrthographicFrustum) {
2588
+ start = startRay.origin;
2589
+ end = endRay.origin;
2590
+
2591
+ Cartesian3.add(camera.direction, start, start);
2592
+ Cartesian3.add(camera.direction, end, end);
2593
+
2594
+ Cartesian3.subtract(start, camera.position, start);
2595
+ Cartesian3.subtract(end, camera.position, end);
2596
+
2597
+ Cartesian3.normalize(start, start);
2598
+ Cartesian3.normalize(end, end);
2599
+ } else {
2600
+ start = startRay.direction;
2601
+ end = endRay.direction;
2602
+ }
2603
+
2604
+ let dot = Cartesian3.dot(start, end);
2605
+ if (dot < 1.0) {
2606
+ // dot is in [0, 1]
2607
+ angle = Math.acos(dot);
2608
+ }
2609
+
2610
+ angle = movement.startPosition.x > movement.endPosition.x ? -angle : angle;
2611
+
2612
+ const horizontalRotationAxis = controller._horizontalRotationAxis;
2613
+ if (defined(rotationAxis)) {
2614
+ camera.look(rotationAxis, -angle);
2615
+ } else if (defined(horizontalRotationAxis)) {
2616
+ camera.look(horizontalRotationAxis, -angle);
2617
+ } else {
2618
+ camera.lookLeft(angle);
2619
+ }
2620
+
2621
+ startPos.x = 0.0;
2622
+ startPos.y = movement.startPosition.y;
2623
+ endPos.x = 0.0;
2624
+ endPos.y = movement.endPosition.y;
2625
+
2626
+ startRay = camera.getPickRay(startPos, look3DStartRay);
2627
+ endRay = camera.getPickRay(endPos, look3DEndRay);
2628
+ angle = 0.0;
2629
+
2630
+ if (camera.frustum instanceof OrthographicFrustum) {
2631
+ start = startRay.origin;
2632
+ end = endRay.origin;
2633
+
2634
+ Cartesian3.add(camera.direction, start, start);
2635
+ Cartesian3.add(camera.direction, end, end);
2636
+
2637
+ Cartesian3.subtract(start, camera.position, start);
2638
+ Cartesian3.subtract(end, camera.position, end);
2639
+
2640
+ Cartesian3.normalize(start, start);
2641
+ Cartesian3.normalize(end, end);
2642
+ } else {
2643
+ start = startRay.direction;
2644
+ end = endRay.direction;
2645
+ }
2646
+
2647
+ dot = Cartesian3.dot(start, end);
2648
+ if (dot < 1.0) {
2649
+ // dot is in [0, 1]
2650
+ angle = Math.acos(dot);
2651
+ }
2652
+ angle = movement.startPosition.y > movement.endPosition.y ? -angle : angle;
2653
+
2654
+ rotationAxis = defaultValue(rotationAxis, horizontalRotationAxis);
2655
+ if (defined(rotationAxis)) {
2656
+ const direction = camera.direction;
2657
+ const negativeRotationAxis = Cartesian3.negate(
2658
+ rotationAxis,
2659
+ look3DNegativeRot
2660
+ );
2661
+ const northParallel = Cartesian3.equalsEpsilon(
2662
+ direction,
2663
+ rotationAxis,
2664
+ CesiumMath.EPSILON2
2665
+ );
2666
+ const southParallel = Cartesian3.equalsEpsilon(
2667
+ direction,
2668
+ negativeRotationAxis,
2669
+ CesiumMath.EPSILON2
2670
+ );
2671
+ if (!northParallel && !southParallel) {
2672
+ dot = Cartesian3.dot(direction, rotationAxis);
2673
+ let angleToAxis = CesiumMath.acosClamped(dot);
2674
+ if (angle > 0 && angle > angleToAxis) {
2675
+ angle = angleToAxis - CesiumMath.EPSILON4;
2676
+ }
2677
+
2678
+ dot = Cartesian3.dot(direction, negativeRotationAxis);
2679
+ angleToAxis = CesiumMath.acosClamped(dot);
2680
+ if (angle < 0 && -angle > angleToAxis) {
2681
+ angle = -angleToAxis + CesiumMath.EPSILON4;
2682
+ }
2683
+
2684
+ const tangent = Cartesian3.cross(rotationAxis, direction, look3DTan);
2685
+ camera.look(tangent, angle);
2686
+ } else if ((northParallel && angle < 0) || (southParallel && angle > 0)) {
2687
+ camera.look(camera.right, -angle);
2688
+ }
2689
+ } else {
2690
+ camera.lookUp(angle);
2691
+ }
2692
+ }
2693
+
2694
+ function update3D(controller) {
2695
+ reactToInput(
2696
+ controller,
2697
+ controller.enableRotate,
2698
+ controller.rotateEventTypes,
2699
+ spin3D,
2700
+ controller.inertiaSpin,
2701
+ "_lastInertiaSpinMovement"
2702
+ );
2703
+ reactToInput(
2704
+ controller,
2705
+ controller.enableZoom,
2706
+ controller.zoomEventTypes,
2707
+ zoom3D,
2708
+ controller.inertiaZoom,
2709
+ "_lastInertiaZoomMovement"
2710
+ );
2711
+ reactToInput(
2712
+ controller,
2713
+ controller.enableTilt,
2714
+ controller.tiltEventTypes,
2715
+ tilt3D,
2716
+ controller.inertiaSpin,
2717
+ "_lastInertiaTiltMovement"
2718
+ );
2719
+ reactToInput(
2720
+ controller,
2721
+ controller.enableLook,
2722
+ controller.lookEventTypes,
2723
+ look3D
2724
+ );
2725
+ }
2726
+
2727
+ const scratchAdjustHeightTransform = new Matrix4();
2728
+ const scratchAdjustHeightCartographic = new Cartographic();
2729
+
2730
+ function adjustHeightForTerrain(controller) {
2731
+ controller._adjustedHeightForTerrain = true;
2732
+
2733
+ const scene = controller._scene;
2734
+ const mode = scene.mode;
2735
+ const globe = scene.globe;
2736
+
2737
+ if (
2738
+ !defined(globe) ||
2739
+ mode === SceneMode.SCENE2D ||
2740
+ mode === SceneMode.MORPHING
2741
+ ) {
2742
+ return;
2743
+ }
2744
+
2745
+ const camera = scene.camera;
2746
+ const ellipsoid = globe.ellipsoid;
2747
+ const projection = scene.mapProjection;
2748
+
2749
+ let transform;
2750
+ let mag;
2751
+ if (!Matrix4.equals(camera.transform, Matrix4.IDENTITY)) {
2752
+ transform = Matrix4.clone(camera.transform, scratchAdjustHeightTransform);
2753
+ mag = Cartesian3.magnitude(camera.position);
2754
+ camera._setTransform(Matrix4.IDENTITY);
2755
+ }
2756
+
2757
+ const cartographic = scratchAdjustHeightCartographic;
2758
+ if (mode === SceneMode.SCENE3D) {
2759
+ ellipsoid.cartesianToCartographic(camera.position, cartographic);
2760
+ } else {
2761
+ projection.unproject(camera.position, cartographic);
2762
+ }
2763
+
2764
+ let heightUpdated = false;
2765
+ if (cartographic.height < controller._minimumCollisionTerrainHeight) {
2766
+ const globeHeight = controller._scene.globeHeight;
2767
+ if (defined(globeHeight)) {
2768
+ const height = globeHeight + controller.minimumZoomDistance;
2769
+ if (cartographic.height < height) {
2770
+ cartographic.height = height;
2771
+ if (mode === SceneMode.SCENE3D) {
2772
+ ellipsoid.cartographicToCartesian(cartographic, camera.position);
2773
+ } else {
2774
+ projection.project(cartographic, camera.position);
2775
+ }
2776
+ heightUpdated = true;
2777
+ }
2778
+ }
2779
+ }
2780
+
2781
+ if (defined(transform)) {
2782
+ camera._setTransform(transform);
2783
+ if (heightUpdated) {
2784
+ Cartesian3.normalize(camera.position, camera.position);
2785
+ Cartesian3.negate(camera.position, camera.direction);
2786
+ Cartesian3.multiplyByScalar(
2787
+ camera.position,
2788
+ Math.max(mag, controller.minimumZoomDistance),
2789
+ camera.position
2790
+ );
2791
+ Cartesian3.normalize(camera.direction, camera.direction);
2792
+ Cartesian3.cross(camera.direction, camera.up, camera.right);
2793
+ Cartesian3.cross(camera.right, camera.direction, camera.up);
2794
+ }
2795
+ }
2796
+ }
2797
+
2798
+ /**
2799
+ * @private
2800
+ */
2801
+ ScreenSpaceCameraController.prototype.onMap = function () {
2802
+ const scene = this._scene;
2803
+ const mode = scene.mode;
2804
+ const camera = scene.camera;
2805
+
2806
+ if (mode === SceneMode.COLUMBUS_VIEW) {
2807
+ return (
2808
+ Math.abs(camera.position.x) - this._maxCoord.x < 0 &&
2809
+ Math.abs(camera.position.y) - this._maxCoord.y < 0
2810
+ );
2811
+ }
2812
+
2813
+ return true;
2814
+ };
2815
+
2816
+ const scratchPreviousPosition = new Cartesian3();
2817
+ const scratchPreviousDirection = new Cartesian3();
2818
+
2819
+ /**
2820
+ * @private
2821
+ */
2822
+ ScreenSpaceCameraController.prototype.update = function () {
2823
+ const scene = this._scene;
2824
+ const camera = scene.camera;
2825
+ const globe = scene.globe;
2826
+ const mode = scene.mode;
2827
+
2828
+ if (!Matrix4.equals(camera.transform, Matrix4.IDENTITY)) {
2829
+ this._globe = undefined;
2830
+ this._ellipsoid = Ellipsoid.UNIT_SPHERE;
2831
+ } else {
2832
+ this._globe = globe;
2833
+ this._ellipsoid = defined(this._globe)
2834
+ ? this._globe.ellipsoid
2835
+ : scene.mapProjection.ellipsoid;
2836
+ }
2837
+
2838
+ const exaggeration = defined(this._globe)
2839
+ ? this._globe.terrainExaggeration
2840
+ : 1.0;
2841
+ const exaggerationRelativeHeight = defined(this._globe)
2842
+ ? this._globe.terrainExaggerationRelativeHeight
2843
+ : 0.0;
2844
+ this._minimumCollisionTerrainHeight = TerrainExaggeration.getHeight(
2845
+ this.minimumCollisionTerrainHeight,
2846
+ exaggeration,
2847
+ exaggerationRelativeHeight
2848
+ );
2849
+ this._minimumPickingTerrainHeight = TerrainExaggeration.getHeight(
2850
+ this.minimumPickingTerrainHeight,
2851
+ exaggeration,
2852
+ exaggerationRelativeHeight
2853
+ );
2854
+ this._minimumTrackBallHeight = TerrainExaggeration.getHeight(
2855
+ this.minimumTrackBallHeight,
2856
+ exaggeration,
2857
+ exaggerationRelativeHeight
2858
+ );
2859
+
2860
+ this._cameraUnderground = scene.cameraUnderground && defined(this._globe);
2861
+
2862
+ const radius = this._ellipsoid.maximumRadius;
2863
+ this._rotateFactor = 1.0 / radius;
2864
+ this._rotateRateRangeAdjustment = radius;
2865
+
2866
+ this._adjustedHeightForTerrain = false;
2867
+ const previousPosition = Cartesian3.clone(
2868
+ camera.positionWC,
2869
+ scratchPreviousPosition
2870
+ );
2871
+ const previousDirection = Cartesian3.clone(
2872
+ camera.directionWC,
2873
+ scratchPreviousDirection
2874
+ );
2875
+
2876
+ if (mode === SceneMode.SCENE2D) {
2877
+ update2D(this);
2878
+ } else if (mode === SceneMode.COLUMBUS_VIEW) {
2879
+ this._horizontalRotationAxis = Cartesian3.UNIT_Z;
2880
+ updateCV(this);
2881
+ } else if (mode === SceneMode.SCENE3D) {
2882
+ this._horizontalRotationAxis = undefined;
2883
+ update3D(this);
2884
+ }
2885
+
2886
+ if (this.enableCollisionDetection && !this._adjustedHeightForTerrain) {
2887
+ // Adjust the camera height if the camera moved at all (user input or inertia) and an action didn't already adjust the camera height
2888
+ const cameraChanged =
2889
+ !Cartesian3.equals(previousPosition, camera.positionWC) ||
2890
+ !Cartesian3.equals(previousDirection, camera.directionWC);
2891
+ if (cameraChanged) {
2892
+ adjustHeightForTerrain(this);
2893
+ }
2894
+ }
2895
+
2896
+ this._aggregator.reset();
2897
+ };
2898
+
2899
+ /**
2900
+ * Returns true if this object was destroyed; otherwise, false.
2901
+ * <br /><br />
2902
+ * If this object was destroyed, it should not be used; calling any function other than
2903
+ * <code>isDestroyed</code> will result in a {@link DeveloperError} exception.
2904
+ *
2905
+ * @returns {Boolean} <code>true</code> if this object was destroyed; otherwise, <code>false</code>.
2906
+ *
2907
+ * @see ScreenSpaceCameraController#destroy
2908
+ */
2909
+ ScreenSpaceCameraController.prototype.isDestroyed = function () {
2910
+ return false;
2911
+ };
2912
+
2913
+ /**
2914
+ * Removes mouse listeners held by this object.
2915
+ * <br /><br />
2916
+ * Once an object is destroyed, it should not be used; calling any function other than
2917
+ * <code>isDestroyed</code> will result in a {@link DeveloperError} exception. Therefore,
2918
+ * assign the return value (<code>undefined</code>) to the object as done in the example.
2919
+ *
2920
+ * @exception {DeveloperError} This object was destroyed, i.e., destroy() was called.
2921
+ *
2922
+ *
2923
+ * @example
2924
+ * controller = controller && controller.destroy();
2925
+ *
2926
+ * @see ScreenSpaceCameraController#isDestroyed
2927
+ */
2928
+ ScreenSpaceCameraController.prototype.destroy = function () {
2929
+ this._tweens.removeAll();
2930
+ this._aggregator = this._aggregator && this._aggregator.destroy();
2931
+ return destroyObject(this);
2932
+ };
2933
+ export default ScreenSpaceCameraController;