itowns 2.36.2 → 2.38.1
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/CONTRIBUTING.md +30 -17
- package/README.md +12 -1
- package/changelog.md +138 -0
- package/dist/debug.js +1 -1
- package/dist/debug.js.LICENSE.txt +2 -2
- package/dist/debug.js.map +1 -1
- package/dist/itowns.js +1 -1
- package/dist/itowns.js.LICENSE.txt +2 -2
- package/dist/itowns.js.map +1 -1
- package/dist/itowns_widgets.js +2 -0
- package/dist/itowns_widgets.js.map +1 -0
- package/examples/config.json +28 -6
- package/examples/css/example.css +21 -1
- package/examples/css/widgets.css +360 -0
- package/examples/geoid_geoidLayer.html +102 -0
- package/examples/images/code-logo.svg +43 -0
- package/examples/index.html +5 -5
- package/examples/itowns-potree.html +252 -0
- package/examples/js/GUI/GuiTools.js +17 -0
- package/examples/mars.html +0 -1
- package/examples/misc_orthographic_camera.html +7 -19
- package/examples/source_file_from_fetched_data.html +90 -0
- package/examples/source_file_from_format.html +85 -0
- package/examples/source_file_from_methods.html +87 -0
- package/examples/source_file_from_parsed_data.html +104 -0
- package/examples/source_file_geojson_raster.html +21 -45
- package/examples/source_file_gpx_raster.html +28 -36
- package/examples/source_file_kml_raster.html +1 -4
- package/examples/source_file_shapefile.html +39 -34
- package/examples/source_stream_wfs_25d.html +21 -13
- package/examples/source_stream_wfs_3d.html +21 -12
- package/examples/source_stream_wfs_raster.html +20 -20
- package/examples/vector_tile_3d_mesh.html +155 -0
- package/examples/vector_tile_raster_3d.html +0 -5
- package/examples/view_25d_map.html +6 -19
- package/examples/view_2d_map.html +6 -19
- package/examples/view_3d_map.html +106 -81
- package/examples/view_immersive.html +13 -14
- package/examples/widgets_minimap.html +124 -0
- package/examples/widgets_navigation.html +124 -0
- package/examples/widgets_scale.html +96 -0
- package/examples/widgets_searchbar.html +124 -0
- package/lib/Controls/GlobeControls.js +13 -0
- package/lib/Controls/PlanarControls.js +11 -43
- package/lib/Converter/Feature2Mesh.js +203 -45
- package/lib/Converter/convertToTile.js +13 -4
- package/lib/Core/3DTiles/C3DTBoundingVolume.js +4 -1
- package/lib/Core/Deprecated/Undeprecator.js +1 -1
- package/lib/Core/Feature.js +60 -34
- package/lib/Core/Geographic/Extent.js +1 -1
- package/lib/Core/Geographic/GeoidGrid.js +143 -0
- package/lib/Core/MainLoop.js +137 -63
- package/lib/Core/Math/Ellipsoid.js +1 -1
- package/lib/Core/Prefab/Globe/SkyShader.js +3 -1
- package/lib/Core/Prefab/Planar/PlanarLayer.js +3 -1
- package/lib/Core/Style.js +1 -1
- package/lib/Core/TileGeometry.js +3 -1
- package/lib/Core/TileMesh.js +32 -22
- package/lib/Core/View.js +81 -15
- package/lib/Layer/ElevationLayer.js +6 -2
- package/lib/Layer/FeatureGeometryLayer.js +36 -7
- package/lib/Layer/GeoidLayer.js +142 -0
- package/lib/Layer/GeometryLayer.js +6 -54
- package/lib/Layer/InfoLayer.js +1 -1
- package/lib/Layer/Layer.js +1 -1
- package/lib/Layer/LayerUpdateStrategy.js +1 -1
- package/lib/Layer/OrientedImageLayer.js +1 -0
- package/lib/Layer/PotreeLayer.js +3 -1
- package/lib/Layer/RasterLayer.js +3 -1
- package/lib/Layer/ReferencingLayerProperties.js +50 -0
- package/lib/Layer/TiledGeometryLayer.js +3 -1
- package/lib/Main.js +214 -174
- package/lib/MainBundle.js +1 -1
- package/lib/Parser/B3dmParser.js +5 -3
- package/lib/Parser/GDFParser.js +118 -0
- package/lib/Parser/GTXParser.js +92 -0
- package/lib/Parser/GeoJsonParser.js +29 -7
- package/lib/Parser/ISGParser.js +121 -0
- package/lib/Parser/LASParser.js +3 -1
- package/lib/Parser/VectorTileParser.js +4 -3
- package/lib/Parser/XbilParser.js +1 -1
- package/lib/Parser/deprecated/LegacyGLTFLoader.js +1 -1
- package/lib/Process/3dTilesProcessing.js +2 -2
- package/lib/Process/FeatureProcessing.js +38 -86
- package/lib/Process/LayeredMaterialNodeProcessing.js +16 -7
- package/lib/Process/ObjectRemovalHelper.js +4 -0
- package/lib/Provider/3dTilesProvider.js +2 -7
- package/lib/Provider/Fetcher.js +4 -1
- package/lib/Provider/TileProvider.js +18 -2
- package/lib/Provider/URLBuilder.js +1 -1
- package/lib/Renderer/Camera.js +33 -12
- package/lib/Renderer/ColorLayersOrdering.js +3 -1
- package/lib/Renderer/LayeredMaterial.js +34 -9
- package/lib/Renderer/OBB.js +22 -25
- package/lib/Renderer/OrientedImageMaterial.js +8 -5
- package/lib/Renderer/PointsMaterial.js +6 -6
- package/lib/Renderer/RasterTile.js +1 -1
- package/lib/Renderer/RenderMode.js +3 -1
- package/lib/Renderer/Shader/ShaderChunk.js +5 -1
- package/lib/Renderer/Shader/ShaderUtils.js +4 -2
- package/lib/Renderer/c3DEngine.js +9 -6
- package/lib/Source/C3DTilesSource.js +3 -1
- package/lib/Source/EntwinePointTileSource.js +3 -1
- package/lib/Source/FileSource.js +8 -1
- package/lib/Source/PotreeSource.js +3 -1
- package/lib/Source/Source.js +15 -10
- package/lib/Source/VectorTilesSource.js +5 -0
- package/lib/Source/WFSSource.js +9 -3
- package/lib/Source/WMTSSource.js +3 -1
- package/lib/ThreeExtended/{WebGL.js → capabilities/WebGL.js} +8 -7
- package/lib/ThreeExtended/loaders/GLTFLoader.js +88 -39
- package/lib/Utils/CameraUtils.js +11 -1
- package/lib/Utils/DEMUtils.js +4 -2
- package/lib/Utils/FeaturesUtils.js +8 -4
- package/lib/Utils/gui/Main.js +39 -0
- package/lib/Utils/gui/Minimap.js +197 -0
- package/lib/Utils/gui/Navigation.js +322 -0
- package/lib/Utils/gui/Scale.js +154 -0
- package/lib/Utils/gui/Searchbar.js +299 -0
- package/lib/Utils/gui/Widget.js +119 -0
- package/package.json +32 -27
- package/examples/js/Scale.js +0 -40
|
@@ -2,17 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
4
|
|
|
5
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
-
|
|
7
5
|
Object.defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
10
8
|
exports["default"] = void 0;
|
|
11
9
|
|
|
12
|
-
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
13
|
-
|
|
14
|
-
var THREE = _interopRequireWildcard(require("three"));
|
|
15
|
-
|
|
16
10
|
var _LayerUpdateState = _interopRequireDefault(require("../Layer/LayerUpdateState"));
|
|
17
11
|
|
|
18
12
|
var _ObjectRemovalHelper = _interopRequireDefault(require("./ObjectRemovalHelper"));
|
|
@@ -21,48 +15,9 @@ var _handlerNodeError = _interopRequireDefault(require("./handlerNodeError"));
|
|
|
21
15
|
|
|
22
16
|
var _Coordinates = _interopRequireDefault(require("../Core/Geographic/Coordinates"));
|
|
23
17
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
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; }
|
|
27
|
-
|
|
28
|
-
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
29
|
-
|
|
30
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
31
|
-
|
|
32
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
18
|
+
var _GeoidLayer = require("../Layer/GeoidLayer");
|
|
33
19
|
|
|
34
20
|
var coord = new _Coordinates["default"]('EPSG:4326', 0, 0, 0);
|
|
35
|
-
|
|
36
|
-
function assignLayer(object, layer) {
|
|
37
|
-
if (object) {
|
|
38
|
-
object.layer = layer;
|
|
39
|
-
|
|
40
|
-
if (object.material) {
|
|
41
|
-
object.material.transparent = layer.opacity < 1.0;
|
|
42
|
-
object.material.opacity = layer.opacity;
|
|
43
|
-
object.material.wireframe = layer.wireframe;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
object.layers.set(layer.threejsLayer);
|
|
47
|
-
|
|
48
|
-
var _iterator = _createForOfIteratorHelper(object.children),
|
|
49
|
-
_step;
|
|
50
|
-
|
|
51
|
-
try {
|
|
52
|
-
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
53
|
-
var c = _step.value;
|
|
54
|
-
assignLayer(c, layer);
|
|
55
|
-
}
|
|
56
|
-
} catch (err) {
|
|
57
|
-
_iterator.e(err);
|
|
58
|
-
} finally {
|
|
59
|
-
_iterator.f();
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
return object;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
21
|
var _default = {
|
|
67
22
|
update: function update(context, layer, node) {
|
|
68
23
|
if (!node.parent && node.children.length) {
|
|
@@ -79,22 +34,25 @@ var _default = {
|
|
|
79
34
|
if (node.layerUpdateState[layer.id] === undefined) {
|
|
80
35
|
node.layerUpdateState[layer.id] = new _LayerUpdateState["default"]();
|
|
81
36
|
} else if (!node.layerUpdateState[layer.id].canTryUpdate()) {
|
|
37
|
+
// toggle visibility features
|
|
38
|
+
node.link.forEach(function (f) {
|
|
39
|
+
var _f$layer;
|
|
40
|
+
|
|
41
|
+
if (((_f$layer = f.layer) === null || _f$layer === void 0 ? void 0 : _f$layer.id) == layer.id) {
|
|
42
|
+
f.layer.object3d.add(f);
|
|
43
|
+
f.meshes.position.z = (0, _GeoidLayer.geoidLayerIsVisible)(layer.parent) ? node.geoidHeight : 0;
|
|
44
|
+
f.meshes.updateMatrixWorld();
|
|
45
|
+
}
|
|
46
|
+
});
|
|
82
47
|
return;
|
|
83
48
|
}
|
|
84
49
|
|
|
85
|
-
var features = node.children.filter(function (n) {
|
|
86
|
-
return n.layer == layer;
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
if (features.length > 0) {
|
|
90
|
-
return features;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
50
|
var extentsDestination = node.getExtentsByProjection(layer.source.crs) || [node.extent];
|
|
94
51
|
var zoomDest = extentsDestination[0].zoom; // check if it's tile level is equal to display level layer.
|
|
95
52
|
|
|
96
53
|
if (zoomDest != layer.zoom.min || // check if there's data in extent tile.
|
|
97
|
-
!this.source.extentInsideLimit(node.extent, zoomDest) ||
|
|
54
|
+
!this.source.extentInsideLimit(node.extent, zoomDest) || // In FileSource case, check if the feature center is in extent tile.
|
|
55
|
+
layer.source.isFileSource && !node.extent.isPointInside(layer.source.extent.center(coord))) {
|
|
98
56
|
// if not, there's not data to add at this tile.
|
|
99
57
|
node.layerUpdateState[layer.id].noMoreUpdatePossible();
|
|
100
58
|
return;
|
|
@@ -108,38 +66,32 @@ var _default = {
|
|
|
108
66
|
threejsLayer: layer.threejsLayer,
|
|
109
67
|
requester: node
|
|
110
68
|
};
|
|
111
|
-
return context.scheduler.execute(command).then(function (
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
layer.onMeshCreated
|
|
69
|
+
return context.scheduler.execute(command).then(function (featureMeshes) {
|
|
70
|
+
node.layerUpdateState[layer.id].noMoreUpdatePossible();
|
|
71
|
+
featureMeshes.forEach(function (featureMesh) {
|
|
72
|
+
if (featureMesh) {
|
|
73
|
+
featureMesh.as(context.view.referenceCrs);
|
|
74
|
+
featureMesh.meshes.position.z = (0, _GeoidLayer.geoidLayerIsVisible)(layer.parent) ? node.geoidHeight : 0;
|
|
75
|
+
featureMesh.updateMatrixWorld();
|
|
76
|
+
|
|
77
|
+
if (layer.onMeshCreated) {
|
|
78
|
+
layer.onMeshCreated(featureMesh, context);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
if (!node.parent) {
|
|
82
|
+
// TODO: Clean cache needs a refactory, because it isn't really efficient and used
|
|
83
|
+
_ObjectRemovalHelper["default"].removeChildrenAndCleanupRecursively(layer, featureMesh);
|
|
84
|
+
} else {
|
|
85
|
+
layer.object3d.add(featureMesh);
|
|
86
|
+
node.link.push(featureMesh);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
featureMesh.layer = layer;
|
|
90
|
+
} else {
|
|
91
|
+
// TODO: verify if it's possible the featureMesh is undefined.
|
|
92
|
+
node.layerUpdateState[layer.id].failure(1, true);
|
|
120
93
|
}
|
|
121
|
-
|
|
122
|
-
node.layerUpdateState[layer.id].success();
|
|
123
|
-
|
|
124
|
-
if (!node.parent) {
|
|
125
|
-
_ObjectRemovalHelper["default"].removeChildrenAndCleanupRecursively(layer, result);
|
|
126
|
-
|
|
127
|
-
return;
|
|
128
|
-
} // remove old group layer
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
node.remove.apply(node, (0, _toConsumableArray2["default"])(node.children.filter(function (c) {
|
|
132
|
-
return c.layer && c.layer.id == layer.id;
|
|
133
|
-
})));
|
|
134
|
-
var group = new THREE.Group();
|
|
135
|
-
group.layer = layer;
|
|
136
|
-
group.matrixWorld.copy(node.matrixWorld).invert();
|
|
137
|
-
group.matrixWorld.decompose(group.position, group.quaternion, group.scale);
|
|
138
|
-
node.add(group.add(result));
|
|
139
|
-
group.updateMatrixWorld(true);
|
|
140
|
-
} else {
|
|
141
|
-
node.layerUpdateState[layer.id].failure(1, true);
|
|
142
|
-
}
|
|
94
|
+
});
|
|
143
95
|
}, function (err) {
|
|
144
96
|
return (0, _handlerNodeError["default"])(err, node, layer, node.level, context.view);
|
|
145
97
|
});
|
|
@@ -5,10 +5,10 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.
|
|
9
|
-
exports.updateLayeredMaterialNodeElevation = updateLayeredMaterialNodeElevation;
|
|
8
|
+
exports.SIZE_TEXTURE_TILE = exports.SIZE_DIAGONAL_TEXTURE = void 0;
|
|
10
9
|
exports.removeLayeredMaterialNodeLayer = removeLayeredMaterialNodeLayer;
|
|
11
|
-
exports.
|
|
10
|
+
exports.updateLayeredMaterialNodeElevation = updateLayeredMaterialNodeElevation;
|
|
11
|
+
exports.updateLayeredMaterialNodeImagery = updateLayeredMaterialNodeImagery;
|
|
12
12
|
|
|
13
13
|
var _LayerUpdateStrategy = require("../Layer/LayerUpdateStrategy");
|
|
14
14
|
|
|
@@ -91,10 +91,12 @@ function updateLayeredMaterialNodeImagery(context, layer, node, parent) {
|
|
|
91
91
|
}
|
|
92
92
|
|
|
93
93
|
if (!nodeLayer) {
|
|
94
|
+
var _parent$material;
|
|
95
|
+
|
|
94
96
|
// Create new raster node
|
|
95
97
|
nodeLayer = layer.setupRasterNode(node); // Init the node by parent
|
|
96
98
|
|
|
97
|
-
var parentLayer =
|
|
99
|
+
var parentLayer = (_parent$material = parent.material) === null || _parent$material === void 0 ? void 0 : _parent$material.getLayer(layer.id);
|
|
98
100
|
nodeLayer.initFromParent(parentLayer, extentsDestination);
|
|
99
101
|
} // Proposed new process, two separate processes:
|
|
100
102
|
// * FIRST PASS: initNodeXXXFromParent and get out of the function
|
|
@@ -199,8 +201,10 @@ function updateLayeredMaterialNodeElevation(context, layer, node, parent) {
|
|
|
199
201
|
}
|
|
200
202
|
|
|
201
203
|
if (node.layerUpdateState[layer.id] === undefined) {
|
|
204
|
+
var _parent$material2;
|
|
205
|
+
|
|
202
206
|
node.layerUpdateState[layer.id] = new _LayerUpdateState["default"]();
|
|
203
|
-
var parentLayer = parent.material
|
|
207
|
+
var parentLayer = (_parent$material2 = parent.material) === null || _parent$material2 === void 0 ? void 0 : _parent$material2.getLayer(layer.id);
|
|
204
208
|
nodeLayer.initFromParent(parentLayer, extentsDestination);
|
|
205
209
|
|
|
206
210
|
if (nodeLayer.level >= layer.source.zoom.min) {
|
|
@@ -259,11 +263,16 @@ function updateLayeredMaterialNodeElevation(context, layer, node, parent) {
|
|
|
259
263
|
|
|
260
264
|
function removeLayeredMaterialNodeLayer(layerId) {
|
|
261
265
|
return function (node) {
|
|
262
|
-
|
|
266
|
+
var _node$material;
|
|
267
|
+
|
|
268
|
+
if ((_node$material = node.material) !== null && _node$material !== void 0 && _node$material.removeLayer) {
|
|
263
269
|
node.material.removeLayer(layerId);
|
|
264
270
|
|
|
265
271
|
if (node.material.elevationLayerIds[0] == layerId) {
|
|
266
|
-
node.setBBoxZ(
|
|
272
|
+
node.setBBoxZ({
|
|
273
|
+
min: 0,
|
|
274
|
+
max: 0
|
|
275
|
+
});
|
|
267
276
|
}
|
|
268
277
|
}
|
|
269
278
|
|
|
@@ -32,7 +32,8 @@ function b3dmToMesh(data, layer, url) {
|
|
|
32
32
|
overrideMaterials: layer.overrideMaterials,
|
|
33
33
|
doNotPatchMaterial: layer.doNotPatchMaterial,
|
|
34
34
|
opacity: layer.opacity,
|
|
35
|
-
registeredExtensions: layer.registeredExtensions
|
|
35
|
+
registeredExtensions: layer.registeredExtensions,
|
|
36
|
+
layer: layer
|
|
36
37
|
};
|
|
37
38
|
return _B3dmParser["default"].parse(data, options).then(function (result) {
|
|
38
39
|
var batchTable = result.batchTable; // object3d is actually a THREE.Scene
|
|
@@ -104,12 +105,6 @@ function executeCommand(command) {
|
|
|
104
105
|
obj.layers.set(layer.threejsLayer);
|
|
105
106
|
obj.userData.metadata = metadata;
|
|
106
107
|
obj.layer = layer;
|
|
107
|
-
|
|
108
|
-
if (obj.material) {
|
|
109
|
-
obj.material.transparent = layer.opacity < 1.0;
|
|
110
|
-
obj.material.opacity = layer.opacity;
|
|
111
|
-
obj.material.wireframe = layer.wireframe;
|
|
112
|
-
}
|
|
113
108
|
};
|
|
114
109
|
|
|
115
110
|
if (path) {
|
package/lib/Provider/Fetcher.js
CHANGED
|
@@ -38,9 +38,12 @@ function getTextureFloat(buffer) {
|
|
|
38
38
|
if (isWebGL2) {
|
|
39
39
|
var texture = new _three.DataTexture(buffer, SIZE_TEXTURE_TILE, SIZE_TEXTURE_TILE, _three.RedFormat, _three.FloatType);
|
|
40
40
|
texture.internalFormat = 'R32F';
|
|
41
|
+
texture.needsUpdate = true;
|
|
41
42
|
return texture;
|
|
42
43
|
} else {
|
|
43
|
-
|
|
44
|
+
var _texture = new _three.DataTexture(buffer, SIZE_TEXTURE_TILE, SIZE_TEXTURE_TILE, _three.AlphaFormat, _three.FloatType);
|
|
45
|
+
|
|
46
|
+
return _texture;
|
|
44
47
|
}
|
|
45
48
|
}
|
|
46
49
|
/**
|
|
@@ -9,6 +9,12 @@ exports["default"] = void 0;
|
|
|
9
9
|
|
|
10
10
|
var _CancelledCommandException = _interopRequireDefault(require("../Core/Scheduler/CancelledCommandException"));
|
|
11
11
|
|
|
12
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
13
|
+
|
|
14
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
15
|
+
|
|
16
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
17
|
+
|
|
12
18
|
var _default = {
|
|
13
19
|
executeCommand: function executeCommand(command) {
|
|
14
20
|
var promises = [];
|
|
@@ -20,8 +26,18 @@ var _default = {
|
|
|
20
26
|
return Promise.reject(new _CancelledCommandException["default"](command));
|
|
21
27
|
}
|
|
22
28
|
|
|
23
|
-
|
|
24
|
-
|
|
29
|
+
var _iterator = _createForOfIteratorHelper(extentsSource),
|
|
30
|
+
_step;
|
|
31
|
+
|
|
32
|
+
try {
|
|
33
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
34
|
+
var extent = _step.value;
|
|
35
|
+
promises.push(layer.convert(requester, extent));
|
|
36
|
+
}
|
|
37
|
+
} catch (err) {
|
|
38
|
+
_iterator.e(err);
|
|
39
|
+
} finally {
|
|
40
|
+
_iterator.f();
|
|
25
41
|
}
|
|
26
42
|
|
|
27
43
|
return Promise.all(promises);
|
|
@@ -98,7 +98,7 @@ var _default = {
|
|
|
98
98
|
*
|
|
99
99
|
* @return {string} the formed url
|
|
100
100
|
*/
|
|
101
|
-
bbox: function
|
|
101
|
+
bbox: function (bbox, source) {
|
|
102
102
|
var precision = source.crs == 'EPSG:4326' ? 9 : 2;
|
|
103
103
|
bbox.as(source.crs, extent);
|
|
104
104
|
var w = extent.west.toFixed(precision);
|
package/lib/Renderer/Camera.js
CHANGED
|
@@ -13,6 +13,10 @@ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/cl
|
|
|
13
13
|
|
|
14
14
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
15
15
|
|
|
16
|
+
var _classPrivateFieldGet2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldGet"));
|
|
17
|
+
|
|
18
|
+
var _classPrivateFieldSet2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldSet"));
|
|
19
|
+
|
|
16
20
|
var THREE = _interopRequireWildcard(require("three"));
|
|
17
21
|
|
|
18
22
|
var _Coordinates = _interopRequireDefault(require("../Core/Geographic/Coordinates"));
|
|
@@ -23,6 +27,10 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
23
27
|
|
|
24
28
|
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; }
|
|
25
29
|
|
|
30
|
+
function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
|
|
31
|
+
|
|
32
|
+
function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
|
|
33
|
+
|
|
26
34
|
/**
|
|
27
35
|
* @typedef {object} Camera~CAMERA_TYPE
|
|
28
36
|
* Stores the different types of camera usable in iTowns.
|
|
@@ -97,6 +105,10 @@ function updatePreSse(camera, height, fov) {
|
|
|
97
105
|
*/
|
|
98
106
|
|
|
99
107
|
|
|
108
|
+
var _viewMatrixNeedsUpdate = /*#__PURE__*/new WeakMap();
|
|
109
|
+
|
|
110
|
+
var _viewMatrix = /*#__PURE__*/new WeakMap();
|
|
111
|
+
|
|
100
112
|
var Camera = /*#__PURE__*/function () {
|
|
101
113
|
/**
|
|
102
114
|
* @param {string} crs The camera's coordinate projection system.
|
|
@@ -112,10 +124,22 @@ var Camera = /*#__PURE__*/function () {
|
|
|
112
124
|
* @constructor
|
|
113
125
|
*/
|
|
114
126
|
function Camera(crs, width, height) {
|
|
115
|
-
var _this
|
|
127
|
+
var _this$camera3D$aspect,
|
|
128
|
+
_this = this;
|
|
116
129
|
|
|
117
130
|
var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
|
|
118
131
|
(0, _classCallCheck2["default"])(this, Camera);
|
|
132
|
+
|
|
133
|
+
_classPrivateFieldInitSpec(this, _viewMatrixNeedsUpdate, {
|
|
134
|
+
writable: true,
|
|
135
|
+
value: true
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
_classPrivateFieldInitSpec(this, _viewMatrix, {
|
|
139
|
+
writable: true,
|
|
140
|
+
value: new THREE.Matrix4()
|
|
141
|
+
});
|
|
142
|
+
|
|
119
143
|
this.crs = crs;
|
|
120
144
|
|
|
121
145
|
if (options.isCamera) {
|
|
@@ -136,11 +160,9 @@ var Camera = /*#__PURE__*/function () {
|
|
|
136
160
|
}
|
|
137
161
|
}
|
|
138
162
|
|
|
139
|
-
this.camera3D.aspect = this.camera3D.aspect !==
|
|
140
|
-
this._viewMatrix = new THREE.Matrix4();
|
|
163
|
+
this.camera3D.aspect = (_this$camera3D$aspect = this.camera3D.aspect) !== null && _this$camera3D$aspect !== void 0 ? _this$camera3D$aspect : 1;
|
|
141
164
|
this.width = width;
|
|
142
165
|
this.height = height;
|
|
143
|
-
this._viewMatrixNeedsUpdate = true;
|
|
144
166
|
this.resize(width, height);
|
|
145
167
|
this._preSSE = Infinity;
|
|
146
168
|
|
|
@@ -189,7 +211,7 @@ var Camera = /*#__PURE__*/function () {
|
|
|
189
211
|
|
|
190
212
|
if (this.camera3D.updateProjectionMatrix) {
|
|
191
213
|
this.camera3D.updateProjectionMatrix();
|
|
192
|
-
this
|
|
214
|
+
(0, _classPrivateFieldSet2["default"])(this, _viewMatrixNeedsUpdate, true);
|
|
193
215
|
}
|
|
194
216
|
}
|
|
195
217
|
}, {
|
|
@@ -197,7 +219,7 @@ var Camera = /*#__PURE__*/function () {
|
|
|
197
219
|
value: function update() {
|
|
198
220
|
// update matrix
|
|
199
221
|
this.camera3D.updateMatrixWorld();
|
|
200
|
-
this
|
|
222
|
+
(0, _classPrivateFieldSet2["default"])(this, _viewMatrixNeedsUpdate, true);
|
|
201
223
|
}
|
|
202
224
|
/**
|
|
203
225
|
* Return the position in the requested CRS, or in camera's CRS if undefined.
|
|
@@ -232,18 +254,17 @@ var Camera = /*#__PURE__*/function () {
|
|
|
232
254
|
}, {
|
|
233
255
|
key: "isSphereVisible",
|
|
234
256
|
value: function isSphereVisible(sphere, matrixWorld) {
|
|
235
|
-
if (this
|
|
257
|
+
if ((0, _classPrivateFieldGet2["default"])(this, _viewMatrixNeedsUpdate)) {
|
|
236
258
|
// update visibility testing matrix
|
|
237
|
-
this
|
|
238
|
-
|
|
239
|
-
this._viewMatrixNeedsUpdate = false;
|
|
259
|
+
(0, _classPrivateFieldGet2["default"])(this, _viewMatrix).multiplyMatrices(this.camera3D.projectionMatrix, this.camera3D.matrixWorldInverse);
|
|
260
|
+
(0, _classPrivateFieldSet2["default"])(this, _viewMatrixNeedsUpdate, false);
|
|
240
261
|
}
|
|
241
262
|
|
|
242
263
|
if (matrixWorld) {
|
|
243
|
-
tmp.matrix.multiplyMatrices(this
|
|
264
|
+
tmp.matrix.multiplyMatrices((0, _classPrivateFieldGet2["default"])(this, _viewMatrix), matrixWorld);
|
|
244
265
|
tmp.frustum.setFromProjectionMatrix(tmp.matrix);
|
|
245
266
|
} else {
|
|
246
|
-
tmp.frustum.setFromProjectionMatrix(this
|
|
267
|
+
tmp.frustum.setFromProjectionMatrix((0, _classPrivateFieldGet2["default"])(this, _viewMatrix));
|
|
247
268
|
}
|
|
248
269
|
|
|
249
270
|
return tmp.frustum.intersectsSphere(sphere);
|
|
@@ -17,7 +17,9 @@ function updateLayersOrdering(geometryLayer, imageryLayers) {
|
|
|
17
17
|
var sequence = _Layer.ImageryLayers.getColorLayersIdOrderedBySequence(imageryLayers);
|
|
18
18
|
|
|
19
19
|
var cO = function (object) {
|
|
20
|
-
|
|
20
|
+
var _object$material;
|
|
21
|
+
|
|
22
|
+
if ((_object$material = object.material) !== null && _object$material !== void 0 && _object$material.setSequence) {
|
|
21
23
|
object.material.setSequence(sequence);
|
|
22
24
|
}
|
|
23
25
|
};
|
|
@@ -7,9 +7,9 @@ var _typeof = require("@babel/runtime/helpers/typeof");
|
|
|
7
7
|
Object.defineProperty(exports, "__esModule", {
|
|
8
8
|
value: true
|
|
9
9
|
});
|
|
10
|
-
exports.
|
|
10
|
+
exports["default"] = exports.colorLayerEffects = exports.ELEVATION_MODES = void 0;
|
|
11
11
|
exports.getMaxColorSamplerUnitsCount = getMaxColorSamplerUnitsCount;
|
|
12
|
-
exports
|
|
12
|
+
exports.unpack1K = unpack1K;
|
|
13
13
|
|
|
14
14
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
15
15
|
|
|
@@ -23,6 +23,10 @@ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime
|
|
|
23
23
|
|
|
24
24
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
25
25
|
|
|
26
|
+
var _classPrivateFieldSet2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldSet"));
|
|
27
|
+
|
|
28
|
+
var _classPrivateFieldGet2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldGet"));
|
|
29
|
+
|
|
26
30
|
var THREE = _interopRequireWildcard(require("three"));
|
|
27
31
|
|
|
28
32
|
var _ShaderUtils = _interopRequireDefault(require("./Shader/ShaderUtils"));
|
|
@@ -41,6 +45,10 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
|
|
|
41
45
|
|
|
42
46
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
43
47
|
|
|
48
|
+
function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
|
|
49
|
+
|
|
50
|
+
function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
|
|
51
|
+
|
|
44
52
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
45
53
|
|
|
46
54
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
@@ -48,7 +56,7 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
|
|
|
48
56
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
49
57
|
|
|
50
58
|
/* babel-plugin-inline-import './Shader/TileVS.glsl' */
|
|
51
|
-
var TileVS = "#include <itowns/WebGL2_pars_vertex>\n#include <itowns/precision_qualifier>\n#include <common>\n#include <itowns/project_pars_vertex>\n#include <itowns/elevation_pars_vertex>\n#include <logdepthbuf_pars_vertex>\nattribute vec2 uv_0;\n#if NUM_CRS > 1\nattribute float uv_1;\n#endif\nattribute vec3 normal;\n\nuniform mat4 modelMatrix;\nuniform bool lightingEnabled;\nvarying vec2 vHighPrecisionZW;\n\n#if MODE == MODE_FINAL\n#include <fog_pars_vertex>\nvarying vec3 vUv;\nvarying vec3 vNormal;\n#endif\nvoid main() {\n vec2 uv = vec2(uv_0.x, 1.0 - uv_0.y);\n\n #include <begin_vertex>\n #include <itowns/elevation_vertex>\n #include <project_vertex>\n #include <logdepthbuf_vertex>\n vHighPrecisionZW = gl_Position.zw;\n#if MODE == MODE_FINAL\n #include <fog_vertex>\n #if NUM_CRS > 1\n vUv = vec3(uv_0, (uv_1 > 0.) ? uv_1 : uv_0.y); // set uv_1 = uv_0 if uv_1 is undefined\n #else\n vUv = vec3(uv_0, 0.0);\n #endif\n vNormal = normalize ( mat3( modelMatrix[0].xyz, modelMatrix[1].xyz, modelMatrix[2].xyz ) * normal );\n#endif\n}\n";
|
|
59
|
+
var TileVS = "#include <itowns/WebGL2_pars_vertex>\n#include <itowns/precision_qualifier>\n#include <common>\n#include <itowns/project_pars_vertex>\n#include <itowns/elevation_pars_vertex>\n#include <logdepthbuf_pars_vertex>\nattribute vec2 uv_0;\n#if NUM_CRS > 1\nattribute float uv_1;\n#endif\nattribute vec3 normal;\n\nuniform mat4 modelMatrix;\nuniform bool lightingEnabled;\nvarying vec2 vHighPrecisionZW;\n\n#if MODE == MODE_FINAL\n#include <fog_pars_vertex>\nvarying vec3 vUv;\nvarying vec3 vNormal;\n#endif\nvoid main() {\n vec2 uv = vec2(uv_0.x, 1.0 - uv_0.y);\n\n #include <begin_vertex>\n #include <itowns/elevation_vertex>\n #include <itowns/geoid_vertex>\n #include <project_vertex>\n #include <logdepthbuf_vertex>\n vHighPrecisionZW = gl_Position.zw;\n#if MODE == MODE_FINAL\n #include <fog_vertex>\n #if NUM_CRS > 1\n vUv = vec3(uv_0, (uv_1 > 0.) ? uv_1 : uv_0.y); // set uv_1 = uv_0 if uv_1 is undefined\n #else\n vUv = vec3(uv_0, 0.0);\n #endif\n vNormal = normalize ( mat3( modelMatrix[0].xyz, modelMatrix[1].xyz, modelMatrix[2].xyz ) * normal );\n#endif\n}\n";
|
|
52
60
|
|
|
53
61
|
/* babel-plugin-inline-import './Shader/TileFS.glsl' */
|
|
54
62
|
var TileFS = "#include <itowns/WebGL2_pars_fragment>\n#include <itowns/precision_qualifier>\n#include <logdepthbuf_pars_fragment>\n#include <itowns/pitUV>\n#include <itowns/color_layers_pars_fragment>\n#if MODE == MODE_FINAL\n#include <itowns/fog_pars_fragment>\n#include <itowns/overlay_pars_fragment>\n#include <itowns/lighting_pars_fragment>\n#endif\n#include <itowns/mode_pars_fragment>\n\nuniform vec3 diffuse;\nuniform float opacity;\nvarying vec3 vUv; // uv_0.x/uv_1.x, uv_0.y, uv_1.y\nvarying vec2 vHighPrecisionZW;\n\nvoid main() {\n #include <logdepthbuf_fragment>\n\n#if MODE == MODE_ID\n\n #include <itowns/mode_id_fragment>\n\n#elif MODE == MODE_DEPTH\n\n #include <itowns/mode_depth_fragment>\n\n#else\n\n gl_FragColor = vec4(diffuse, opacity);\n\n uvs[0] = vec3(vUv.xy, 0.);\n\n#if NUM_CRS > 1\n uvs[1] = vec3(vUv.x, fract(vUv.z), floor(vUv.z));\n#endif\n\n vec4 color;\n #pragma unroll_loop\n for ( int i = 0; i < NUM_FS_TEXTURES; i ++ ) {\n color = getLayerColor( i , colorTextures[ i ], colorOffsetScales[ i ], colorLayers[ i ]);\n gl_FragColor.rgb = mix(gl_FragColor.rgb, color.rgb, color.a);\n }\n\n #if defined(DEBUG)\n if (showOutline) {\n #pragma unroll_loop\n for ( int i = 0; i < NUM_CRS; i ++) {\n color = getOutlineColor( outlineColors[ i ], uvs[ i ].xy);\n gl_FragColor.rgb = mix(gl_FragColor.rgb, color.rgb, color.a);\n }\n }\n #endif\n\n #include <itowns/fog_fragment>\n #include <itowns/lighting_fragment>\n #include <itowns/overlay_fragment>\n\n#endif\n}\n";
|
|
@@ -150,6 +158,8 @@ exports.ELEVATION_MODES = ELEVATION_MODES;
|
|
|
150
158
|
var nbSamplers;
|
|
151
159
|
var fragmentShader = [];
|
|
152
160
|
|
|
161
|
+
var _visible = /*#__PURE__*/new WeakMap();
|
|
162
|
+
|
|
153
163
|
var LayeredMaterial = /*#__PURE__*/function (_THREE$RawShaderMater) {
|
|
154
164
|
(0, _inherits2["default"])(LayeredMaterial, _THREE$RawShaderMater);
|
|
155
165
|
|
|
@@ -162,6 +172,12 @@ var LayeredMaterial = /*#__PURE__*/function (_THREE$RawShaderMater) {
|
|
|
162
172
|
var crsCount = arguments.length > 1 ? arguments[1] : undefined;
|
|
163
173
|
(0, _classCallCheck2["default"])(this, LayeredMaterial);
|
|
164
174
|
_this = _super.call(this, options);
|
|
175
|
+
|
|
176
|
+
_classPrivateFieldInitSpec((0, _assertThisInitialized2["default"])(_this), _visible, {
|
|
177
|
+
writable: true,
|
|
178
|
+
value: true
|
|
179
|
+
});
|
|
180
|
+
|
|
165
181
|
nbSamplers = nbSamplers || [samplersElevationCount, getMaxColorSamplerUnitsCount()];
|
|
166
182
|
_this.defines.NUM_VS_TEXTURES = nbSamplers[0];
|
|
167
183
|
_this.defines.NUM_FS_TEXTURES = nbSamplers[1];
|
|
@@ -201,7 +217,9 @@ var LayeredMaterial = /*#__PURE__*/function (_THREE$RawShaderMater) {
|
|
|
201
217
|
|
|
202
218
|
_CommonMaterial["default"].setUniformProperty((0, _assertThisInitialized2["default"])(_this), 'overlayColor', new THREE.Color(1.0, 0.3, 0.0));
|
|
203
219
|
|
|
204
|
-
_CommonMaterial["default"].setUniformProperty((0, _assertThisInitialized2["default"])(_this), 'objectId', 0);
|
|
220
|
+
_CommonMaterial["default"].setUniformProperty((0, _assertThisInitialized2["default"])(_this), 'objectId', 0);
|
|
221
|
+
|
|
222
|
+
_CommonMaterial["default"].setUniformProperty((0, _assertThisInitialized2["default"])(_this), 'geoidHeight', 0.0); // > 0 produces gaps,
|
|
205
223
|
// < 0 causes oversampling of textures
|
|
206
224
|
// = 0 causes sampling artefacts due to bad estimation of texture-uv gradients
|
|
207
225
|
// best is a small negative number
|
|
@@ -222,16 +240,23 @@ var LayeredMaterial = /*#__PURE__*/function (_THREE$RawShaderMater) {
|
|
|
222
240
|
_this.uniforms.colorLayers = new THREE.Uniform(new Array(nbSamplers[1]).fill(defaultStructLayer));
|
|
223
241
|
_this.uniforms.colorTextures = new THREE.Uniform(new Array(nbSamplers[1]).fill(defaultTex));
|
|
224
242
|
_this.uniforms.colorOffsetScales = new THREE.Uniform(new Array(nbSamplers[1]).fill(identityOffsetScale));
|
|
225
|
-
_this.uniforms.colorTextureCount = new THREE.Uniform(0);
|
|
226
|
-
var _visible = _this.visible; // can't do an ES6 setter/getter here
|
|
243
|
+
_this.uniforms.colorTextureCount = new THREE.Uniform(0); // can't do an ES6 setter/getter here
|
|
227
244
|
|
|
228
245
|
Object.defineProperty((0, _assertThisInitialized2["default"])(_this), 'visible', {
|
|
246
|
+
// Knowing the visibility of a `LayeredMaterial` is useful. For example in a
|
|
247
|
+
// `GlobeView`, if you zoom in, "parent" tiles seems hidden; in fact, there
|
|
248
|
+
// are not, it is only their material (so `LayeredMaterial`) that is set to
|
|
249
|
+
// not visible.
|
|
250
|
+
// Adding an event when changing this property can be useful to hide others
|
|
251
|
+
// things, like in `TileDebug`, or in later PR to come (#1303 for example).
|
|
252
|
+
//
|
|
253
|
+
// TODO : verify if there is a better mechanism to avoid this event
|
|
229
254
|
get: function get() {
|
|
230
|
-
return _visible;
|
|
255
|
+
return (0, _classPrivateFieldGet2["default"])(this, _visible);
|
|
231
256
|
},
|
|
232
257
|
set: function set(v) {
|
|
233
|
-
if (_visible != v) {
|
|
234
|
-
_visible
|
|
258
|
+
if ((0, _classPrivateFieldGet2["default"])(this, _visible) != v) {
|
|
259
|
+
(0, _classPrivateFieldSet2["default"])(this, _visible, v);
|
|
235
260
|
this.dispatchEvent({
|
|
236
261
|
type: v ? 'shown' : 'hidden'
|
|
237
262
|
});
|
package/lib/Renderer/OBB.js
CHANGED
|
@@ -13,8 +13,6 @@ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/cl
|
|
|
13
13
|
|
|
14
14
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
15
15
|
|
|
16
|
-
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
17
|
-
|
|
18
16
|
var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
|
|
19
17
|
|
|
20
18
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
@@ -78,7 +76,7 @@ var OBB = /*#__PURE__*/function (_THREE$Object3D) {
|
|
|
78
76
|
max: 0,
|
|
79
77
|
scale: 1.0
|
|
80
78
|
};
|
|
81
|
-
return
|
|
79
|
+
return _this;
|
|
82
80
|
}
|
|
83
81
|
/**
|
|
84
82
|
* Creates a new instance of the object with same properties than original.
|
|
@@ -121,32 +119,28 @@ var OBB = /*#__PURE__*/function (_THREE$Object3D) {
|
|
|
121
119
|
this.updateMatrixWorld(true);
|
|
122
120
|
}
|
|
123
121
|
/**
|
|
124
|
-
* Update z min and z
|
|
122
|
+
* Update z min, z max and z scale of oriented bounding box
|
|
125
123
|
*
|
|
126
|
-
* @param {
|
|
127
|
-
* @param {number}
|
|
128
|
-
* @param {number}
|
|
124
|
+
* @param {Object} [elevation={}]
|
|
125
|
+
* @param {number} [elevation.min] The minimum of oriented bounding box
|
|
126
|
+
* @param {number} [elevation.max] The maximum of oriented bounding box
|
|
127
|
+
* @param {number} [elevation.scale] The scale of oriented bounding box Z axis
|
|
128
|
+
* @param {number} [elevation.geoidHeight] The geoid height added to ellipsoid.
|
|
129
129
|
*/
|
|
130
130
|
|
|
131
131
|
}, {
|
|
132
132
|
key: "updateZ",
|
|
133
|
-
value: function updateZ(
|
|
134
|
-
var
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
this.box3D.
|
|
143
|
-
|
|
144
|
-
}, {
|
|
145
|
-
key: "updateScaleZ",
|
|
146
|
-
value: function updateScaleZ(scale) {
|
|
147
|
-
if (scale > 0) {
|
|
148
|
-
this.updateZ(this.z.min, this.z.max, scale);
|
|
149
|
-
}
|
|
133
|
+
value: function updateZ() {
|
|
134
|
+
var _elevation$min, _elevation$max;
|
|
135
|
+
|
|
136
|
+
var elevation = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
137
|
+
this.z.min = (_elevation$min = elevation.min) !== null && _elevation$min !== void 0 ? _elevation$min : this.z.min;
|
|
138
|
+
this.z.max = (_elevation$max = elevation.max) !== null && _elevation$max !== void 0 ? _elevation$max : this.z.max;
|
|
139
|
+
this.z.scale = elevation.scale > 0 ? elevation.scale : this.z.scale;
|
|
140
|
+
this.z.delta = Math.abs(this.z.max - this.z.min) * this.z.scale;
|
|
141
|
+
var geoidHeight = elevation.geoidHeight || 0;
|
|
142
|
+
this.box3D.min.z = this.natBox.min.z + this.z.min * this.z.scale + geoidHeight;
|
|
143
|
+
this.box3D.max.z = this.natBox.max.z + this.z.max * this.z.scale + geoidHeight;
|
|
150
144
|
}
|
|
151
145
|
/**
|
|
152
146
|
* Determines if the sphere is above the XY space of the box
|
|
@@ -200,7 +194,10 @@ var OBB = /*#__PURE__*/function (_THREE$Object3D) {
|
|
|
200
194
|
obb.box3D.copy(geometry.boundingBox);
|
|
201
195
|
obb.natBox.copy(geometry.boundingBox);
|
|
202
196
|
this.copy(obb);
|
|
203
|
-
this.updateZ(
|
|
197
|
+
this.updateZ({
|
|
198
|
+
min: minHeight,
|
|
199
|
+
max: maxHeight
|
|
200
|
+
});
|
|
204
201
|
this.position.copy(position);
|
|
205
202
|
this.quaternion.copy(quaternion);
|
|
206
203
|
this.updateMatrixWorld(true);
|