2525import {
2626 ClampToEdgeWrapping ,
2727 Color ,
28- FileLoader ,
2928 FrontSide ,
3029 NearestFilter ,
3130 NearestMipMapLinearFilter ,
@@ -34,6 +33,7 @@ import {
3433 Texture ,
3534 Vector3
3635} from "three" ;
36+ import { RevalidatingFileLoader } from "../util/RevalidatingFileLoader" ;
3737import { alert , dispatchEvent , getPixel , hashTile , stringToImage , vecArrToObj } from "../util/Utils" ;
3838import { TileManager } from "./TileManager" ;
3939import { TileLoader } from "./TileLoader" ;
@@ -110,14 +110,14 @@ export class Map {
110110 * @param lowresVertexShader {string}
111111 * @param lowresFragmentShader {string}
112112 * @param uniforms {object}
113- * @param tileCacheHash {number }
113+ * @param revalidatedUrls {Set<string> | undefined }
114114 * @returns {Promise<void> }
115115 */
116- load ( hiresVertexShader , hiresFragmentShader , lowresVertexShader , lowresFragmentShader , uniforms , tileCacheHash = 0 ) {
116+ load ( hiresVertexShader , hiresFragmentShader , lowresVertexShader , lowresFragmentShader , uniforms , revalidatedUrls ) {
117117 this . unload ( )
118118
119- let settingsPromise = this . loadSettings ( tileCacheHash ) ;
120- let textureFilePromise = this . loadTexturesFile ( tileCacheHash ) ;
119+ let settingsPromise = this . loadSettings ( revalidatedUrls ) ;
120+ let textureFilePromise = this . loadTexturesFile ( revalidatedUrls ) ;
121121
122122 this . lowresMaterial = this . createLowresMaterial ( lowresVertexShader , lowresFragmentShader , uniforms ) ;
123123
@@ -133,7 +133,7 @@ export class Map {
133133 this . hiresMaterial ,
134134 this . data . hires ,
135135 this . loadBlocker ,
136- tileCacheHash
136+ revalidatedUrls
137137 ) , this . onTileLoad ( "hires" ) , this . onTileUnload ( "hires" ) , this . events ) ;
138138 this . hiresTileManager . scene . matrixWorldAutoUpdate = false ;
139139
@@ -147,7 +147,7 @@ export class Map {
147147 lowresFragmentShader ,
148148 uniforms ,
149149 async ( ) => { } ,
150- tileCacheHash
150+ revalidatedUrls
151151 ) , this . onTileLoad ( "lowres" ) , this . onTileUnload ( "lowres" ) , this . events ) ;
152152 this . lowresTileManager [ i ] . scene . matrixWorldAutoUpdate = false ;
153153 }
@@ -160,8 +160,8 @@ export class Map {
160160 * Loads the settings of this map
161161 * @returns {Promise<void> }
162162 */
163- loadSettings ( tileCacheHash ) {
164- return this . loadSettingsFile ( tileCacheHash )
163+ loadSettings ( revalidatedUrls ) {
164+ return this . loadSettingsFile ( revalidatedUrls )
165165 . then ( worldSettings => {
166166 this . data . name = worldSettings . name ? worldSettings . name : this . data . name ;
167167
@@ -259,13 +259,14 @@ export class Map {
259259 * Loads the settings.json file for this map
260260 * @returns {Promise<Object> }
261261 */
262- loadSettingsFile ( tileCacheHash ) {
262+ loadSettingsFile ( revalidatedUrls ) {
263263 return new Promise ( ( resolve , reject ) => {
264264 alert ( this . events , `Loading settings for map '${ this . data . id } '...` , "fine" ) ;
265265
266- let loader = new FileLoader ( ) ;
266+ let loader = new RevalidatingFileLoader ( ) ;
267+ loader . setRevalidatedUrls ( revalidatedUrls ) ;
267268 loader . setResponseType ( "json" ) ;
268- loader . load ( this . data . settingsUrl + "?" + tileCacheHash ,
269+ loader . load ( this . data . settingsUrl ,
269270 resolve ,
270271 ( ) => { } ,
271272 ( ) => reject ( `Failed to load the settings.json for map: ${ this . data . id } ` )
@@ -277,13 +278,14 @@ export class Map {
277278 * Loads the textures.json file for this map
278279 * @returns {Promise<Object> }
279280 */
280- loadTexturesFile ( tileCacheHash ) {
281+ loadTexturesFile ( revalidatedUrls ) {
281282 return new Promise ( ( resolve , reject ) => {
282283 alert ( this . events , `Loading textures for map '${ this . data . id } '...` , "fine" ) ;
283284
284- let loader = new FileLoader ( ) ;
285+ let loader = new RevalidatingFileLoader ( ) ;
286+ loader . setRevalidatedUrls ( revalidatedUrls ) ;
285287 loader . setResponseType ( "json" ) ;
286- loader . load ( this . data . texturesUrl + "?" + tileCacheHash ,
288+ loader . load ( this . data . texturesUrl ,
287289 resolve ,
288290 ( ) => { } ,
289291 ( ) => reject ( `Failed to load the textures.json for map: ${ this . data . id } ` )
0 commit comments