From a3afe9e33a2b1502934660ed7837380b57726aea Mon Sep 17 00:00:00 2001
From: Kevin ETOURNEAU <kevin.etourneau@sogelink.com>
Date: Fri, 23 Feb 2024 17:05:46 +0100
Subject: [PATCH] fix(PlanarLayer): Fix delete new extent from globalExtentTMS
 const

---
 src/Core/Prefab/Planar/PlanarLayer.js | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/src/Core/Prefab/Planar/PlanarLayer.js b/src/Core/Prefab/Planar/PlanarLayer.js
index f9b26c09a5..2b9701a6d1 100644
--- a/src/Core/Prefab/Planar/PlanarLayer.js
+++ b/src/Core/Prefab/Planar/PlanarLayer.js
@@ -11,6 +11,7 @@ import PlanarTileBuilder from './PlanarTileBuilder';
  * internally for optimisation.
  */
 class PlanarLayer extends TiledGeometryLayer {
+    #hasNewExtent;
     /**
      * A {@link TiledGeometryLayer} to use with a {@link PlanarView}. It has
      * specific method for updating and subdivising its grid.
@@ -40,18 +41,28 @@ class PlanarLayer extends TiledGeometryLayer {
     constructor(id, extent, object3d, config = {}) {
         const tms = CRS.formatToTms(extent.crs);
         const tileMatrixSets = [tms];
+        let hasNewExtent = false;
         if (!globalExtentTMS.get(extent.crs)) {
             // Add new global extent for this new crs projection.
             globalExtentTMS.set(extent.crs, extent);
+            hasNewExtent = true;
         }
         config.tileMatrixSets = tileMatrixSets;
         super(id, object3d || new THREE.Group(), [extent], new PlanarTileBuilder({ crs: extent.crs }), config);
         this.isPlanarLayer = true;
+        this.#hasNewExtent = hasNewExtent;
         this.extent = extent;
         this.minSubdivisionLevel = this.minSubdivisionLevel == undefined ? 0 : this.minSubdivisionLevel;
         this.maxSubdivisionLevel = this.maxSubdivisionLevel == undefined ? 5 : this.maxSubdivisionLevel;
         this.maxDeltaElevationLevel = this.maxDeltaElevationLevel || 4.0;
     }
+
+    delete(clearCache) {
+        super.delete(clearCache);
+        if (this.#hasNewExtent) {
+            globalExtentTMS.delete(this.extent.crs);
+        }
+    }
 }
 
 export default PlanarLayer;