@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.
- package/Build/Workers/{chunk-GPIGURCG.js → chunk-3VFEWOBI.js} +7 -7
- package/Build/Workers/{chunk-BTX2NL3P.js → chunk-424RNO3D.js} +18 -18
- package/Build/Workers/{chunk-HSVQATK2.js → chunk-4MGMYHOO.js} +6 -6
- package/Build/Workers/{chunk-FIBS5S7R.js → chunk-4S7IE3LB.js} +2 -2
- package/Build/Workers/{chunk-A7ZBMVFS.js → chunk-52JDLOEM.js} +14 -14
- package/Build/Workers/{chunk-ZCCIIBZT.js → chunk-54I6Y66F.js} +6 -6
- package/Build/Workers/{chunk-J647NNZW.js → chunk-6YEE6JDR.js} +6 -6
- package/Build/Workers/{chunk-HVMG6AG4.js → chunk-7J2HKPRH.js} +9 -9
- package/Build/Workers/{chunk-K6NFIRFB.js → chunk-7WM2PX4V.js} +5 -5
- package/Build/Workers/{chunk-3LSD7OOA.js → chunk-ACXQXN46.js} +16 -16
- package/Build/Workers/{chunk-CZ23Y3RM.js → chunk-AYKR4VBR.js} +2 -2
- package/Build/Workers/{chunk-4MTRQFJP.js → chunk-C6J67V5A.js} +1 -1
- package/Build/Workers/{chunk-WTQGE7Q6.js → chunk-C6KNZ7T4.js} +17 -17
- package/Build/Workers/{chunk-AWFZHD2B.js → chunk-CFQP6LYM.js} +4 -4
- package/Build/Workers/{chunk-ST2UWDUU.js → chunk-CXOYE2WM.js} +5 -5
- package/Build/Workers/{chunk-H2A4USJR.js → chunk-CZEYZU4N.js} +10 -10
- package/Build/Workers/{chunk-DFEI5MAV.js → chunk-DBOEKL43.js} +7 -7
- package/Build/Workers/{chunk-A7A433MD.js → chunk-DDWSZVMY.js} +5 -5
- package/Build/Workers/{chunk-J7KQEKPK.js → chunk-DOBXCNC3.js} +13 -13
- package/Build/Workers/{chunk-URUCCIPS.js → chunk-E7VQ76KE.js} +6 -6
- package/Build/Workers/{chunk-ZAPOS52G.js → chunk-EBSIOBXY.js} +8 -8
- package/Build/Workers/{chunk-3VDDRF2E.js → chunk-EF2QYXGA.js} +14 -14
- package/Build/Workers/{chunk-WN6P5UDH.js → chunk-EPYXRCDB.js} +12 -12
- package/Build/Workers/{chunk-EZARA5FJ.js → chunk-F6QDY6HU.js} +13 -13
- package/Build/Workers/{chunk-GL7DNVUS.js → chunk-FRQZECAO.js} +5 -5
- package/Build/Workers/{chunk-VQKLRBIK.js → chunk-G7PXZRVF.js} +7 -7
- package/Build/Workers/{chunk-4QQXGTCE.js → chunk-INUEEEQA.js} +8 -8
- package/Build/Workers/{chunk-ITD2IN7N.js → chunk-IRBKFCEJ.js} +2 -2
- package/Build/Workers/{chunk-6SDGQI27.js → chunk-IYOUHCZB.js} +1 -1
- package/Build/Workers/{chunk-DYT5NR6P.js → chunk-J6BWOHUF.js} +3 -3
- package/Build/Workers/{chunk-4GF4MVPY.js → chunk-KFSTQKNM.js} +7 -7
- package/Build/Workers/{chunk-4XXHJI6Y.js → chunk-KKOSKAZB.js} +17 -17
- package/Build/Workers/{chunk-WC57YYBN.js → chunk-KSSWJIZW.js} +2 -2
- package/Build/Workers/{chunk-5T6QQAJW.js → chunk-M3B5JKSM.js} +1 -1
- package/Build/Workers/{chunk-QO2CGXMP.js → chunk-MPZHGZU6.js} +6 -6
- package/Build/Workers/{chunk-WUBKZFF6.js → chunk-MYP774IS.js} +9 -9
- package/Build/Workers/{chunk-WNN5D4W3.js → chunk-O3EA5HS7.js} +10 -10
- package/Build/Workers/{chunk-77RL3MBD.js → chunk-P3CK7MCY.js} +25 -4
- package/Build/Workers/{chunk-QXNQQYPV.js → chunk-Q3PY526V.js} +8 -8
- package/Build/Workers/{chunk-CKQP3DSS.js → chunk-QN67VG36.js} +6 -6
- package/Build/Workers/{chunk-ACFFCHHZ.js → chunk-QRWGUWI6.js} +11 -11
- package/Build/Workers/{chunk-LH5SF3XV.js → chunk-S4MCOY6I.js} +5 -5
- package/Build/Workers/{chunk-FVLVVOBQ.js → chunk-SMQZZOW6.js} +10 -10
- package/Build/Workers/{chunk-TA777BGS.js → chunk-TKKIREQ6.js} +1 -1
- package/Build/Workers/{chunk-AEAVLYPS.js → chunk-U3ZA64U7.js} +2 -2
- package/Build/Workers/{chunk-7LSFAEWF.js → chunk-UA25D5MX.js} +10 -10
- package/Build/Workers/{chunk-J3OFS2RD.js → chunk-UOOIQ3KX.js} +12 -12
- package/Build/Workers/{chunk-ND3NTTOF.js → chunk-V7VQKN6N.js} +6 -6
- package/Build/Workers/{chunk-I3A6DXYZ.js → chunk-VQYETPWC.js} +4 -4
- package/Build/Workers/{chunk-35H3UBIO.js → chunk-VWV2IJRB.js} +11 -11
- package/Build/Workers/{chunk-QSDY4NS7.js → chunk-XZMBNNDX.js} +9 -9
- package/Build/Workers/{chunk-TAI4HLII.js → chunk-Y57HREW5.js} +4 -4
- package/Build/Workers/{chunk-3TKLDHV3.js → chunk-Y5BF6AFU.js} +2 -2
- package/Build/Workers/{chunk-3XY3MVPG.js → chunk-YLY7NKAB.js} +4 -4
- package/Build/Workers/{chunk-BVAIWR7O.js → chunk-ZK3CF7ZD.js} +12 -12
- package/Build/Workers/{chunk-DH26SNAB.js → chunk-ZP7JMQV4.js} +1 -1
- package/Build/Workers/{chunk-3RFFPH4M.js → chunk-ZZ46LWL6.js} +1 -1
- package/Build/Workers/combineGeometry.js +24 -24
- package/Build/Workers/createBoxGeometry.js +18 -18
- package/Build/Workers/createBoxOutlineGeometry.js +16 -16
- package/Build/Workers/createCircleGeometry.js +26 -26
- package/Build/Workers/createCircleOutlineGeometry.js +19 -19
- package/Build/Workers/createCoplanarPolygonGeometry.js +33 -33
- package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +31 -31
- package/Build/Workers/createCorridorGeometry.js +29 -29
- package/Build/Workers/createCorridorOutlineGeometry.js +28 -28
- package/Build/Workers/createCylinderGeometry.js +20 -20
- package/Build/Workers/createCylinderOutlineGeometry.js +18 -18
- package/Build/Workers/createEllipseGeometry.js +26 -26
- package/Build/Workers/createEllipseOutlineGeometry.js +19 -19
- package/Build/Workers/createEllipsoidGeometry.js +19 -19
- package/Build/Workers/createEllipsoidOutlineGeometry.js +18 -18
- package/Build/Workers/createFrustumGeometry.js +18 -18
- package/Build/Workers/createFrustumOutlineGeometry.js +18 -18
- package/Build/Workers/createGeometry.js +24 -24
- package/Build/Workers/createGroundPolylineGeometry.js +22 -22
- package/Build/Workers/createPlaneGeometry.js +16 -16
- package/Build/Workers/createPlaneOutlineGeometry.js +15 -15
- package/Build/Workers/createPolygonGeometry.js +32 -32
- package/Build/Workers/createPolygonOutlineGeometry.js +30 -30
- package/Build/Workers/createPolylineGeometry.js +25 -25
- package/Build/Workers/createPolylineVolumeGeometry.js +31 -31
- package/Build/Workers/createPolylineVolumeOutlineGeometry.js +27 -27
- package/Build/Workers/createRectangleGeometry.js +27 -27
- package/Build/Workers/createRectangleOutlineGeometry.js +20 -20
- package/Build/Workers/createSimplePolylineGeometry.js +23 -23
- package/Build/Workers/createSphereGeometry.js +19 -19
- package/Build/Workers/createSphereOutlineGeometry.js +18 -18
- package/Build/Workers/createTaskProcessorWorker.js +3 -3
- package/Build/Workers/createVectorTileClampedPolylines.js +14 -14
- package/Build/Workers/createVectorTileGeometries.js +24 -24
- package/Build/Workers/createVectorTilePoints.js +13 -13
- package/Build/Workers/createVectorTilePolygons.js +22 -22
- package/Build/Workers/createVectorTilePolylines.js +14 -14
- package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +25 -25
- package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +22 -22
- package/Build/Workers/createVerticesFromHeightmap.js +22 -22
- package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +20 -20
- package/Build/Workers/createWallGeometry.js +24 -24
- package/Build/Workers/createWallOutlineGeometry.js +23 -23
- package/Build/Workers/decodeDraco.js +10 -10
- package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
- package/Build/Workers/decodeI3S.js +10 -10
- package/Build/Workers/gaussianSplatSorter.js +4 -4
- package/Build/Workers/gaussianSplatTextureGenerator.js +4 -4
- package/Build/Workers/incrementallyBuildTerrainPicker.js +10 -10
- package/Build/Workers/transcodeKTX2.js +6 -6
- package/Build/Workers/transferTypedArrayTest.js +1 -1
- package/Build/Workers/upsampleQuantizedTerrainMesh.js +22 -22
- package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +25 -25
- package/Source/Core/Cartesian2.js +1 -1
- package/Source/Core/Cartesian3.js +1 -1
- package/Source/Core/Cartesian4.js +1 -1
- package/Source/Core/ComponentDatatype.js +35 -0
- package/Source/Core/Ion.js +1 -1
- package/Source/Core/MapProjection.js +1 -0
- package/Source/Core/Matrix2.js +1 -1
- package/Source/Core/Matrix3.js +1 -1
- package/Source/Core/Matrix4.js +1 -1
- package/Source/Core/Resource.js +1 -1
- package/Source/Core/ScreenSpaceEventHandler.js +51 -41
- package/Source/Core/createColorRamp.js +37 -0
- package/Source/Core/globalTypes.js +25 -0
- package/Source/Renderer/Pass.js +3 -2
- package/Source/Renderer/createUniform.js +346 -239
- package/Source/Renderer/createUniformArray.js +494 -381
- package/Source/Scene/ArcGisMapService.js +1 -1
- package/Source/Scene/BufferPoint.js +1 -0
- package/Source/Scene/BufferPointCollection.js +14 -1
- package/Source/Scene/BufferPolygon.js +3 -2
- package/Source/Scene/BufferPolygonCollection.js +10 -0
- package/Source/Scene/BufferPolyline.js +1 -0
- package/Source/Scene/BufferPolylineCollection.js +2 -0
- package/Source/Scene/BufferPrimitiveCollection.js +79 -28
- package/Source/Scene/CameraEventAggregator.js +30 -18
- package/Source/Scene/Cesium3DTile.js +54 -1
- package/Source/Scene/Cesium3DTileContent.js +195 -254
- package/Source/Scene/Cesium3DTileContentFactory.js +10 -2
- package/Source/Scene/Cesium3DTileset.js +45 -5
- package/Source/Scene/Composite3DTileContent.js +254 -292
- package/Source/Scene/EdgeDisplayMode.js +50 -0
- package/Source/Scene/Empty3DTileContent.js +100 -132
- package/Source/Scene/GaussianSplat3DTileContent.js +436 -478
- package/Source/Scene/GeoJsonPrimitive.js +874 -0
- package/Source/Scene/Geometry3DTileContent.js +151 -185
- package/Source/Scene/GltfLoader.js +109 -0
- package/Source/Scene/Implicit3DTileContent.js +179 -214
- package/Source/Scene/MVTDataProvider.js +147 -0
- package/Source/Scene/Model/EdgeVisibilityPipelineStage.js +79 -311
- package/Source/Scene/Model/Model.js +34 -0
- package/Source/Scene/Model/Model3DTileContent.js +424 -458
- package/Source/Scene/Model/ModelDrawCommand.js +31 -3
- package/Source/Scene/Model/ModelUtility.js +4 -0
- package/Source/Scene/Model/createVectorTileBuffersFromModelComponents.js +466 -150
- package/Source/Scene/ModelComponents.js +39 -1
- package/Source/Scene/Multiple3DTileContent.js +291 -334
- package/Source/Scene/Scene.js +26 -0
- package/Source/Scene/Tileset3DTileContent.js +113 -146
- package/Source/Scene/UrlTemplate3DTilesDataProvider.js +499 -0
- package/Source/Scene/Vector3DTileContent.js +205 -234
- package/Source/Scene/VectorGltf3DTileContent.js +85 -36
- package/Source/Scene/VoxelPrimitive.js +159 -175
- package/Source/Scene/VoxelProvider.js +64 -91
- package/Source/Scene/buildVectorGltfFromMVT.js +1059 -0
- package/Source/Scene/buildVoxelCustomShader.js +199 -0
- package/Source/Scene/decodeMVT.js +634 -0
- package/Source/Scene/renderBufferPointCollection.js +110 -64
- package/Source/Scene/renderBufferPolygonCollection.js +102 -55
- package/Source/Scene/renderBufferPolylineCollection.js +365 -166
- package/Source/Shaders/BufferPointMaterialFS.glsl +1 -0
- package/Source/Shaders/BufferPointMaterialFS.js +1 -0
- package/Source/Shaders/BufferPointMaterialVS.glsl +19 -9
- package/Source/Shaders/BufferPointMaterialVS.js +20 -10
- package/Source/Shaders/BufferPolygonMaterialVS.glsl +13 -4
- package/Source/Shaders/BufferPolygonMaterialVS.js +14 -5
- package/Source/Shaders/BufferPolylineMaterialVS.glsl +16 -2
- package/Source/Shaders/BufferPolylineMaterialVS.js +17 -3
- package/Source/Shaders/Builtin/Constants/passCesium3DTileEdgesDirect.glsl +9 -0
- package/Source/Shaders/Builtin/Constants/passCesium3DTileEdgesDirect.js +11 -0
- package/Source/Shaders/Builtin/Constants/passOverlay.glsl +1 -1
- package/Source/Shaders/Builtin/Constants/passOverlay.js +1 -1
- package/Source/Shaders/Builtin/CzmBuiltins.js +2 -0
- package/Source/Shaders/Model/EdgeVisibilityStageVS.glsl +0 -1
- package/Source/Shaders/Model/EdgeVisibilityStageVS.js +0 -1
- package/index.d.ts +253 -35
- package/index.js +71 -62
- 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
|
-
* @
|
|
16
|
-
* @constructor
|
|
17
|
-
*
|
|
15
|
+
* @implements Cesium3DTileContent
|
|
18
16
|
* @private
|
|
19
17
|
*/
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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
|
-
|
|
26
|
-
|
|
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
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
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
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
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
|
-
|
|
64
|
-
|
|
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
|
-
|
|
75
|
-
|
|
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
|
-
|
|
86
|
-
|
|
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
|
-
|
|
97
|
-
|
|
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
|
-
|
|
108
|
-
|
|
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
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
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
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
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
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
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
|
-
|
|
190
|
-
|
|
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
|
-
|
|
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
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
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
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
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
|
-
|
|
266
|
-
|
|
218
|
+
const promises = [];
|
|
219
|
+
promises.length = tilesLength;
|
|
220
|
+
for (let i = 0; i < tilesLength; ++i) {
|
|
221
|
+
const tileType = getMagic(uint8Array, byteOffset);
|
|
267
222
|
|
|
268
|
-
|
|
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
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
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
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
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
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
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
|
-
|
|
346
|
-
|
|
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
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
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
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
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
|
-
|
|
371
|
-
|
|
323
|
+
let intersection;
|
|
324
|
+
let minDistance = Number.POSITIVE_INFINITY;
|
|
325
|
+
const contents = this._contents;
|
|
326
|
+
const length = contents.length;
|
|
372
327
|
|
|
373
|
-
|
|
374
|
-
|
|
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
|
-
|
|
378
|
-
|
|
379
|
-
intersection = candidate;
|
|
380
|
-
minDistance = distance;
|
|
342
|
+
if (!defined(intersection)) {
|
|
343
|
+
return undefined;
|
|
381
344
|
}
|
|
345
|
+
|
|
346
|
+
return result;
|
|
382
347
|
}
|
|
383
348
|
|
|
384
|
-
|
|
385
|
-
return
|
|
349
|
+
isDestroyed() {
|
|
350
|
+
return false;
|
|
386
351
|
}
|
|
387
352
|
|
|
388
|
-
|
|
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
|
-
|
|
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;
|