@cesium/engine 25.0.0 → 26.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 (187) hide show
  1. package/Build/Workers/{chunk-GPIGURCG.js → chunk-3VFEWOBI.js} +7 -7
  2. package/Build/Workers/{chunk-BTX2NL3P.js → chunk-424RNO3D.js} +18 -18
  3. package/Build/Workers/{chunk-HSVQATK2.js → chunk-4MGMYHOO.js} +6 -6
  4. package/Build/Workers/{chunk-FIBS5S7R.js → chunk-4S7IE3LB.js} +2 -2
  5. package/Build/Workers/{chunk-A7ZBMVFS.js → chunk-52JDLOEM.js} +14 -14
  6. package/Build/Workers/{chunk-ZCCIIBZT.js → chunk-54I6Y66F.js} +6 -6
  7. package/Build/Workers/{chunk-J647NNZW.js → chunk-6YEE6JDR.js} +6 -6
  8. package/Build/Workers/{chunk-HVMG6AG4.js → chunk-7J2HKPRH.js} +9 -9
  9. package/Build/Workers/{chunk-K6NFIRFB.js → chunk-7WM2PX4V.js} +5 -5
  10. package/Build/Workers/{chunk-3LSD7OOA.js → chunk-ACXQXN46.js} +16 -16
  11. package/Build/Workers/{chunk-CZ23Y3RM.js → chunk-AYKR4VBR.js} +2 -2
  12. package/Build/Workers/{chunk-4MTRQFJP.js → chunk-C6J67V5A.js} +1 -1
  13. package/Build/Workers/{chunk-WTQGE7Q6.js → chunk-C6KNZ7T4.js} +17 -17
  14. package/Build/Workers/{chunk-AWFZHD2B.js → chunk-CFQP6LYM.js} +4 -4
  15. package/Build/Workers/{chunk-ST2UWDUU.js → chunk-CXOYE2WM.js} +5 -5
  16. package/Build/Workers/{chunk-H2A4USJR.js → chunk-CZEYZU4N.js} +10 -10
  17. package/Build/Workers/{chunk-DFEI5MAV.js → chunk-DBOEKL43.js} +7 -7
  18. package/Build/Workers/{chunk-A7A433MD.js → chunk-DDWSZVMY.js} +5 -5
  19. package/Build/Workers/{chunk-J7KQEKPK.js → chunk-DOBXCNC3.js} +13 -13
  20. package/Build/Workers/{chunk-URUCCIPS.js → chunk-E7VQ76KE.js} +6 -6
  21. package/Build/Workers/{chunk-ZAPOS52G.js → chunk-EBSIOBXY.js} +8 -8
  22. package/Build/Workers/{chunk-3VDDRF2E.js → chunk-EF2QYXGA.js} +14 -14
  23. package/Build/Workers/{chunk-WN6P5UDH.js → chunk-EPYXRCDB.js} +12 -12
  24. package/Build/Workers/{chunk-EZARA5FJ.js → chunk-F6QDY6HU.js} +13 -13
  25. package/Build/Workers/{chunk-GL7DNVUS.js → chunk-FRQZECAO.js} +5 -5
  26. package/Build/Workers/{chunk-VQKLRBIK.js → chunk-G7PXZRVF.js} +7 -7
  27. package/Build/Workers/{chunk-4QQXGTCE.js → chunk-INUEEEQA.js} +8 -8
  28. package/Build/Workers/{chunk-ITD2IN7N.js → chunk-IRBKFCEJ.js} +2 -2
  29. package/Build/Workers/{chunk-6SDGQI27.js → chunk-IYOUHCZB.js} +1 -1
  30. package/Build/Workers/{chunk-DYT5NR6P.js → chunk-J6BWOHUF.js} +3 -3
  31. package/Build/Workers/{chunk-4GF4MVPY.js → chunk-KFSTQKNM.js} +7 -7
  32. package/Build/Workers/{chunk-4XXHJI6Y.js → chunk-KKOSKAZB.js} +17 -17
  33. package/Build/Workers/{chunk-WC57YYBN.js → chunk-KSSWJIZW.js} +2 -2
  34. package/Build/Workers/{chunk-5T6QQAJW.js → chunk-M3B5JKSM.js} +1 -1
  35. package/Build/Workers/{chunk-QO2CGXMP.js → chunk-MPZHGZU6.js} +6 -6
  36. package/Build/Workers/{chunk-WUBKZFF6.js → chunk-MYP774IS.js} +9 -9
  37. package/Build/Workers/{chunk-WNN5D4W3.js → chunk-O3EA5HS7.js} +10 -10
  38. package/Build/Workers/{chunk-77RL3MBD.js → chunk-P3CK7MCY.js} +25 -4
  39. package/Build/Workers/{chunk-QXNQQYPV.js → chunk-Q3PY526V.js} +8 -8
  40. package/Build/Workers/{chunk-CKQP3DSS.js → chunk-QN67VG36.js} +6 -6
  41. package/Build/Workers/{chunk-ACFFCHHZ.js → chunk-QRWGUWI6.js} +11 -11
  42. package/Build/Workers/{chunk-LH5SF3XV.js → chunk-S4MCOY6I.js} +5 -5
  43. package/Build/Workers/{chunk-FVLVVOBQ.js → chunk-SMQZZOW6.js} +10 -10
  44. package/Build/Workers/{chunk-TA777BGS.js → chunk-TKKIREQ6.js} +1 -1
  45. package/Build/Workers/{chunk-AEAVLYPS.js → chunk-U3ZA64U7.js} +2 -2
  46. package/Build/Workers/{chunk-7LSFAEWF.js → chunk-UA25D5MX.js} +10 -10
  47. package/Build/Workers/{chunk-J3OFS2RD.js → chunk-UOOIQ3KX.js} +12 -12
  48. package/Build/Workers/{chunk-ND3NTTOF.js → chunk-V7VQKN6N.js} +6 -6
  49. package/Build/Workers/{chunk-I3A6DXYZ.js → chunk-VQYETPWC.js} +4 -4
  50. package/Build/Workers/{chunk-35H3UBIO.js → chunk-VWV2IJRB.js} +11 -11
  51. package/Build/Workers/{chunk-QSDY4NS7.js → chunk-XZMBNNDX.js} +9 -9
  52. package/Build/Workers/{chunk-TAI4HLII.js → chunk-Y57HREW5.js} +4 -4
  53. package/Build/Workers/{chunk-3TKLDHV3.js → chunk-Y5BF6AFU.js} +2 -2
  54. package/Build/Workers/{chunk-3XY3MVPG.js → chunk-YLY7NKAB.js} +4 -4
  55. package/Build/Workers/{chunk-BVAIWR7O.js → chunk-ZK3CF7ZD.js} +12 -12
  56. package/Build/Workers/{chunk-DH26SNAB.js → chunk-ZP7JMQV4.js} +1 -1
  57. package/Build/Workers/{chunk-3RFFPH4M.js → chunk-ZZ46LWL6.js} +1 -1
  58. package/Build/Workers/combineGeometry.js +24 -24
  59. package/Build/Workers/createBoxGeometry.js +18 -18
  60. package/Build/Workers/createBoxOutlineGeometry.js +16 -16
  61. package/Build/Workers/createCircleGeometry.js +26 -26
  62. package/Build/Workers/createCircleOutlineGeometry.js +19 -19
  63. package/Build/Workers/createCoplanarPolygonGeometry.js +33 -33
  64. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +31 -31
  65. package/Build/Workers/createCorridorGeometry.js +29 -29
  66. package/Build/Workers/createCorridorOutlineGeometry.js +28 -28
  67. package/Build/Workers/createCylinderGeometry.js +20 -20
  68. package/Build/Workers/createCylinderOutlineGeometry.js +18 -18
  69. package/Build/Workers/createEllipseGeometry.js +26 -26
  70. package/Build/Workers/createEllipseOutlineGeometry.js +19 -19
  71. package/Build/Workers/createEllipsoidGeometry.js +19 -19
  72. package/Build/Workers/createEllipsoidOutlineGeometry.js +18 -18
  73. package/Build/Workers/createFrustumGeometry.js +18 -18
  74. package/Build/Workers/createFrustumOutlineGeometry.js +18 -18
  75. package/Build/Workers/createGeometry.js +24 -24
  76. package/Build/Workers/createGroundPolylineGeometry.js +22 -22
  77. package/Build/Workers/createPlaneGeometry.js +16 -16
  78. package/Build/Workers/createPlaneOutlineGeometry.js +15 -15
  79. package/Build/Workers/createPolygonGeometry.js +32 -32
  80. package/Build/Workers/createPolygonOutlineGeometry.js +30 -30
  81. package/Build/Workers/createPolylineGeometry.js +25 -25
  82. package/Build/Workers/createPolylineVolumeGeometry.js +31 -31
  83. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +27 -27
  84. package/Build/Workers/createRectangleGeometry.js +27 -27
  85. package/Build/Workers/createRectangleOutlineGeometry.js +20 -20
  86. package/Build/Workers/createSimplePolylineGeometry.js +23 -23
  87. package/Build/Workers/createSphereGeometry.js +19 -19
  88. package/Build/Workers/createSphereOutlineGeometry.js +18 -18
  89. package/Build/Workers/createTaskProcessorWorker.js +3 -3
  90. package/Build/Workers/createVectorTileClampedPolylines.js +14 -14
  91. package/Build/Workers/createVectorTileGeometries.js +24 -24
  92. package/Build/Workers/createVectorTilePoints.js +13 -13
  93. package/Build/Workers/createVectorTilePolygons.js +22 -22
  94. package/Build/Workers/createVectorTilePolylines.js +14 -14
  95. package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +25 -25
  96. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +22 -22
  97. package/Build/Workers/createVerticesFromHeightmap.js +22 -22
  98. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +20 -20
  99. package/Build/Workers/createWallGeometry.js +24 -24
  100. package/Build/Workers/createWallOutlineGeometry.js +23 -23
  101. package/Build/Workers/decodeDraco.js +10 -10
  102. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
  103. package/Build/Workers/decodeI3S.js +10 -10
  104. package/Build/Workers/gaussianSplatSorter.js +4 -4
  105. package/Build/Workers/gaussianSplatTextureGenerator.js +4 -4
  106. package/Build/Workers/incrementallyBuildTerrainPicker.js +10 -10
  107. package/Build/Workers/transcodeKTX2.js +6 -6
  108. package/Build/Workers/transferTypedArrayTest.js +1 -1
  109. package/Build/Workers/upsampleQuantizedTerrainMesh.js +22 -22
  110. package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +25 -25
  111. package/Source/Core/Cartesian2.js +1 -1
  112. package/Source/Core/Cartesian3.js +1 -1
  113. package/Source/Core/Cartesian4.js +1 -1
  114. package/Source/Core/ComponentDatatype.js +35 -0
  115. package/Source/Core/Ion.js +1 -1
  116. package/Source/Core/MapProjection.js +1 -0
  117. package/Source/Core/Matrix2.js +1 -1
  118. package/Source/Core/Matrix3.js +1 -1
  119. package/Source/Core/Matrix4.js +1 -1
  120. package/Source/Core/Resource.js +1 -1
  121. package/Source/Core/ScreenSpaceEventHandler.js +51 -41
  122. package/Source/Core/createColorRamp.js +37 -0
  123. package/Source/Core/globalTypes.js +25 -0
  124. package/Source/Renderer/Pass.js +3 -2
  125. package/Source/Renderer/createUniform.js +346 -239
  126. package/Source/Renderer/createUniformArray.js +494 -381
  127. package/Source/Scene/ArcGisMapService.js +1 -1
  128. package/Source/Scene/BufferPoint.js +1 -0
  129. package/Source/Scene/BufferPointCollection.js +14 -1
  130. package/Source/Scene/BufferPolygon.js +3 -2
  131. package/Source/Scene/BufferPolygonCollection.js +10 -0
  132. package/Source/Scene/BufferPolyline.js +1 -0
  133. package/Source/Scene/BufferPolylineCollection.js +2 -0
  134. package/Source/Scene/BufferPrimitiveCollection.js +79 -28
  135. package/Source/Scene/CameraEventAggregator.js +30 -18
  136. package/Source/Scene/Cesium3DTile.js +54 -1
  137. package/Source/Scene/Cesium3DTileContent.js +195 -254
  138. package/Source/Scene/Cesium3DTileContentFactory.js +10 -2
  139. package/Source/Scene/Cesium3DTileset.js +45 -5
  140. package/Source/Scene/Composite3DTileContent.js +254 -292
  141. package/Source/Scene/EdgeDisplayMode.js +50 -0
  142. package/Source/Scene/Empty3DTileContent.js +100 -132
  143. package/Source/Scene/GaussianSplat3DTileContent.js +436 -478
  144. package/Source/Scene/GeoJsonPrimitive.js +874 -0
  145. package/Source/Scene/Geometry3DTileContent.js +151 -185
  146. package/Source/Scene/GltfLoader.js +109 -0
  147. package/Source/Scene/Implicit3DTileContent.js +179 -214
  148. package/Source/Scene/MVTDataProvider.js +147 -0
  149. package/Source/Scene/Model/EdgeVisibilityPipelineStage.js +79 -311
  150. package/Source/Scene/Model/Model.js +34 -0
  151. package/Source/Scene/Model/Model3DTileContent.js +424 -458
  152. package/Source/Scene/Model/ModelDrawCommand.js +31 -3
  153. package/Source/Scene/Model/ModelUtility.js +4 -0
  154. package/Source/Scene/Model/createVectorTileBuffersFromModelComponents.js +466 -150
  155. package/Source/Scene/ModelComponents.js +39 -1
  156. package/Source/Scene/Multiple3DTileContent.js +291 -334
  157. package/Source/Scene/Scene.js +26 -0
  158. package/Source/Scene/Tileset3DTileContent.js +113 -146
  159. package/Source/Scene/UrlTemplate3DTilesDataProvider.js +499 -0
  160. package/Source/Scene/Vector3DTileContent.js +205 -234
  161. package/Source/Scene/VectorGltf3DTileContent.js +85 -36
  162. package/Source/Scene/VoxelPrimitive.js +159 -175
  163. package/Source/Scene/VoxelProvider.js +64 -91
  164. package/Source/Scene/buildVectorGltfFromMVT.js +1059 -0
  165. package/Source/Scene/buildVoxelCustomShader.js +199 -0
  166. package/Source/Scene/decodeMVT.js +634 -0
  167. package/Source/Scene/renderBufferPointCollection.js +110 -64
  168. package/Source/Scene/renderBufferPolygonCollection.js +102 -55
  169. package/Source/Scene/renderBufferPolylineCollection.js +365 -166
  170. package/Source/Shaders/BufferPointMaterialFS.glsl +1 -0
  171. package/Source/Shaders/BufferPointMaterialFS.js +1 -0
  172. package/Source/Shaders/BufferPointMaterialVS.glsl +19 -9
  173. package/Source/Shaders/BufferPointMaterialVS.js +20 -10
  174. package/Source/Shaders/BufferPolygonMaterialVS.glsl +13 -4
  175. package/Source/Shaders/BufferPolygonMaterialVS.js +14 -5
  176. package/Source/Shaders/BufferPolylineMaterialVS.glsl +16 -2
  177. package/Source/Shaders/BufferPolylineMaterialVS.js +17 -3
  178. package/Source/Shaders/Builtin/Constants/passCesium3DTileEdgesDirect.glsl +9 -0
  179. package/Source/Shaders/Builtin/Constants/passCesium3DTileEdgesDirect.js +11 -0
  180. package/Source/Shaders/Builtin/Constants/passOverlay.glsl +1 -1
  181. package/Source/Shaders/Builtin/Constants/passOverlay.js +1 -1
  182. package/Source/Shaders/Builtin/CzmBuiltins.js +2 -0
  183. package/Source/Shaders/Model/EdgeVisibilityStageVS.glsl +0 -1
  184. package/Source/Shaders/Model/EdgeVisibilityStageVS.js +0 -1
  185. package/index.d.ts +253 -35
  186. package/index.js +71 -62
  187. package/package.json +2 -2
