BlueMapWeb/public/js/bluemap.min.js

2 lines
36 KiB
JavaScript
Raw Normal View History

2021-01-18 16:51:03 +01:00
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("three")):"function"==typeof define&&define.amd?define(["exports","three"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).BlueMap={},t.THREE)}(this,(function(t,e){"use strict";function i(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}function n(t,e,n){return e&&i(t.prototype,e),n&&i(t,n),t}function o(){return(o=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var i=arguments[e];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(t[n]=i[n])}return t}).apply(this,arguments)}var a=function(t){var e=document.createElementNS("http://www.w3.org/1999/xhtml","img");return e.src=t,e},s=function(t,e){var i="x";return i+=r(t),i+="z",i=(i+=r(e)).substring(0,i.length-1)},r=function(t){var e="";t<0&&(t=-t,e+="-");for(var i=parseInt(t).toString(),n=0;n<i.length;n++)e+=i.charAt(n)+"/";return e},l=function(t,e){return"x"+t+"z"+e},h=function(t,e,i){if(void 0===i&&(i={}),t&&t.dispatchEvent)return t.dispatchEvent(new CustomEvent(e,{detail:i}))},c=function(t,e,i){void 0===i&&(i="info"),h(t,"bluemapAlert",{message:e,level:i})&&("info"===i?console.log("[BlueMap/"+i+"]",e):"warning"===i?console.warn("[BlueMap/"+i+"]",e):"error"===i?console.error("[BlueMap/"+i+"]",e):console.debug("[BlueMap/"+i+"]",e))},u=function(){function t(t,e,i,n){Object.defineProperty(this,"isTile",{value:!0}),this.model=null,this.onLoad=i,this.onUnload=n,this.x=t,this.z=e,this.unloaded=!0,this.loading=!1}var e=t.prototype;return e.load=function(t){var e=this;if(!this.loading)return this.loading=!0,this.unload(),this.unloaded=!1,t.load(this.x,this.z).then((function(t){e.loading=!1,e.unloaded?t.geometry.dispose():(e.model=t,e.onLoad(e))}))},e.unload=function(){this.unloaded=!0,this.model&&(this.onUnload(this),this.model.geometry.dispose(),this.model=null)},n(t,[{key:"loaded",get:function(){return!!this.model}}]),t}(),d=function(){function t(t,i){this.canvas=document.createElementNS("http://www.w3.org/1999/xhtml","canvas"),this.canvas.width=t,this.canvas.height=i,this.tileMapContext=this.canvas.getContext("2d",{alpha:!1,willReadFrequently:!0}),this.texture=new e.Texture(this.canvas),this.texture.generateMipmaps=!1,this.texture.magFilter=e.LinearFilter,this.texture.minFilter=e.LinearFilter,this.texture.wrapS=e.ClampToEdgeWrapping,this.texture.wrapT=e.ClampToEdgeWrapping,this.texture.flipY=!1,this.texture.needsUpdate=!0}var i=t.prototype;return i.setAll=function(t){this.tileMapContext.fillStyle=t,this.tileMapContext.fillRect(0,0,this.canvas.width,this.canvas.height),this.texture.needsUpdate=!0},i.setTile=function(t,e,i){this.tileMapContext.fillStyle=i,this.tileMapContext.fillRect(t,e,1,1),this.texture.needsUpdate=!0},t}();d.EMPTY="#000",d.LOADED="#fff";var m=function(){function t(i,n,o,a,s){var r=this;void 0===o&&(o=null),void 0===a&&(a=null),void 0===s&&(s=null),this.loadCloseTiles=function(){r.unloaded||r.loadNextTile()&&(r.loadTimeout&&clearTimeout(r.loadTimeout),r.currentlyLoading<4?r.loadTimeout=setTimeout(r.loadCloseTiles,0):r.loadTimeout=setTimeout(r.loadCloseTiles,1e3))},this.handleLoadedTile=function(e){r.tileMap.setTile(e.x-r.centerTile.x+t.tileMapHalfSize,e.z-r.centerTile.y+t.tileMapHalfSize,d.LOADED),r.scene.add(e.model),r.onTileLoad(e)},this.handleUnloadedTile=function(e){r.tileMap.setTile(e.x-r.centerTile.x+t.tileMapHalfSize,e.z-r.centerTile.y+t.tileMapHalfSize,d.EMPTY),r.scene.remove(e.model),r.onTileUnload(e)},Object.defineProperty(this,"isTileManager",{value:!0}),this.events=s,this.scene=i,this.tileLoader=n,this.onTileLoad=o||function(){},this.onTileUnload=a||function(){},this.viewDistanceX=1,this.viewDistanceZ=1,this.centerTile=new e.Vector2(0,0),this.currentlyLoading=0,this.loadTimeout=null,this.tiles={},this.tileMap=new d(t.tileMapSize,t.tileMapSize),this.unloaded=!0}var i=t.prototype;return i.loadAroundTile=function(e,i,n,o){if(this.unloaded=!1,this.viewDistanceX=n,this.viewDistanceZ=o,this.centerTile.x!==e||this.centerTile.y!==i){t