@cesium/engine 3.0.1 → 4.0.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 (234) hide show
  1. package/Build/ThirdParty/Workers/pako_deflate.min.js +605 -0
  2. package/Build/ThirdParty/Workers/pako_inflate.min.js +800 -0
  3. package/Build/ThirdParty/Workers/z-worker-pako.js +502 -0
  4. package/Build/Workers/chunk-27R2KRIK.js +634 -0
  5. package/Build/Workers/chunk-2C65EKYA.js +55 -0
  6. package/Build/Workers/chunk-2NLMZNJI.js +138 -0
  7. package/Build/Workers/chunk-4V6RCTVH.js +289 -0
  8. package/Build/Workers/chunk-4VWUFKYW.js +368 -0
  9. package/Build/Workers/chunk-527JG4D7.js +629 -0
  10. package/Build/Workers/chunk-5U4UHRZ2.js +8644 -0
  11. package/Build/Workers/chunk-7CZEWQWE.js +353 -0
  12. package/Build/Workers/chunk-7IMAWM6A.js +842 -0
  13. package/Build/Workers/{package.js → chunk-A6EA6KIE.js} +13 -2
  14. package/Build/Workers/chunk-AXGQUPXA.js +1075 -0
  15. package/Build/Workers/chunk-BT6YIL2N.js +39 -0
  16. package/Build/Workers/chunk-C6MRR5YL.js +476 -0
  17. package/Build/Workers/chunk-DJUTBX6A.js +1860 -0
  18. package/Build/Workers/chunk-EQ6ZAP37.js +218 -0
  19. package/Build/Workers/chunk-F7P2HCYZ.js +73 -0
  20. package/Build/Workers/chunk-FE2XG3SS.js +73 -0
  21. package/Build/Workers/chunk-FKHRSGKP.js +781 -0
  22. package/Build/Workers/chunk-FVDTKX3F.js +58 -0
  23. package/Build/Workers/chunk-FYHCAKU6.js +684 -0
  24. package/Build/Workers/chunk-G3MOT7BZ.js +157 -0
  25. package/Build/Workers/chunk-H52L6U76.js +421 -0
  26. package/Build/Workers/chunk-H6MBQ4W4.js +305 -0
  27. package/Build/Workers/chunk-HCZR75II.js +2716 -0
  28. package/Build/Workers/chunk-I5MQWHBR.js +102 -0
  29. package/Build/Workers/chunk-KAFF2QX3.js +258 -0
  30. package/Build/Workers/chunk-LGSGX2RH.js +757 -0
  31. package/Build/Workers/chunk-LQRFWCNX.js +124 -0
  32. package/Build/Workers/chunk-N5MMDSD2.js +44 -0
  33. package/Build/Workers/chunk-NRETMGYL.js +390 -0
  34. package/Build/Workers/chunk-P4M4QUNQ.js +196 -0
  35. package/Build/Workers/chunk-P7PWX5HR.js +430 -0
  36. package/Build/Workers/chunk-PGB3EFR7.js +171 -0
  37. package/Build/Workers/chunk-PW5CA4MJ.js +3273 -0
  38. package/Build/Workers/chunk-PWDYKCNC.js +501 -0
  39. package/Build/Workers/chunk-QIS3NB7U.js +1258 -0
  40. package/Build/Workers/chunk-QVJ6IRKV.js +77 -0
  41. package/Build/Workers/chunk-RDCDRNJ7.js +117 -0
  42. package/Build/Workers/chunk-RDM3BKNC.js +1009 -0
  43. package/Build/Workers/chunk-RRUPTJ6P.js +452 -0
  44. package/Build/Workers/chunk-SGRWJKNO.js +400 -0
  45. package/Build/Workers/chunk-TF5D2H7B.js +138 -0
  46. package/Build/Workers/chunk-TVYIHH4V.js +513 -0
  47. package/Build/Workers/chunk-U5LKG6LX.js +101 -0
  48. package/Build/Workers/chunk-UGZGTV5K.js +302 -0
  49. package/Build/Workers/chunk-UN7AK64D.js +163 -0
  50. package/Build/Workers/chunk-V2LKNJGT.js +59 -0
  51. package/Build/Workers/chunk-VSCXSFHE.js +1477 -0
  52. package/Build/Workers/chunk-XJCTFTBM.js +2041 -0
  53. package/Build/Workers/chunk-XZVQMPWG.js +100 -0
  54. package/Build/Workers/chunk-YLAFWVOW.js +834 -0
  55. package/Build/Workers/chunk-YLS3FX3U.js +236 -0
  56. package/Build/Workers/chunk-YMJPANZZ.js +693 -0
  57. package/Build/Workers/combineGeometry.js +65 -15
  58. package/Build/Workers/createBoxGeometry.js +55 -10
  59. package/Build/Workers/createBoxOutlineGeometry.js +231 -310
  60. package/Build/Workers/createCircleGeometry.js +185 -202
  61. package/Build/Workers/createCircleOutlineGeometry.js +141 -155
  62. package/Build/Workers/createCoplanarPolygonGeometry.js +477 -557
  63. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +218 -230
  64. package/Build/Workers/createCorridorGeometry.js +1162 -1307
  65. package/Build/Workers/createCorridorOutlineGeometry.js +533 -569
  66. package/Build/Workers/createCylinderGeometry.js +57 -10
  67. package/Build/Workers/createCylinderOutlineGeometry.js +224 -258
  68. package/Build/Workers/createEllipseGeometry.js +68 -12
  69. package/Build/Workers/createEllipseOutlineGeometry.js +61 -12
  70. package/Build/Workers/createEllipsoidGeometry.js +56 -10
  71. package/Build/Workers/createEllipsoidOutlineGeometry.js +58 -13
  72. package/Build/Workers/createFrustumGeometry.js +55 -10
  73. package/Build/Workers/createFrustumOutlineGeometry.js +226 -243
  74. package/Build/Workers/createGeometry.js +143 -48
  75. package/Build/Workers/createGroundPolylineGeometry.js +1484 -2011
  76. package/Build/Workers/createPlaneGeometry.js +216 -243
  77. package/Build/Workers/createPlaneOutlineGeometry.js +121 -113
  78. package/Build/Workers/createPolygonGeometry.js +1041 -1327
  79. package/Build/Workers/createPolygonOutlineGeometry.js +516 -657
  80. package/Build/Workers/createPolylineGeometry.js +471 -547
  81. package/Build/Workers/createPolylineVolumeGeometry.js +352 -384
  82. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +271 -295
  83. package/Build/Workers/createRectangleGeometry.js +1128 -1331
  84. package/Build/Workers/createRectangleOutlineGeometry.js +445 -500
  85. package/Build/Workers/createSimplePolylineGeometry.js +381 -440
  86. package/Build/Workers/createSphereGeometry.js +112 -118
  87. package/Build/Workers/createSphereOutlineGeometry.js +112 -121
  88. package/Build/Workers/createTaskProcessorWorker.js +32 -127
  89. package/Build/Workers/createVectorTileClampedPolylines.js +462 -505
  90. package/Build/Workers/createVectorTileGeometries.js +377 -436
  91. package/Build/Workers/createVectorTilePoints.js +110 -77
  92. package/Build/Workers/createVectorTilePolygons.js +369 -391
  93. package/Build/Workers/createVectorTilePolylines.js +252 -244
  94. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +543 -615
  95. package/Build/Workers/createVerticesFromHeightmap.js +2244 -2677
  96. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +682 -904
  97. package/Build/Workers/createWallGeometry.js +459 -593
  98. package/Build/Workers/createWallOutlineGeometry.js +324 -419
  99. package/Build/Workers/decodeDraco.js +327 -347
  100. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +2530 -3567
  101. package/Build/Workers/decodeI3S.js +765 -970
  102. package/Build/Workers/transcodeKTX2.js +3353 -1464
  103. package/Build/Workers/transferTypedArrayTest.js +3 -4
  104. package/Build/Workers/upsampleQuantizedTerrainMesh.js +748 -953
  105. package/LICENSE.md +0 -12
  106. package/Source/Core/FeatureDetection.js +9 -0
  107. package/Source/Core/GoogleMaps.js +1 -1
  108. package/Source/Core/GroundPolylineGeometry.js +3 -2
  109. package/Source/Core/Ion.js +1 -1
  110. package/Source/Core/KTX2Transcoder.js +7 -3
  111. package/Source/Core/RequestScheduler.js +1 -0
  112. package/Source/Core/TaskProcessor.js +150 -146
  113. package/Source/Core/Transforms.js +2 -2
  114. package/Source/Core/buildModuleUrl.js +6 -5
  115. package/Source/DataSources/CzmlDataSource.js +6 -4
  116. package/Source/Scene/ArcGisMapService.js +1 -1
  117. package/Source/Scene/DracoLoader.js +26 -3
  118. package/Source/Scene/GltfLoaderUtil.js +1 -7
  119. package/Source/Scene/I3SDataProvider.js +0 -27
  120. package/Source/Scene/I3SDecoder.js +127 -0
  121. package/Source/Scene/I3SNode.js +32 -110
  122. package/Source/Scene/ImageryLayer.js +2 -2
  123. package/Source/Scene/Implicit3DTileContent.js +13 -0
  124. package/Source/Scene/ImplicitTileset.js +5 -0
  125. package/Source/Scene/Model/I3dmLoader.js +5 -1
  126. package/Source/Scene/Model/Model.js +4 -1
  127. package/Source/Scene/OpenStreetMapImageryProvider.js +7 -4
  128. package/Source/Scene/SingleTileImageryProvider.js +4 -2
  129. package/Source/ThirdParty/Workers/basis_transcoder.js +1 -1
  130. package/Source/{WorkersES6 → Workers}/createGeometry.js +11 -12
  131. package/Source/{WorkersES6 → Workers}/createTaskProcessorWorker.js +43 -59
  132. package/Source/{WorkersES6 → Workers}/decodeDraco.js +19 -25
  133. package/Source/{WorkersES6 → Workers}/decodeI3S.js +18 -32
  134. package/Source/{WorkersES6 → Workers}/transcodeKTX2.js +19 -26
  135. package/Source/Workers/transferTypedArrayTest.js +0 -6
  136. package/index.d.ts +20 -11
  137. package/index.js +170 -169
  138. package/package.json +3 -2
  139. package/Build/Workers/ArcType-2d9abbbc.js +0 -37
  140. package/Build/Workers/AttributeCompression-f9f6c717.js +0 -716
  141. package/Build/Workers/AxisAlignedBoundingBox-4bfd84f3.js +0 -258
  142. package/Build/Workers/BoundingRectangle-5fd6403a.js +0 -369
  143. package/Build/Workers/BoxGeometry-7aa4ce7f.js +0 -884
  144. package/Build/Workers/Check-6ede7e26.js +0 -290
  145. package/Build/Workers/Color-8e135f71.js +0 -2262
  146. package/Build/Workers/ComponentDatatype-cf1fa08e.js +0 -341
  147. package/Build/Workers/CoplanarPolygonGeometryLibrary-59c69b0a.js +0 -132
  148. package/Build/Workers/CorridorGeometryLibrary-63907365.js +0 -498
  149. package/Build/Workers/CylinderGeometry-8fc7c44b.js +0 -467
  150. package/Build/Workers/CylinderGeometryLibrary-7bf291b4.js +0 -63
  151. package/Build/Workers/EllipseGeometry-16b3736a.js +0 -1304
  152. package/Build/Workers/EllipseGeometryLibrary-21262a28.js +0 -366
  153. package/Build/Workers/EllipseOutlineGeometry-05d35d18.js +0 -443
  154. package/Build/Workers/EllipsoidGeodesic-5b3623dc.js +0 -520
  155. package/Build/Workers/EllipsoidGeometry-a503d1d6.js +0 -637
  156. package/Build/Workers/EllipsoidOutlineGeometry-7b09f24d.js +0 -454
  157. package/Build/Workers/EllipsoidRhumbLine-ef872433.js +0 -741
  158. package/Build/Workers/EllipsoidTangentPlane-546c0d5e.js +0 -373
  159. package/Build/Workers/EncodedCartesian3-57415c8a.js +0 -171
  160. package/Build/Workers/FrustumGeometry-87ce8622.js +0 -2540
  161. package/Build/Workers/GeometryAttribute-8fcff0d5.js +0 -619
  162. package/Build/Workers/GeometryAttributes-ad136444.js +0 -91
  163. package/Build/Workers/GeometryInstance-34d9e21e.js +0 -121
  164. package/Build/Workers/GeometryOffsetAttribute-9ad0019c.js +0 -16
  165. package/Build/Workers/GeometryPipeline-70d69a43.js +0 -3690
  166. package/Build/Workers/IndexDatatype-2643aa47.js +0 -200
  167. package/Build/Workers/IntersectionTests-85350792.js +0 -1836
  168. package/Build/Workers/Math-0a2ac845.js +0 -1340
  169. package/Build/Workers/Matrix2-e1298525.js +0 -7086
  170. package/Build/Workers/Matrix3-41c58dde.js +0 -4283
  171. package/Build/Workers/OrientedBoundingBox-29fb0fcd.js +0 -1259
  172. package/Build/Workers/Plane-4c3d403b.js +0 -309
  173. package/Build/Workers/PolygonGeometryLibrary-bad6329a.js +0 -1074
  174. package/Build/Workers/PolygonPipeline-dd13ee78.js +0 -1344
  175. package/Build/Workers/PolylinePipeline-7119eb3f.js +0 -573
  176. package/Build/Workers/PolylineVolumeGeometryLibrary-d25f0050.js +0 -781
  177. package/Build/Workers/PrimitivePipeline-111ee29f.js +0 -966
  178. package/Build/Workers/RectangleGeometryLibrary-bb378fb6.js +0 -280
  179. package/Build/Workers/RuntimeError-ef395448.js +0 -68
  180. package/Build/Workers/TerrainEncoding-c8e029a2.js +0 -1227
  181. package/Build/Workers/Transforms-e2d4a55a.js +0 -14713
  182. package/Build/Workers/VertexFormat-030f11ff.js +0 -312
  183. package/Build/Workers/WallGeometryLibrary-3e0819ec.js +0 -211
  184. package/Build/Workers/WebGLConstants-0b1ce7ba.js +0 -620
  185. package/Build/Workers/WebMercatorProjection-13ed1a6e.js +0 -151
  186. package/Build/Workers/arrayRemoveDuplicates-d2061e85.js +0 -129
  187. package/Build/Workers/cesiumWorkerBootstrapper.js +0 -1363
  188. package/Build/Workers/combine-d9581036.js +0 -82
  189. package/Build/Workers/defaultValue-fe22d8c0.js +0 -51
  190. package/Source/ThirdParty/Workers/draco_decoder_nodejs.js +0 -117
  191. package/Source/Workers/cesiumWorkerBootstrapper.js +0 -2290
  192. package/Source/Workers/package.json +0 -1
  193. /package/Source/{WorkersES6 → Workers}/combineGeometry.js +0 -0
  194. /package/Source/{WorkersES6 → Workers}/createBoxGeometry.js +0 -0
  195. /package/Source/{WorkersES6 → Workers}/createBoxOutlineGeometry.js +0 -0
  196. /package/Source/{WorkersES6 → Workers}/createCircleGeometry.js +0 -0
  197. /package/Source/{WorkersES6 → Workers}/createCircleOutlineGeometry.js +0 -0
  198. /package/Source/{WorkersES6 → Workers}/createCoplanarPolygonGeometry.js +0 -0
  199. /package/Source/{WorkersES6 → Workers}/createCoplanarPolygonOutlineGeometry.js +0 -0
  200. /package/Source/{WorkersES6 → Workers}/createCorridorGeometry.js +0 -0
  201. /package/Source/{WorkersES6 → Workers}/createCorridorOutlineGeometry.js +0 -0
  202. /package/Source/{WorkersES6 → Workers}/createCylinderGeometry.js +0 -0
  203. /package/Source/{WorkersES6 → Workers}/createCylinderOutlineGeometry.js +0 -0
  204. /package/Source/{WorkersES6 → Workers}/createEllipseGeometry.js +0 -0
  205. /package/Source/{WorkersES6 → Workers}/createEllipseOutlineGeometry.js +0 -0
  206. /package/Source/{WorkersES6 → Workers}/createEllipsoidGeometry.js +0 -0
  207. /package/Source/{WorkersES6 → Workers}/createEllipsoidOutlineGeometry.js +0 -0
  208. /package/Source/{WorkersES6 → Workers}/createFrustumGeometry.js +0 -0
  209. /package/Source/{WorkersES6 → Workers}/createFrustumOutlineGeometry.js +0 -0
  210. /package/Source/{WorkersES6 → Workers}/createGroundPolylineGeometry.js +0 -0
  211. /package/Source/{WorkersES6 → Workers}/createPlaneGeometry.js +0 -0
  212. /package/Source/{WorkersES6 → Workers}/createPlaneOutlineGeometry.js +0 -0
  213. /package/Source/{WorkersES6 → Workers}/createPolygonGeometry.js +0 -0
  214. /package/Source/{WorkersES6 → Workers}/createPolygonOutlineGeometry.js +0 -0
  215. /package/Source/{WorkersES6 → Workers}/createPolylineGeometry.js +0 -0
  216. /package/Source/{WorkersES6 → Workers}/createPolylineVolumeGeometry.js +0 -0
  217. /package/Source/{WorkersES6 → Workers}/createPolylineVolumeOutlineGeometry.js +0 -0
  218. /package/Source/{WorkersES6 → Workers}/createRectangleGeometry.js +0 -0
  219. /package/Source/{WorkersES6 → Workers}/createRectangleOutlineGeometry.js +0 -0
  220. /package/Source/{WorkersES6 → Workers}/createSimplePolylineGeometry.js +0 -0
  221. /package/Source/{WorkersES6 → Workers}/createSphereGeometry.js +0 -0
  222. /package/Source/{WorkersES6 → Workers}/createSphereOutlineGeometry.js +0 -0
  223. /package/Source/{WorkersES6 → Workers}/createVectorTileClampedPolylines.js +0 -0
  224. /package/Source/{WorkersES6 → Workers}/createVectorTileGeometries.js +0 -0
  225. /package/Source/{WorkersES6 → Workers}/createVectorTilePoints.js +0 -0
  226. /package/Source/{WorkersES6 → Workers}/createVectorTilePolygons.js +0 -0
  227. /package/Source/{WorkersES6 → Workers}/createVectorTilePolylines.js +0 -0
  228. /package/Source/{WorkersES6 → Workers}/createVerticesFromGoogleEarthEnterpriseBuffer.js +0 -0
  229. /package/Source/{WorkersES6 → Workers}/createVerticesFromHeightmap.js +0 -0
  230. /package/Source/{WorkersES6 → Workers}/createVerticesFromQuantizedTerrainMesh.js +0 -0
  231. /package/Source/{WorkersES6 → Workers}/createWallGeometry.js +0 -0
  232. /package/Source/{WorkersES6 → Workers}/createWallOutlineGeometry.js +0 -0
  233. /package/Source/{WorkersES6 → Workers}/decodeGoogleEarthEnterprisePacket.js +0 -0
  234. /package/Source/{WorkersES6 → Workers}/upsampleQuantizedTerrainMesh.js +0 -0