@@ -12,392 +12,354 @@ import RuntimeError from "../Core/RuntimeError.js";
12
12
  * Implements the {@link Cesium3DTileContent} interface.
13
13
  * </p>
14
14
  *
15
- * @alias Composite3DTileContent
16
- * @constructor
17
- *
15
+ * @implements Cesium3DTileContent
18
16
  * @private
19
17
  */
20
- function Composite3DTileContent(tileset, tile, resource, contents) {
21
- this._tileset = tileset;
22
- this._tile = tile;
23
- this._resource = resource;
18
+ class Composite3DTileContent {
19
+ constructor(tileset, tile, resource, contents) {
20
+ this._tileset = tileset;
21
+ this._tile = tile;
22
+ this._resource = resource;
23
+
24
+ if (!defined(contents)) {
25
+ contents = [];
26
+ }
27
+ this._contents = contents;
24
28
 
25
- if (!defined(contents)) {
26
- contents = [];
29
+ this._metadata = undefined;
30
+ this._group = undefined;
31
+ this._ready = false;
27
32
  }
28
- this._contents = contents;
29
-
30
- this._metadata = undefined;
31
- this._group = undefined;
32
- this._ready = false;
33
- }
34
33
 
35
- Object.defineProperties(Composite3DTileContent.prototype, {
36
- featurePropertiesDirty: {
37
- get: function () {
38
- const contents = this._contents;
39
- const length = contents.length;
40
- for (let i = 0; i < length; ++i) {
41
- if (contents[i].featurePropertiesDirty) {
42
- return true;
43
- }
34
+ get featurePropertiesDirty() {
35
+ const contents = this._contents;
36
+ const length = contents.length;
37
+ for (let i = 0; i < length; ++i) {
38
+ if (contents[i].featurePropertiesDirty) {
39
+ return true;
44
40
  }
41
+ }
45
42
 
46
- return false;
47
- },
48
- set: function (value) {
49
- const contents = this._contents;
50
- const length = contents.length;
51
- for (let i = 0; i < length; ++i) {
52
- contents[i].featurePropertiesDirty = value;
53
- }
54
- },
55
- },
43
+ return false;
44
+ }
45
+
46
+ set featurePropertiesDirty(value) {
47
+ const contents = this._contents;
48
+ const length = contents.length;
49
+ for (let i = 0; i < length; ++i) {
50
+ contents[i].featurePropertiesDirty = value;
51
+ }
52
+ }
56
53
 
57
54
  /**
58
55
  * Part of the {@link Cesium3DTileContent} interface. <code>Composite3DTileContent</code>
59
56
  * always returns <code>0</code>. Instead call <code>featuresLength</code> for a tile in the composite.
60
- * @memberof Composite3DTileContent.prototype
61
57
  */
62
- featuresLength: {
63
- get: function () {
64
- return 0;
65
- },
66
- },
58
+ get featuresLength() {
59
+ return 0;
60
+ }
67
61
 
68
62
  /**
69
63
  * Part of the {@link Cesium3DTileContent} interface. <code>Composite3DTileContent</code>
70
64
  * always returns <code>0</code>. Instead call <code>pointsLength</code> for a tile in the composite.
71
- * @memberof Composite3DTileContent.prototype
72
65
  */
73
- pointsLength: {
74
- get: function () {
75
- return 0;
76
- },
77
- },
66
+ get pointsLength() {
67
+ return 0;
68
+ }
78
69
 
79
70
  /**
80
71
  * Part of the {@link Cesium3DTileContent} interface. <code>Composite3DTileContent</code>
81
72
  * always returns <code>0</code>. Instead call <code>trianglesLength</code> for a tile in the composite.
82
- * @memberof Composite3DTileContent.prototype
83
73
  */
84
- trianglesLength: {
85
- get: function () {
86
- return 0;
87
- },
88
- },
74
+ get trianglesLength() {
75
+ return 0;
76
+ }
89
77
 
90
78
  /**
91
79
  * Part of the {@link Cesium3DTileContent} interface. <code>Composite3DTileContent</code>
92
80
  * always returns <code>0</code>. Instead call <code>geometryByteLength</code> for a tile in the composite.
93
- * @memberof Composite3DTileContent.prototype
94
81
  */
95
- geometryByteLength: {
96
- get: function () {
97
- return 0;
98
- },
99
- },
82
+ get geometryByteLength() {
83
+ return 0;
84
+ }
100
85
 
101
86
  /**
102
87
  * Part of the {@link Cesium3DTileContent} interface. <code>Composite3DTileContent</code>
103
88
  * always returns <code>0</code>. Instead call <code>texturesByteLength</code> for a tile in the composite.
104
- * @memberof Composite3DTileContent.prototype
105
89
  */
106
- texturesByteLength: {
107
- get: function () {
108
- return 0;
109
- },
110
- },
90
+ get texturesByteLength() {
91
+ return 0;
92
+ }
111
93
 
112
94
  /**
113
95
  * Part of the {@link Cesium3DTileContent} interface. <code>Composite3DTileContent</code>
114
96
  * always returns <code>0</code>. Instead call <code>batchTableByteLength</code> for a tile in the composite.
115
- * @memberof Composite3DTileContent.prototype
116
97
  */
117
- batchTableByteLength: {
118
- get: function () {
119
- return 0;
120
- },
121
- },
122
-
123
- innerContents: {
124
- get: function () {
125
- return this._contents;
126
- },
127
- },
98
+ get batchTableByteLength() {
99
+ return 0;
100
+ }
101
+
102
+ get innerContents() {
103
+ return this._contents;
104
+ }
128
105
 
129
106
  /**
130
107
  * Returns true when the tile's content is ready to render; otherwise false
131
108
  *
132
- * @memberof Composite3DTileContent.prototype
133
109
  *
134
110
  * @type {boolean}
135
111
  * @readonly
136
112
  * @private
137
113
  */
138
- ready: {
139
- get: function () {
140
- return this._ready;
141
- },
142
- },
143
-
144
- tileset: {
145
- get: function () {
146
- return this._tileset;
147
- },
148
- },
149
-
150
- tile: {
151
- get: function () {
152
- return this._tile;
153
- },
154
- },
155
-
156
- url: {
157
- get: function () {
158
- return this._resource.getUrlComponent(true);
159
- },
160
- },
114
+ get ready() {
115
+ return this._ready;
116
+ }
117
+
118
+ get tileset() {
119
+ return this._tileset;
120
+ }
121
+
122
+ get tile() {
123
+ return this._tile;
124
+ }
125
+
126
+ get url() {
127
+ return this._resource.getUrlComponent(true);
128
+ }
161
129
 
162
130
  /**
163
131
  * Part of the {@link Cesium3DTileContent} interface. <code>Composite3DTileContent</code>
164
132
  * both stores the content metadata and propagates the content metadata to all of its children.
165
- * @memberof Composite3DTileContent.prototype
166
133
  * @private
167
134
  * @experimental This feature is using part of the 3D Tiles spec that is not final and is subject to change without Cesium's standard deprecation policy.
168
135
  */
169
- metadata: {
170
- get: function () {
171
- return this._metadata;
172
- },
173
- set: function (value) {
174
- this._metadata = value;
175
- const contents = this._contents;
176
- const length = contents.length;
177
- for (let i = 0; i < length; ++i) {
178
- contents[i].metadata = value;
179
- }
180
- },
181
- },
136
+ get metadata() {
137
+ return this._metadata;
138
+ }
139
+
140
+ set metadata(value) {
141
+ this._metadata = value;
142
+ const contents = this._contents;
143
+ const length = contents.length;
144
+ for (let i = 0; i < length; ++i) {
145
+ contents[i].metadata = value;
146
+ }
147
+ }
182
148
 
183
149
  /**
184
150
  * Part of the {@link Cesium3DTileContent} interface. <code>Composite3DTileContent</code>
185
151
  * always returns <code>undefined</code>. Instead call <code>batchTable</code> for a tile in the composite.
186
- * @memberof Composite3DTileContent.prototype
187
152
  */
188
- batchTable: {
189
- get: function () {
190
- return undefined;
191
- },
192
- },
153
+ get batchTable() {
154
+ return undefined;
155
+ }
193
156
 
194
157
  /**
195
158
  * Part of the {@link Cesium3DTileContent} interface. <code>Composite3DTileContent</code>
196
159
  * both stores the group metadata and propagates the group metadata to all of its children.
197
- * @memberof Composite3DTileContent.prototype
198
160
  * @private
199
161
  * @experimental This feature is using part of the 3D Tiles spec that is not final and is subject to change without Cesium's standard deprecation policy.
200
162
  */
201
- group: {
202
- get: function () {
203
- return this._group;
204
- },
205
- set: function (value) {
206
- this._group = value;
207
- const contents = this._contents;
208
- const length = contents.length;
209
- for (let i = 0; i < length; ++i) {
210
- contents[i].group = value;
211
- }
212
- },
213
- },
214
- });
215
-
216
- const sizeOfUint32 = Uint32Array.BYTES_PER_ELEMENT;
217
-
218
- Composite3DTileContent.fromTileType = async function (
219
- tileset,
220
- tile,
221
- resource,
222
- arrayBuffer,
223
- byteOffset,
224
- factory,
225
- ) {
226
- byteOffset = byteOffset ?? 0;
227
-
228
- const uint8Array = new Uint8Array(arrayBuffer);
229
- const view = new DataView(arrayBuffer);
230
- byteOffset += sizeOfUint32; // Skip magic
231
-
232
- const version = view.getUint32(byteOffset, true);
233
- if (version !== 1) {
234
- throw new RuntimeError(
235
- `Only Composite Tile version 1 is supported. Version ${version} is not.`,
236
- );
163
+ get group() {
164
+ return this._group;
237
165
  }
238
- byteOffset += sizeOfUint32;
239
-
240
- // Skip byteLength
241
- byteOffset += sizeOfUint32;
242
-
243
- const tilesLength = view.getUint32(byteOffset, true);
244
- byteOffset += sizeOfUint32;
245
-
246
- // For caching purposes, models within the composite tile must be
247
- // distinguished. To do this, add a query parameter ?compositeIndex=i.
248
- // Since composite tiles may contain other composite tiles, check for an
249
- // existing prefix and separate them with underscores. e.g.
250
- // ?compositeIndex=0_1_1
251
- let prefix = resource.queryParameters.compositeIndex;
252
- if (defined(prefix)) {
253
- // We'll be adding another value at the end, so add an underscore.
254
- prefix = `${prefix}_`;
255
- } else {
256
- // no prefix
257
- prefix = "";
166
+
167
+ set group(value) {
168
+ this._group = value;
169
+ const contents = this._contents;
170
+ const length = contents.length;
171
+ for (let i = 0; i < length; ++i) {
172
+ contents[i].group = value;
173
+ }
258
174
  }
259
175
 
260
- const promises = [];
261
- promises.length = tilesLength;
262
- for (let i = 0; i < tilesLength; ++i) {
263
- const tileType = getMagic(uint8Array, byteOffset);
176
+ static async fromTileType(
177
+ tileset,
178
+ tile,
179
+ resource,
180
+ arrayBuffer,
181
+ byteOffset,
182
+ factory,
183
+ ) {
184
+ byteOffset = byteOffset ?? 0;
185
+
186
+ const uint8Array = new Uint8Array(arrayBuffer);
187
+ const view = new DataView(arrayBuffer);
188
+ byteOffset += sizeOfUint32; // Skip magic
189
+
190
+ const version = view.getUint32(byteOffset, true);
191
+ if (version !== 1) {
192
+ throw new RuntimeError(
193
+ `Only Composite Tile version 1 is supported. Version ${version} is not.`,
194
+ );
195
+ }
196
+ byteOffset += sizeOfUint32;
197
+
198
+ // Skip byteLength
199
+ byteOffset += sizeOfUint32;
200
+
201
+ const tilesLength = view.getUint32(byteOffset, true);
202
+ byteOffset += sizeOfUint32;
203
+
204
+ // For caching purposes, models within the composite tile must be
205
+ // distinguished. To do this, add a query parameter ?compositeIndex=i.
206
+ // Since composite tiles may contain other composite tiles, check for an
207
+ // existing prefix and separate them with underscores. e.g.
208
+ // ?compositeIndex=0_1_1
209
+ let prefix = resource.queryParameters.compositeIndex;
210
+ if (defined(prefix)) {
211
+ // We'll be adding another value at the end, so add an underscore.
212
+ prefix = `${prefix}_`;
213
+ } else {
214
+ // no prefix
215
+ prefix = "";
216
+ }
264
217
 
265
- // Tile byte length is stored after magic and version
266
- const tileByteLength = view.getUint32(byteOffset + sizeOfUint32 * 2, true);
218
+ const promises = [];
219
+ promises.length = tilesLength;
220
+ for (let i = 0; i < tilesLength; ++i) {
221
+ const tileType = getMagic(uint8Array, byteOffset);
267
222
 
268
- const contentFactory = factory[tileType];
223
+ // Tile byte length is stored after magic and version
224
+ const tileByteLength = view.getUint32(
225
+ byteOffset + sizeOfUint32 * 2,
226
+ true,
227
+ );
269
228
 
270
- // Label which content within the composite this is
271
- const compositeIndex = `${prefix}${i}`;
272
- const childResource = resource.getDerivedResource({
273
- queryParameters: {
274
- compositeIndex: compositeIndex,
275
- },
276
- });
229
+ const contentFactory = factory[tileType];
230
+
231
+ // Label which content within the composite this is
232
+ const compositeIndex = `${prefix}${i}`;
233
+ const childResource = resource.getDerivedResource({
234
+ queryParameters: {
235
+ compositeIndex: compositeIndex,
236
+ },
237
+ });
238
+
239
+ if (defined(contentFactory)) {
240
+ promises[i] = Promise.resolve(
241
+ contentFactory(tileset, tile, childResource, arrayBuffer, byteOffset),
242
+ );
243
+ } else {
244
+ throw new RuntimeError(
245
+ `Unknown tile content type, ${tileType}, inside Composite tile`,
246
+ );
247
+ }
277
248
 
278
- if (defined(contentFactory)) {
279
- promises[i] = Promise.resolve(
280
- contentFactory(tileset, tile, childResource, arrayBuffer, byteOffset),
281
- );
282
- } else {
283
- throw new RuntimeError(
284
- `Unknown tile content type, ${tileType}, inside Composite tile`,
285
- );
249
+ byteOffset += tileByteLength;
286
250
  }
287
251
 
288
- byteOffset += tileByteLength;
252
+ const innerContents = await Promise.all(promises);
253
+ const content = new Composite3DTileContent(
254
+ tileset,
255
+ tile,
256
+ resource,
257
+ innerContents,
258
+ );
259
+ return content;
289
260
  }
290
261
 
291
- const innerContents = await Promise.all(promises);
292
- const content = new Composite3DTileContent(
293
- tileset,
294
- tile,
295
- resource,
296
- innerContents,
297
- );
298
- return content;
299
- };
300
-
301
- /**
302
- * Part of the {@link Cesium3DTileContent} interface. <code>Composite3DTileContent</code>
303
- * always returns <code>false</code>. Instead call <code>hasProperty</code> for a tile in the composite.
304
- */
305
- Composite3DTileContent.prototype.hasProperty = function (batchId, name) {
306
- return false;
307
- };
308
-
309
- /**
310
- * Part of the {@link Cesium3DTileContent} interface. <code>Composite3DTileContent</code>
311
- * always returns <code>undefined</code>. Instead call <code>getFeature</code> for a tile in the composite.
312
- */
313
- Composite3DTileContent.prototype.getFeature = function (batchId) {
314
- return undefined;
315
- };
316
-
317
- Composite3DTileContent.prototype.applyDebugSettings = function (
318
- enabled,
319
- color,
320
- ) {
321
- const contents = this._contents;
322
- const length = contents.length;
323
- for (let i = 0; i < length; ++i) {
324
- contents[i].applyDebugSettings(enabled, color);
262
+ /**
263
+ * Part of the {@link Cesium3DTileContent} interface. <code>Composite3DTileContent</code>
264
+ * always returns <code>false</code>. Instead call <code>hasProperty</code> for a tile in the composite.
265
+ */
266
+ hasProperty(batchId, name) {
267
+ return false;
325
268
  }
326
- };
327
269
 
328
- Composite3DTileContent.prototype.applyStyle = function (style) {
329
- const contents = this._contents;
330
- const length = contents.length;
331
- for (let i = 0; i < length; ++i) {
332
- contents[i].applyStyle(style);
270
+ /**
271
+ * Part of the {@link Cesium3DTileContent} interface. <code>Composite3DTileContent</code>
272
+ * always returns <code>undefined</code>. Instead call <code>getFeature</code> for a tile in the composite.
273
+ */
274
+ getFeature(batchId) {
275
+ return undefined;
333
276
  }
334
- };
335
-
336
- Composite3DTileContent.prototype.update = function (tileset, frameState) {
337
- const contents = this._contents;
338
- const length = contents.length;
339
- let ready = true;
340
- for (let i = 0; i < length; ++i) {
341
- contents[i].update(tileset, frameState);
342
- ready = ready && contents[i].ready;
277
+
278
+ applyDebugSettings(enabled, color) {
279
+ const contents = this._contents;
280
+ const length = contents.length;
281
+ for (let i = 0; i < length; ++i) {
282
+ contents[i].applyDebugSettings(enabled, color);
283
+ }
343
284
  }
344
285
 
345
- if (!this._ready && ready) {
346
- this._ready = true;
286
+ applyStyle(style) {
287
+ const contents = this._contents;
288
+ const length = contents.length;
289
+ for (let i = 0; i < length; ++i) {
290
+ contents[i].applyStyle(style);
291
+ }
347
292
  }
348
- };
349
293
 
350
- /**
351
- * Find an intersection between a ray and the tile content surface that was rendered. The ray must be given in world coordinates.
352
- *
353
- * @param {Ray} ray The ray to test for intersection.
354
- * @param {FrameState} frameState The frame state.
355
- * @param {Cartesian3|undefined} [result] The intersection or <code>undefined</code> if none was found.
356
- * @returns {Cartesian3|undefined} The intersection or <code>undefined</code> if none was found.
357
- *
358
- * @private
359
- */
360
- Composite3DTileContent.prototype.pick = function (ray, frameState, result) {
361
- if (!this._ready) {
362
- return undefined;
294
+ update(tileset, frameState) {
295
+ const contents = this._contents;
296
+ const length = contents.length;
297
+ let ready = true;
298
+ for (let i = 0; i < length; ++i) {
299
+ contents[i].update(tileset, frameState);
300
+ ready = ready && contents[i].ready;
301
+ }
302
+
303
+ if (!this._ready && ready) {
304
+ this._ready = true;
305
+ }
363
306
  }
364
307
 
365
- let intersection;
366
- let minDistance = Number.POSITIVE_INFINITY;
367
- const contents = this._contents;
368
- const length = contents.length;
308
+ /**
309
+ * Find an intersection between a ray and the tile content surface that was rendered. The ray must be given in world coordinates.
310
+ *
311
+ * @param {Ray} ray The ray to test for intersection.
312
+ * @param {FrameState} frameState The frame state.
313
+ * @param {Cartesian3|undefined} [result] The intersection or <code>undefined</code> if none was found.
314
+ * @returns {Cartesian3|undefined} The intersection or <code>undefined</code> if none was found.
315
+ *
316
+ * @private
317
+ */
318
+ pick(ray, frameState, result) {
319
+ if (!this._ready) {
320
+ return undefined;
321
+ }
369
322
 
370
- for (let i = 0; i < length; ++i) {
371
- const candidate = contents[i].pick(ray, frameState, result);
323
+ let intersection;
324
+ let minDistance = Number.POSITIVE_INFINITY;
325
+ const contents = this._contents;
326
+ const length = contents.length;
372
327
 
373
- if (!defined(candidate)) {
374
- continue;
328
+ for (let i = 0; i < length; ++i) {
329
+ const candidate = contents[i].pick(ray, frameState, result);
330
+
331
+ if (!defined(candidate)) {
332
+ continue;
333
+ }
334
+
335
+ const distance = Cartesian3.distance(ray.origin, candidate);
336
+ if (distance < minDistance) {
337
+ intersection = candidate;
338
+ minDistance = distance;
339
+ }
375
340
  }
376
341
 
377
- const distance = Cartesian3.distance(ray.origin, candidate);
378
- if (distance < minDistance) {
379
- intersection = candidate;
380
- minDistance = distance;
342
+ if (!defined(intersection)) {
343
+ return undefined;
381
344
  }
345
+
346
+ return result;
382
347
  }
383
348
 
384
- if (!defined(intersection)) {
385
- return undefined;
349
+ isDestroyed() {
350
+ return false;
386
351
  }
387
352
 
388
- return result;
389
- };
353
+ destroy() {
354
+ const contents = this._contents;
355
+ const length = contents.length;
356
+ for (let i = 0; i < length; ++i) {
357
+ contents[i].destroy();
358
+ }
359
+ return destroyObject(this);
360
+ }
361
+ }
390
362
 
391
- Composite3DTileContent.prototype.isDestroyed = function () {
392
- return false;
393
- };
363
+ const sizeOfUint32 = Uint32Array.BYTES_PER_ELEMENT;
394
364
 
395
- Composite3DTileContent.prototype.destroy = function () {
396
- const contents = this._contents;
397
- const length = contents.length;
398
- for (let i = 0; i < length; ++i) {
399
- contents[i].destroy();
400
- }
401
- return destroyObject(this);
402
- };
403
365
  export default Composite3DTileContent;