From a739d146d6766a6a927ba584022cb3ffd5b14f81 Mon Sep 17 00:00:00 2001 From: "clement.colin" Date: Fri, 14 Mar 2025 14:52:38 +0100 Subject: [PATCH 1/5] fix: tile subdivision deleted from queue --- packages/Main/src/Layer/TiledGeometryLayer.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/Main/src/Layer/TiledGeometryLayer.js b/packages/Main/src/Layer/TiledGeometryLayer.js index 1502e50a7a..81081ccb26 100644 --- a/packages/Main/src/Layer/TiledGeometryLayer.js +++ b/packages/Main/src/Layer/TiledGeometryLayer.js @@ -441,7 +441,13 @@ class TiledGeometryLayer extends GeometryLayer { redraw: false, }; - return context.scheduler.execute(command).then((children) => { + const promises = []; + + for (const extent of extents) { + promises.push(this.convert(node, extent)); + } + + return Promise.all(promises).then((children) => { for (const child of children) { node.add(child); child.updateMatrixWorld(true); From 7dfdc2859cc6ae26c5d5f275586978afdce48101 Mon Sep 17 00:00:00 2001 From: "clement.colin" Date: Fri, 14 Mar 2025 14:57:39 +0100 Subject: [PATCH 2/5] fix: tile subdivision deleted from queue --- packages/Main/src/Layer/TiledGeometryLayer.js | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/packages/Main/src/Layer/TiledGeometryLayer.js b/packages/Main/src/Layer/TiledGeometryLayer.js index 81081ccb26..4a925df5d8 100644 --- a/packages/Main/src/Layer/TiledGeometryLayer.js +++ b/packages/Main/src/Layer/TiledGeometryLayer.js @@ -430,17 +430,6 @@ class TiledGeometryLayer extends GeometryLayer { // TODO: pendingSubdivision mechanism is fragile, get rid of it node.pendingSubdivision = true; - const command = { - /* mandatory */ - view: context.view, - requester: node, - layer: this, - priority: 10000, - /* specific params */ - extentsSource: extents, - redraw: false, - }; - const promises = []; for (const extent of extents) { From cf9e590a918d278fbcc8c5aedcbe686d0d7281c3 Mon Sep 17 00:00:00 2001 From: "clement.colin" Date: Fri, 14 Mar 2025 15:05:40 +0100 Subject: [PATCH 3/5] fix: delete TileProvider and ref in scheduler --- packages/Main/src/Core/Scheduler/Scheduler.js | 2 -- packages/Main/src/Provider/TileProvider.js | 21 ------------------- 2 files changed, 23 deletions(-) delete mode 100644 packages/Main/src/Provider/TileProvider.js diff --git a/packages/Main/src/Core/Scheduler/Scheduler.js b/packages/Main/src/Core/Scheduler/Scheduler.js index 85af30d339..2dd8265cf2 100644 --- a/packages/Main/src/Core/Scheduler/Scheduler.js +++ b/packages/Main/src/Core/Scheduler/Scheduler.js @@ -6,7 +6,6 @@ import PriorityQueue from 'js-priority-queue'; import DataSourceProvider from 'Provider/DataSourceProvider'; -import TileProvider from 'Provider/TileProvider'; import $3dTilesProvider from 'Provider/3dTilesProvider'; import PointCloudProvider from 'Provider/PointCloudProvider'; import URLBuilder from 'Provider/URLBuilder'; @@ -122,7 +121,6 @@ Scheduler.prototype.constructor = Scheduler; Scheduler.prototype.initDefaultProviders = function initDefaultProviders() { // Register all providers - this.addProtocolProvider('tile', TileProvider); this.addProtocolProvider('3d-tiles', $3dTilesProvider); this.addProtocolProvider('pointcloud', PointCloudProvider); }; diff --git a/packages/Main/src/Provider/TileProvider.js b/packages/Main/src/Provider/TileProvider.js deleted file mode 100644 index 65ebffcd56..0000000000 --- a/packages/Main/src/Provider/TileProvider.js +++ /dev/null @@ -1,21 +0,0 @@ -import CancelledCommandException from 'Core/Scheduler/CancelledCommandException'; - -export default { - executeCommand(command) { - const promises = []; - const layer = command.layer; - const requester = command.requester; - const extentsSource = command.extentsSource; - - if (requester && - !requester.material) { - return Promise.reject(new CancelledCommandException(command)); - } - - for (const extent of extentsSource) { - promises.push(layer.convert(requester, extent)); - } - - return Promise.all(promises); - }, -}; From 36704220b8c9d294478a792044fdf540877da1e6 Mon Sep 17 00:00:00 2001 From: "clement.colin" Date: Fri, 14 Mar 2025 15:17:02 +0100 Subject: [PATCH 4/5] fix: references of TileProvider --- packages/Main/src/Utils/DEMUtils.js | 2 +- packages/Main/test/unit/dataSourceProvider.js | 19 --------------- packages/Main/test/unit/tilemesh.js | 24 ------------------- 3 files changed, 1 insertion(+), 44 deletions(-) diff --git a/packages/Main/src/Utils/DEMUtils.js b/packages/Main/src/Utils/DEMUtils.js index 5bb8bfa077..6d36e37798 100644 --- a/packages/Main/src/Utils/DEMUtils.js +++ b/packages/Main/src/Utils/DEMUtils.js @@ -242,7 +242,7 @@ function _readZCorrect(layer, texture, uv, tileDimensions, tileOwnerDimensions) // 'modulo' is the gap (in [0, 1]) between 2 successive vertices in the geometry // e.g if you have 5 vertices, the only possible values for u (or v) are: 0, 0.25, 0.5, 0.75, 1 // so modulo would be 0.25 - // note: currently the number of segments is hard-coded to 16 (see TileProvider) => 17 vertices + // note: currently the number of segments is hard-coded to 16 (see TileBuilder) => 17 vertices const modulo = (tileDimensions.x / tileOwnerDimensions.x) / (17 - 1); let u = Math.floor(uv.x / modulo) * modulo; let v = Math.floor(uv.y / modulo) * modulo; diff --git a/packages/Main/test/unit/dataSourceProvider.js b/packages/Main/test/unit/dataSourceProvider.js index 8b2d89b6d3..f0802c5ac6 100644 --- a/packages/Main/test/unit/dataSourceProvider.js +++ b/packages/Main/test/unit/dataSourceProvider.js @@ -8,7 +8,6 @@ import { globalExtentTMS } from 'Core/Tile/TileGrid'; import OBB from 'Renderer/OBB'; import DataSourceProvider from 'Provider/DataSourceProvider'; import Fetcher from 'Provider/Fetcher'; -import TileProvider from 'Provider/TileProvider'; import WMTSSource from 'Source/WMTSSource'; import WMSSource from 'Source/WMSSource'; import WFSSource from 'Source/WFSSource'; @@ -210,24 +209,6 @@ describe('Provide in Sources', function () { }).catch(done); }); - it('should get 4 TileMesh from TileProvider', (done) => { - const tile = new TileMesh(geom, material, planarlayer, extent, zoom); - material.visible = true; - nodeLayer.level = EMPTY_TEXTURE_ZOOM; - tile.parent = { }; - - planarlayer.subdivideNode(context, tile); - TileProvider.executeCommand(context.scheduler.commands[0]) - .then((tiles) => { - assert.equal(tiles.length, 4); - assert.equal(tiles[0].extent.west, tile.extent.east * 0.5); - assert.equal(tiles[0].extent.east, tile.extent.east); - assert.equal(tiles[0].extent.north, tile.extent.north); - assert.equal(tiles[0].extent.south, tile.extent.north * 0.5); - done(); - }).catch(done); - }); - it('should get 3 meshs with WFS source and DataSourceProvider', (done) => { const tile = new TileMesh(geom, material, planarlayer, extent, featureLayer.zoom.min); material.visible = true; diff --git a/packages/Main/test/unit/tilemesh.js b/packages/Main/test/unit/tilemesh.js index aea00caef4..218c996602 100644 --- a/packages/Main/test/unit/tilemesh.js +++ b/packages/Main/test/unit/tilemesh.js @@ -5,7 +5,6 @@ import TileMesh from 'Core/TileMesh'; import PlanarLayer from 'Core/Prefab/Planar/PlanarLayer'; import Tile from 'Core/Tile/Tile'; import { globalExtentTMS } from 'Core/Tile/TileGrid'; -import TileProvider from 'Provider/TileProvider'; import { newTileGeometry } from 'Core/Prefab/TileBuilder'; import OBB from 'Renderer/OBB'; import ElevationLayer from 'Layer/ElevationLayer'; @@ -65,17 +64,6 @@ describe('TileMesh', function () { assert.equal(res, tree[1][0]); }); - it('subdivide tile by 4 tiles', function (done) { - const tile = planarlayer.object3d.children[0]; - planarlayer.subdivideNode(context, tile); - const command = context.scheduler.commands[0]; - TileProvider.executeCommand(command).then((tiles) => { - context.scheduler.commands = []; - assert.equal(tiles.length, 4); - done(); - }); - }); - it('Choose the right typed Array', function (done) { const paramsGeometry = { extent: planarlayer.object3d.children[0].extent, @@ -100,18 +88,6 @@ describe('TileMesh', function () { Promise.all([a, b]).then(() => done()); }); - it('catch error when subdivide tile without material', function (done) { - const tile = planarlayer.object3d.children[0]; - tile.pendingSubdivision = false; - tile.material = undefined; - planarlayer.subdivideNode(context, tile); - const command = context.scheduler.commands[0]; - TileProvider.executeCommand(command).catch((error) => { - assert.ok(error.isCancelledCommandException); - done(); - }); - }); - it('should find the correct common ancestor between two tiles of different level', function () { const res = tree[2][0].findCommonAncestor(tree[3][4]); assert.equal(res, tree[1][0]); From 7d21a952490ab3922070a42b3c2e302749f907bc Mon Sep 17 00:00:00 2001 From: "clement.colin" Date: Fri, 14 Mar 2025 15:39:03 +0100 Subject: [PATCH 5/5] fix: lint --- packages/Main/src/Layer/TiledGeometryLayer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/Main/src/Layer/TiledGeometryLayer.js b/packages/Main/src/Layer/TiledGeometryLayer.js index 4a925df5d8..710c5ddfeb 100644 --- a/packages/Main/src/Layer/TiledGeometryLayer.js +++ b/packages/Main/src/Layer/TiledGeometryLayer.js @@ -435,7 +435,7 @@ class TiledGeometryLayer extends GeometryLayer { for (const extent of extents) { promises.push(this.convert(node, extent)); } - + return Promise.all(promises).then((children) => { for (const child of children) { node.add(child);