@@ -1,554 +1,362 @@
1
- define(['./AxisAlignedBoundingBox-4bfd84f3', './Transforms-e2d4a55a', './Matrix2-e1298525', './Matrix3-41c58dde', './defaultValue-fe22d8c0', './TerrainEncoding-c8e029a2', './Math-0a2ac845', './OrientedBoundingBox-29fb0fcd', './RuntimeError-ef395448', './WebMercatorProjection-13ed1a6e', './createTaskProcessorWorker', './Check-6ede7e26', './combine-d9581036', './AttributeCompression-f9f6c717', './ComponentDatatype-cf1fa08e', './WebGLConstants-0b1ce7ba', './EllipsoidTangentPlane-546c0d5e', './IntersectionTests-85350792', './Plane-4c3d403b'], (function (AxisAlignedBoundingBox, Transforms, Matrix2, Matrix3, defaultValue, TerrainEncoding, Math$1, OrientedBoundingBox, RuntimeError, WebMercatorProjection, createTaskProcessorWorker, Check, combine, AttributeCompression, ComponentDatatype, WebGLConstants, EllipsoidTangentPlane, IntersectionTests, Plane) { 'use strict';
2
-
3
- const sizeOfUint16 = Uint16Array.BYTES_PER_ELEMENT;
4
- const sizeOfInt32 = Int32Array.BYTES_PER_ELEMENT;
5
- const sizeOfUint32 = Uint32Array.BYTES_PER_ELEMENT;
6
- const sizeOfFloat = Float32Array.BYTES_PER_ELEMENT;
7
- const sizeOfDouble = Float64Array.BYTES_PER_ELEMENT;
8
-
9
- function indexOfEpsilon(arr, elem, elemType) {
10
- elemType = defaultValue.defaultValue(elemType, Math$1.CesiumMath);
11
- const count = arr.length;
12
- for (let i = 0; i < count; ++i) {
13
- if (elemType.equalsEpsilon(arr[i], elem, Math$1.CesiumMath.EPSILON12)) {
14
- return i;
15
- }
1
+ /**
2
+ * @license
3
+ * Cesium - https://github.com/CesiumGS/cesium
4
+ * Version 1.109
5
+ *
6
+ * Copyright 2011-2022 Cesium Contributors
7
+ *
8
+ * Licensed under the Apache License, Version 2.0 (the "License");
9
+ * you may not use this file except in compliance with the License.
10
+ * You may obtain a copy of the License at
11
+ *
12
+ * http://www.apache.org/licenses/LICENSE-2.0
13
+ *
14
+ * Unless required by applicable law or agreed to in writing, software
15
+ * distributed under the License is distributed on an "AS IS" BASIS,
16
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
+ * See the License for the specific language governing permissions and
18
+ * limitations under the License.
19
+ *
20
+ * Columbus View (Pat. Pend.)
21
+ *
22
+ * Portions licensed separately.
23
+ * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details.
24
+ */
25
+
26
+ import {
27
+ EllipsoidalOccluder_default,
28
+ TerrainEncoding_default
29
+ } from "./chunk-LGSGX2RH.js";
30
+ import {
31
+ createTaskProcessorWorker_default
32
+ } from "./chunk-U5LKG6LX.js";
33
+ import {
34
+ WebMercatorProjection_default
35
+ } from "./chunk-RDCDRNJ7.js";
36
+ import {
37
+ OrientedBoundingBox_default
38
+ } from "./chunk-YLAFWVOW.js";
39
+ import "./chunk-P7PWX5HR.js";
40
+ import "./chunk-4V6RCTVH.js";
41
+ import {
42
+ AxisAlignedBoundingBox_default
43
+ } from "./chunk-G3MOT7BZ.js";
44
+ import "./chunk-QIS3NB7U.js";
45
+ import "./chunk-PGB3EFR7.js";
46
+ import {
47
+ BoundingSphere_default,
48
+ Transforms_default
49
+ } from "./chunk-5U4UHRZ2.js";
50
+ import "./chunk-FE2XG3SS.js";
51
+ import {
52
+ Cartesian2_default,
53
+ Matrix4_default,
54
+ Rectangle_default
55
+ } from "./chunk-PW5CA4MJ.js";
56
+ import "./chunk-KAFF2QX3.js";
57
+ import {
58
+ Cartesian3_default,
59
+ Cartographic_default,
60
+ Ellipsoid_default
61
+ } from "./chunk-XJCTFTBM.js";
62
+ import {
63
+ Math_default
64
+ } from "./chunk-PWDYKCNC.js";
65
+ import "./chunk-527JG4D7.js";
66
+ import {
67
+ RuntimeError_default
68
+ } from "./chunk-FVDTKX3F.js";
69
+ import {
70
+ defaultValue_default
71
+ } from "./chunk-BT6YIL2N.js";
72
+ import "./chunk-UN7AK64D.js";
73
+ import {
74
+ defined_default
75
+ } from "./chunk-QVJ6IRKV.js";
76
+
77
+ // packages/engine/Source/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js
78
+ var sizeOfUint16 = Uint16Array.BYTES_PER_ELEMENT;
79
+ var sizeOfInt32 = Int32Array.BYTES_PER_ELEMENT;
80
+ var sizeOfUint32 = Uint32Array.BYTES_PER_ELEMENT;
81
+ var sizeOfFloat = Float32Array.BYTES_PER_ELEMENT;
82
+ var sizeOfDouble = Float64Array.BYTES_PER_ELEMENT;
83
+ function indexOfEpsilon(arr, elem, elemType) {
84
+ elemType = defaultValue_default(elemType, Math_default);
85
+ const count = arr.length;
86
+ for (let i = 0; i < count; ++i) {
87
+ if (elemType.equalsEpsilon(arr[i], elem, Math_default.EPSILON12)) {
88
+ return i;
16
89
  }
17
-
18
- return -1;
19
90
  }
20
-
21
- function createVerticesFromGoogleEarthEnterpriseBuffer(
22
- parameters,
23
- transferableObjects
24
- ) {
25
- parameters.ellipsoid = Matrix3.Ellipsoid.clone(parameters.ellipsoid);
26
- parameters.rectangle = Matrix2.Rectangle.clone(parameters.rectangle);
27
-
28
- const statistics = processBuffer(
29
- parameters.buffer,
30
- parameters.relativeToCenter,
31
- parameters.ellipsoid,
32
- parameters.rectangle,
33
- parameters.nativeRectangle,
34
- parameters.exaggeration,
35
- parameters.exaggerationRelativeHeight,
36
- parameters.skirtHeight,
37
- parameters.includeWebMercatorT,
38
- parameters.negativeAltitudeExponentBias,
39
- parameters.negativeElevationThreshold
40
- );
41
- const vertices = statistics.vertices;
42
- transferableObjects.push(vertices.buffer);
43
- const indices = statistics.indices;
44
- transferableObjects.push(indices.buffer);
45
-
46
- return {
47
- vertices: vertices.buffer,
48
- indices: indices.buffer,
49
- numberOfAttributes: statistics.encoding.stride,
50
- minimumHeight: statistics.minimumHeight,
51
- maximumHeight: statistics.maximumHeight,
52
- boundingSphere3D: statistics.boundingSphere3D,
53
- orientedBoundingBox: statistics.orientedBoundingBox,
54
- occludeePointInScaledSpace: statistics.occludeePointInScaledSpace,
55
- encoding: statistics.encoding,
56
- vertexCountWithoutSkirts: statistics.vertexCountWithoutSkirts,
57
- indexCountWithoutSkirts: statistics.indexCountWithoutSkirts,
58
- westIndicesSouthToNorth: statistics.westIndicesSouthToNorth,
59
- southIndicesEastToWest: statistics.southIndicesEastToWest,
60
- eastIndicesNorthToSouth: statistics.eastIndicesNorthToSouth,
61
- northIndicesWestToEast: statistics.northIndicesWestToEast,
62
- };
91
+ return -1;
92
+ }
93
+ function createVerticesFromGoogleEarthEnterpriseBuffer(parameters, transferableObjects) {
94
+ parameters.ellipsoid = Ellipsoid_default.clone(parameters.ellipsoid);
95
+ parameters.rectangle = Rectangle_default.clone(parameters.rectangle);
96
+ const statistics = processBuffer(
97
+ parameters.buffer,
98
+ parameters.relativeToCenter,
99
+ parameters.ellipsoid,
100
+ parameters.rectangle,
101
+ parameters.nativeRectangle,
102
+ parameters.exaggeration,
103
+ parameters.exaggerationRelativeHeight,
104
+ parameters.skirtHeight,
105
+ parameters.includeWebMercatorT,
106
+ parameters.negativeAltitudeExponentBias,
107
+ parameters.negativeElevationThreshold
108
+ );
109
+ const vertices = statistics.vertices;
110
+ transferableObjects.push(vertices.buffer);
111
+ const indices = statistics.indices;
112
+ transferableObjects.push(indices.buffer);
113
+ return {
114
+ vertices: vertices.buffer,
115
+ indices: indices.buffer,
116
+ numberOfAttributes: statistics.encoding.stride,
117
+ minimumHeight: statistics.minimumHeight,
118
+ maximumHeight: statistics.maximumHeight,
119
+ boundingSphere3D: statistics.boundingSphere3D,
120
+ orientedBoundingBox: statistics.orientedBoundingBox,
121
+ occludeePointInScaledSpace: statistics.occludeePointInScaledSpace,
122
+ encoding: statistics.encoding,
123
+ vertexCountWithoutSkirts: statistics.vertexCountWithoutSkirts,
124
+ indexCountWithoutSkirts: statistics.indexCountWithoutSkirts,
125
+ westIndicesSouthToNorth: statistics.westIndicesSouthToNorth,
126
+ southIndicesEastToWest: statistics.southIndicesEastToWest,
127
+ eastIndicesNorthToSouth: statistics.eastIndicesNorthToSouth,
128
+ northIndicesWestToEast: statistics.northIndicesWestToEast
129
+ };
130
+ }
131
+ var scratchCartographic = new Cartographic_default();
132
+ var scratchCartesian = new Cartesian3_default();
133
+ var minimumScratch = new Cartesian3_default();
134
+ var maximumScratch = new Cartesian3_default();
135
+ var matrix4Scratch = new Matrix4_default();
136
+ function processBuffer(buffer, relativeToCenter, ellipsoid, rectangle, nativeRectangle, exaggeration, exaggerationRelativeHeight, skirtHeight, includeWebMercatorT, negativeAltitudeExponentBias, negativeElevationThreshold) {
137
+ let geographicWest;
138
+ let geographicSouth;
139
+ let geographicEast;
140
+ let geographicNorth;
141
+ let rectangleWidth, rectangleHeight;
142
+ if (!defined_default(rectangle)) {
143
+ geographicWest = Math_default.toRadians(nativeRectangle.west);
144
+ geographicSouth = Math_default.toRadians(nativeRectangle.south);
145
+ geographicEast = Math_default.toRadians(nativeRectangle.east);
146
+ geographicNorth = Math_default.toRadians(nativeRectangle.north);
147
+ rectangleWidth = Math_default.toRadians(rectangle.width);
148
+ rectangleHeight = Math_default.toRadians(rectangle.height);
149
+ } else {
150
+ geographicWest = rectangle.west;
151
+ geographicSouth = rectangle.south;
152
+ geographicEast = rectangle.east;
153
+ geographicNorth = rectangle.north;
154
+ rectangleWidth = rectangle.width;
155
+ rectangleHeight = rectangle.height;
63
156
  }
64
-
65
- const scratchCartographic = new Matrix3.Cartographic();
66
- const scratchCartesian = new Matrix3.Cartesian3();
67
- const minimumScratch = new Matrix3.Cartesian3();
68
- const maximumScratch = new Matrix3.Cartesian3();
69
- const matrix4Scratch = new Matrix2.Matrix4();
70
-
71
- function processBuffer(
72
- buffer,
157
+ const quadBorderLatitudes = [geographicSouth, geographicNorth];
158
+ const quadBorderLongitudes = [geographicWest, geographicEast];
159
+ const fromENU = Transforms_default.eastNorthUpToFixedFrame(
73
160
  relativeToCenter,
74
- ellipsoid,
75
- rectangle,
76
- nativeRectangle,
77
- exaggeration,
78
- exaggerationRelativeHeight,
79
- skirtHeight,
80
- includeWebMercatorT,
81
- negativeAltitudeExponentBias,
82
- negativeElevationThreshold
83
- ) {
84
- let geographicWest;
85
- let geographicSouth;
86
- let geographicEast;
87
- let geographicNorth;
88
- let rectangleWidth, rectangleHeight;
89
-
90
- if (!defaultValue.defined(rectangle)) {
91
- geographicWest = Math$1.CesiumMath.toRadians(nativeRectangle.west);
92
- geographicSouth = Math$1.CesiumMath.toRadians(nativeRectangle.south);
93
- geographicEast = Math$1.CesiumMath.toRadians(nativeRectangle.east);
94
- geographicNorth = Math$1.CesiumMath.toRadians(nativeRectangle.north);
95
- rectangleWidth = Math$1.CesiumMath.toRadians(rectangle.width);
96
- rectangleHeight = Math$1.CesiumMath.toRadians(rectangle.height);
97
- } else {
98
- geographicWest = rectangle.west;
99
- geographicSouth = rectangle.south;
100
- geographicEast = rectangle.east;
101
- geographicNorth = rectangle.north;
102
- rectangleWidth = rectangle.width;
103
- rectangleHeight = rectangle.height;
104
- }
105
-
106
- // Keep track of quad borders so we can remove duplicates around the borders
107
- const quadBorderLatitudes = [geographicSouth, geographicNorth];
108
- const quadBorderLongitudes = [geographicWest, geographicEast];
109
-
110
- const fromENU = Transforms.Transforms.eastNorthUpToFixedFrame(
111
- relativeToCenter,
112
- ellipsoid
161
+ ellipsoid
162
+ );
163
+ const toENU = Matrix4_default.inverseTransformation(fromENU, matrix4Scratch);
164
+ let southMercatorY;
165
+ let oneOverMercatorHeight;
166
+ if (includeWebMercatorT) {
167
+ southMercatorY = WebMercatorProjection_default.geodeticLatitudeToMercatorAngle(
168
+ geographicSouth
113
169
  );
114
- const toENU = Matrix2.Matrix4.inverseTransformation(fromENU, matrix4Scratch);
115
-
116
- let southMercatorY;
117
- let oneOverMercatorHeight;
118
- if (includeWebMercatorT) {
119
- southMercatorY = WebMercatorProjection.WebMercatorProjection.geodeticLatitudeToMercatorAngle(
120
- geographicSouth
121
- );
122
- oneOverMercatorHeight =
123
- 1.0 /
124
- (WebMercatorProjection.WebMercatorProjection.geodeticLatitudeToMercatorAngle(geographicNorth) -
125
- southMercatorY);
170
+ oneOverMercatorHeight = 1 / (WebMercatorProjection_default.geodeticLatitudeToMercatorAngle(geographicNorth) - southMercatorY);
171
+ }
172
+ const hasExaggeration = exaggeration !== 1;
173
+ const includeGeodeticSurfaceNormals = hasExaggeration;
174
+ const dv = new DataView(buffer);
175
+ let minHeight = Number.POSITIVE_INFINITY;
176
+ let maxHeight = Number.NEGATIVE_INFINITY;
177
+ const minimum = minimumScratch;
178
+ minimum.x = Number.POSITIVE_INFINITY;
179
+ minimum.y = Number.POSITIVE_INFINITY;
180
+ minimum.z = Number.POSITIVE_INFINITY;
181
+ const maximum = maximumScratch;
182
+ maximum.x = Number.NEGATIVE_INFINITY;
183
+ maximum.y = Number.NEGATIVE_INFINITY;
184
+ maximum.z = Number.NEGATIVE_INFINITY;
185
+ let offset = 0;
186
+ let size = 0;
187
+ let indicesSize = 0;
188
+ let quadSize;
189
+ let quad;
190
+ for (quad = 0; quad < 4; ++quad) {
191
+ let o = offset;
192
+ quadSize = dv.getUint32(o, true);
193
+ o += sizeOfUint32;
194
+ const x = Math_default.toRadians(dv.getFloat64(o, true) * 180);
195
+ o += sizeOfDouble;
196
+ if (indexOfEpsilon(quadBorderLongitudes, x) === -1) {
197
+ quadBorderLongitudes.push(x);
126
198
  }
127
-
128
- const hasExaggeration = exaggeration !== 1.0;
129
- const includeGeodeticSurfaceNormals = hasExaggeration;
130
-
131
- const dv = new DataView(buffer);
132
-
133
- let minHeight = Number.POSITIVE_INFINITY;
134
- let maxHeight = Number.NEGATIVE_INFINITY;
135
-
136
- const minimum = minimumScratch;
137
- minimum.x = Number.POSITIVE_INFINITY;
138
- minimum.y = Number.POSITIVE_INFINITY;
139
- minimum.z = Number.POSITIVE_INFINITY;
140
-
141
- const maximum = maximumScratch;
142
- maximum.x = Number.NEGATIVE_INFINITY;
143
- maximum.y = Number.NEGATIVE_INFINITY;
144
- maximum.z = Number.NEGATIVE_INFINITY;
145
-
146
- // Compute sizes
147
- let offset = 0;
148
- let size = 0;
149
- let indicesSize = 0;
150
- let quadSize;
151
- let quad;
152
- for (quad = 0; quad < 4; ++quad) {
153
- let o = offset;
154
- quadSize = dv.getUint32(o, true);
155
- o += sizeOfUint32;
156
-
157
- const x = Math$1.CesiumMath.toRadians(dv.getFloat64(o, true) * 180.0);
158
- o += sizeOfDouble;
159
- if (indexOfEpsilon(quadBorderLongitudes, x) === -1) {
160
- quadBorderLongitudes.push(x);
161
- }
162
-
163
- const y = Math$1.CesiumMath.toRadians(dv.getFloat64(o, true) * 180.0);
164
- o += sizeOfDouble;
165
- if (indexOfEpsilon(quadBorderLatitudes, y) === -1) {
166
- quadBorderLatitudes.push(y);
167
- }
168
-
169
- o += 2 * sizeOfDouble; // stepX + stepY
170
-
171
- let c = dv.getInt32(o, true); // Read point count
172
- o += sizeOfInt32;
173
- size += c;
174
-
175
- c = dv.getInt32(o, true); // Read index count
176
- indicesSize += c * 3;
177
-
178
- offset += quadSize + sizeOfUint32; // Jump to next quad
199
+ const y = Math_default.toRadians(dv.getFloat64(o, true) * 180);
200
+ o += sizeOfDouble;
201
+ if (indexOfEpsilon(quadBorderLatitudes, y) === -1) {
202
+ quadBorderLatitudes.push(y);
179
203
  }
180
-
181
- // Quad Border points to remove duplicates
182
- const quadBorderPoints = [];
183
- const quadBorderIndices = [];
184
-
185
- // Create arrays
186
- const positions = new Array(size);
187
- const uvs = new Array(size);
188
- const heights = new Array(size);
189
- const webMercatorTs = includeWebMercatorT ? new Array(size) : [];
190
- const geodeticSurfaceNormals = includeGeodeticSurfaceNormals
191
- ? new Array(size)
192
- : [];
193
- const indices = new Array(indicesSize);
194
-
195
- // Points are laid out in rows starting at SW, so storing border points as we
196
- // come across them all points will be adjacent.
197
- const westBorder = [];
198
- const southBorder = [];
199
- const eastBorder = [];
200
- const northBorder = [];
201
-
202
- // Each tile is split into 4 parts
203
- let pointOffset = 0;
204
- let indicesOffset = 0;
205
- offset = 0;
206
- for (quad = 0; quad < 4; ++quad) {
207
- quadSize = dv.getUint32(offset, true);
208
- offset += sizeOfUint32;
209
- const startQuad = offset;
210
-
211
- const originX = Math$1.CesiumMath.toRadians(dv.getFloat64(offset, true) * 180.0);
212
- offset += sizeOfDouble;
213
-
214
- const originY = Math$1.CesiumMath.toRadians(dv.getFloat64(offset, true) * 180.0);
215
- offset += sizeOfDouble;
216
-
217
- const stepX = Math$1.CesiumMath.toRadians(dv.getFloat64(offset, true) * 180.0);
218
- const halfStepX = stepX * 0.5;
219
- offset += sizeOfDouble;
220
-
221
- const stepY = Math$1.CesiumMath.toRadians(dv.getFloat64(offset, true) * 180.0);
222
- const halfStepY = stepY * 0.5;
223
- offset += sizeOfDouble;
224
-
225
- const numPoints = dv.getInt32(offset, true);
226
- offset += sizeOfInt32;
227
-
228
- const numFaces = dv.getInt32(offset, true);
229
- offset += sizeOfInt32;
230
-
231
- //const level = dv.getInt32(offset, true);
232
- offset += sizeOfInt32;
233
-
234
- // Keep track of quad indices to overall tile indices
235
- const indicesMapping = new Array(numPoints);
236
- for (let i = 0; i < numPoints; ++i) {
237
- const longitude = originX + dv.getUint8(offset++) * stepX;
238
- scratchCartographic.longitude = longitude;
239
- const latitude = originY + dv.getUint8(offset++) * stepY;
240
- scratchCartographic.latitude = latitude;
241
-
242
- let height = dv.getFloat32(offset, true);
243
- offset += sizeOfFloat;
244
-
245
- // In order to support old clients, negative altitude values are stored as
246
- // height/-2^32. Old clients see the value as really close to 0 but new clients multiply
247
- // by -2^32 to get the real negative altitude value.
248
- if (height !== 0 && height < negativeElevationThreshold) {
249
- height *= -Math.pow(2, negativeAltitudeExponentBias);
250
- }
251
-
252
- // Height is stored in units of (1/EarthRadius) or (1/6371010.0)
253
- height *= 6371010.0;
254
-
255
- scratchCartographic.height = height;
256
-
257
- // Is it along a quad border - if so check if already exists and use that index
258
- if (
259
- indexOfEpsilon(quadBorderLongitudes, longitude) !== -1 ||
260
- indexOfEpsilon(quadBorderLatitudes, latitude) !== -1
261
- ) {
262
- const index = indexOfEpsilon(
263
- quadBorderPoints,
264
- scratchCartographic,
265
- Matrix3.Cartographic
266
- );
267
- if (index === -1) {
268
- quadBorderPoints.push(Matrix3.Cartographic.clone(scratchCartographic));
269
- quadBorderIndices.push(pointOffset);
270
- } else {
271
- indicesMapping[i] = quadBorderIndices[index];
272
- continue;
273
- }
274
- }
275
- indicesMapping[i] = pointOffset;
276
-
277
- if (Math.abs(longitude - geographicWest) < halfStepX) {
278
- westBorder.push({
279
- index: pointOffset,
280
- cartographic: Matrix3.Cartographic.clone(scratchCartographic),
281
- });
282
- } else if (Math.abs(longitude - geographicEast) < halfStepX) {
283
- eastBorder.push({
284
- index: pointOffset,
285
- cartographic: Matrix3.Cartographic.clone(scratchCartographic),
286
- });
287
- } else if (Math.abs(latitude - geographicSouth) < halfStepY) {
288
- southBorder.push({
289
- index: pointOffset,
290
- cartographic: Matrix3.Cartographic.clone(scratchCartographic),
291
- });
292
- } else if (Math.abs(latitude - geographicNorth) < halfStepY) {
293
- northBorder.push({
294
- index: pointOffset,
295
- cartographic: Matrix3.Cartographic.clone(scratchCartographic),
296
- });
297
- }
298
-
299
- minHeight = Math.min(height, minHeight);
300
- maxHeight = Math.max(height, maxHeight);
301
- heights[pointOffset] = height;
302
-
303
- const pos = ellipsoid.cartographicToCartesian(scratchCartographic);
304
- positions[pointOffset] = pos;
305
-
306
- if (includeWebMercatorT) {
307
- webMercatorTs[pointOffset] =
308
- (WebMercatorProjection.WebMercatorProjection.geodeticLatitudeToMercatorAngle(latitude) -
309
- southMercatorY) *
310
- oneOverMercatorHeight;
311
- }
312
-
313
- if (includeGeodeticSurfaceNormals) {
314
- const normal = ellipsoid.geodeticSurfaceNormal(pos);
315
- geodeticSurfaceNormals[pointOffset] = normal;
204
+ o += 2 * sizeOfDouble;
205
+ let c = dv.getInt32(o, true);
206
+ o += sizeOfInt32;
207
+ size += c;
208
+ c = dv.getInt32(o, true);
209
+ indicesSize += c * 3;
210
+ offset += quadSize + sizeOfUint32;
211
+ }
212
+ const quadBorderPoints = [];
213
+ const quadBorderIndices = [];
214
+ const positions = new Array(size);
215
+ const uvs = new Array(size);
216
+ const heights = new Array(size);
217
+ const webMercatorTs = includeWebMercatorT ? new Array(size) : [];
218
+ const geodeticSurfaceNormals = includeGeodeticSurfaceNormals ? new Array(size) : [];
219
+ const indices = new Array(indicesSize);
220
+ const westBorder = [];
221
+ const southBorder = [];
222
+ const eastBorder = [];
223
+ const northBorder = [];
224
+ let pointOffset = 0;
225
+ let indicesOffset = 0;
226
+ offset = 0;
227
+ for (quad = 0; quad < 4; ++quad) {
228
+ quadSize = dv.getUint32(offset, true);
229
+ offset += sizeOfUint32;
230
+ const startQuad = offset;
231
+ const originX = Math_default.toRadians(dv.getFloat64(offset, true) * 180);
232
+ offset += sizeOfDouble;
233
+ const originY = Math_default.toRadians(dv.getFloat64(offset, true) * 180);
234
+ offset += sizeOfDouble;
235
+ const stepX = Math_default.toRadians(dv.getFloat64(offset, true) * 180);
236
+ const halfStepX = stepX * 0.5;
237
+ offset += sizeOfDouble;
238
+ const stepY = Math_default.toRadians(dv.getFloat64(offset, true) * 180);
239
+ const halfStepY = stepY * 0.5;
240
+ offset += sizeOfDouble;
241
+ const numPoints = dv.getInt32(offset, true);
242
+ offset += sizeOfInt32;
243
+ const numFaces = dv.getInt32(offset, true);
244
+ offset += sizeOfInt32;
245
+ offset += sizeOfInt32;
246
+ const indicesMapping = new Array(numPoints);
247
+ for (let i = 0; i < numPoints; ++i) {
248
+ const longitude = originX + dv.getUint8(offset++) * stepX;
249
+ scratchCartographic.longitude = longitude;
250
+ const latitude = originY + dv.getUint8(offset++) * stepY;
251
+ scratchCartographic.latitude = latitude;
252
+ let height = dv.getFloat32(offset, true);
253
+ offset += sizeOfFloat;
254
+ if (height !== 0 && height < negativeElevationThreshold) {
255
+ height *= -Math.pow(2, negativeAltitudeExponentBias);
256
+ }
257
+ height *= 6371010;
258
+ scratchCartographic.height = height;
259
+ if (indexOfEpsilon(quadBorderLongitudes, longitude) !== -1 || indexOfEpsilon(quadBorderLatitudes, latitude) !== -1) {
260
+ const index = indexOfEpsilon(
261
+ quadBorderPoints,
262
+ scratchCartographic,
263
+ Cartographic_default
264
+ );
265
+ if (index === -1) {
266
+ quadBorderPoints.push(Cartographic_default.clone(scratchCartographic));
267
+ quadBorderIndices.push(pointOffset);
268
+ } else {
269
+ indicesMapping[i] = quadBorderIndices[index];
270
+ continue;
316
271
  }
317
-
318
- Matrix2.Matrix4.multiplyByPoint(toENU, pos, scratchCartesian);
319
-
320
- Matrix3.Cartesian3.minimumByComponent(scratchCartesian, minimum, minimum);
321
- Matrix3.Cartesian3.maximumByComponent(scratchCartesian, maximum, maximum);
322
-
323
- let u = (longitude - geographicWest) / (geographicEast - geographicWest);
324
- u = Math$1.CesiumMath.clamp(u, 0.0, 1.0);
325
- let v =
326
- (latitude - geographicSouth) / (geographicNorth - geographicSouth);
327
- v = Math$1.CesiumMath.clamp(v, 0.0, 1.0);
328
-
329
- uvs[pointOffset] = new Matrix2.Cartesian2(u, v);
330
- ++pointOffset;
331
272
  }
332
-
333
- const facesElementCount = numFaces * 3;
334
- for (let j = 0; j < facesElementCount; ++j, ++indicesOffset) {
335
- indices[indicesOffset] = indicesMapping[dv.getUint16(offset, true)];
336
- offset += sizeOfUint16;
273
+ indicesMapping[i] = pointOffset;
274
+ if (Math.abs(longitude - geographicWest) < halfStepX) {
275
+ westBorder.push({
276
+ index: pointOffset,
277
+ cartographic: Cartographic_default.clone(scratchCartographic)
278
+ });
279
+ } else if (Math.abs(longitude - geographicEast) < halfStepX) {
280
+ eastBorder.push({
281
+ index: pointOffset,
282
+ cartographic: Cartographic_default.clone(scratchCartographic)
283
+ });
284
+ } else if (Math.abs(latitude - geographicSouth) < halfStepY) {
285
+ southBorder.push({
286
+ index: pointOffset,
287
+ cartographic: Cartographic_default.clone(scratchCartographic)
288
+ });
289
+ } else if (Math.abs(latitude - geographicNorth) < halfStepY) {
290
+ northBorder.push({
291
+ index: pointOffset,
292
+ cartographic: Cartographic_default.clone(scratchCartographic)
293
+ });
337
294
  }
338
-
339
- if (quadSize !== offset - startQuad) {
340
- throw new RuntimeError.RuntimeError("Invalid terrain tile.");
295
+ minHeight = Math.min(height, minHeight);
296
+ maxHeight = Math.max(height, maxHeight);
297
+ heights[pointOffset] = height;
298
+ const pos = ellipsoid.cartographicToCartesian(scratchCartographic);
299
+ positions[pointOffset] = pos;
300
+ if (includeWebMercatorT) {
301
+ webMercatorTs[pointOffset] = (WebMercatorProjection_default.geodeticLatitudeToMercatorAngle(latitude) - southMercatorY) * oneOverMercatorHeight;
341
302
  }
303
+ if (includeGeodeticSurfaceNormals) {
304
+ const normal = ellipsoid.geodeticSurfaceNormal(pos);
305
+ geodeticSurfaceNormals[pointOffset] = normal;
306
+ }
307
+ Matrix4_default.multiplyByPoint(toENU, pos, scratchCartesian);
308
+ Cartesian3_default.minimumByComponent(scratchCartesian, minimum, minimum);
309
+ Cartesian3_default.maximumByComponent(scratchCartesian, maximum, maximum);
310
+ let u = (longitude - geographicWest) / (geographicEast - geographicWest);
311
+ u = Math_default.clamp(u, 0, 1);
312
+ let v = (latitude - geographicSouth) / (geographicNorth - geographicSouth);
313
+ v = Math_default.clamp(v, 0, 1);
314
+ uvs[pointOffset] = new Cartesian2_default(u, v);
315
+ ++pointOffset;
342
316
  }
343
-
344
- positions.length = pointOffset;
345
- uvs.length = pointOffset;
346
- heights.length = pointOffset;
347
- if (includeWebMercatorT) {
348
- webMercatorTs.length = pointOffset;
349
- }
350
- if (includeGeodeticSurfaceNormals) {
351
- geodeticSurfaceNormals.length = pointOffset;
352
- }
353
-
354
- const vertexCountWithoutSkirts = pointOffset;
355
- const indexCountWithoutSkirts = indicesOffset;
356
-
357
- // Add skirt points
358
- const skirtOptions = {
359
- hMin: minHeight,
360
- lastBorderPoint: undefined,
361
- skirtHeight: skirtHeight,
362
- toENU: toENU,
363
- ellipsoid: ellipsoid,
364
- minimum: minimum,
365
- maximum: maximum,
366
- };
367
-
368
- // Sort counter clockwise from NW corner
369
- // Corner points are in the east/west arrays
370
- westBorder.sort(function (a, b) {
371
- return b.cartographic.latitude - a.cartographic.latitude;
372
- });
373
- southBorder.sort(function (a, b) {
374
- return a.cartographic.longitude - b.cartographic.longitude;
375
- });
376
- eastBorder.sort(function (a, b) {
377
- return a.cartographic.latitude - b.cartographic.latitude;
378
- });
379
- northBorder.sort(function (a, b) {
380
- return b.cartographic.longitude - a.cartographic.longitude;
381
- });
382
-
383
- const percentage = 0.00001;
384
- addSkirt(
385
- positions,
386
- heights,
387
- uvs,
388
- webMercatorTs,
389
- geodeticSurfaceNormals,
390
- indices,
391
- skirtOptions,
392
- westBorder,
393
- -percentage * rectangleWidth,
394
- true,
395
- -percentage * rectangleHeight
396
- );
397
- addSkirt(
398
- positions,
399
- heights,
400
- uvs,
401
- webMercatorTs,
402
- geodeticSurfaceNormals,
403
- indices,
404
- skirtOptions,
405
- southBorder,
406
- -percentage * rectangleHeight,
407
- false
408
- );
409
- addSkirt(
410
- positions,
411
- heights,
412
- uvs,
413
- webMercatorTs,
414
- geodeticSurfaceNormals,
415
- indices,
416
- skirtOptions,
417
- eastBorder,
418
- percentage * rectangleWidth,
419
- true,
420
- percentage * rectangleHeight
421
- );
422
- addSkirt(
423
- positions,
424
- heights,
425
- uvs,
426
- webMercatorTs,
427
- geodeticSurfaceNormals,
428
- indices,
429
- skirtOptions,
430
- northBorder,
431
- percentage * rectangleHeight,
432
- false
433
- );
434
-
435
- // Since the corner between the north and west sides is in the west array, generate the last
436
- // two triangles between the last north vertex and the first west vertex
437
- if (westBorder.length > 0 && northBorder.length > 0) {
438
- const firstBorderIndex = westBorder[0].index;
439
- const firstSkirtIndex = vertexCountWithoutSkirts;
440
- const lastBorderIndex = northBorder[northBorder.length - 1].index;
441
- const lastSkirtIndex = positions.length - 1;
442
-
443
- indices.push(
444
- lastBorderIndex,
445
- lastSkirtIndex,
446
- firstSkirtIndex,
447
- firstSkirtIndex,
448
- firstBorderIndex,
449
- lastBorderIndex
450
- );
451
- }
452
-
453
- size = positions.length; // Get new size with skirt vertices
454
-
455
- const boundingSphere3D = Transforms.BoundingSphere.fromPoints(positions);
456
- let orientedBoundingBox;
457
- if (defaultValue.defined(rectangle)) {
458
- orientedBoundingBox = OrientedBoundingBox.OrientedBoundingBox.fromRectangle(
459
- rectangle,
460
- minHeight,
461
- maxHeight,
462
- ellipsoid
463
- );
317
+ const facesElementCount = numFaces * 3;
318
+ for (let j = 0; j < facesElementCount; ++j, ++indicesOffset) {
319
+ indices[indicesOffset] = indicesMapping[dv.getUint16(offset, true)];
320
+ offset += sizeOfUint16;
464
321
  }
465
-
466
- const occluder = new TerrainEncoding.EllipsoidalOccluder(ellipsoid);
467
- const occludeePointInScaledSpace = occluder.computeHorizonCullingPointPossiblyUnderEllipsoid(
468
- relativeToCenter,
469
- positions,
470
- minHeight
471
- );
472
-
473
- const aaBox = new AxisAlignedBoundingBox.AxisAlignedBoundingBox(minimum, maximum, relativeToCenter);
474
- const encoding = new TerrainEncoding.TerrainEncoding(
475
- relativeToCenter,
476
- aaBox,
477
- skirtOptions.hMin,
478
- maxHeight,
479
- fromENU,
480
- false,
481
- includeWebMercatorT,
482
- includeGeodeticSurfaceNormals,
483
- exaggeration,
484
- exaggerationRelativeHeight
485
- );
486
- const vertices = new Float32Array(size * encoding.stride);
487
-
488
- let bufferIndex = 0;
489
- for (let k = 0; k < size; ++k) {
490
- bufferIndex = encoding.encode(
491
- vertices,
492
- bufferIndex,
493
- positions[k],
494
- uvs[k],
495
- heights[k],
496
- undefined,
497
- webMercatorTs[k],
498
- geodeticSurfaceNormals[k]
499
- );
322
+ if (quadSize !== offset - startQuad) {
323
+ throw new RuntimeError_default("Invalid terrain tile.");
500
324
  }
501
-
502
- const westIndicesSouthToNorth = westBorder
503
- .map(function (vertex) {
504
- return vertex.index;
505
- })
506
- .reverse();
507
- const southIndicesEastToWest = southBorder
508
- .map(function (vertex) {
509
- return vertex.index;
510
- })
511
- .reverse();
512
- const eastIndicesNorthToSouth = eastBorder
513
- .map(function (vertex) {
514
- return vertex.index;
515
- })
516
- .reverse();
517
- const northIndicesWestToEast = northBorder
518
- .map(function (vertex) {
519
- return vertex.index;
520
- })
521
- .reverse();
522
-
523
- southIndicesEastToWest.unshift(
524
- eastIndicesNorthToSouth[eastIndicesNorthToSouth.length - 1]
525
- );
526
- southIndicesEastToWest.push(westIndicesSouthToNorth[0]);
527
-
528
- northIndicesWestToEast.unshift(
529
- westIndicesSouthToNorth[westIndicesSouthToNorth.length - 1]
530
- );
531
- northIndicesWestToEast.push(eastIndicesNorthToSouth[0]);
532
-
533
- return {
534
- vertices: vertices,
535
- indices: new Uint16Array(indices),
536
- maximumHeight: maxHeight,
537
- minimumHeight: minHeight,
538
- encoding: encoding,
539
- boundingSphere3D: boundingSphere3D,
540
- orientedBoundingBox: orientedBoundingBox,
541
- occludeePointInScaledSpace: occludeePointInScaledSpace,
542
- vertexCountWithoutSkirts: vertexCountWithoutSkirts,
543
- indexCountWithoutSkirts: indexCountWithoutSkirts,
544
- westIndicesSouthToNorth: westIndicesSouthToNorth,
545
- southIndicesEastToWest: southIndicesEastToWest,
546
- eastIndicesNorthToSouth: eastIndicesNorthToSouth,
547
- northIndicesWestToEast: northIndicesWestToEast,
548
- };
549
325
  }
550
-
551
- function addSkirt(
326
+ positions.length = pointOffset;
327
+ uvs.length = pointOffset;
328
+ heights.length = pointOffset;
329
+ if (includeWebMercatorT) {
330
+ webMercatorTs.length = pointOffset;
331
+ }
332
+ if (includeGeodeticSurfaceNormals) {
333
+ geodeticSurfaceNormals.length = pointOffset;
334
+ }
335
+ const vertexCountWithoutSkirts = pointOffset;
336
+ const indexCountWithoutSkirts = indicesOffset;
337
+ const skirtOptions = {
338
+ hMin: minHeight,
339
+ lastBorderPoint: void 0,
340
+ skirtHeight,
341
+ toENU,
342
+ ellipsoid,
343
+ minimum,
344
+ maximum
345
+ };
346
+ westBorder.sort(function(a, b) {
347
+ return b.cartographic.latitude - a.cartographic.latitude;
348
+ });
349
+ southBorder.sort(function(a, b) {
350
+ return a.cartographic.longitude - b.cartographic.longitude;
351
+ });
352
+ eastBorder.sort(function(a, b) {
353
+ return a.cartographic.latitude - b.cartographic.latitude;
354
+ });
355
+ northBorder.sort(function(a, b) {
356
+ return b.cartographic.longitude - a.cartographic.longitude;
357
+ });
358
+ const percentage = 1e-5;
359
+ addSkirt(
552
360
  positions,
553
361
  heights,
554
362
  uvs,
@@ -556,85 +364,205 @@ define(['./AxisAlignedBoundingBox-4bfd84f3', './Transforms-e2d4a55a', './Matrix2
556
364
  geodeticSurfaceNormals,
557
365
  indices,
558
366
  skirtOptions,
559
- borderPoints,
560
- fudgeFactor,
561
- eastOrWest,
562
- cornerFudge
563
- ) {
564
- const count = borderPoints.length;
565
- for (let j = 0; j < count; ++j) {
566
- const borderPoint = borderPoints[j];
567
- const borderCartographic = borderPoint.cartographic;
568
- const borderIndex = borderPoint.index;
569
- const currentIndex = positions.length;
570
-
571
- const longitude = borderCartographic.longitude;
572
- let latitude = borderCartographic.latitude;
573
- latitude = Math$1.CesiumMath.clamp(
574
- latitude,
575
- -Math$1.CesiumMath.PI_OVER_TWO,
576
- Math$1.CesiumMath.PI_OVER_TWO
577
- ); // Don't go over the poles
578
- const height = borderCartographic.height - skirtOptions.skirtHeight;
579
- skirtOptions.hMin = Math.min(skirtOptions.hMin, height);
580
-
581
- Matrix3.Cartographic.fromRadians(longitude, latitude, height, scratchCartographic);
582
-
583
- // Adjust sides to angle out
584
- if (eastOrWest) {
585
- scratchCartographic.longitude += fudgeFactor;
586
- }
587
-
588
- // Adjust top or bottom to angle out
589
- // Since corners are in the east/west arrays angle the first and last points as well
590
- if (!eastOrWest) {
591
- scratchCartographic.latitude += fudgeFactor;
592
- } else if (j === count - 1) {
593
- scratchCartographic.latitude += cornerFudge;
594
- } else if (j === 0) {
595
- scratchCartographic.latitude -= cornerFudge;
596
- }
597
-
598
- const pos = skirtOptions.ellipsoid.cartographicToCartesian(
599
- scratchCartographic
367
+ westBorder,
368
+ -percentage * rectangleWidth,
369
+ true,
370
+ -percentage * rectangleHeight
371
+ );
372
+ addSkirt(
373
+ positions,
374
+ heights,
375
+ uvs,
376
+ webMercatorTs,
377
+ geodeticSurfaceNormals,
378
+ indices,
379
+ skirtOptions,
380
+ southBorder,
381
+ -percentage * rectangleHeight,
382
+ false
383
+ );
384
+ addSkirt(
385
+ positions,
386
+ heights,
387
+ uvs,
388
+ webMercatorTs,
389
+ geodeticSurfaceNormals,
390
+ indices,
391
+ skirtOptions,
392
+ eastBorder,
393
+ percentage * rectangleWidth,
394
+ true,
395
+ percentage * rectangleHeight
396
+ );
397
+ addSkirt(
398
+ positions,
399
+ heights,
400
+ uvs,
401
+ webMercatorTs,
402
+ geodeticSurfaceNormals,
403
+ indices,
404
+ skirtOptions,
405
+ northBorder,
406
+ percentage * rectangleHeight,
407
+ false
408
+ );
409
+ if (westBorder.length > 0 && northBorder.length > 0) {
410
+ const firstBorderIndex = westBorder[0].index;
411
+ const firstSkirtIndex = vertexCountWithoutSkirts;
412
+ const lastBorderIndex = northBorder[northBorder.length - 1].index;
413
+ const lastSkirtIndex = positions.length - 1;
414
+ indices.push(
415
+ lastBorderIndex,
416
+ lastSkirtIndex,
417
+ firstSkirtIndex,
418
+ firstSkirtIndex,
419
+ firstBorderIndex,
420
+ lastBorderIndex
421
+ );
422
+ }
423
+ size = positions.length;
424
+ const boundingSphere3D = BoundingSphere_default.fromPoints(positions);
425
+ let orientedBoundingBox;
426
+ if (defined_default(rectangle)) {
427
+ orientedBoundingBox = OrientedBoundingBox_default.fromRectangle(
428
+ rectangle,
429
+ minHeight,
430
+ maxHeight,
431
+ ellipsoid
432
+ );
433
+ }
434
+ const occluder = new EllipsoidalOccluder_default(ellipsoid);
435
+ const occludeePointInScaledSpace = occluder.computeHorizonCullingPointPossiblyUnderEllipsoid(
436
+ relativeToCenter,
437
+ positions,
438
+ minHeight
439
+ );
440
+ const aaBox = new AxisAlignedBoundingBox_default(minimum, maximum, relativeToCenter);
441
+ const encoding = new TerrainEncoding_default(
442
+ relativeToCenter,
443
+ aaBox,
444
+ skirtOptions.hMin,
445
+ maxHeight,
446
+ fromENU,
447
+ false,
448
+ includeWebMercatorT,
449
+ includeGeodeticSurfaceNormals,
450
+ exaggeration,
451
+ exaggerationRelativeHeight
452
+ );
453
+ const vertices = new Float32Array(size * encoding.stride);
454
+ let bufferIndex = 0;
455
+ for (let k = 0; k < size; ++k) {
456
+ bufferIndex = encoding.encode(
457
+ vertices,
458
+ bufferIndex,
459
+ positions[k],
460
+ uvs[k],
461
+ heights[k],
462
+ void 0,
463
+ webMercatorTs[k],
464
+ geodeticSurfaceNormals[k]
465
+ );
466
+ }
467
+ const westIndicesSouthToNorth = westBorder.map(function(vertex) {
468
+ return vertex.index;
469
+ }).reverse();
470
+ const southIndicesEastToWest = southBorder.map(function(vertex) {
471
+ return vertex.index;
472
+ }).reverse();
473
+ const eastIndicesNorthToSouth = eastBorder.map(function(vertex) {
474
+ return vertex.index;
475
+ }).reverse();
476
+ const northIndicesWestToEast = northBorder.map(function(vertex) {
477
+ return vertex.index;
478
+ }).reverse();
479
+ southIndicesEastToWest.unshift(
480
+ eastIndicesNorthToSouth[eastIndicesNorthToSouth.length - 1]
481
+ );
482
+ southIndicesEastToWest.push(westIndicesSouthToNorth[0]);
483
+ northIndicesWestToEast.unshift(
484
+ westIndicesSouthToNorth[westIndicesSouthToNorth.length - 1]
485
+ );
486
+ northIndicesWestToEast.push(eastIndicesNorthToSouth[0]);
487
+ return {
488
+ vertices,
489
+ indices: new Uint16Array(indices),
490
+ maximumHeight: maxHeight,
491
+ minimumHeight: minHeight,
492
+ encoding,
493
+ boundingSphere3D,
494
+ orientedBoundingBox,
495
+ occludeePointInScaledSpace,
496
+ vertexCountWithoutSkirts,
497
+ indexCountWithoutSkirts,
498
+ westIndicesSouthToNorth,
499
+ southIndicesEastToWest,
500
+ eastIndicesNorthToSouth,
501
+ northIndicesWestToEast
502
+ };
503
+ }
504
+ function addSkirt(positions, heights, uvs, webMercatorTs, geodeticSurfaceNormals, indices, skirtOptions, borderPoints, fudgeFactor, eastOrWest, cornerFudge) {
505
+ const count = borderPoints.length;
506
+ for (let j = 0; j < count; ++j) {
507
+ const borderPoint = borderPoints[j];
508
+ const borderCartographic = borderPoint.cartographic;
509
+ const borderIndex = borderPoint.index;
510
+ const currentIndex = positions.length;
511
+ const longitude = borderCartographic.longitude;
512
+ let latitude = borderCartographic.latitude;
513
+ latitude = Math_default.clamp(
514
+ latitude,
515
+ -Math_default.PI_OVER_TWO,
516
+ Math_default.PI_OVER_TWO
517
+ );
518
+ const height = borderCartographic.height - skirtOptions.skirtHeight;
519
+ skirtOptions.hMin = Math.min(skirtOptions.hMin, height);
520
+ Cartographic_default.fromRadians(longitude, latitude, height, scratchCartographic);
521
+ if (eastOrWest) {
522
+ scratchCartographic.longitude += fudgeFactor;
523
+ }
524
+ if (!eastOrWest) {
525
+ scratchCartographic.latitude += fudgeFactor;
526
+ } else if (j === count - 1) {
527
+ scratchCartographic.latitude += cornerFudge;
528
+ } else if (j === 0) {
529
+ scratchCartographic.latitude -= cornerFudge;
530
+ }
531
+ const pos = skirtOptions.ellipsoid.cartographicToCartesian(
532
+ scratchCartographic
533
+ );
534
+ positions.push(pos);
535
+ heights.push(height);
536
+ uvs.push(Cartesian2_default.clone(uvs[borderIndex]));
537
+ if (webMercatorTs.length > 0) {
538
+ webMercatorTs.push(webMercatorTs[borderIndex]);
539
+ }
540
+ if (geodeticSurfaceNormals.length > 0) {
541
+ geodeticSurfaceNormals.push(geodeticSurfaceNormals[borderIndex]);
542
+ }
543
+ Matrix4_default.multiplyByPoint(skirtOptions.toENU, pos, scratchCartesian);
544
+ const minimum = skirtOptions.minimum;
545
+ const maximum = skirtOptions.maximum;
546
+ Cartesian3_default.minimumByComponent(scratchCartesian, minimum, minimum);
547
+ Cartesian3_default.maximumByComponent(scratchCartesian, maximum, maximum);
548
+ const lastBorderPoint = skirtOptions.lastBorderPoint;
549
+ if (defined_default(lastBorderPoint)) {
550
+ const lastBorderIndex = lastBorderPoint.index;
551
+ indices.push(
552
+ lastBorderIndex,
553
+ currentIndex - 1,
554
+ currentIndex,
555
+ currentIndex,
556
+ borderIndex,
557
+ lastBorderIndex
600
558
  );
601
- positions.push(pos);
602
- heights.push(height);
603
- uvs.push(Matrix2.Cartesian2.clone(uvs[borderIndex])); // Copy UVs from border point
604
- if (webMercatorTs.length > 0) {
605
- webMercatorTs.push(webMercatorTs[borderIndex]);
606
- }
607
- if (geodeticSurfaceNormals.length > 0) {
608
- geodeticSurfaceNormals.push(geodeticSurfaceNormals[borderIndex]);
609
- }
610
-
611
- Matrix2.Matrix4.multiplyByPoint(skirtOptions.toENU, pos, scratchCartesian);
612
-
613
- const minimum = skirtOptions.minimum;
614
- const maximum = skirtOptions.maximum;
615
- Matrix3.Cartesian3.minimumByComponent(scratchCartesian, minimum, minimum);
616
- Matrix3.Cartesian3.maximumByComponent(scratchCartesian, maximum, maximum);
617
-
618
- const lastBorderPoint = skirtOptions.lastBorderPoint;
619
- if (defaultValue.defined(lastBorderPoint)) {
620
- const lastBorderIndex = lastBorderPoint.index;
621
- indices.push(
622
- lastBorderIndex,
623
- currentIndex - 1,
624
- currentIndex,
625
- currentIndex,
626
- borderIndex,
627
- lastBorderIndex
628
- );
629
- }
630
-
631
- skirtOptions.lastBorderPoint = borderPoint;
632
559
  }
560
+ skirtOptions.lastBorderPoint = borderPoint;
633
561
  }
634
- var createVerticesFromGoogleEarthEnterpriseBuffer$1 = createTaskProcessorWorker(
635
- createVerticesFromGoogleEarthEnterpriseBuffer
636
- );
637
-
638
- return createVerticesFromGoogleEarthEnterpriseBuffer$1;
639
-
640
- }));
562
+ }
563
+ var createVerticesFromGoogleEarthEnterpriseBuffer_default = createTaskProcessorWorker_default(
564
+ createVerticesFromGoogleEarthEnterpriseBuffer
565
+ );
566
+ export {
567
+ createVerticesFromGoogleEarthEnterpriseBuffer_default as default
568
+ };