itowns 2.42.1-next.2 → 2.42.1-next.21
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/dist/debug.js +1 -1
- package/dist/debug.js.map +1 -1
- package/dist/itowns.js +1 -1
- package/dist/itowns.js.map +1 -1
- package/dist/itowns_widgets.js +1 -1
- package/dist/itowns_widgets.js.map +1 -1
- package/examples/{.eslintrc.js → .eslintrc.cjs} +1 -1
- package/examples/effects_stereo.html +2 -2
- package/examples/entwine_simple_loader.html +24 -8
- package/examples/misc_collada.html +2 -2
- package/examples/misc_instancing.html +1 -1
- package/examples/source_file_gpx_3d.html +2 -2
- package/examples/source_stream_wfs_25d.html +11 -11
- package/examples/source_stream_wfs_3d.html +1 -1
- package/examples/vector_tile_3d_mesh.html +2 -2
- package/examples/vector_tile_raster_2d.html +1 -1
- package/examples/vector_tile_raster_3d.html +1 -1
- package/examples/view_25d_map.html +2 -2
- package/examples/view_3d_map.html +3 -3
- package/examples/view_3d_map_webxr.html +1 -1
- package/examples/view_3d_mns_map.html +3 -3
- package/examples/view_immersive.html +1 -1
- package/examples/view_multi_25d.html +2 -2
- package/examples/widgets_minimap.html +1 -1
- package/examples/widgets_searchbar.html +2 -2
- package/lib/Controls/FirstPersonControls.js +5 -12
- package/lib/Controls/FlyControls.js +4 -13
- package/lib/Controls/GlobeControls.js +33 -43
- package/lib/Controls/PlanarControls.js +9 -20
- package/lib/Controls/StateControl.js +2 -11
- package/lib/Controls/StreetControls.js +14 -24
- package/lib/Converter/Feature2Mesh.js +77 -70
- package/lib/Converter/Feature2Texture.js +15 -25
- package/lib/Converter/convertToTile.js +16 -26
- package/lib/Converter/textureConverter.js +9 -19
- package/lib/Core/3DTiles/C3DTBatchTable.js +5 -13
- package/lib/Core/3DTiles/C3DTBatchTableHierarchyExtension.js +1 -8
- package/lib/Core/3DTiles/C3DTBoundingVolume.js +17 -27
- package/lib/Core/3DTiles/C3DTExtensions.js +1 -8
- package/lib/Core/3DTiles/C3DTFeature.js +3 -10
- package/lib/Core/3DTiles/C3DTilesEnums.js +3 -11
- package/lib/Core/3DTiles/C3DTileset.js +7 -16
- package/lib/Core/3DTiles/utils/BinaryPropertyAccessor.js +5 -11
- package/lib/Core/AnimationPlayer.js +2 -11
- package/lib/Core/Deprecated/Undeprecator.js +9 -20
- package/lib/Core/EntwinePointTileNode.js +6 -16
- package/lib/Core/Feature.js +16 -30
- package/lib/Core/Geographic/CoordStars.js +3 -12
- package/lib/Core/Geographic/Coordinates.js +12 -22
- package/lib/Core/Geographic/Crs.js +7 -15
- package/lib/Core/Geographic/Extent.js +36 -47
- package/lib/Core/Geographic/GeoidGrid.js +6 -16
- package/lib/Core/Label.js +7 -17
- package/lib/Core/MainLoop.js +7 -16
- package/lib/Core/Math/Ellipsoid.js +6 -17
- package/lib/Core/Picking.js +10 -20
- package/lib/Core/PointCloudNode.js +2 -11
- package/lib/Core/PotreeNode.js +4 -13
- package/lib/Core/Prefab/Globe/Atmosphere.js +17 -26
- package/lib/Core/Prefab/Globe/BuilderEllipsoidTile.js +6 -16
- package/lib/Core/Prefab/Globe/GlobeLayer.js +19 -28
- package/lib/Core/Prefab/Globe/SkyShader.js +2 -11
- package/lib/Core/Prefab/GlobeView.js +27 -45
- package/lib/Core/Prefab/Planar/PlanarLayer.js +11 -20
- package/lib/Core/Prefab/Planar/PlanarTileBuilder.js +6 -16
- package/lib/Core/Prefab/PlanarView.js +10 -25
- package/lib/Core/Prefab/TileBuilder.js +13 -22
- package/lib/Core/Prefab/computeBufferTileGeometry.js +12 -16
- package/lib/Core/Scheduler/Cache.js +2 -10
- package/lib/Core/Scheduler/CancelledCommandException.js +1 -8
- package/lib/Core/Scheduler/Scheduler.js +15 -23
- package/lib/Core/Style.js +26 -40
- package/lib/Core/System/Capabilities.js +2 -13
- package/lib/Core/TileGeometry.js +13 -15
- package/lib/Core/TileMesh.js +6 -15
- package/lib/Core/View.js +43 -58
- package/lib/Layer/C3DTilesLayer.js +29 -41
- package/lib/Layer/ColorLayer.js +10 -16
- package/lib/Layer/ElevationLayer.js +7 -14
- package/lib/Layer/EntwinePointTileLayer.js +11 -18
- package/lib/Layer/FeatureGeometryLayer.js +9 -16
- package/lib/Layer/GeoidLayer.js +6 -15
- package/lib/Layer/GeometryLayer.js +11 -17
- package/lib/Layer/InfoLayer.js +5 -14
- package/lib/Layer/LabelLayer.js +22 -32
- package/lib/Layer/Layer.js +16 -26
- package/lib/Layer/LayerUpdateState.js +1 -8
- package/lib/Layer/LayerUpdateStrategy.js +7 -18
- package/lib/Layer/OrientedImageLayer.js +15 -25
- package/lib/Layer/PointCloudLayer.js +27 -24
- package/lib/Layer/PotreeLayer.js +8 -18
- package/lib/Layer/RasterLayer.js +9 -17
- package/lib/Layer/ReferencingLayerProperties.js +1 -8
- package/lib/Layer/TiledGeometryLayer.js +37 -33
- package/lib/Main.js +86 -707
- package/lib/MainBundle.js +4 -34
- package/lib/Parser/B3dmParser.js +80 -131
- package/lib/Parser/CameraCalibrationParser.js +5 -14
- package/lib/Parser/GDFParser.js +11 -22
- package/lib/Parser/GLTFParser.js +88 -0
- package/lib/Parser/GTXParser.js +9 -21
- package/lib/Parser/GeoJsonParser.js +14 -22
- package/lib/Parser/GpxParser.js +7 -14
- package/lib/Parser/ISGParser.js +19 -28
- package/lib/Parser/KMLParser.js +7 -14
- package/lib/Parser/LASLoader.js +31 -21
- package/lib/Parser/LASParser.js +10 -17
- package/lib/Parser/MapBoxUrlParser.js +2 -9
- package/lib/Parser/PntsParser.js +4 -14
- package/lib/Parser/PotreeBinParser.js +8 -16
- package/lib/Parser/PotreeCinParser.js +3 -12
- package/lib/Parser/ShapefileParser.js +11 -18
- package/lib/Parser/VectorTileParser.js +23 -31
- package/lib/Parser/XbilParser.js +5 -13
- package/lib/Parser/deprecated/LegacyGLTFLoader.js +2 -12
- package/lib/Process/3dTilesProcessing.js +14 -27
- package/lib/Process/FeatureProcessing.js +14 -22
- package/lib/Process/LayeredMaterialNodeProcessing.js +19 -28
- package/lib/Process/ObjectRemovalHelper.js +2 -9
- package/lib/Process/handlerNodeError.js +1 -7
- package/lib/Provider/3dTilesProvider.js +32 -29
- package/lib/Provider/DataSourceProvider.js +2 -9
- package/lib/Provider/Fetcher.js +40 -22
- package/lib/Provider/PointCloudProvider.js +7 -19
- package/lib/Provider/TileProvider.js +4 -12
- package/lib/Provider/URLBuilder.js +4 -12
- package/lib/Renderer/Camera.js +7 -17
- package/lib/Renderer/Color.js +3 -11
- package/lib/Renderer/ColorLayersOrdering.js +14 -22
- package/lib/Renderer/CommonMaterial.js +3 -12
- package/lib/Renderer/Label2DRenderer.js +5 -16
- package/lib/Renderer/LayeredMaterial.js +33 -53
- package/lib/Renderer/OBB.js +12 -21
- package/lib/Renderer/OrientedImageCamera.js +2 -11
- package/lib/Renderer/OrientedImageMaterial.js +17 -35
- package/lib/Renderer/PointsMaterial.js +224 -94
- package/lib/Renderer/RasterTile.js +18 -30
- package/lib/Renderer/RenderMode.js +2 -9
- package/lib/Renderer/Shader/ShaderChunk.js +5 -23
- package/lib/Renderer/Shader/ShaderUtils.js +2 -9
- package/lib/Renderer/SphereHelper.js +2 -11
- package/lib/Renderer/WebXR.js +2 -11
- package/lib/Renderer/c3DEngine.js +20 -53
- package/lib/Source/C3DTilesGoogleSource.js +76 -0
- package/lib/Source/C3DTilesIonSource.js +6 -13
- package/lib/Source/C3DTilesSource.js +5 -12
- package/lib/Source/EntwinePointTileSource.js +12 -19
- package/lib/Source/FileSource.js +7 -14
- package/lib/Source/OrientedImageSource.js +6 -14
- package/lib/Source/PotreeSource.js +9 -16
- package/lib/Source/Source.js +26 -39
- package/lib/Source/TMSSource.js +11 -22
- package/lib/Source/VectorTilesSource.js +75 -34
- package/lib/Source/WFSSource.js +7 -14
- package/lib/Source/WMSSource.js +5 -12
- package/lib/Source/WMTSSource.js +3 -10
- package/lib/ThreeExtended/capabilities/WebGL.js +1 -8
- package/lib/ThreeExtended/libs/ktx-parse.module.js +2 -256
- package/lib/ThreeExtended/libs/zstddec.module.js +2 -8
- package/lib/ThreeExtended/loaders/DDSLoader.js +10 -16
- package/lib/ThreeExtended/loaders/DRACOLoader.js +14 -19
- package/lib/ThreeExtended/loaders/GLTFLoader.js +124 -129
- package/lib/ThreeExtended/loaders/KTX2Loader.js +73 -78
- package/lib/ThreeExtended/utils/BufferGeometryUtils.js +40 -59
- package/lib/ThreeExtended/utils/WorkerPool.js +2 -9
- package/lib/Utils/CameraUtils.js +32 -44
- package/lib/Utils/DEMUtils.js +8 -19
- package/lib/Utils/FeaturesUtils.js +8 -16
- package/lib/Utils/Gradients.js +16 -0
- package/lib/Utils/OrientationUtils.js +8 -18
- package/lib/Utils/ThreeUtils.js +2 -9
- package/lib/Utils/gui/C3DTilesStyle.js +7 -15
- package/lib/Utils/gui/Main.js +7 -48
- package/lib/Utils/gui/Minimap.js +12 -20
- package/lib/Utils/gui/Navigation.js +6 -14
- package/lib/Utils/gui/Scale.js +11 -19
- package/lib/Utils/gui/Searchbar.js +5 -13
- package/lib/Utils/gui/Widget.js +1 -8
- package/lib/Utils/placeObjectOnGround.js +13 -23
- package/package.json +13 -8
package/lib/Parser/XbilParser.js
CHANGED
|
@@ -1,17 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.checkNodeElevationTextureValidity = checkNodeElevationTextureValidity;
|
|
7
|
-
exports.computeMinMaxElevation = computeMinMaxElevation;
|
|
8
|
-
exports.insertSignificantValuesFromParent = insertSignificantValuesFromParent;
|
|
9
|
-
var _DEMUtils = require("../Utils/DEMUtils");
|
|
1
|
+
import { readTextureValueWithBilinearFiltering } from "../Utils/DEMUtils.js";
|
|
10
2
|
function minMax4Corners(texture, pitch, options) {
|
|
11
3
|
const u = pitch.x;
|
|
12
4
|
const v = pitch.y;
|
|
13
5
|
const w = pitch.z;
|
|
14
|
-
const z = [
|
|
6
|
+
const z = [readTextureValueWithBilinearFiltering(options, texture, u, v), readTextureValueWithBilinearFiltering(options, texture, u + w, v), readTextureValueWithBilinearFiltering(options, texture, u + w, v + w), readTextureValueWithBilinearFiltering(options, texture, u, v + w)].filter(val => val != undefined);
|
|
15
7
|
if (z.length) {
|
|
16
8
|
return {
|
|
17
9
|
min: Math.min(...z),
|
|
@@ -36,7 +28,7 @@ function minMax4Corners(texture, pitch, options) {
|
|
|
36
28
|
* @param {number} [options.zmax] The maximum elevation value after which it will be clamped
|
|
37
29
|
* @return {Object} The minimum and maximum elevation.
|
|
38
30
|
*/
|
|
39
|
-
function computeMinMaxElevation(texture, pitch, options) {
|
|
31
|
+
export function computeMinMaxElevation(texture, pitch, options) {
|
|
40
32
|
const {
|
|
41
33
|
width,
|
|
42
34
|
height,
|
|
@@ -99,13 +91,13 @@ function computeMinMaxElevation(texture, pitch, options) {
|
|
|
99
91
|
}
|
|
100
92
|
|
|
101
93
|
// We check if the elevation texture has some significant values through corners
|
|
102
|
-
function checkNodeElevationTextureValidity(data, noDataValue) {
|
|
94
|
+
export function checkNodeElevationTextureValidity(data, noDataValue) {
|
|
103
95
|
const l = data.length;
|
|
104
96
|
return data[0] > noDataValue && data[l - 1] > noDataValue && data[Math.sqrt(l) - 1] > noDataValue && data[l - Math.sqrt(l)] > noDataValue;
|
|
105
97
|
}
|
|
106
98
|
|
|
107
99
|
// This function replaces noDataValue by significant values from parent texture (or 0)
|
|
108
|
-
function insertSignificantValuesFromParent(data) {
|
|
100
|
+
export function insertSignificantValuesFromParent(data) {
|
|
109
101
|
let dataParent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : () => 0;
|
|
110
102
|
let noDataValue = arguments.length > 2 ? arguments[2] : undefined;
|
|
111
103
|
for (let i = 0, l = data.length; i < l; ++i) {
|
|
@@ -1,15 +1,6 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
var THREE = _interopRequireWildcard(require("three"));
|
|
8
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
9
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
10
1
|
/* eslint-disable */
|
|
11
2
|
// Copy LegacyGLTFLoader file from THREE v110 because it was removed in THREE v111
|
|
12
|
-
|
|
3
|
+
import * as THREE from 'three';
|
|
13
4
|
const threeExamples = {};
|
|
14
5
|
/**
|
|
15
6
|
* @author Rich Tibbett / https://github.com/richtr
|
|
@@ -1373,5 +1364,4 @@ threeExamples.LegacyGLTFLoader = function () {
|
|
|
1373
1364
|
};
|
|
1374
1365
|
return LegacyGLTFLoader;
|
|
1375
1366
|
}();
|
|
1376
|
-
|
|
1377
|
-
exports.default = _default;
|
|
1367
|
+
export default threeExamples.LegacyGLTFLoader;
|
|
@@ -1,21 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
import ObjectRemovalHelper from "./ObjectRemovalHelper.js";
|
|
3
|
+
import { C3DTilesBoundingVolumeTypes } from "../Core/3DTiles/C3DTilesEnums.js";
|
|
4
|
+
import { C3DTILES_LAYER_EVENTS } from "../Layer/C3DTilesLayer.js";
|
|
2
5
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.$3dTilesCulling = $3dTilesCulling;
|
|
8
|
-
exports.$3dTilesSubdivisionControl = $3dTilesSubdivisionControl;
|
|
9
|
-
exports.computeNodeSSE = computeNodeSSE;
|
|
10
|
-
exports.init3dTilesLayer = init3dTilesLayer;
|
|
11
|
-
exports.pre3dTilesUpdate = pre3dTilesUpdate;
|
|
12
|
-
exports.process3dTilesNode = process3dTilesNode;
|
|
13
|
-
var THREE = _interopRequireWildcard(require("three"));
|
|
14
|
-
var _ObjectRemovalHelper = _interopRequireDefault(require("./ObjectRemovalHelper"));
|
|
15
|
-
var _C3DTilesEnums = require("../Core/3DTiles/C3DTilesEnums");
|
|
16
|
-
var _C3DTilesLayer = require("../Layer/C3DTilesLayer");
|
|
17
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
18
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
19
6
|
/** @module 3dTilesProcessing
|
|
20
7
|
*/
|
|
21
8
|
|
|
@@ -31,7 +18,7 @@ function requestNewTile(view, scheduler, geometryLayer, metadata, parent, redraw
|
|
|
31
18
|
redraw
|
|
32
19
|
};
|
|
33
20
|
geometryLayer.dispatchEvent({
|
|
34
|
-
type:
|
|
21
|
+
type: C3DTILES_LAYER_EVENTS.ON_TILE_REQUESTED,
|
|
35
22
|
metadata
|
|
36
23
|
});
|
|
37
24
|
return scheduler.execute(command);
|
|
@@ -117,7 +104,7 @@ function _subdivideNodeSubstractive(context, layer, node) {
|
|
|
117
104
|
* @param {THREE.Matrix4} tileMatrixWorld The node matrix world
|
|
118
105
|
* @return {boolean} return true if the node is visible
|
|
119
106
|
*/
|
|
120
|
-
function $3dTilesCulling(layer, camera, node, tileMatrixWorld) {
|
|
107
|
+
export function $3dTilesCulling(layer, camera, node, tileMatrixWorld) {
|
|
121
108
|
// For viewer Request Volume
|
|
122
109
|
// https://github.com/AnalyticalGraphicsInc/3d-tiles-samples/tree/master/tilesets/TilesetWithRequestVolume
|
|
123
110
|
if (node.viewerRequestVolume && node.viewerRequestVolume.viewerRequestVolumeCulling(camera, tileMatrixWorld)) {
|
|
@@ -148,7 +135,7 @@ function cleanup3dTileset(layer, n) {
|
|
|
148
135
|
// skip non-tiles elements
|
|
149
136
|
if (!n.children[i].content) {
|
|
150
137
|
if (canCleanCompletely) {
|
|
151
|
-
|
|
138
|
+
ObjectRemovalHelper.removeChildrenAndCleanupRecursively(n.children[i].layer, n.children[i]);
|
|
152
139
|
}
|
|
153
140
|
} else {
|
|
154
141
|
cleanup3dTileset(layer, n.children[i], depth + 1);
|
|
@@ -173,7 +160,7 @@ function cleanup3dTileset(layer, n) {
|
|
|
173
160
|
}
|
|
174
161
|
|
|
175
162
|
// this is a layer
|
|
176
|
-
function pre3dTilesUpdate() {
|
|
163
|
+
export function pre3dTilesUpdate() {
|
|
177
164
|
if (!this.visible) {
|
|
178
165
|
return [];
|
|
179
166
|
}
|
|
@@ -202,13 +189,13 @@ function pre3dTilesUpdate() {
|
|
|
202
189
|
}
|
|
203
190
|
const boundingVolumeBox = new THREE.Box3();
|
|
204
191
|
const boundingVolumeSphere = new THREE.Sphere();
|
|
205
|
-
function computeNodeSSE(camera, node) {
|
|
192
|
+
export function computeNodeSSE(camera, node) {
|
|
206
193
|
node.distance = 0;
|
|
207
|
-
if (node.boundingVolume.initialVolumeType ===
|
|
194
|
+
if (node.boundingVolume.initialVolumeType === C3DTilesBoundingVolumeTypes.box) {
|
|
208
195
|
boundingVolumeBox.copy(node.boundingVolume.volume);
|
|
209
196
|
boundingVolumeBox.applyMatrix4(node.matrixWorld);
|
|
210
197
|
node.distance = boundingVolumeBox.distanceToPoint(camera.camera3D.position);
|
|
211
|
-
} else if (node.boundingVolume.initialVolumeType ===
|
|
198
|
+
} else if (node.boundingVolume.initialVolumeType === C3DTilesBoundingVolumeTypes.sphere || node.boundingVolume.initialVolumeType === C3DTilesBoundingVolumeTypes.region) {
|
|
212
199
|
boundingVolumeSphere.copy(node.boundingVolume.volume);
|
|
213
200
|
boundingVolumeSphere.applyMatrix4(node.matrixWorld);
|
|
214
201
|
// TODO: see https://github.com/iTowns/itowns/issues/800
|
|
@@ -222,7 +209,7 @@ function computeNodeSSE(camera, node) {
|
|
|
222
209
|
}
|
|
223
210
|
return camera._preSSE * (node.geometricError / node.distance);
|
|
224
211
|
}
|
|
225
|
-
function init3dTilesLayer(view, scheduler, layer, rootTile) {
|
|
212
|
+
export function init3dTilesLayer(view, scheduler, layer, rootTile) {
|
|
226
213
|
return requestNewTile(view, scheduler, layer, rootTile, undefined, true).then(tile => {
|
|
227
214
|
layer.object3d.add(tile);
|
|
228
215
|
tile.updateMatrixWorld();
|
|
@@ -256,7 +243,7 @@ function markForDeletion(layer, elt) {
|
|
|
256
243
|
* @param {Function} [subdivisionTest=$3dTilesSubdivisionControl] The subdivision test method.
|
|
257
244
|
* @return {Function} { description_of_the_return_value }
|
|
258
245
|
*/
|
|
259
|
-
function process3dTilesNode() {
|
|
246
|
+
export function process3dTilesNode() {
|
|
260
247
|
let cullingTest = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : $3dTilesCulling;
|
|
261
248
|
let subdivisionTest = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : $3dTilesSubdivisionControl;
|
|
262
249
|
return function (context, layer, node) {
|
|
@@ -304,7 +291,7 @@ function process3dTilesNode() {
|
|
|
304
291
|
* @param {THREE.Object3D} node The 3d tile node
|
|
305
292
|
* @return {boolean}
|
|
306
293
|
*/
|
|
307
|
-
function $3dTilesSubdivisionControl(context, layer, node) {
|
|
294
|
+
export function $3dTilesSubdivisionControl(context, layer, node) {
|
|
308
295
|
if (layer.tileset.tiles[node.tileId].children === undefined) {
|
|
309
296
|
return false;
|
|
310
297
|
}
|
|
@@ -1,34 +1,27 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
var _LayerUpdateState = _interopRequireDefault(require("../Layer/LayerUpdateState"));
|
|
9
|
-
var _ObjectRemovalHelper = _interopRequireDefault(require("./ObjectRemovalHelper"));
|
|
10
|
-
var _handlerNodeError = _interopRequireDefault(require("./handlerNodeError"));
|
|
11
|
-
var _Coordinates = _interopRequireDefault(require("../Core/Geographic/Coordinates"));
|
|
12
|
-
var _GeoidLayer = require("../Layer/GeoidLayer");
|
|
13
|
-
const coord = new _Coordinates.default('EPSG:4326', 0, 0, 0);
|
|
14
|
-
var _default = {
|
|
1
|
+
import LayerUpdateState from "../Layer/LayerUpdateState.js";
|
|
2
|
+
import ObjectRemovalHelper from "./ObjectRemovalHelper.js";
|
|
3
|
+
import handlingError from "./handlerNodeError.js";
|
|
4
|
+
import Coordinates from "../Core/Geographic/Coordinates.js";
|
|
5
|
+
import { geoidLayerIsVisible } from "../Layer/GeoidLayer.js";
|
|
6
|
+
const coord = new Coordinates('EPSG:4326', 0, 0, 0);
|
|
7
|
+
export default {
|
|
15
8
|
update(context, layer, node) {
|
|
16
9
|
if (!node.parent && node.children.length) {
|
|
17
10
|
// if node has been removed dispose three.js resource
|
|
18
|
-
|
|
11
|
+
ObjectRemovalHelper.removeChildrenAndCleanupRecursively(layer, node);
|
|
19
12
|
return;
|
|
20
13
|
}
|
|
21
14
|
if (!node.visible) {
|
|
22
15
|
return;
|
|
23
16
|
}
|
|
24
17
|
if (node.layerUpdateState[layer.id] === undefined) {
|
|
25
|
-
node.layerUpdateState[layer.id] = new
|
|
18
|
+
node.layerUpdateState[layer.id] = new LayerUpdateState();
|
|
26
19
|
} else if (!node.layerUpdateState[layer.id].canTryUpdate()) {
|
|
27
20
|
var _node$link$layer$id;
|
|
28
21
|
// toggle visibility features
|
|
29
22
|
(_node$link$layer$id = node.link[layer.id]) === null || _node$link$layer$id === void 0 ? void 0 : _node$link$layer$id.forEach(f => {
|
|
30
23
|
f.layer.object3d.add(f);
|
|
31
|
-
f.meshes.position.z =
|
|
24
|
+
f.meshes.position.z = geoidLayerIsVisible(layer.parent) ? node.geoidHeight : 0;
|
|
32
25
|
f.meshes.updateMatrixWorld();
|
|
33
26
|
});
|
|
34
27
|
return;
|
|
@@ -61,14 +54,14 @@ var _default = {
|
|
|
61
54
|
if (featureMesh) {
|
|
62
55
|
node.link[layer.id] = node.link[layer.id] || [];
|
|
63
56
|
featureMesh.as(context.view.referenceCrs);
|
|
64
|
-
featureMesh.meshes.position.z =
|
|
57
|
+
featureMesh.meshes.position.z = geoidLayerIsVisible(layer.parent) ? node.geoidHeight : 0;
|
|
65
58
|
featureMesh.updateMatrixWorld();
|
|
66
59
|
if (layer.onMeshCreated) {
|
|
67
60
|
layer.onMeshCreated(featureMesh, context);
|
|
68
61
|
}
|
|
69
62
|
if (!node.parent) {
|
|
70
63
|
// TODO: Clean cache needs a refactory, because it isn't really efficient and used
|
|
71
|
-
|
|
64
|
+
ObjectRemovalHelper.removeChildrenAndCleanupRecursively(layer, featureMesh);
|
|
72
65
|
} else {
|
|
73
66
|
layer.object3d.add(featureMesh);
|
|
74
67
|
node.link[layer.id].push(featureMesh);
|
|
@@ -79,7 +72,6 @@ var _default = {
|
|
|
79
72
|
node.layerUpdateState[layer.id].failure(1, true);
|
|
80
73
|
}
|
|
81
74
|
});
|
|
82
|
-
}, err => (
|
|
75
|
+
}, err => handlingError(err, node, layer, node.level, context.view));
|
|
83
76
|
}
|
|
84
|
-
};
|
|
85
|
-
exports.default = _default;
|
|
77
|
+
};
|
|
@@ -1,20 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
});
|
|
7
|
-
exports.SIZE_TEXTURE_TILE = exports.SIZE_DIAGONAL_TEXTURE = void 0;
|
|
8
|
-
exports.removeLayeredMaterialNodeLayer = removeLayeredMaterialNodeLayer;
|
|
9
|
-
exports.updateLayeredMaterialNodeElevation = updateLayeredMaterialNodeElevation;
|
|
10
|
-
exports.updateLayeredMaterialNodeImagery = updateLayeredMaterialNodeImagery;
|
|
11
|
-
var _LayerUpdateStrategy = require("../Layer/LayerUpdateStrategy");
|
|
12
|
-
var _LayerUpdateState = _interopRequireDefault(require("../Layer/LayerUpdateState"));
|
|
13
|
-
var _handlerNodeError = _interopRequireDefault(require("./handlerNodeError"));
|
|
14
|
-
const SIZE_TEXTURE_TILE = 256;
|
|
15
|
-
exports.SIZE_TEXTURE_TILE = SIZE_TEXTURE_TILE;
|
|
16
|
-
const SIZE_DIAGONAL_TEXTURE = (2 * (SIZE_TEXTURE_TILE * SIZE_TEXTURE_TILE)) ** 0.5;
|
|
17
|
-
exports.SIZE_DIAGONAL_TEXTURE = SIZE_DIAGONAL_TEXTURE;
|
|
1
|
+
import { chooseNextLevelToFetch } from "../Layer/LayerUpdateStrategy.js";
|
|
2
|
+
import LayerUpdateState from "../Layer/LayerUpdateState.js";
|
|
3
|
+
import handlingError from "./handlerNodeError.js";
|
|
4
|
+
export const SIZE_TEXTURE_TILE = 256;
|
|
5
|
+
export const SIZE_DIAGONAL_TEXTURE = (2 * (SIZE_TEXTURE_TILE * SIZE_TEXTURE_TILE)) ** 0.5;
|
|
18
6
|
function materialCommandQueuePriorityFunction(material) {
|
|
19
7
|
// We know that 'node' is visible because commands can only be
|
|
20
8
|
// issued for visible nodes.
|
|
@@ -50,7 +38,7 @@ function buildCommand(view, layer, extentsSource, extentsDestination, requester)
|
|
|
50
38
|
earlyDropFunction: refinementCommandCancellationFn
|
|
51
39
|
};
|
|
52
40
|
}
|
|
53
|
-
function updateLayeredMaterialNodeImagery(context, layer, node, parent) {
|
|
41
|
+
export function updateLayeredMaterialNodeImagery(context, layer, node, parent) {
|
|
54
42
|
const material = node.material;
|
|
55
43
|
if (!parent || !material) {
|
|
56
44
|
return;
|
|
@@ -64,7 +52,7 @@ function updateLayeredMaterialNodeImagery(context, layer, node, parent) {
|
|
|
64
52
|
|
|
65
53
|
// Initialisation
|
|
66
54
|
if (node.layerUpdateState[layer.id] === undefined) {
|
|
67
|
-
node.layerUpdateState[layer.id] = new
|
|
55
|
+
node.layerUpdateState[layer.id] = new LayerUpdateState();
|
|
68
56
|
if (!layer.source.extentInsideLimit(node.extent, zoom)) {
|
|
69
57
|
// we also need to check that tile's parent doesn't have a texture for this layer,
|
|
70
58
|
// because even if this tile is outside of the layer, it could inherit it's
|
|
@@ -118,7 +106,7 @@ function updateLayeredMaterialNodeImagery(context, layer, node, parent) {
|
|
|
118
106
|
}
|
|
119
107
|
const failureParams = node.layerUpdateState[layer.id].failureParams;
|
|
120
108
|
const destinationLevel = extentsDestination[0].zoom || node.level;
|
|
121
|
-
const targetLevel =
|
|
109
|
+
const targetLevel = chooseNextLevelToFetch(layer.updateStrategy.type, node, destinationLevel, nodeLayer.level, layer, failureParams);
|
|
122
110
|
if (!layer.source.isVectorSource && targetLevel <= nodeLayer.level || targetLevel > destinationLevel) {
|
|
123
111
|
if (failureParams.lowestLevelError != Infinity) {
|
|
124
112
|
// this is the highest level found in case of error.
|
|
@@ -144,9 +132,9 @@ function updateLayeredMaterialNodeImagery(context, layer, node, parent) {
|
|
|
144
132
|
const pitchs = extentsDestination.map((ext, i) => ext.offsetToParent(result[i].extent, nodeLayer.offsetScales[i]));
|
|
145
133
|
nodeLayer.setTextures(result, pitchs);
|
|
146
134
|
node.layerUpdateState[layer.id].success();
|
|
147
|
-
}, err => (
|
|
135
|
+
}, err => handlingError(err, node, layer, targetLevel, context.view));
|
|
148
136
|
}
|
|
149
|
-
function updateLayeredMaterialNodeElevation(context, layer, node, parent) {
|
|
137
|
+
export function updateLayeredMaterialNodeElevation(context, layer, node, parent) {
|
|
150
138
|
const material = node.material;
|
|
151
139
|
if (!parent || !material) {
|
|
152
140
|
return;
|
|
@@ -171,7 +159,7 @@ function updateLayeredMaterialNodeElevation(context, layer, node, parent) {
|
|
|
171
159
|
}
|
|
172
160
|
if (node.layerUpdateState[layer.id] === undefined) {
|
|
173
161
|
var _parent$material2;
|
|
174
|
-
node.layerUpdateState[layer.id] = new
|
|
162
|
+
node.layerUpdateState[layer.id] = new LayerUpdateState();
|
|
175
163
|
const parentLayer = (_parent$material2 = parent.material) === null || _parent$material2 === void 0 ? void 0 : _parent$material2.getLayer(layer.id);
|
|
176
164
|
nodeLayer.initFromParent(parentLayer, extentsDestination);
|
|
177
165
|
if (nodeLayer.level >= layer.source.zoom.min) {
|
|
@@ -185,7 +173,7 @@ function updateLayeredMaterialNodeElevation(context, layer, node, parent) {
|
|
|
185
173
|
return;
|
|
186
174
|
}
|
|
187
175
|
const failureParams = node.layerUpdateState[layer.id].failureParams;
|
|
188
|
-
const targetLevel =
|
|
176
|
+
const targetLevel = chooseNextLevelToFetch(layer.updateStrategy.type, node, extentsDestination[0].zoom, nodeLayer.level, layer, failureParams);
|
|
189
177
|
if (targetLevel <= nodeLayer.level || targetLevel > extentsDestination[0].zoom) {
|
|
190
178
|
node.layerUpdateState[layer.id].noMoreUpdatePossible();
|
|
191
179
|
return;
|
|
@@ -215,19 +203,22 @@ function updateLayeredMaterialNodeElevation(context, layer, node, parent) {
|
|
|
215
203
|
const pitchs = extentsDestination.map((ext, i) => ext.offsetToParent(result[i].extent, nodeLayer.offsetScales[i]));
|
|
216
204
|
nodeLayer.setTextures(result, pitchs);
|
|
217
205
|
node.layerUpdateState[layer.id].success();
|
|
218
|
-
}, err => (
|
|
206
|
+
}, err => handlingError(err, node, layer, targetLevel, context.view));
|
|
219
207
|
}
|
|
220
|
-
function removeLayeredMaterialNodeLayer(layerId) {
|
|
208
|
+
export function removeLayeredMaterialNodeLayer(layerId) {
|
|
209
|
+
/**
|
|
210
|
+
* @param {TileMesh} node - The node to udpate.
|
|
211
|
+
*/
|
|
221
212
|
return function (node) {
|
|
222
213
|
var _node$material;
|
|
223
214
|
if ((_node$material = node.material) !== null && _node$material !== void 0 && _node$material.removeLayer) {
|
|
224
|
-
node.material.
|
|
225
|
-
if (node.material.elevationLayerIds[0] == layerId) {
|
|
215
|
+
if (node.material.elevationLayerIds.indexOf(layerId) > -1) {
|
|
226
216
|
node.setBBoxZ({
|
|
227
217
|
min: 0,
|
|
228
218
|
max: 0
|
|
229
219
|
});
|
|
230
220
|
}
|
|
221
|
+
node.material.removeLayer(layerId);
|
|
231
222
|
}
|
|
232
223
|
if (node.layerUpdateState && node.layerUpdateState[layerId]) {
|
|
233
224
|
delete node.layerUpdateState[layerId];
|
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
1
|
function disposeSingleMaterialAndTextures(material) {
|
|
8
2
|
material.dispose();
|
|
9
3
|
// dispose textures
|
|
@@ -14,7 +8,7 @@ function disposeSingleMaterialAndTextures(material) {
|
|
|
14
8
|
}
|
|
15
9
|
}
|
|
16
10
|
}
|
|
17
|
-
|
|
11
|
+
export default {
|
|
18
12
|
/**
|
|
19
13
|
* Cleanup obj to release three.js allocated resources
|
|
20
14
|
* @param {Object3D} obj object to release
|
|
@@ -101,5 +95,4 @@ var _default = {
|
|
|
101
95
|
}
|
|
102
96
|
return toRemove;
|
|
103
97
|
}
|
|
104
|
-
};
|
|
105
|
-
exports.default = _default;
|
|
98
|
+
};
|
|
@@ -1,12 +1,6 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = handlingError;
|
|
7
1
|
// max retry loading before changing the status to definitiveError
|
|
8
2
|
const MAX_RETRY = 4;
|
|
9
|
-
function handlingError(err, node, layer, targetLevel, view) {
|
|
3
|
+
export default function handlingError(err, node, layer, targetLevel, view) {
|
|
10
4
|
// Cancel error handling if the layer was removed between command scheduling and its execution
|
|
11
5
|
if (!node.layerUpdateState[layer.id]) {
|
|
12
6
|
return;
|
|
@@ -1,19 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
exports.default = void 0;
|
|
9
|
-
var THREE = _interopRequireWildcard(require("three"));
|
|
10
|
-
var _B3dmParser = _interopRequireDefault(require("../Parser/B3dmParser"));
|
|
11
|
-
var _PntsParser = _interopRequireDefault(require("../Parser/PntsParser"));
|
|
12
|
-
var _Fetcher = _interopRequireDefault(require("./Fetcher"));
|
|
13
|
-
var _ReferencingLayerProperties = _interopRequireDefault(require("../Layer/ReferencingLayerProperties"));
|
|
14
|
-
var _PointsMaterial = _interopRequireDefault(require("../Renderer/PointsMaterial"));
|
|
15
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
16
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
import B3dmParser from "../Parser/B3dmParser.js";
|
|
3
|
+
import PntsParser from "../Parser/PntsParser.js";
|
|
4
|
+
import GLTFParser from "../Parser/GLTFParser.js";
|
|
5
|
+
import Fetcher from "./Fetcher.js";
|
|
6
|
+
import ReferLayerProperties from "../Layer/ReferencingLayerProperties.js";
|
|
7
|
+
import PointsMaterial from "../Renderer/PointsMaterial.js";
|
|
17
8
|
const utf8Decoder = new TextDecoder();
|
|
18
9
|
function b3dmToMesh(data, layer, url) {
|
|
19
10
|
const urlBase = THREE.LoaderUtils.extractUrlBase(url);
|
|
@@ -22,11 +13,10 @@ function b3dmToMesh(data, layer, url) {
|
|
|
22
13
|
urlBase,
|
|
23
14
|
overrideMaterials: layer.overrideMaterials,
|
|
24
15
|
doNotPatchMaterial: layer.doNotPatchMaterial,
|
|
25
|
-
opacity: layer.opacity,
|
|
26
16
|
registeredExtensions: layer.registeredExtensions,
|
|
27
17
|
layer
|
|
28
18
|
};
|
|
29
|
-
return
|
|
19
|
+
return B3dmParser.parse(data, options).then(result => {
|
|
30
20
|
const batchTable = result.batchTable;
|
|
31
21
|
// object3d is actually a THREE.Scene
|
|
32
22
|
const object3d = result.gltf.scene;
|
|
@@ -36,9 +26,15 @@ function b3dmToMesh(data, layer, url) {
|
|
|
36
26
|
};
|
|
37
27
|
});
|
|
38
28
|
}
|
|
29
|
+
function gltfToMesh(data, layer, url) {
|
|
30
|
+
const urlBase = THREE.LoaderUtils.extractUrlBase(url);
|
|
31
|
+
return GLTFParser.parse(data, urlBase).then(result => ({
|
|
32
|
+
object3d: result.scene
|
|
33
|
+
}));
|
|
34
|
+
}
|
|
39
35
|
function pntsParse(data, layer) {
|
|
40
|
-
return
|
|
41
|
-
const material = layer.material ? layer.material.clone() : new
|
|
36
|
+
return PntsParser.parse(data, layer.registeredExtensions).then(result => {
|
|
37
|
+
const material = layer.material ? layer.material.clone() : new PointsMaterial({
|
|
42
38
|
size: 0.05,
|
|
43
39
|
mode: layer.pntsMode,
|
|
44
40
|
shape: layer.pntsShape,
|
|
@@ -50,7 +46,7 @@ function pntsParse(data, layer) {
|
|
|
50
46
|
|
|
51
47
|
// refer material properties in the layer so when layers opacity and visibility is updated, the material is
|
|
52
48
|
// automatically updated
|
|
53
|
-
(
|
|
49
|
+
ReferLayerProperties(material, layer);
|
|
54
50
|
|
|
55
51
|
// creation points with geometry and material
|
|
56
52
|
const points = new THREE.Points(result.point.geometry, material);
|
|
@@ -63,7 +59,7 @@ function pntsParse(data, layer) {
|
|
|
63
59
|
};
|
|
64
60
|
});
|
|
65
61
|
}
|
|
66
|
-
function configureTile(tile, layer, metadata, parent) {
|
|
62
|
+
export function configureTile(tile, layer, metadata, parent) {
|
|
67
63
|
tile.frustumCulled = false;
|
|
68
64
|
tile.layer = layer;
|
|
69
65
|
|
|
@@ -96,23 +92,31 @@ function executeCommand(command) {
|
|
|
96
92
|
};
|
|
97
93
|
if (path) {
|
|
98
94
|
// Check if we have relative or absolute url (with tileset's lopocs for example)
|
|
99
|
-
|
|
95
|
+
let url = path.startsWith('http') ? path : metadata.baseURL + path;
|
|
96
|
+
if (layer.source.isC3DTilesGoogleSource) {
|
|
97
|
+
url = layer.source.getTileUrl(url);
|
|
98
|
+
}
|
|
100
99
|
const supportedFormats = {
|
|
101
100
|
b3dm: b3dmToMesh,
|
|
102
|
-
pnts: pntsParse
|
|
101
|
+
pnts: pntsParse,
|
|
102
|
+
gltf: gltfToMesh
|
|
103
103
|
};
|
|
104
|
-
return
|
|
104
|
+
return Fetcher.arrayBuffer(url, layer.source.networkOptions).then(result => {
|
|
105
105
|
if (result !== undefined) {
|
|
106
106
|
let func;
|
|
107
107
|
const magic = utf8Decoder.decode(new Uint8Array(result, 0, 4));
|
|
108
108
|
if (magic[0] === '{') {
|
|
109
109
|
result = JSON.parse(utf8Decoder.decode(new Uint8Array(result)));
|
|
110
|
-
|
|
110
|
+
// Another specifics of 3D tiles from Google: tilesets in tilesets are required from the root base
|
|
111
|
+
// url and not from their parent base url
|
|
112
|
+
const newPrefix = layer.source.isC3DTilesGoogleSource ? layer.source.baseUrl : url.slice(0, url.lastIndexOf('/') + 1);
|
|
111
113
|
layer.tileset.extendTileset(result, metadata.tileId, newPrefix, layer.registeredExtensions);
|
|
112
114
|
} else if (magic == 'b3dm') {
|
|
113
115
|
func = supportedFormats.b3dm;
|
|
114
116
|
} else if (magic == 'pnts') {
|
|
115
117
|
func = supportedFormats.pnts;
|
|
118
|
+
} else if (magic == 'glTF') {
|
|
119
|
+
func = supportedFormats.gltf;
|
|
116
120
|
} else {
|
|
117
121
|
return Promise.reject(`Unsupported magic code ${magic}`);
|
|
118
122
|
}
|
|
@@ -137,7 +141,6 @@ function executeCommand(command) {
|
|
|
137
141
|
return Promise.resolve(tile);
|
|
138
142
|
}
|
|
139
143
|
}
|
|
140
|
-
|
|
144
|
+
export default {
|
|
141
145
|
executeCommand
|
|
142
|
-
};
|
|
143
|
-
exports.default = _default;
|
|
146
|
+
};
|
|
@@ -1,15 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
var _default = {
|
|
1
|
+
export default {
|
|
8
2
|
executeCommand(command) {
|
|
9
3
|
const layer = command.layer;
|
|
10
4
|
const src = command.extentsSource;
|
|
11
5
|
const dst = command.extentsDestination || src;
|
|
12
6
|
return Promise.all(src.map((from, i) => layer.getData(from, dst[i])));
|
|
13
7
|
}
|
|
14
|
-
};
|
|
15
|
-
exports.default = _default;
|
|
8
|
+
};
|
package/lib/Provider/Fetcher.js
CHANGED
|
@@ -1,11 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
var _three = require("three");
|
|
8
|
-
const textureLoader = new _three.TextureLoader();
|
|
1
|
+
import { TextureLoader, DataTexture, RedFormat, FloatType } from 'three';
|
|
2
|
+
const textureLoader = new TextureLoader();
|
|
9
3
|
const SIZE_TEXTURE_TILE = 256;
|
|
10
4
|
function checkResponse(response) {
|
|
11
5
|
if (!response.ok) {
|
|
@@ -22,16 +16,10 @@ const arrayBuffer = function (url) {
|
|
|
22
16
|
});
|
|
23
17
|
};
|
|
24
18
|
function getTextureFloat(buffer) {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
texture.needsUpdate = true;
|
|
30
|
-
return texture;
|
|
31
|
-
} else {
|
|
32
|
-
const texture = new _three.DataTexture(buffer, SIZE_TEXTURE_TILE, SIZE_TEXTURE_TILE, _three.AlphaFormat, _three.FloatType);
|
|
33
|
-
return texture;
|
|
34
|
-
}
|
|
19
|
+
const texture = new DataTexture(buffer, SIZE_TEXTURE_TILE, SIZE_TEXTURE_TILE, RedFormat, FloatType);
|
|
20
|
+
texture.internalFormat = 'R32F';
|
|
21
|
+
texture.needsUpdate = true;
|
|
22
|
+
return texture;
|
|
35
23
|
}
|
|
36
24
|
|
|
37
25
|
/**
|
|
@@ -40,7 +28,7 @@ function getTextureFloat(buffer) {
|
|
|
40
28
|
*
|
|
41
29
|
* @module Fetcher
|
|
42
30
|
*/
|
|
43
|
-
|
|
31
|
+
export default {
|
|
44
32
|
/**
|
|
45
33
|
* Wrapper over fetch to get some text.
|
|
46
34
|
*
|
|
@@ -142,7 +130,7 @@ var _default = {
|
|
|
142
130
|
let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
143
131
|
return arrayBuffer(url, options).then(buffer => {
|
|
144
132
|
const floatArray = new Float32Array(buffer);
|
|
145
|
-
const texture = getTextureFloat(floatArray
|
|
133
|
+
const texture = getTextureFloat(floatArray);
|
|
146
134
|
return texture;
|
|
147
135
|
});
|
|
148
136
|
},
|
|
@@ -205,6 +193,36 @@ var _default = {
|
|
|
205
193
|
}
|
|
206
194
|
return Promise.resolve(all);
|
|
207
195
|
});
|
|
196
|
+
},
|
|
197
|
+
get() {
|
|
198
|
+
let format = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
199
|
+
const [type, subtype] = format.split('/');
|
|
200
|
+
switch (type) {
|
|
201
|
+
case 'application':
|
|
202
|
+
switch (subtype) {
|
|
203
|
+
case 'geo+json':
|
|
204
|
+
case 'json':
|
|
205
|
+
return this.json;
|
|
206
|
+
case 'kml':
|
|
207
|
+
case 'gpx':
|
|
208
|
+
return this.xml;
|
|
209
|
+
case 'x-protobuf;type=mapbox-vector':
|
|
210
|
+
case 'gtx':
|
|
211
|
+
return this.arrayBuffer;
|
|
212
|
+
case 'isg':
|
|
213
|
+
case 'gdf':
|
|
214
|
+
default:
|
|
215
|
+
return this.text;
|
|
216
|
+
}
|
|
217
|
+
case 'image':
|
|
218
|
+
switch (subtype) {
|
|
219
|
+
case 'x-bil;bits=32':
|
|
220
|
+
return this.textureFloat;
|
|
221
|
+
default:
|
|
222
|
+
return this.texture;
|
|
223
|
+
}
|
|
224
|
+
default:
|
|
225
|
+
return this.texture;
|
|
226
|
+
}
|
|
208
227
|
}
|
|
209
|
-
};
|
|
210
|
-
exports.default = _default;
|
|
228
|
+
};
|