Added support for keeping a limited set of tile textures.

This commit is contained in:
2019-06-01 09:56:29 +02:00
parent 67c6a6c95c
commit 895ec55a46
7 changed files with 327 additions and 86 deletions
+10 -10
View File
@@ -1,4 +1,4 @@
import { deepZoomTileCache, Tile } from './tile.js'
import Tile from './tile.js'
/**
* A Tile Loader component that can be plugged into a Tiles Layer.
@@ -28,6 +28,8 @@ export class TileLoader {
schedule(url, col, row) {
if (this.loaded.has(url)) return false
if (this.loading.has(url)) return false
Tile.schedule(url)
this.map.set(url, [col, row])
this.loading.add(url)
this.loadQueue.push(url)
@@ -37,6 +39,7 @@ export class TileLoader {
unschedule(url) {
if (this.loaded.has(url)) this.loaded.delete(url)
if (this.loading.has(url)) this.loading.delete(url)
Tile.unschedule(url)
this.loadQueue = this.loadQueue.filter(item => item != url)
}
@@ -96,16 +99,13 @@ export class PIXITileLoader extends TileLoader {
if (this.loaded.has(url)) return false
if (this.loading.has(url)) return false
if (deepZoomTileCache.has(url)) {
let tiles = deepZoomTileCache.get(url)
for (let tile of tiles.values()) {
//console.log("Reusing cached texture", tile.parent)
let texture = tile.texture
this._textureAvailable(url, col, row, texture)
return false
}
Tile.schedule(url)
let reusableTexture = Tile.textureAvailable(url)
if (reusableTexture) {
if (this.debug) console.log('Texture reusable', reusableTexture)
this._textureAvailable(url, col, row, reusableTexture)
return false
}
let texture = PIXI.utils.TextureCache[url]
if (texture) {
if (this.debug) console.log('Texture already loaded', texture)