@loaders.gl/tiles 3.1.0-alpha.5 → 3.1.0-beta.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/dist/bundle.d.ts +1 -0
  2. package/dist/bundle.d.ts.map +1 -0
  3. package/dist/bundle.js +8136 -0
  4. package/dist/constants.d.ts +1 -0
  5. package/dist/constants.d.ts.map +1 -0
  6. package/dist/constants.js +35 -0
  7. package/dist/es5/tileset/helpers/i3s-lod.js.map +1 -1
  8. package/dist/es5/tileset/tileset-cache.js.map +1 -1
  9. package/dist/es5/utils/doubly-linked-list-node.js +7 -0
  10. package/dist/es5/utils/doubly-linked-list-node.js.map +1 -1
  11. package/dist/es5/utils/doubly-linked-list.js +5 -3
  12. package/dist/es5/utils/doubly-linked-list.js.map +1 -1
  13. package/dist/es5/utils/managed-array.js +7 -1
  14. package/dist/es5/utils/managed-array.js.map +1 -1
  15. package/dist/esm/tileset/helpers/i3s-lod.js.map +1 -1
  16. package/dist/esm/tileset/tileset-cache.js.map +1 -1
  17. package/dist/esm/utils/doubly-linked-list-node.js +7 -0
  18. package/dist/esm/utils/doubly-linked-list-node.js.map +1 -1
  19. package/dist/esm/utils/doubly-linked-list.js +6 -3
  20. package/dist/esm/utils/doubly-linked-list.js.map +1 -1
  21. package/dist/esm/utils/managed-array.js +7 -1
  22. package/dist/esm/utils/managed-array.js.map +1 -1
  23. package/dist/index.d.ts +1 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +28 -0
  26. package/dist/tileset/helpers/3d-tiles-options.d.ts +1 -0
  27. package/dist/tileset/helpers/3d-tiles-options.d.ts.map +1 -0
  28. package/dist/tileset/helpers/3d-tiles-options.js +9 -0
  29. package/dist/tileset/helpers/bounding-volume.d.ts +1 -0
  30. package/dist/tileset/helpers/bounding-volume.d.ts.map +1 -0
  31. package/dist/tileset/helpers/bounding-volume.js +177 -0
  32. package/dist/tileset/helpers/frame-state.d.ts +1 -0
  33. package/dist/tileset/helpers/frame-state.d.ts.map +1 -0
  34. package/dist/tileset/helpers/frame-state.js +70 -0
  35. package/dist/tileset/helpers/i3s-lod.d.ts +2 -1
  36. package/dist/tileset/helpers/i3s-lod.d.ts.map +1 -0
  37. package/dist/tileset/helpers/i3s-lod.js +83 -0
  38. package/dist/tileset/helpers/tiles-3d-lod.d.ts +1 -0
  39. package/dist/tileset/helpers/tiles-3d-lod.d.ts.map +1 -0
  40. package/dist/tileset/helpers/tiles-3d-lod.js +116 -0
  41. package/dist/tileset/helpers/transform-utils.d.ts +1 -0
  42. package/dist/tileset/helpers/transform-utils.d.ts.map +1 -0
  43. package/dist/tileset/helpers/transform-utils.js +52 -0
  44. package/dist/tileset/helpers/zoom.d.ts +1 -0
  45. package/dist/tileset/helpers/zoom.d.ts.map +1 -0
  46. package/dist/tileset/helpers/zoom.js +42 -0
  47. package/dist/tileset/tile-3d.d.ts +1 -0
  48. package/dist/tileset/tile-3d.d.ts.map +1 -0
  49. package/dist/tileset/tile-3d.js +554 -0
  50. package/dist/tileset/tileset-3d.d.ts +1 -0
  51. package/dist/tileset/tileset-3d.d.ts.map +1 -0
  52. package/dist/tileset/tileset-3d.js +601 -0
  53. package/dist/tileset/tileset-cache.d.ts +1 -0
  54. package/dist/tileset/tileset-cache.d.ts.map +1 -0
  55. package/dist/tileset/tileset-cache.js +79 -0
  56. package/dist/tileset/traversers/i3s-tile-manager.d.ts +1 -0
  57. package/dist/tileset/traversers/i3s-tile-manager.d.ts.map +1 -0
  58. package/dist/tileset/traversers/i3s-tile-manager.js +36 -0
  59. package/dist/tileset/traversers/i3s-tileset-traverser.d.ts +1 -0
  60. package/dist/tileset/traversers/i3s-tileset-traverser.d.ts.map +1 -0
  61. package/dist/tileset/traversers/i3s-tileset-traverser.js +85 -0
  62. package/dist/tileset/traversers/tileset-3d-traverser.d.ts +1 -0
  63. package/dist/tileset/traversers/tileset-3d-traverser.d.ts.map +1 -0
  64. package/dist/tileset/traversers/tileset-3d-traverser.js +55 -0
  65. package/dist/tileset/traversers/tileset-traverser.d.ts +1 -0
  66. package/dist/tileset/traversers/tileset-traverser.d.ts.map +1 -0
  67. package/dist/tileset/traversers/tileset-traverser.js +294 -0
  68. package/dist/utils/doubly-linked-list-node.d.ts +2 -1
  69. package/dist/utils/doubly-linked-list-node.d.ts.map +1 -0
  70. package/dist/utils/doubly-linked-list-node.js +17 -0
  71. package/dist/utils/doubly-linked-list.d.ts +7 -6
  72. package/dist/utils/doubly-linked-list.d.ts.map +1 -0
  73. package/dist/utils/doubly-linked-list.js +100 -0
  74. package/dist/utils/managed-array.d.ts +10 -9
  75. package/dist/utils/managed-array.d.ts.map +1 -0
  76. package/dist/utils/managed-array.js +151 -0
  77. package/package.json +6 -7
  78. package/src/tileset/helpers/i3s-lod.ts +1 -1
  79. package/src/tileset/tileset-cache.ts +2 -0
  80. package/src/utils/{doubly-linked-list-node.js → doubly-linked-list-node.ts} +4 -0
  81. package/src/utils/{doubly-linked-list.js → doubly-linked-list.ts} +3 -5
  82. package/src/utils/{managed-array.js → managed-array.ts} +4 -1
  83. package/dist/dist.min.js +0 -2
  84. package/dist/dist.min.js.map +0 -1
@@ -29,3 +29,4 @@ export declare const TILE3D_OPTIMIZATION_HINT: {
29
29
  USE_OPTIMIZATION: number;
30
30
  SKIP_OPTIMIZATION: number;
31
31
  };
32
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB;;;;;;;CAO9B,CAAC;AAEF,eAAO,MAAM,eAAe;;;CAG3B,CAAC;AAEF,eAAO,MAAM,SAAS;;;;;CAKrB,CAAC;AAEF,eAAO,MAAM,YAAY;;;CAGxB,CAAC;AAEF,eAAO,MAAM,eAAe;;;CAG3B,CAAC;AAGF,eAAO,MAAM,wBAAwB;;;;CAIpC,CAAC"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TILE3D_OPTIMIZATION_HINT = exports.LOD_METRIC_TYPE = exports.TILESET_TYPE = exports.TILE_TYPE = exports.TILE_REFINEMENT = exports.TILE_CONTENT_STATE = void 0;
4
+ exports.TILE_CONTENT_STATE = {
5
+ UNLOADED: 0,
6
+ LOADING: 1,
7
+ PROCESSING: 2,
8
+ READY: 3,
9
+ EXPIRED: 4,
10
+ FAILED: 5 // Request failed.
11
+ };
12
+ exports.TILE_REFINEMENT = {
13
+ ADD: 1,
14
+ REPLACE: 2 // Render tile or, if screen space error exceeded, refine to its descendants instead.
15
+ };
16
+ exports.TILE_TYPE = {
17
+ EMPTY: 'empty',
18
+ SCENEGRAPH: 'scenegraph',
19
+ POINTCLOUD: 'pointcloud',
20
+ MESH: 'mesh'
21
+ };
22
+ exports.TILESET_TYPE = {
23
+ I3S: 'I3S',
24
+ TILES3D: 'TILES3D'
25
+ };
26
+ exports.LOD_METRIC_TYPE = {
27
+ GEOMETRIC_ERROR: 'geometricError',
28
+ MAX_SCREEN_THRESHOLD: 'maxScreenThreshold'
29
+ };
30
+ // Cesium 3D Tiles Specific
31
+ exports.TILE3D_OPTIMIZATION_HINT = {
32
+ NOT_COMPUTED: -1,
33
+ USE_OPTIMIZATION: 1,
34
+ SKIP_OPTIMIZATION: 0
35
+ };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/tileset/helpers/i3s-lod.ts"],"names":["getLodStatus","tile","frameState","lodMetricValue","isNaN","screenSize","getProjectedRadius","header","children","originalViewport","viewport","ViewportClass","constructor","longitude","latitude","height","width","bearing","zoom","pitch","mbsLat","mbs","mbsLon","mbsZ","mbsR","mbsCenterCartesian","boundingVolume","center","cameraPositionCartographic","unprojectPosition","cameraPosition","cameraPositionCartesian","Ellipsoid","WGS84","cartographicToCartesian","Vector3","toEye","subtract","normalize","enuToCartesianMatrix","Matrix4","eastNorthUpToFixedFrame","cartesianToEnuMatrix","invert","cameraPositionEnu","transform","projection","Math","sqrt","extraZ","extraVertexEnu","extraVertexCartesian","extraVectorCartesian","radiusVector","cross","scale","sphereMbsBorderVertexCartesian","add","sphereMbsBorderVertexCartographic","cartesianToCartographic","projectedOrigin","project","projectedMbsBorderVertex","projectedRadius","magnitude"],"mappings":"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","sourcesContent":["import {Matrix4, Vector3} from '@math.gl/core';\nimport {Ellipsoid} from '@math.gl/geospatial';\nimport {Tile3D} from '../..';\nimport {FrameState} from './frame-state';\n\n/**\n * For the maxScreenThreshold error metric, maxError means that you should replace the node with it's children\n as soon as the nodes bounding sphere has a screen radius larger than maxError pixels.\n In this sense a value of 0 means you should always load it's children,\n or if it's a leaf node, you should always display it.\n * @param tile \n * @param frameState \n * @returns \n */\nexport function getLodStatus(tile: Tile3D, frameState: FrameState): 'DIG' | 'OUT' | 'DRAW' {\n if (tile.lodMetricValue === 0 || isNaN(tile.lodMetricValue)) {\n return 'DIG';\n }\n const screenSize = 2 * getProjectedRadius(tile, frameState);\n if (screenSize < 2) {\n return 'OUT';\n }\n if (!tile.header.children || screenSize <= tile.lodMetricValue) {\n return 'DRAW';\n } else if (tile.header.children) {\n return 'DIG';\n }\n return 'OUT';\n}\n\n/**\n * Calculate size of MBS radius projected on the screen plane\n * @param tile\n * @param frameState\n * @returns\n */\n// eslint-disable-next-line max-statements\nexport function getProjectedRadius(tile: Tile3D, frameState: FrameState): number {\n const originalViewport = frameState.viewport;\n const ViewportClass = originalViewport.constructor;\n const {longitude, latitude, height, width, bearing, zoom} = originalViewport;\n // @ts-ignore\n const viewport = new ViewportClass({longitude, latitude, height, width, bearing, zoom, pitch: 0});\n const mbsLat = tile.header.mbs[1];\n const mbsLon = tile.header.mbs[0];\n const mbsZ = tile.header.mbs[2];\n const mbsR = tile.header.mbs[3];\n const mbsCenterCartesian = [...tile.boundingVolume.center];\n const cameraPositionCartographic = viewport.unprojectPosition(viewport.cameraPosition);\n const cameraPositionCartesian = Ellipsoid.WGS84.cartographicToCartesian(\n cameraPositionCartographic,\n new Vector3()\n );\n\n // ---------------------------\n // Calculate mbs border vertex\n // ---------------------------\n const toEye = new Vector3(cameraPositionCartesian).subtract(mbsCenterCartesian).normalize();\n // Add extra vector to form plane\n const enuToCartesianMatrix = new Matrix4();\n Ellipsoid.WGS84.eastNorthUpToFixedFrame(mbsCenterCartesian, enuToCartesianMatrix);\n const cartesianToEnuMatrix = new Matrix4(enuToCartesianMatrix).invert();\n const cameraPositionEnu = new Vector3(cameraPositionCartesian).transform(cartesianToEnuMatrix);\n // Mean Proportionals in Right Triangles - Altitude rule\n // https://mathbitsnotebook.com/Geometry/RightTriangles/RTmeanRight.html\n const projection = Math.sqrt(\n cameraPositionEnu[0] * cameraPositionEnu[0] + cameraPositionEnu[1] * cameraPositionEnu[1]\n );\n const extraZ = (projection * projection) / cameraPositionEnu[2];\n const extraVertexEnu = new Vector3([cameraPositionEnu[0], cameraPositionEnu[1], extraZ]);\n const extraVertexCartesian = extraVertexEnu.transform(enuToCartesianMatrix);\n const extraVectorCartesian = new Vector3(extraVertexCartesian)\n .subtract(mbsCenterCartesian)\n .normalize();\n // We need radius vector orthogonal to toEye vector\n const radiusVector = toEye.cross(extraVectorCartesian).normalize().scale(mbsR);\n const sphereMbsBorderVertexCartesian = new Vector3(mbsCenterCartesian).add(radiusVector);\n const sphereMbsBorderVertexCartographic = Ellipsoid.WGS84.cartesianToCartographic(\n sphereMbsBorderVertexCartesian\n );\n // ---------------------------\n\n // Project center vertex and border vertex and calculate projected radius of MBS\n const projectedOrigin = viewport.project([mbsLon, mbsLat, mbsZ]);\n const projectedMbsBorderVertex = viewport.project(sphereMbsBorderVertexCartographic);\n const projectedRadius = new Vector3(projectedOrigin)\n .subtract(projectedMbsBorderVertex)\n .magnitude();\n return projectedRadius;\n}\n"],"file":"i3s-lod.js"}
1
+ {"version":3,"sources":["../../../../src/tileset/helpers/i3s-lod.ts"],"names":["getLodStatus","tile","frameState","lodMetricValue","isNaN","screenSize","getProjectedRadius","header","children","originalViewport","viewport","ViewportClass","constructor","longitude","latitude","height","width","bearing","zoom","pitch","mbsLat","mbs","mbsLon","mbsZ","mbsR","mbsCenterCartesian","boundingVolume","center","cameraPositionCartographic","unprojectPosition","cameraPosition","cameraPositionCartesian","Ellipsoid","WGS84","cartographicToCartesian","Vector3","toEye","subtract","normalize","enuToCartesianMatrix","Matrix4","eastNorthUpToFixedFrame","cartesianToEnuMatrix","invert","cameraPositionEnu","transform","projection","Math","sqrt","extraZ","extraVertexEnu","extraVertexCartesian","extraVectorCartesian","radiusVector","cross","scale","sphereMbsBorderVertexCartesian","add","sphereMbsBorderVertexCartographic","cartesianToCartographic","projectedOrigin","project","projectedMbsBorderVertex","projectedRadius","magnitude"],"mappings":"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","sourcesContent":["import {Matrix4, Vector3} from '@math.gl/core';\nimport {Ellipsoid} from '@math.gl/geospatial';\nimport Tile3D from '../tile-3d';\nimport {FrameState} from './frame-state';\n\n/**\n * For the maxScreenThreshold error metric, maxError means that you should replace the node with it's children\n as soon as the nodes bounding sphere has a screen radius larger than maxError pixels.\n In this sense a value of 0 means you should always load it's children,\n or if it's a leaf node, you should always display it.\n * @param tile \n * @param frameState \n * @returns \n */\nexport function getLodStatus(tile: Tile3D, frameState: FrameState): 'DIG' | 'OUT' | 'DRAW' {\n if (tile.lodMetricValue === 0 || isNaN(tile.lodMetricValue)) {\n return 'DIG';\n }\n const screenSize = 2 * getProjectedRadius(tile, frameState);\n if (screenSize < 2) {\n return 'OUT';\n }\n if (!tile.header.children || screenSize <= tile.lodMetricValue) {\n return 'DRAW';\n } else if (tile.header.children) {\n return 'DIG';\n }\n return 'OUT';\n}\n\n/**\n * Calculate size of MBS radius projected on the screen plane\n * @param tile\n * @param frameState\n * @returns\n */\n// eslint-disable-next-line max-statements\nexport function getProjectedRadius(tile: Tile3D, frameState: FrameState): number {\n const originalViewport = frameState.viewport;\n const ViewportClass = originalViewport.constructor;\n const {longitude, latitude, height, width, bearing, zoom} = originalViewport;\n // @ts-ignore\n const viewport = new ViewportClass({longitude, latitude, height, width, bearing, zoom, pitch: 0});\n const mbsLat = tile.header.mbs[1];\n const mbsLon = tile.header.mbs[0];\n const mbsZ = tile.header.mbs[2];\n const mbsR = tile.header.mbs[3];\n const mbsCenterCartesian = [...tile.boundingVolume.center];\n const cameraPositionCartographic = viewport.unprojectPosition(viewport.cameraPosition);\n const cameraPositionCartesian = Ellipsoid.WGS84.cartographicToCartesian(\n cameraPositionCartographic,\n new Vector3()\n );\n\n // ---------------------------\n // Calculate mbs border vertex\n // ---------------------------\n const toEye = new Vector3(cameraPositionCartesian).subtract(mbsCenterCartesian).normalize();\n // Add extra vector to form plane\n const enuToCartesianMatrix = new Matrix4();\n Ellipsoid.WGS84.eastNorthUpToFixedFrame(mbsCenterCartesian, enuToCartesianMatrix);\n const cartesianToEnuMatrix = new Matrix4(enuToCartesianMatrix).invert();\n const cameraPositionEnu = new Vector3(cameraPositionCartesian).transform(cartesianToEnuMatrix);\n // Mean Proportionals in Right Triangles - Altitude rule\n // https://mathbitsnotebook.com/Geometry/RightTriangles/RTmeanRight.html\n const projection = Math.sqrt(\n cameraPositionEnu[0] * cameraPositionEnu[0] + cameraPositionEnu[1] * cameraPositionEnu[1]\n );\n const extraZ = (projection * projection) / cameraPositionEnu[2];\n const extraVertexEnu = new Vector3([cameraPositionEnu[0], cameraPositionEnu[1], extraZ]);\n const extraVertexCartesian = extraVertexEnu.transform(enuToCartesianMatrix);\n const extraVectorCartesian = new Vector3(extraVertexCartesian)\n .subtract(mbsCenterCartesian)\n .normalize();\n // We need radius vector orthogonal to toEye vector\n const radiusVector = toEye.cross(extraVectorCartesian).normalize().scale(mbsR);\n const sphereMbsBorderVertexCartesian = new Vector3(mbsCenterCartesian).add(radiusVector);\n const sphereMbsBorderVertexCartographic = Ellipsoid.WGS84.cartesianToCartographic(\n sphereMbsBorderVertexCartesian\n );\n // ---------------------------\n\n // Project center vertex and border vertex and calculate projected radius of MBS\n const projectedOrigin = viewport.project([mbsLon, mbsLat, mbsZ]);\n const projectedMbsBorderVertex = viewport.project(sphereMbsBorderVertexCartographic);\n const projectedRadius = new Vector3(projectedOrigin)\n .subtract(projectedMbsBorderVertex)\n .magnitude();\n return projectedRadius;\n}\n"],"file":"i3s-lod.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/tileset/tileset-cache.ts"],"names":["defined","x","undefined","TilesetCache","constructor","_list","DoublyLinkedList","_sentinel","add","_trimTiles","reset","splice","tail","touch","tile","node","_cacheNode","tileset","addCallback","unloadTile","unloadCallback","remove","unloadTiles","trimTiles","list","maximumMemoryUsageInBytes","maximumMemoryUsage","sentinel","head","gpuMemoryUsageInBytes","item","next","trim"],"mappings":";;;;;;;;;;;AAGA;;AAEA,SAASA,OAAT,CAAiBC,CAAjB,EAAoB;AAClB,SAAOA,CAAC,KAAKC,SAAN,IAAmBD,CAAC,KAAK,IAAhC;AACD;;AAOc,MAAME,YAAN,CAAmB;AAKhCC,EAAAA,WAAW,GAAG;AAAA;AAAA;AAAA;AAGZ,SAAKC,KAAL,GAAa,IAAIC,yBAAJ,EAAb;AACA,SAAKC,SAAL,GAAiB,KAAKF,KAAL,CAAWG,GAAX,CAAe,UAAf,CAAjB;AACA,SAAKC,UAAL,GAAkB,KAAlB;AACD;;AAEDC,EAAAA,KAAK,GAAG;AAIN,SAAKL,KAAL,CAAWM,MAAX,CAAkB,KAAKN,KAAL,CAAWO,IAA7B,EAAmC,KAAKL,SAAxC;AACD;;AAEDM,EAAAA,KAAK,CAACC,IAAD,EAAO;AACV,UAAMC,IAAI,GAAGD,IAAI,CAACE,UAAlB;;AACA,QAAIhB,OAAO,CAACe,IAAD,CAAX,EAAmB;AACjB,WAAKV,KAAL,CAAWM,MAAX,CAAkB,KAAKJ,SAAvB,EAAkCQ,IAAlC;AACD;AACF;;AAEDP,EAAAA,GAAG,CAACS,OAAD,EAAUH,IAAV,EAAgBI,WAAhB,EAA6B;AAC9B,QAAI,CAAClB,OAAO,CAACc,IAAI,CAACE,UAAN,CAAZ,EAA+B;AAC7BF,MAAAA,IAAI,CAACE,UAAL,GAAkB,KAAKX,KAAL,CAAWG,GAAX,CAAeM,IAAf,CAAlB;;AAEA,UAAII,WAAJ,EAAiB;AACfA,QAAAA,WAAW,CAACD,OAAD,EAAUH,IAAV,CAAX;AACD;AACF;AACF;;AAEDK,EAAAA,UAAU,CAACF,OAAD,EAAUH,IAAV,EAAgBM,cAAhB,EAAiC;AACzC,UAAML,IAAI,GAAGD,IAAI,CAACE,UAAlB;;AACA,QAAI,CAAChB,OAAO,CAACe,IAAD,CAAZ,EAAoB;AAClB;AACD;;AAED,SAAKV,KAAL,CAAWgB,MAAX,CAAkBN,IAAlB;;AACAD,IAAAA,IAAI,CAACE,UAAL,GAAkBd,SAAlB;;AACA,QAAIkB,cAAJ,EAAoB;AAClBA,MAAAA,cAAc,CAACH,OAAD,EAAUH,IAAV,CAAd;AACD;AACF;;AAEDQ,EAAAA,WAAW,CAACL,OAAD,EAAUG,cAAV,EAA0B;AACnC,UAAMG,SAAS,GAAG,KAAKd,UAAvB;AACA,SAAKA,UAAL,GAAkB,KAAlB;AAEA,UAAMe,IAAI,GAAG,KAAKnB,KAAlB;AAEA,UAAMoB,yBAAyB,GAAGR,OAAO,CAACS,kBAAR,GAA6B,IAA7B,GAAoC,IAAtE;AAKA,UAAMC,QAAQ,GAAG,KAAKpB,SAAtB;AACA,QAAIQ,IAAI,GAAGS,IAAI,CAACI,IAAhB;;AAEA,WACEb,IAAI,KAAKY,QAAT,KACCV,OAAO,CAACY,qBAAR,GAAgCJ,yBAAhC,IAA6DF,SAD9D,CADF,EAGE;AACA,YAAMT,IAAI,GAAGC,IAAI,CAACe,IAAlB;AACAf,MAAAA,IAAI,GAAGA,IAAI,CAACgB,IAAZ;AACA,WAAKZ,UAAL,CAAgBF,OAAhB,EAAyBH,IAAzB,EAA+BM,cAA/B;AACD;AACF;;AAEDY,EAAAA,IAAI,GAAG;AACL,SAAKvB,UAAL,GAAkB,IAAlB;AACD;;AA5E+B","sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport DoublyLinkedList from '../utils/doubly-linked-list';\n\nfunction defined(x) {\n return x !== undefined && x !== null;\n}\n\n/**\n * Stores tiles with content loaded.\n *\n * @private\n */\nexport default class TilesetCache {\n private _list: DoublyLinkedList;\n private _sentinel: any;\n private _trimTiles: boolean;\n\n constructor() {\n // [head, sentinel) -> tiles that weren't selected this frame and may be removed from the cache\n // (sentinel, tail] -> tiles that were selected this frame\n this._list = new DoublyLinkedList();\n this._sentinel = this._list.add('sentinel');\n this._trimTiles = false;\n }\n\n reset() {\n // Move sentinel node to the tail so, at the start of the frame, all tiles\n // may be potentially replaced. Tiles are moved to the right of the sentinel\n // when they are selected so they will not be replaced.\n this._list.splice(this._list.tail, this._sentinel);\n }\n\n touch(tile) {\n const node = tile._cacheNode;\n if (defined(node)) {\n this._list.splice(this._sentinel, node);\n }\n }\n\n add(tileset, tile, addCallback) {\n if (!defined(tile._cacheNode)) {\n tile._cacheNode = this._list.add(tile);\n\n if (addCallback) {\n addCallback(tileset, tile);\n }\n }\n }\n\n unloadTile(tileset, tile, unloadCallback?) {\n const node = tile._cacheNode;\n if (!defined(node)) {\n return;\n }\n\n this._list.remove(node);\n tile._cacheNode = undefined;\n if (unloadCallback) {\n unloadCallback(tileset, tile);\n }\n }\n\n unloadTiles(tileset, unloadCallback) {\n const trimTiles = this._trimTiles;\n this._trimTiles = false;\n\n const list = this._list;\n\n const maximumMemoryUsageInBytes = tileset.maximumMemoryUsage * 1024 * 1024;\n\n // Traverse the list only to the sentinel since tiles/nodes to the\n // right of the sentinel were used this frame.\n // The sub-list to the left of the sentinel is ordered from LRU to MRU.\n const sentinel = this._sentinel;\n let node = list.head;\n\n while (\n node !== sentinel &&\n (tileset.gpuMemoryUsageInBytes > maximumMemoryUsageInBytes || trimTiles)\n ) {\n const tile = node.item;\n node = node.next;\n this.unloadTile(tileset, tile, unloadCallback);\n }\n }\n\n trim() {\n this._trimTiles = true;\n }\n}\n"],"file":"tileset-cache.js"}
1
+ {"version":3,"sources":["../../../src/tileset/tileset-cache.ts"],"names":["defined","x","undefined","TilesetCache","constructor","_list","DoublyLinkedList","_sentinel","add","_trimTiles","reset","splice","tail","touch","tile","node","_cacheNode","tileset","addCallback","unloadTile","unloadCallback","remove","unloadTiles","trimTiles","list","maximumMemoryUsageInBytes","maximumMemoryUsage","sentinel","head","gpuMemoryUsageInBytes","item","next","trim"],"mappings":";;;;;;;;;;;AAGA;;AAEA,SAASA,OAAT,CAAiBC,CAAjB,EAAoB;AAClB,SAAOA,CAAC,KAAKC,SAAN,IAAmBD,CAAC,KAAK,IAAhC;AACD;;AAOc,MAAME,YAAN,CAAmB;AAKhCC,EAAAA,WAAW,GAAG;AAAA;AAAA;AAAA;AAGZ,SAAKC,KAAL,GAAa,IAAIC,yBAAJ,EAAb;AACA,SAAKC,SAAL,GAAiB,KAAKF,KAAL,CAAWG,GAAX,CAAe,UAAf,CAAjB;AACA,SAAKC,UAAL,GAAkB,KAAlB;AACD;;AAEDC,EAAAA,KAAK,GAAG;AAIN,SAAKL,KAAL,CAAWM,MAAX,CAAkB,KAAKN,KAAL,CAAWO,IAA7B,EAAmC,KAAKL,SAAxC;AACD;;AAEDM,EAAAA,KAAK,CAACC,IAAD,EAAO;AACV,UAAMC,IAAI,GAAGD,IAAI,CAACE,UAAlB;;AACA,QAAIhB,OAAO,CAACe,IAAD,CAAX,EAAmB;AACjB,WAAKV,KAAL,CAAWM,MAAX,CAAkB,KAAKJ,SAAvB,EAAkCQ,IAAlC;AACD;AACF;;AAEDP,EAAAA,GAAG,CAACS,OAAD,EAAUH,IAAV,EAAgBI,WAAhB,EAA6B;AAC9B,QAAI,CAAClB,OAAO,CAACc,IAAI,CAACE,UAAN,CAAZ,EAA+B;AAC7BF,MAAAA,IAAI,CAACE,UAAL,GAAkB,KAAKX,KAAL,CAAWG,GAAX,CAAeM,IAAf,CAAlB;;AAEA,UAAII,WAAJ,EAAiB;AACfA,QAAAA,WAAW,CAACD,OAAD,EAAUH,IAAV,CAAX;AACD;AACF;AACF;;AAEDK,EAAAA,UAAU,CAACF,OAAD,EAAUH,IAAV,EAAgBM,cAAhB,EAAiC;AACzC,UAAML,IAAI,GAAGD,IAAI,CAACE,UAAlB;;AACA,QAAI,CAAChB,OAAO,CAACe,IAAD,CAAZ,EAAoB;AAClB;AACD;;AAED,SAAKV,KAAL,CAAWgB,MAAX,CAAkBN,IAAlB;;AACAD,IAAAA,IAAI,CAACE,UAAL,GAAkBd,SAAlB;;AACA,QAAIkB,cAAJ,EAAoB;AAClBA,MAAAA,cAAc,CAACH,OAAD,EAAUH,IAAV,CAAd;AACD;AACF;;AAEDQ,EAAAA,WAAW,CAACL,OAAD,EAAUG,cAAV,EAA0B;AACnC,UAAMG,SAAS,GAAG,KAAKd,UAAvB;AACA,SAAKA,UAAL,GAAkB,KAAlB;AAEA,UAAMe,IAAI,GAAG,KAAKnB,KAAlB;AAEA,UAAMoB,yBAAyB,GAAGR,OAAO,CAACS,kBAAR,GAA6B,IAA7B,GAAoC,IAAtE;AAKA,UAAMC,QAAQ,GAAG,KAAKpB,SAAtB;AACA,QAAIQ,IAAI,GAAGS,IAAI,CAACI,IAAhB;;AAEA,WACEb,IAAI,KAAKY,QAAT,KACCV,OAAO,CAACY,qBAAR,GAAgCJ,yBAAhC,IAA6DF,SAD9D,CADF,EAGE;AAEA,YAAMT,IAAI,GAAGC,IAAI,CAACe,IAAlB;AAEAf,MAAAA,IAAI,GAAGA,IAAI,CAACgB,IAAZ;AACA,WAAKZ,UAAL,CAAgBF,OAAhB,EAAyBH,IAAzB,EAA+BM,cAA/B;AACD;AACF;;AAEDY,EAAAA,IAAI,GAAG;AACL,SAAKvB,UAAL,GAAkB,IAAlB;AACD;;AA9E+B","sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport DoublyLinkedList from '../utils/doubly-linked-list';\n\nfunction defined(x) {\n return x !== undefined && x !== null;\n}\n\n/**\n * Stores tiles with content loaded.\n *\n * @private\n */\nexport default class TilesetCache {\n private _list: DoublyLinkedList;\n private _sentinel: any;\n private _trimTiles: boolean;\n\n constructor() {\n // [head, sentinel) -> tiles that weren't selected this frame and may be removed from the cache\n // (sentinel, tail] -> tiles that were selected this frame\n this._list = new DoublyLinkedList();\n this._sentinel = this._list.add('sentinel');\n this._trimTiles = false;\n }\n\n reset() {\n // Move sentinel node to the tail so, at the start of the frame, all tiles\n // may be potentially replaced. Tiles are moved to the right of the sentinel\n // when they are selected so they will not be replaced.\n this._list.splice(this._list.tail, this._sentinel);\n }\n\n touch(tile) {\n const node = tile._cacheNode;\n if (defined(node)) {\n this._list.splice(this._sentinel, node);\n }\n }\n\n add(tileset, tile, addCallback) {\n if (!defined(tile._cacheNode)) {\n tile._cacheNode = this._list.add(tile);\n\n if (addCallback) {\n addCallback(tileset, tile);\n }\n }\n }\n\n unloadTile(tileset, tile, unloadCallback?) {\n const node = tile._cacheNode;\n if (!defined(node)) {\n return;\n }\n\n this._list.remove(node);\n tile._cacheNode = undefined;\n if (unloadCallback) {\n unloadCallback(tileset, tile);\n }\n }\n\n unloadTiles(tileset, unloadCallback) {\n const trimTiles = this._trimTiles;\n this._trimTiles = false;\n\n const list = this._list;\n\n const maximumMemoryUsageInBytes = tileset.maximumMemoryUsage * 1024 * 1024;\n\n // Traverse the list only to the sentinel since tiles/nodes to the\n // right of the sentinel were used this frame.\n // The sub-list to the left of the sentinel is ordered from LRU to MRU.\n const sentinel = this._sentinel;\n let node = list.head;\n\n while (\n node !== sentinel &&\n (tileset.gpuMemoryUsageInBytes > maximumMemoryUsageInBytes || trimTiles)\n ) {\n // @ts-expect-error\n const tile = node.item;\n // @ts-expect-error\n node = node.next;\n this.unloadTile(tileset, tile, unloadCallback);\n }\n }\n\n trim() {\n this._trimTiles = true;\n }\n}\n"],"file":"tileset-cache.js"}
@@ -1,12 +1,19 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
6
8
  exports.default = void 0;
7
9
 
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
8
12
  class DoublyLinkedListNode {
9
13
  constructor(item, previous, next) {
14
+ (0, _defineProperty2.default)(this, "item", void 0);
15
+ (0, _defineProperty2.default)(this, "previous", void 0);
16
+ (0, _defineProperty2.default)(this, "next", void 0);
10
17
  this.item = item;
11
18
  this.previous = previous;
12
19
  this.next = next;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/doubly-linked-list-node.js"],"names":["DoublyLinkedListNode","constructor","item","previous","next"],"mappings":";;;;;;;AAQe,MAAMA,oBAAN,CAA2B;AACxCC,EAAAA,WAAW,CAACC,IAAD,EAAOC,QAAP,EAAiBC,IAAjB,EAAuB;AAChC,SAAKF,IAAL,GAAYA,IAAZ;AACA,SAAKC,QAAL,GAAgBA,QAAhB;AACA,SAAKC,IAAL,GAAYA,IAAZ;AACD;;AALuC","sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\n/**\n * Doubly linked list node\n *\n * @private\n */\nexport default class DoublyLinkedListNode {\n constructor(item, previous, next) {\n this.item = item;\n this.previous = previous;\n this.next = next;\n }\n}\n"],"file":"doubly-linked-list-node.js"}
1
+ {"version":3,"sources":["../../../src/utils/doubly-linked-list-node.ts"],"names":["DoublyLinkedListNode","constructor","item","previous","next"],"mappings":";;;;;;;;;;;AAQe,MAAMA,oBAAN,CAA2B;AAKxCC,EAAAA,WAAW,CAACC,IAAD,EAAOC,QAAP,EAAiBC,IAAjB,EAAuB;AAAA;AAAA;AAAA;AAChC,SAAKF,IAAL,GAAYA,IAAZ;AACA,SAAKC,QAAL,GAAgBA,QAAhB;AACA,SAAKC,IAAL,GAAYA,IAAZ;AACD;;AATuC","sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\n/**\n * Doubly linked list node\n *\n * @private\n */\nexport default class DoublyLinkedListNode {\n item;\n previous;\n next;\n\n constructor(item, previous, next) {\n this.item = item;\n this.previous = previous;\n this.next = next;\n }\n}\n"],"file":"doubly-linked-list-node.js"}
@@ -7,13 +7,15 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
10
12
  var _doublyLinkedListNode = _interopRequireDefault(require("../utils/doubly-linked-list-node"));
11
13
 
12
14
  class DoublyLinkedList {
13
15
  constructor() {
14
- this.head = null;
15
- this.tail = null;
16
- this._length = 0;
16
+ (0, _defineProperty2.default)(this, "head", null);
17
+ (0, _defineProperty2.default)(this, "tail", null);
18
+ (0, _defineProperty2.default)(this, "_length", 0);
17
19
  }
18
20
 
19
21
  get length() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/doubly-linked-list.js"],"names":["DoublyLinkedList","constructor","head","tail","_length","length","add","item","node","DoublyLinkedListNode","next","remove","previous","splice","nextNode","_insert","oldNodeNext"],"mappings":";;;;;;;;;AAGA;;AAOe,MAAMA,gBAAN,CAAuB;AACpCC,EAAAA,WAAW,GAAG;AACZ,SAAKC,IAAL,GAAY,IAAZ;AACA,SAAKC,IAAL,GAAY,IAAZ;AACA,SAAKC,OAAL,GAAe,CAAf;AACD;;AAES,MAANC,MAAM,GAAG;AACX,WAAO,KAAKD,OAAZ;AACD;;AAODE,EAAAA,GAAG,CAACC,IAAD,EAAO;AACR,UAAMC,IAAI,GAAG,IAAIC,6BAAJ,CAAyBF,IAAzB,EAA+B,KAAKJ,IAApC,EAA0C,IAA1C,CAAb;;AAEA,QAAI,KAAKA,IAAT,EAAe;AACb,WAAKA,IAAL,CAAUO,IAAV,GAAiBF,IAAjB;AACA,WAAKL,IAAL,GAAYK,IAAZ;AACD,KAHD,MAGO;AACL,WAAKN,IAAL,GAAYM,IAAZ;AACA,WAAKL,IAAL,GAAYK,IAAZ;AACD;;AAED,MAAE,KAAKJ,OAAP;AAEA,WAAOI,IAAP;AACD;;AAMDG,EAAAA,MAAM,CAACH,IAAD,EAAO;AACX,QAAI,CAACA,IAAL,EAAW;AACT;AACD;;AAED,QAAIA,IAAI,CAACI,QAAL,IAAiBJ,IAAI,CAACE,IAA1B,EAAgC;AAC9BF,MAAAA,IAAI,CAACI,QAAL,CAAcF,IAAd,GAAqBF,IAAI,CAACE,IAA1B;AACAF,MAAAA,IAAI,CAACE,IAAL,CAAUE,QAAV,GAAqBJ,IAAI,CAACI,QAA1B;AACD,KAHD,MAGO,IAAIJ,IAAI,CAACI,QAAT,EAAmB;AAExBJ,MAAAA,IAAI,CAACI,QAAL,CAAcF,IAAd,GAAqB,IAArB;AACA,WAAKP,IAAL,GAAYK,IAAI,CAACI,QAAjB;AACD,KAJM,MAIA,IAAIJ,IAAI,CAACE,IAAT,EAAe;AAEpBF,MAAAA,IAAI,CAACE,IAAL,CAAUE,QAAV,GAAqB,IAArB;AACA,WAAKV,IAAL,GAAYM,IAAI,CAACE,IAAjB;AACD,KAJM,MAIA;AAEL,WAAKR,IAAL,GAAY,IAAZ;AACA,WAAKC,IAAL,GAAY,IAAZ;AACD;;AAEDK,IAAAA,IAAI,CAACE,IAAL,GAAY,IAAZ;AACAF,IAAAA,IAAI,CAACI,QAAL,GAAgB,IAAhB;AAEA,MAAE,KAAKR,OAAP;AACD;;AAODS,EAAAA,MAAM,CAACL,IAAD,EAAOM,QAAP,EAAiB;AACrB,QAAIN,IAAI,KAAKM,QAAb,EAAuB;AACrB;AACD;;AAGD,SAAKH,MAAL,CAAYG,QAAZ;;AACA,SAAKC,OAAL,CAAaP,IAAb,EAAmBM,QAAnB;AACD;;AAEDC,EAAAA,OAAO,CAACP,IAAD,EAAOM,QAAP,EAAiB;AACtB,UAAME,WAAW,GAAGR,IAAI,CAACE,IAAzB;AACAF,IAAAA,IAAI,CAACE,IAAL,GAAYI,QAAZ;;AAGA,QAAI,KAAKX,IAAL,KAAcK,IAAlB,EAAwB;AACtB,WAAKL,IAAL,GAAYW,QAAZ;AACD,KAFD,MAEO;AACLE,MAAAA,WAAW,CAACJ,QAAZ,GAAuBE,QAAvB;AACD;;AAEDA,IAAAA,QAAQ,CAACJ,IAAT,GAAgBM,WAAhB;AACAF,IAAAA,QAAQ,CAACF,QAAT,GAAoBJ,IAApB;AAEA,MAAE,KAAKJ,OAAP;AACD;;AA9FmC","sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport DoublyLinkedListNode from '../utils/doubly-linked-list-node';\n\n/**\n * Doubly linked list\n *\n * @private\n */\nexport default class DoublyLinkedList {\n constructor() {\n this.head = null;\n this.tail = null;\n this._length = 0;\n }\n\n get length() {\n return this._length;\n }\n\n /**\n * Adds the item to the end of the list\n * @param {*} [item]\n * @return {DoublyLinkedListNode}\n */\n add(item) {\n const node = new DoublyLinkedListNode(item, this.tail, null);\n\n if (this.tail) {\n this.tail.next = node;\n this.tail = node;\n } else {\n this.head = node;\n this.tail = node;\n }\n\n ++this._length;\n\n return node;\n }\n\n /**\n * Removes the given node from the list\n * @param {DoublyLinkedListNode} node\n */\n remove(node) {\n if (!node) {\n return;\n }\n\n if (node.previous && node.next) {\n node.previous.next = node.next;\n node.next.previous = node.previous;\n } else if (node.previous) {\n // Remove last node\n node.previous.next = null;\n this.tail = node.previous;\n } else if (node.next) {\n // Remove first node\n node.next.previous = null;\n this.head = node.next;\n } else {\n // Remove last node in the linked list\n this.head = null;\n this.tail = null;\n }\n\n node.next = null;\n node.previous = null;\n\n --this._length;\n }\n\n /**\n * Moves nextNode after node\n * @param {DoublyLinkedListNode} node\n * @param {DoublyLinkedListNode} nextNode\n */\n splice(node, nextNode) {\n if (node === nextNode) {\n return;\n }\n\n // Remove nextNode, then insert after node\n this.remove(nextNode);\n this._insert(node, nextNode);\n }\n\n _insert(node, nextNode) {\n const oldNodeNext = node.next;\n node.next = nextNode;\n\n // nextNode is the new tail\n if (this.tail === node) {\n this.tail = nextNode;\n } else {\n oldNodeNext.previous = nextNode;\n }\n\n nextNode.next = oldNodeNext;\n nextNode.previous = node;\n\n ++this._length;\n }\n}\n"],"file":"doubly-linked-list.js"}
1
+ {"version":3,"sources":["../../../src/utils/doubly-linked-list.ts"],"names":["DoublyLinkedList","length","_length","add","item","node","DoublyLinkedListNode","tail","next","head","remove","previous","splice","nextNode","_insert","oldNodeNext"],"mappings":";;;;;;;;;;;AAGA;;AAOe,MAAMA,gBAAN,CAAuB;AAAA;AAAA,gDACA,IADA;AAAA,gDAEA,IAFA;AAAA,mDAG1B,CAH0B;AAAA;;AAK1B,MAANC,MAAM,GAAG;AACX,WAAO,KAAKC,OAAZ;AACD;;AAODC,EAAAA,GAAG,CAACC,IAAD,EAAO;AACR,UAAMC,IAAI,GAAG,IAAIC,6BAAJ,CAAyBF,IAAzB,EAA+B,KAAKG,IAApC,EAA0C,IAA1C,CAAb;;AAEA,QAAI,KAAKA,IAAT,EAAe;AACb,WAAKA,IAAL,CAAUC,IAAV,GAAiBH,IAAjB;AACA,WAAKE,IAAL,GAAYF,IAAZ;AACD,KAHD,MAGO;AACL,WAAKI,IAAL,GAAYJ,IAAZ;AACA,WAAKE,IAAL,GAAYF,IAAZ;AACD;;AAED,MAAE,KAAKH,OAAP;AAEA,WAAOG,IAAP;AACD;;AAMDK,EAAAA,MAAM,CAACL,IAAD,EAAO;AACX,QAAI,CAACA,IAAL,EAAW;AACT;AACD;;AAED,QAAIA,IAAI,CAACM,QAAL,IAAiBN,IAAI,CAACG,IAA1B,EAAgC;AAC9BH,MAAAA,IAAI,CAACM,QAAL,CAAcH,IAAd,GAAqBH,IAAI,CAACG,IAA1B;AACAH,MAAAA,IAAI,CAACG,IAAL,CAAUG,QAAV,GAAqBN,IAAI,CAACM,QAA1B;AACD,KAHD,MAGO,IAAIN,IAAI,CAACM,QAAT,EAAmB;AAExBN,MAAAA,IAAI,CAACM,QAAL,CAAcH,IAAd,GAAqB,IAArB;AACA,WAAKD,IAAL,GAAYF,IAAI,CAACM,QAAjB;AACD,KAJM,MAIA,IAAIN,IAAI,CAACG,IAAT,EAAe;AAEpBH,MAAAA,IAAI,CAACG,IAAL,CAAUG,QAAV,GAAqB,IAArB;AACA,WAAKF,IAAL,GAAYJ,IAAI,CAACG,IAAjB;AACD,KAJM,MAIA;AAEL,WAAKC,IAAL,GAAY,IAAZ;AACA,WAAKF,IAAL,GAAY,IAAZ;AACD;;AAEDF,IAAAA,IAAI,CAACG,IAAL,GAAY,IAAZ;AACAH,IAAAA,IAAI,CAACM,QAAL,GAAgB,IAAhB;AAEA,MAAE,KAAKT,OAAP;AACD;;AAODU,EAAAA,MAAM,CAACP,IAAD,EAAOQ,QAAP,EAAiB;AACrB,QAAIR,IAAI,KAAKQ,QAAb,EAAuB;AACrB;AACD;;AAGD,SAAKH,MAAL,CAAYG,QAAZ;;AACA,SAAKC,OAAL,CAAaT,IAAb,EAAmBQ,QAAnB;AACD;;AAEDC,EAAAA,OAAO,CAACT,IAAD,EAAOQ,QAAP,EAAiB;AACtB,UAAME,WAAW,GAAGV,IAAI,CAACG,IAAzB;AACAH,IAAAA,IAAI,CAACG,IAAL,GAAYK,QAAZ;;AAGA,QAAI,KAAKN,IAAL,KAAcF,IAAlB,EAAwB;AACtB,WAAKE,IAAL,GAAYM,QAAZ;AACD,KAFD,MAEO;AACLE,MAAAA,WAAW,CAACJ,QAAZ,GAAuBE,QAAvB;AACD;;AAEDA,IAAAA,QAAQ,CAACL,IAAT,GAAgBO,WAAhB;AACAF,IAAAA,QAAQ,CAACF,QAAT,GAAoBN,IAApB;AAEA,MAAE,KAAKH,OAAP;AACD;;AA5FmC","sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport DoublyLinkedListNode from '../utils/doubly-linked-list-node';\n\n/**\n * Doubly linked list\n *\n * @private\n */\nexport default class DoublyLinkedList {\n head: DoublyLinkedListNode | null = null;\n tail: DoublyLinkedListNode | null = null;\n _length = 0;\n\n get length() {\n return this._length;\n }\n\n /**\n * Adds the item to the end of the list\n * @param {*} [item]\n * @return {DoublyLinkedListNode}\n */\n add(item) {\n const node = new DoublyLinkedListNode(item, this.tail, null);\n\n if (this.tail) {\n this.tail.next = node;\n this.tail = node;\n } else {\n this.head = node;\n this.tail = node;\n }\n\n ++this._length;\n\n return node;\n }\n\n /**\n * Removes the given node from the list\n * @param {DoublyLinkedListNode} node\n */\n remove(node) {\n if (!node) {\n return;\n }\n\n if (node.previous && node.next) {\n node.previous.next = node.next;\n node.next.previous = node.previous;\n } else if (node.previous) {\n // Remove last node\n node.previous.next = null;\n this.tail = node.previous;\n } else if (node.next) {\n // Remove first node\n node.next.previous = null;\n this.head = node.next;\n } else {\n // Remove last node in the linked list\n this.head = null;\n this.tail = null;\n }\n\n node.next = null;\n node.previous = null;\n\n --this._length;\n }\n\n /**\n * Moves nextNode after node\n * @param {DoublyLinkedListNode} node\n * @param {DoublyLinkedListNode} nextNode\n */\n splice(node, nextNode) {\n if (node === nextNode) {\n return;\n }\n\n // Remove nextNode, then insert after node\n this.remove(nextNode);\n this._insert(node, nextNode);\n }\n\n _insert(node, nextNode) {\n const oldNodeNext = node.next;\n node.next = nextNode;\n\n // nextNode is the new tail\n if (this.tail === node) {\n this.tail = nextNode;\n } else {\n oldNodeNext.previous = nextNode;\n }\n\n nextNode.next = oldNodeNext;\n nextNode.previous = node;\n\n ++this._length;\n }\n}\n"],"file":"doubly-linked-list.js"}
@@ -1,16 +1,22 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
6
8
  exports.default = void 0;
7
9
 
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
8
12
  var _loaderUtils = require("@loaders.gl/loader-utils");
9
13
 
10
14
  class ManagedArray {
11
15
  constructor(length = 0) {
16
+ (0, _defineProperty2.default)(this, "_map", new Map());
17
+ (0, _defineProperty2.default)(this, "_array", void 0);
18
+ (0, _defineProperty2.default)(this, "_length", void 0);
12
19
  this._array = new Array(length);
13
- this._map = new Map();
14
20
  this._length = length;
15
21
  }
16
22
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/managed-array.js"],"names":["ManagedArray","constructor","length","_array","Array","_map","Map","_length","values","get","index","set","element","has","delete","splice","peek","push","pop","reserve","resize","trim","undefined","reset","find","target"],"mappings":";;;;;;;AAGA;;AAWe,MAAMA,YAAN,CAAmB;AAChCC,EAAAA,WAAW,CAACC,MAAM,GAAG,CAAV,EAAa;AACtB,SAAKC,MAAL,GAAc,IAAIC,KAAJ,CAAUF,MAAV,CAAd;AACA,SAAKG,IAAL,GAAY,IAAIC,GAAJ,EAAZ;AACA,SAAKC,OAAL,GAAeL,MAAf;AACD;;AASS,MAANA,MAAM,GAAG;AACX,WAAO,KAAKK,OAAZ;AACD;;AAES,MAANL,MAAM,CAACA,MAAD,EAAS;AACjB,SAAKK,OAAL,GAAeL,MAAf;;AACA,QAAIA,MAAM,GAAG,KAAKC,MAAL,CAAYD,MAAzB,EAAiC;AAC/B,WAAKC,MAAL,CAAYD,MAAZ,GAAqBA,MAArB;AACD;AACF;;AASS,MAANM,MAAM,GAAG;AACX,WAAO,KAAKL,MAAZ;AACD;;AAODM,EAAAA,GAAG,CAACC,KAAD,EAAQ;AACT,6BAAOA,KAAK,GAAG,KAAKP,MAAL,CAAYD,MAA3B;AACA,WAAO,KAAKC,MAAL,CAAYO,KAAZ,CAAP;AACD;;AAQDC,EAAAA,GAAG,CAACD,KAAD,EAAQE,OAAR,EAAiB;AAClB,6BAAOF,KAAK,IAAI,CAAhB;;AAEA,QAAIA,KAAK,IAAI,KAAKR,MAAlB,EAA0B;AACxB,WAAKA,MAAL,GAAcQ,KAAK,GAAG,CAAtB;AACD;;AAED,QAAI,KAAKL,IAAL,CAAUQ,GAAV,CAAc,KAAKV,MAAL,CAAYO,KAAZ,CAAd,CAAJ,EAAuC;AACrC,WAAKL,IAAL,CAAUS,MAAV,CAAiB,KAAKX,MAAL,CAAYO,KAAZ,CAAjB;AACD;;AAED,SAAKP,MAAL,CAAYO,KAAZ,IAAqBE,OAArB;;AACA,SAAKP,IAAL,CAAUM,GAAV,CAAcC,OAAd,EAAuBF,KAAvB;AACD;;AAEDI,EAAAA,MAAM,CAACF,OAAD,EAAU;AACd,UAAMF,KAAK,GAAG,KAAKL,IAAL,CAAUI,GAAV,CAAcG,OAAd,CAAd;;AACA,QAAIF,KAAK,IAAI,CAAb,EAAgB;AACd,WAAKP,MAAL,CAAYY,MAAZ,CAAmBL,KAAnB,EAA0B,CAA1B;;AACA,WAAKL,IAAL,CAAUS,MAAV,CAAiBF,OAAjB;;AACA,WAAKV,MAAL;AACD;AACF;;AAODc,EAAAA,IAAI,GAAG;AACL,WAAO,KAAKb,MAAL,CAAY,KAAKI,OAAL,GAAe,CAA3B,CAAP;AACD;;AAODU,EAAAA,IAAI,CAACL,OAAD,EAAU;AACZ,QAAI,CAAC,KAAKP,IAAL,CAAUQ,GAAV,CAAcD,OAAd,CAAL,EAA6B;AAC3B,YAAMF,KAAK,GAAG,KAAKR,MAAL,EAAd;AACA,WAAKC,MAAL,CAAYO,KAAZ,IAAqBE,OAArB;;AACA,WAAKP,IAAL,CAAUM,GAAV,CAAcC,OAAd,EAAuBF,KAAvB;AACD;AACF;;AAODQ,EAAAA,GAAG,GAAG;AACJ,UAAMN,OAAO,GAAG,KAAKT,MAAL,CAAY,EAAE,KAAKD,MAAnB,CAAhB;;AACA,SAAKG,IAAL,CAAUS,MAAV,CAAiBF,OAAjB;;AACA,WAAOA,OAAP;AACD;;AAODO,EAAAA,OAAO,CAACjB,MAAD,EAAS;AACd,6BAAOA,MAAM,IAAI,CAAjB;;AAEA,QAAIA,MAAM,GAAG,KAAKC,MAAL,CAAYD,MAAzB,EAAiC;AAC/B,WAAKC,MAAL,CAAYD,MAAZ,GAAqBA,MAArB;AACD;AACF;;AAODkB,EAAAA,MAAM,CAAClB,MAAD,EAAS;AACb,6BAAOA,MAAM,IAAI,CAAjB;AAEA,SAAKA,MAAL,GAAcA,MAAd;AACD;;AAODmB,EAAAA,IAAI,CAACnB,MAAD,EAAS;AACX,QAAIA,MAAM,KAAK,IAAX,IAAmBA,MAAM,KAAKoB,SAAlC,EAA6C;AAC3CpB,MAAAA,MAAM,GAAG,KAAKA,MAAd;AACD;;AACD,SAAKC,MAAL,CAAYD,MAAZ,GAAqBA,MAArB;AACD;;AAEDqB,EAAAA,KAAK,GAAG;AACN,SAAKpB,MAAL,GAAc,EAAd;AACA,SAAKE,IAAL,GAAY,IAAIC,GAAJ,EAAZ;AACA,SAAKC,OAAL,GAAe,CAAf;AACD;;AAEDiB,EAAAA,IAAI,CAACC,MAAD,EAAS;AACX,WAAO,KAAKpB,IAAL,CAAUQ,GAAV,CAAcY,MAAd,CAAP;AACD;;AAzJ+B","sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport {assert} from '@loaders.gl/loader-utils';\n\n/**\n * A wrapper around arrays so that the internal length of the array can be manually managed.\n *\n * @alias ManagedArray\n * @constructor\n * @private\n *\n * @param {Number} [length=0] The initial length of the array.\n */\nexport default class ManagedArray {\n constructor(length = 0) {\n this._array = new Array(length);\n this._map = new Map();\n this._length = length;\n }\n\n /**\n * Gets or sets the length of the array.\n * If the set length is greater than the length of the internal array, the internal array is resized.\n *\n * @memberof ManagedArray.prototype\n * @type Number\n */\n get length() {\n return this._length;\n }\n\n set length(length) {\n this._length = length;\n if (length > this._array.length) {\n this._array.length = length;\n }\n }\n\n /**\n * Gets the internal array.\n *\n * @memberof ManagedArray.prototype\n * @type Array\n * @readonly\n */\n get values() {\n return this._array;\n }\n\n /**\n * Gets the element at an index.\n *\n * @param {Number} index The index to get.\n */\n get(index) {\n assert(index < this._array.length);\n return this._array[index];\n }\n\n /**\n * Sets the element at an index. Resizes the array if index is greater than the length of the array.\n *\n * @param {Number} index The index to set.\n * @param {*} element The element to set at index.\n */\n set(index, element) {\n assert(index >= 0);\n\n if (index >= this.length) {\n this.length = index + 1;\n }\n\n if (this._map.has(this._array[index])) {\n this._map.delete(this._array[index]);\n }\n\n this._array[index] = element;\n this._map.set(element, index);\n }\n\n delete(element) {\n const index = this._map.get(element);\n if (index >= 0) {\n this._array.splice(index, 1);\n this._map.delete(element);\n this.length--;\n }\n }\n\n /**\n * Returns the last element in the array without modifying the array.\n *\n * @returns {*} The last element in the array.\n */\n peek() {\n return this._array[this._length - 1];\n }\n\n /**\n * Push an element into the array.\n *\n * @param {*} element The element to push.\n */\n push(element) {\n if (!this._map.has(element)) {\n const index = this.length++;\n this._array[index] = element;\n this._map.set(element, index);\n }\n }\n\n /**\n * Pop an element from the array.\n *\n * @returns {*} The last element in the array.\n */\n pop() {\n const element = this._array[--this.length];\n this._map.delete(element);\n return element;\n }\n\n /**\n * Resize the internal array if length > _array.length.\n *\n * @param {Number} length The length.\n */\n reserve(length) {\n assert(length >= 0);\n\n if (length > this._array.length) {\n this._array.length = length;\n }\n }\n\n /**\n * Resize the array.\n *\n * @param {Number} length The length.\n */\n resize(length) {\n assert(length >= 0);\n\n this.length = length;\n }\n\n /**\n * Trim the internal array to the specified length. Defaults to the current length.\n *\n * @param {Number} [length] The length.\n */\n trim(length) {\n if (length === null || length === undefined) {\n length = this.length;\n }\n this._array.length = length;\n }\n\n reset() {\n this._array = [];\n this._map = new Map();\n this._length = 0;\n }\n\n find(target) {\n return this._map.has(target);\n }\n}\n"],"file":"managed-array.js"}
1
+ {"version":3,"sources":["../../../src/utils/managed-array.ts"],"names":["ManagedArray","constructor","length","Map","_array","Array","_length","values","get","index","set","element","_map","has","delete","splice","peek","push","pop","reserve","resize","trim","undefined","reset","find","target"],"mappings":"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","sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport {assert} from '@loaders.gl/loader-utils';\n\n/**\n * A wrapper around arrays so that the internal length of the array can be manually managed.\n *\n * @alias ManagedArray\n * @constructor\n * @private\n *\n * @param {Number} [length=0] The initial length of the array.\n */\nexport default class ManagedArray {\n _map = new Map();\n _array: any[];\n _length: number;\n\n constructor(length = 0) {\n this._array = new Array(length);\n this._length = length;\n }\n\n /**\n * Gets or sets the length of the array.\n * If the set length is greater than the length of the internal array, the internal array is resized.\n *\n * @memberof ManagedArray.prototype\n * @type Number\n */\n get length() {\n return this._length;\n }\n\n set length(length) {\n this._length = length;\n if (length > this._array.length) {\n this._array.length = length;\n }\n }\n\n /**\n * Gets the internal array.\n *\n * @memberof ManagedArray.prototype\n * @type Array\n * @readonly\n */\n get values() {\n return this._array;\n }\n\n /**\n * Gets the element at an index.\n *\n * @param {Number} index The index to get.\n */\n get(index) {\n assert(index < this._array.length);\n return this._array[index];\n }\n\n /**\n * Sets the element at an index. Resizes the array if index is greater than the length of the array.\n *\n * @param {Number} index The index to set.\n * @param {*} element The element to set at index.\n */\n set(index, element) {\n assert(index >= 0);\n\n if (index >= this.length) {\n this.length = index + 1;\n }\n\n if (this._map.has(this._array[index])) {\n this._map.delete(this._array[index]);\n }\n\n this._array[index] = element;\n this._map.set(element, index);\n }\n\n delete(element) {\n const index = this._map.get(element);\n if (index >= 0) {\n this._array.splice(index, 1);\n this._map.delete(element);\n this.length--;\n }\n }\n\n /**\n * Returns the last element in the array without modifying the array.\n *\n * @returns {*} The last element in the array.\n */\n peek() {\n return this._array[this._length - 1];\n }\n\n /**\n * Push an element into the array.\n *\n * @param {*} element The element to push.\n */\n push(element) {\n if (!this._map.has(element)) {\n const index = this.length++;\n this._array[index] = element;\n this._map.set(element, index);\n }\n }\n\n /**\n * Pop an element from the array.\n *\n * @returns {*} The last element in the array.\n */\n pop() {\n const element = this._array[--this.length];\n this._map.delete(element);\n return element;\n }\n\n /**\n * Resize the internal array if length > _array.length.\n *\n * @param {Number} length The length.\n */\n reserve(length) {\n assert(length >= 0);\n\n if (length > this._array.length) {\n this._array.length = length;\n }\n }\n\n /**\n * Resize the array.\n *\n * @param {Number} length The length.\n */\n resize(length) {\n assert(length >= 0);\n\n this.length = length;\n }\n\n /**\n * Trim the internal array to the specified length. Defaults to the current length.\n *\n * @param {Number} [length] The length.\n */\n trim(length) {\n if (length === null || length === undefined) {\n length = this.length;\n }\n this._array.length = length;\n }\n\n reset() {\n this._array = [];\n this._map = new Map();\n this._length = 0;\n }\n\n find(target) {\n return this._map.has(target);\n }\n}\n"],"file":"managed-array.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/tileset/helpers/i3s-lod.ts"],"names":["Matrix4","Vector3","Ellipsoid","getLodStatus","tile","frameState","lodMetricValue","isNaN","screenSize","getProjectedRadius","header","children","originalViewport","viewport","ViewportClass","constructor","longitude","latitude","height","width","bearing","zoom","pitch","mbsLat","mbs","mbsLon","mbsZ","mbsR","mbsCenterCartesian","boundingVolume","center","cameraPositionCartographic","unprojectPosition","cameraPosition","cameraPositionCartesian","WGS84","cartographicToCartesian","toEye","subtract","normalize","enuToCartesianMatrix","eastNorthUpToFixedFrame","cartesianToEnuMatrix","invert","cameraPositionEnu","transform","projection","Math","sqrt","extraZ","extraVertexEnu","extraVertexCartesian","extraVectorCartesian","radiusVector","cross","scale","sphereMbsBorderVertexCartesian","add","sphereMbsBorderVertexCartographic","cartesianToCartographic","projectedOrigin","project","projectedMbsBorderVertex","projectedRadius","magnitude"],"mappings":"AAAA,SAAQA,OAAR,EAAiBC,OAAjB,QAA+B,eAA/B;AACA,SAAQC,SAAR,QAAwB,qBAAxB;AAaA,OAAO,SAASC,YAAT,CAAsBC,IAAtB,EAAoCC,UAApC,EAAoF;AACzF,MAAID,IAAI,CAACE,cAAL,KAAwB,CAAxB,IAA6BC,KAAK,CAACH,IAAI,CAACE,cAAN,CAAtC,EAA6D;AAC3D,WAAO,KAAP;AACD;;AACD,QAAME,UAAU,GAAG,IAAIC,kBAAkB,CAACL,IAAD,EAAOC,UAAP,CAAzC;;AACA,MAAIG,UAAU,GAAG,CAAjB,EAAoB;AAClB,WAAO,KAAP;AACD;;AACD,MAAI,CAACJ,IAAI,CAACM,MAAL,CAAYC,QAAb,IAAyBH,UAAU,IAAIJ,IAAI,CAACE,cAAhD,EAAgE;AAC9D,WAAO,MAAP;AACD,GAFD,MAEO,IAAIF,IAAI,CAACM,MAAL,CAAYC,QAAhB,EAA0B;AAC/B,WAAO,KAAP;AACD;;AACD,SAAO,KAAP;AACD;AASD,OAAO,SAASF,kBAAT,CAA4BL,IAA5B,EAA0CC,UAA1C,EAA0E;AAC/E,QAAMO,gBAAgB,GAAGP,UAAU,CAACQ,QAApC;AACA,QAAMC,aAAa,GAAGF,gBAAgB,CAACG,WAAvC;AACA,QAAM;AAACC,IAAAA,SAAD;AAAYC,IAAAA,QAAZ;AAAsBC,IAAAA,MAAtB;AAA8BC,IAAAA,KAA9B;AAAqCC,IAAAA,OAArC;AAA8CC,IAAAA;AAA9C,MAAsDT,gBAA5D;AAEA,QAAMC,QAAQ,GAAG,IAAIC,aAAJ,CAAkB;AAACE,IAAAA,SAAD;AAAYC,IAAAA,QAAZ;AAAsBC,IAAAA,MAAtB;AAA8BC,IAAAA,KAA9B;AAAqCC,IAAAA,OAArC;AAA8CC,IAAAA,IAA9C;AAAoDC,IAAAA,KAAK,EAAE;AAA3D,GAAlB,CAAjB;AACA,QAAMC,MAAM,GAAGnB,IAAI,CAACM,MAAL,CAAYc,GAAZ,CAAgB,CAAhB,CAAf;AACA,QAAMC,MAAM,GAAGrB,IAAI,CAACM,MAAL,CAAYc,GAAZ,CAAgB,CAAhB,CAAf;AACA,QAAME,IAAI,GAAGtB,IAAI,CAACM,MAAL,CAAYc,GAAZ,CAAgB,CAAhB,CAAb;AACA,QAAMG,IAAI,GAAGvB,IAAI,CAACM,MAAL,CAAYc,GAAZ,CAAgB,CAAhB,CAAb;AACA,QAAMI,kBAAkB,GAAG,CAAC,GAAGxB,IAAI,CAACyB,cAAL,CAAoBC,MAAxB,CAA3B;AACA,QAAMC,0BAA0B,GAAGlB,QAAQ,CAACmB,iBAAT,CAA2BnB,QAAQ,CAACoB,cAApC,CAAnC;AACA,QAAMC,uBAAuB,GAAGhC,SAAS,CAACiC,KAAV,CAAgBC,uBAAhB,CAC9BL,0BAD8B,EAE9B,IAAI9B,OAAJ,EAF8B,CAAhC;AAQA,QAAMoC,KAAK,GAAG,IAAIpC,OAAJ,CAAYiC,uBAAZ,EAAqCI,QAArC,CAA8CV,kBAA9C,EAAkEW,SAAlE,EAAd;AAEA,QAAMC,oBAAoB,GAAG,IAAIxC,OAAJ,EAA7B;AACAE,EAAAA,SAAS,CAACiC,KAAV,CAAgBM,uBAAhB,CAAwCb,kBAAxC,EAA4DY,oBAA5D;AACA,QAAME,oBAAoB,GAAG,IAAI1C,OAAJ,CAAYwC,oBAAZ,EAAkCG,MAAlC,EAA7B;AACA,QAAMC,iBAAiB,GAAG,IAAI3C,OAAJ,CAAYiC,uBAAZ,EAAqCW,SAArC,CAA+CH,oBAA/C,CAA1B;AAGA,QAAMI,UAAU,GAAGC,IAAI,CAACC,IAAL,CACjBJ,iBAAiB,CAAC,CAAD,CAAjB,GAAuBA,iBAAiB,CAAC,CAAD,CAAxC,GAA8CA,iBAAiB,CAAC,CAAD,CAAjB,GAAuBA,iBAAiB,CAAC,CAAD,CADrE,CAAnB;AAGA,QAAMK,MAAM,GAAIH,UAAU,GAAGA,UAAd,GAA4BF,iBAAiB,CAAC,CAAD,CAA5D;AACA,QAAMM,cAAc,GAAG,IAAIjD,OAAJ,CAAY,CAAC2C,iBAAiB,CAAC,CAAD,CAAlB,EAAuBA,iBAAiB,CAAC,CAAD,CAAxC,EAA6CK,MAA7C,CAAZ,CAAvB;AACA,QAAME,oBAAoB,GAAGD,cAAc,CAACL,SAAf,CAAyBL,oBAAzB,CAA7B;AACA,QAAMY,oBAAoB,GAAG,IAAInD,OAAJ,CAAYkD,oBAAZ,EAC1Bb,QAD0B,CACjBV,kBADiB,EAE1BW,SAF0B,EAA7B;AAIA,QAAMc,YAAY,GAAGhB,KAAK,CAACiB,KAAN,CAAYF,oBAAZ,EAAkCb,SAAlC,GAA8CgB,KAA9C,CAAoD5B,IAApD,CAArB;AACA,QAAM6B,8BAA8B,GAAG,IAAIvD,OAAJ,CAAY2B,kBAAZ,EAAgC6B,GAAhC,CAAoCJ,YAApC,CAAvC;AACA,QAAMK,iCAAiC,GAAGxD,SAAS,CAACiC,KAAV,CAAgBwB,uBAAhB,CACxCH,8BADwC,CAA1C;AAMA,QAAMI,eAAe,GAAG/C,QAAQ,CAACgD,OAAT,CAAiB,CAACpC,MAAD,EAASF,MAAT,EAAiBG,IAAjB,CAAjB,CAAxB;AACA,QAAMoC,wBAAwB,GAAGjD,QAAQ,CAACgD,OAAT,CAAiBH,iCAAjB,CAAjC;AACA,QAAMK,eAAe,GAAG,IAAI9D,OAAJ,CAAY2D,eAAZ,EACrBtB,QADqB,CACZwB,wBADY,EAErBE,SAFqB,EAAxB;AAGA,SAAOD,eAAP;AACD","sourcesContent":["import {Matrix4, Vector3} from '@math.gl/core';\nimport {Ellipsoid} from '@math.gl/geospatial';\nimport {Tile3D} from '../..';\nimport {FrameState} from './frame-state';\n\n/**\n * For the maxScreenThreshold error metric, maxError means that you should replace the node with it's children\n as soon as the nodes bounding sphere has a screen radius larger than maxError pixels.\n In this sense a value of 0 means you should always load it's children,\n or if it's a leaf node, you should always display it.\n * @param tile \n * @param frameState \n * @returns \n */\nexport function getLodStatus(tile: Tile3D, frameState: FrameState): 'DIG' | 'OUT' | 'DRAW' {\n if (tile.lodMetricValue === 0 || isNaN(tile.lodMetricValue)) {\n return 'DIG';\n }\n const screenSize = 2 * getProjectedRadius(tile, frameState);\n if (screenSize < 2) {\n return 'OUT';\n }\n if (!tile.header.children || screenSize <= tile.lodMetricValue) {\n return 'DRAW';\n } else if (tile.header.children) {\n return 'DIG';\n }\n return 'OUT';\n}\n\n/**\n * Calculate size of MBS radius projected on the screen plane\n * @param tile\n * @param frameState\n * @returns\n */\n// eslint-disable-next-line max-statements\nexport function getProjectedRadius(tile: Tile3D, frameState: FrameState): number {\n const originalViewport = frameState.viewport;\n const ViewportClass = originalViewport.constructor;\n const {longitude, latitude, height, width, bearing, zoom} = originalViewport;\n // @ts-ignore\n const viewport = new ViewportClass({longitude, latitude, height, width, bearing, zoom, pitch: 0});\n const mbsLat = tile.header.mbs[1];\n const mbsLon = tile.header.mbs[0];\n const mbsZ = tile.header.mbs[2];\n const mbsR = tile.header.mbs[3];\n const mbsCenterCartesian = [...tile.boundingVolume.center];\n const cameraPositionCartographic = viewport.unprojectPosition(viewport.cameraPosition);\n const cameraPositionCartesian = Ellipsoid.WGS84.cartographicToCartesian(\n cameraPositionCartographic,\n new Vector3()\n );\n\n // ---------------------------\n // Calculate mbs border vertex\n // ---------------------------\n const toEye = new Vector3(cameraPositionCartesian).subtract(mbsCenterCartesian).normalize();\n // Add extra vector to form plane\n const enuToCartesianMatrix = new Matrix4();\n Ellipsoid.WGS84.eastNorthUpToFixedFrame(mbsCenterCartesian, enuToCartesianMatrix);\n const cartesianToEnuMatrix = new Matrix4(enuToCartesianMatrix).invert();\n const cameraPositionEnu = new Vector3(cameraPositionCartesian).transform(cartesianToEnuMatrix);\n // Mean Proportionals in Right Triangles - Altitude rule\n // https://mathbitsnotebook.com/Geometry/RightTriangles/RTmeanRight.html\n const projection = Math.sqrt(\n cameraPositionEnu[0] * cameraPositionEnu[0] + cameraPositionEnu[1] * cameraPositionEnu[1]\n );\n const extraZ = (projection * projection) / cameraPositionEnu[2];\n const extraVertexEnu = new Vector3([cameraPositionEnu[0], cameraPositionEnu[1], extraZ]);\n const extraVertexCartesian = extraVertexEnu.transform(enuToCartesianMatrix);\n const extraVectorCartesian = new Vector3(extraVertexCartesian)\n .subtract(mbsCenterCartesian)\n .normalize();\n // We need radius vector orthogonal to toEye vector\n const radiusVector = toEye.cross(extraVectorCartesian).normalize().scale(mbsR);\n const sphereMbsBorderVertexCartesian = new Vector3(mbsCenterCartesian).add(radiusVector);\n const sphereMbsBorderVertexCartographic = Ellipsoid.WGS84.cartesianToCartographic(\n sphereMbsBorderVertexCartesian\n );\n // ---------------------------\n\n // Project center vertex and border vertex and calculate projected radius of MBS\n const projectedOrigin = viewport.project([mbsLon, mbsLat, mbsZ]);\n const projectedMbsBorderVertex = viewport.project(sphereMbsBorderVertexCartographic);\n const projectedRadius = new Vector3(projectedOrigin)\n .subtract(projectedMbsBorderVertex)\n .magnitude();\n return projectedRadius;\n}\n"],"file":"i3s-lod.js"}
1
+ {"version":3,"sources":["../../../../src/tileset/helpers/i3s-lod.ts"],"names":["Matrix4","Vector3","Ellipsoid","getLodStatus","tile","frameState","lodMetricValue","isNaN","screenSize","getProjectedRadius","header","children","originalViewport","viewport","ViewportClass","constructor","longitude","latitude","height","width","bearing","zoom","pitch","mbsLat","mbs","mbsLon","mbsZ","mbsR","mbsCenterCartesian","boundingVolume","center","cameraPositionCartographic","unprojectPosition","cameraPosition","cameraPositionCartesian","WGS84","cartographicToCartesian","toEye","subtract","normalize","enuToCartesianMatrix","eastNorthUpToFixedFrame","cartesianToEnuMatrix","invert","cameraPositionEnu","transform","projection","Math","sqrt","extraZ","extraVertexEnu","extraVertexCartesian","extraVectorCartesian","radiusVector","cross","scale","sphereMbsBorderVertexCartesian","add","sphereMbsBorderVertexCartographic","cartesianToCartographic","projectedOrigin","project","projectedMbsBorderVertex","projectedRadius","magnitude"],"mappings":"AAAA,SAAQA,OAAR,EAAiBC,OAAjB,QAA+B,eAA/B;AACA,SAAQC,SAAR,QAAwB,qBAAxB;AAaA,OAAO,SAASC,YAAT,CAAsBC,IAAtB,EAAoCC,UAApC,EAAoF;AACzF,MAAID,IAAI,CAACE,cAAL,KAAwB,CAAxB,IAA6BC,KAAK,CAACH,IAAI,CAACE,cAAN,CAAtC,EAA6D;AAC3D,WAAO,KAAP;AACD;;AACD,QAAME,UAAU,GAAG,IAAIC,kBAAkB,CAACL,IAAD,EAAOC,UAAP,CAAzC;;AACA,MAAIG,UAAU,GAAG,CAAjB,EAAoB;AAClB,WAAO,KAAP;AACD;;AACD,MAAI,CAACJ,IAAI,CAACM,MAAL,CAAYC,QAAb,IAAyBH,UAAU,IAAIJ,IAAI,CAACE,cAAhD,EAAgE;AAC9D,WAAO,MAAP;AACD,GAFD,MAEO,IAAIF,IAAI,CAACM,MAAL,CAAYC,QAAhB,EAA0B;AAC/B,WAAO,KAAP;AACD;;AACD,SAAO,KAAP;AACD;AASD,OAAO,SAASF,kBAAT,CAA4BL,IAA5B,EAA0CC,UAA1C,EAA0E;AAC/E,QAAMO,gBAAgB,GAAGP,UAAU,CAACQ,QAApC;AACA,QAAMC,aAAa,GAAGF,gBAAgB,CAACG,WAAvC;AACA,QAAM;AAACC,IAAAA,SAAD;AAAYC,IAAAA,QAAZ;AAAsBC,IAAAA,MAAtB;AAA8BC,IAAAA,KAA9B;AAAqCC,IAAAA,OAArC;AAA8CC,IAAAA;AAA9C,MAAsDT,gBAA5D;AAEA,QAAMC,QAAQ,GAAG,IAAIC,aAAJ,CAAkB;AAACE,IAAAA,SAAD;AAAYC,IAAAA,QAAZ;AAAsBC,IAAAA,MAAtB;AAA8BC,IAAAA,KAA9B;AAAqCC,IAAAA,OAArC;AAA8CC,IAAAA,IAA9C;AAAoDC,IAAAA,KAAK,EAAE;AAA3D,GAAlB,CAAjB;AACA,QAAMC,MAAM,GAAGnB,IAAI,CAACM,MAAL,CAAYc,GAAZ,CAAgB,CAAhB,CAAf;AACA,QAAMC,MAAM,GAAGrB,IAAI,CAACM,MAAL,CAAYc,GAAZ,CAAgB,CAAhB,CAAf;AACA,QAAME,IAAI,GAAGtB,IAAI,CAACM,MAAL,CAAYc,GAAZ,CAAgB,CAAhB,CAAb;AACA,QAAMG,IAAI,GAAGvB,IAAI,CAACM,MAAL,CAAYc,GAAZ,CAAgB,CAAhB,CAAb;AACA,QAAMI,kBAAkB,GAAG,CAAC,GAAGxB,IAAI,CAACyB,cAAL,CAAoBC,MAAxB,CAA3B;AACA,QAAMC,0BAA0B,GAAGlB,QAAQ,CAACmB,iBAAT,CAA2BnB,QAAQ,CAACoB,cAApC,CAAnC;AACA,QAAMC,uBAAuB,GAAGhC,SAAS,CAACiC,KAAV,CAAgBC,uBAAhB,CAC9BL,0BAD8B,EAE9B,IAAI9B,OAAJ,EAF8B,CAAhC;AAQA,QAAMoC,KAAK,GAAG,IAAIpC,OAAJ,CAAYiC,uBAAZ,EAAqCI,QAArC,CAA8CV,kBAA9C,EAAkEW,SAAlE,EAAd;AAEA,QAAMC,oBAAoB,GAAG,IAAIxC,OAAJ,EAA7B;AACAE,EAAAA,SAAS,CAACiC,KAAV,CAAgBM,uBAAhB,CAAwCb,kBAAxC,EAA4DY,oBAA5D;AACA,QAAME,oBAAoB,GAAG,IAAI1C,OAAJ,CAAYwC,oBAAZ,EAAkCG,MAAlC,EAA7B;AACA,QAAMC,iBAAiB,GAAG,IAAI3C,OAAJ,CAAYiC,uBAAZ,EAAqCW,SAArC,CAA+CH,oBAA/C,CAA1B;AAGA,QAAMI,UAAU,GAAGC,IAAI,CAACC,IAAL,CACjBJ,iBAAiB,CAAC,CAAD,CAAjB,GAAuBA,iBAAiB,CAAC,CAAD,CAAxC,GAA8CA,iBAAiB,CAAC,CAAD,CAAjB,GAAuBA,iBAAiB,CAAC,CAAD,CADrE,CAAnB;AAGA,QAAMK,MAAM,GAAIH,UAAU,GAAGA,UAAd,GAA4BF,iBAAiB,CAAC,CAAD,CAA5D;AACA,QAAMM,cAAc,GAAG,IAAIjD,OAAJ,CAAY,CAAC2C,iBAAiB,CAAC,CAAD,CAAlB,EAAuBA,iBAAiB,CAAC,CAAD,CAAxC,EAA6CK,MAA7C,CAAZ,CAAvB;AACA,QAAME,oBAAoB,GAAGD,cAAc,CAACL,SAAf,CAAyBL,oBAAzB,CAA7B;AACA,QAAMY,oBAAoB,GAAG,IAAInD,OAAJ,CAAYkD,oBAAZ,EAC1Bb,QAD0B,CACjBV,kBADiB,EAE1BW,SAF0B,EAA7B;AAIA,QAAMc,YAAY,GAAGhB,KAAK,CAACiB,KAAN,CAAYF,oBAAZ,EAAkCb,SAAlC,GAA8CgB,KAA9C,CAAoD5B,IAApD,CAArB;AACA,QAAM6B,8BAA8B,GAAG,IAAIvD,OAAJ,CAAY2B,kBAAZ,EAAgC6B,GAAhC,CAAoCJ,YAApC,CAAvC;AACA,QAAMK,iCAAiC,GAAGxD,SAAS,CAACiC,KAAV,CAAgBwB,uBAAhB,CACxCH,8BADwC,CAA1C;AAMA,QAAMI,eAAe,GAAG/C,QAAQ,CAACgD,OAAT,CAAiB,CAACpC,MAAD,EAASF,MAAT,EAAiBG,IAAjB,CAAjB,CAAxB;AACA,QAAMoC,wBAAwB,GAAGjD,QAAQ,CAACgD,OAAT,CAAiBH,iCAAjB,CAAjC;AACA,QAAMK,eAAe,GAAG,IAAI9D,OAAJ,CAAY2D,eAAZ,EACrBtB,QADqB,CACZwB,wBADY,EAErBE,SAFqB,EAAxB;AAGA,SAAOD,eAAP;AACD","sourcesContent":["import {Matrix4, Vector3} from '@math.gl/core';\nimport {Ellipsoid} from '@math.gl/geospatial';\nimport Tile3D from '../tile-3d';\nimport {FrameState} from './frame-state';\n\n/**\n * For the maxScreenThreshold error metric, maxError means that you should replace the node with it's children\n as soon as the nodes bounding sphere has a screen radius larger than maxError pixels.\n In this sense a value of 0 means you should always load it's children,\n or if it's a leaf node, you should always display it.\n * @param tile \n * @param frameState \n * @returns \n */\nexport function getLodStatus(tile: Tile3D, frameState: FrameState): 'DIG' | 'OUT' | 'DRAW' {\n if (tile.lodMetricValue === 0 || isNaN(tile.lodMetricValue)) {\n return 'DIG';\n }\n const screenSize = 2 * getProjectedRadius(tile, frameState);\n if (screenSize < 2) {\n return 'OUT';\n }\n if (!tile.header.children || screenSize <= tile.lodMetricValue) {\n return 'DRAW';\n } else if (tile.header.children) {\n return 'DIG';\n }\n return 'OUT';\n}\n\n/**\n * Calculate size of MBS radius projected on the screen plane\n * @param tile\n * @param frameState\n * @returns\n */\n// eslint-disable-next-line max-statements\nexport function getProjectedRadius(tile: Tile3D, frameState: FrameState): number {\n const originalViewport = frameState.viewport;\n const ViewportClass = originalViewport.constructor;\n const {longitude, latitude, height, width, bearing, zoom} = originalViewport;\n // @ts-ignore\n const viewport = new ViewportClass({longitude, latitude, height, width, bearing, zoom, pitch: 0});\n const mbsLat = tile.header.mbs[1];\n const mbsLon = tile.header.mbs[0];\n const mbsZ = tile.header.mbs[2];\n const mbsR = tile.header.mbs[3];\n const mbsCenterCartesian = [...tile.boundingVolume.center];\n const cameraPositionCartographic = viewport.unprojectPosition(viewport.cameraPosition);\n const cameraPositionCartesian = Ellipsoid.WGS84.cartographicToCartesian(\n cameraPositionCartographic,\n new Vector3()\n );\n\n // ---------------------------\n // Calculate mbs border vertex\n // ---------------------------\n const toEye = new Vector3(cameraPositionCartesian).subtract(mbsCenterCartesian).normalize();\n // Add extra vector to form plane\n const enuToCartesianMatrix = new Matrix4();\n Ellipsoid.WGS84.eastNorthUpToFixedFrame(mbsCenterCartesian, enuToCartesianMatrix);\n const cartesianToEnuMatrix = new Matrix4(enuToCartesianMatrix).invert();\n const cameraPositionEnu = new Vector3(cameraPositionCartesian).transform(cartesianToEnuMatrix);\n // Mean Proportionals in Right Triangles - Altitude rule\n // https://mathbitsnotebook.com/Geometry/RightTriangles/RTmeanRight.html\n const projection = Math.sqrt(\n cameraPositionEnu[0] * cameraPositionEnu[0] + cameraPositionEnu[1] * cameraPositionEnu[1]\n );\n const extraZ = (projection * projection) / cameraPositionEnu[2];\n const extraVertexEnu = new Vector3([cameraPositionEnu[0], cameraPositionEnu[1], extraZ]);\n const extraVertexCartesian = extraVertexEnu.transform(enuToCartesianMatrix);\n const extraVectorCartesian = new Vector3(extraVertexCartesian)\n .subtract(mbsCenterCartesian)\n .normalize();\n // We need radius vector orthogonal to toEye vector\n const radiusVector = toEye.cross(extraVectorCartesian).normalize().scale(mbsR);\n const sphereMbsBorderVertexCartesian = new Vector3(mbsCenterCartesian).add(radiusVector);\n const sphereMbsBorderVertexCartographic = Ellipsoid.WGS84.cartesianToCartographic(\n sphereMbsBorderVertexCartesian\n );\n // ---------------------------\n\n // Project center vertex and border vertex and calculate projected radius of MBS\n const projectedOrigin = viewport.project([mbsLon, mbsLat, mbsZ]);\n const projectedMbsBorderVertex = viewport.project(sphereMbsBorderVertexCartographic);\n const projectedRadius = new Vector3(projectedOrigin)\n .subtract(projectedMbsBorderVertex)\n .magnitude();\n return projectedRadius;\n}\n"],"file":"i3s-lod.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/tileset/tileset-cache.ts"],"names":["DoublyLinkedList","defined","x","undefined","TilesetCache","constructor","_list","_sentinel","add","_trimTiles","reset","splice","tail","touch","tile","node","_cacheNode","tileset","addCallback","unloadTile","unloadCallback","remove","unloadTiles","trimTiles","list","maximumMemoryUsageInBytes","maximumMemoryUsage","sentinel","head","gpuMemoryUsageInBytes","item","next","trim"],"mappings":";AAGA,OAAOA,gBAAP,MAA6B,6BAA7B;;AAEA,SAASC,OAAT,CAAiBC,CAAjB,EAAoB;AAClB,SAAOA,CAAC,KAAKC,SAAN,IAAmBD,CAAC,KAAK,IAAhC;AACD;;AAOD,eAAe,MAAME,YAAN,CAAmB;AAKhCC,EAAAA,WAAW,GAAG;AAAA;;AAAA;;AAAA;;AAGZ,SAAKC,KAAL,GAAa,IAAIN,gBAAJ,EAAb;AACA,SAAKO,SAAL,GAAiB,KAAKD,KAAL,CAAWE,GAAX,CAAe,UAAf,CAAjB;AACA,SAAKC,UAAL,GAAkB,KAAlB;AACD;;AAEDC,EAAAA,KAAK,GAAG;AAIN,SAAKJ,KAAL,CAAWK,MAAX,CAAkB,KAAKL,KAAL,CAAWM,IAA7B,EAAmC,KAAKL,SAAxC;AACD;;AAEDM,EAAAA,KAAK,CAACC,IAAD,EAAO;AACV,UAAMC,IAAI,GAAGD,IAAI,CAACE,UAAlB;;AACA,QAAIf,OAAO,CAACc,IAAD,CAAX,EAAmB;AACjB,WAAKT,KAAL,CAAWK,MAAX,CAAkB,KAAKJ,SAAvB,EAAkCQ,IAAlC;AACD;AACF;;AAEDP,EAAAA,GAAG,CAACS,OAAD,EAAUH,IAAV,EAAgBI,WAAhB,EAA6B;AAC9B,QAAI,CAACjB,OAAO,CAACa,IAAI,CAACE,UAAN,CAAZ,EAA+B;AAC7BF,MAAAA,IAAI,CAACE,UAAL,GAAkB,KAAKV,KAAL,CAAWE,GAAX,CAAeM,IAAf,CAAlB;;AAEA,UAAII,WAAJ,EAAiB;AACfA,QAAAA,WAAW,CAACD,OAAD,EAAUH,IAAV,CAAX;AACD;AACF;AACF;;AAEDK,EAAAA,UAAU,CAACF,OAAD,EAAUH,IAAV,EAAgBM,cAAhB,EAAiC;AACzC,UAAML,IAAI,GAAGD,IAAI,CAACE,UAAlB;;AACA,QAAI,CAACf,OAAO,CAACc,IAAD,CAAZ,EAAoB;AAClB;AACD;;AAED,SAAKT,KAAL,CAAWe,MAAX,CAAkBN,IAAlB;;AACAD,IAAAA,IAAI,CAACE,UAAL,GAAkBb,SAAlB;;AACA,QAAIiB,cAAJ,EAAoB;AAClBA,MAAAA,cAAc,CAACH,OAAD,EAAUH,IAAV,CAAd;AACD;AACF;;AAEDQ,EAAAA,WAAW,CAACL,OAAD,EAAUG,cAAV,EAA0B;AACnC,UAAMG,SAAS,GAAG,KAAKd,UAAvB;AACA,SAAKA,UAAL,GAAkB,KAAlB;AAEA,UAAMe,IAAI,GAAG,KAAKlB,KAAlB;AAEA,UAAMmB,yBAAyB,GAAGR,OAAO,CAACS,kBAAR,GAA6B,IAA7B,GAAoC,IAAtE;AAKA,UAAMC,QAAQ,GAAG,KAAKpB,SAAtB;AACA,QAAIQ,IAAI,GAAGS,IAAI,CAACI,IAAhB;;AAEA,WACEb,IAAI,KAAKY,QAAT,KACCV,OAAO,CAACY,qBAAR,GAAgCJ,yBAAhC,IAA6DF,SAD9D,CADF,EAGE;AACA,YAAMT,IAAI,GAAGC,IAAI,CAACe,IAAlB;AACAf,MAAAA,IAAI,GAAGA,IAAI,CAACgB,IAAZ;AACA,WAAKZ,UAAL,CAAgBF,OAAhB,EAAyBH,IAAzB,EAA+BM,cAA/B;AACD;AACF;;AAEDY,EAAAA,IAAI,GAAG;AACL,SAAKvB,UAAL,GAAkB,IAAlB;AACD;;AA5E+B","sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport DoublyLinkedList from '../utils/doubly-linked-list';\n\nfunction defined(x) {\n return x !== undefined && x !== null;\n}\n\n/**\n * Stores tiles with content loaded.\n *\n * @private\n */\nexport default class TilesetCache {\n private _list: DoublyLinkedList;\n private _sentinel: any;\n private _trimTiles: boolean;\n\n constructor() {\n // [head, sentinel) -> tiles that weren't selected this frame and may be removed from the cache\n // (sentinel, tail] -> tiles that were selected this frame\n this._list = new DoublyLinkedList();\n this._sentinel = this._list.add('sentinel');\n this._trimTiles = false;\n }\n\n reset() {\n // Move sentinel node to the tail so, at the start of the frame, all tiles\n // may be potentially replaced. Tiles are moved to the right of the sentinel\n // when they are selected so they will not be replaced.\n this._list.splice(this._list.tail, this._sentinel);\n }\n\n touch(tile) {\n const node = tile._cacheNode;\n if (defined(node)) {\n this._list.splice(this._sentinel, node);\n }\n }\n\n add(tileset, tile, addCallback) {\n if (!defined(tile._cacheNode)) {\n tile._cacheNode = this._list.add(tile);\n\n if (addCallback) {\n addCallback(tileset, tile);\n }\n }\n }\n\n unloadTile(tileset, tile, unloadCallback?) {\n const node = tile._cacheNode;\n if (!defined(node)) {\n return;\n }\n\n this._list.remove(node);\n tile._cacheNode = undefined;\n if (unloadCallback) {\n unloadCallback(tileset, tile);\n }\n }\n\n unloadTiles(tileset, unloadCallback) {\n const trimTiles = this._trimTiles;\n this._trimTiles = false;\n\n const list = this._list;\n\n const maximumMemoryUsageInBytes = tileset.maximumMemoryUsage * 1024 * 1024;\n\n // Traverse the list only to the sentinel since tiles/nodes to the\n // right of the sentinel were used this frame.\n // The sub-list to the left of the sentinel is ordered from LRU to MRU.\n const sentinel = this._sentinel;\n let node = list.head;\n\n while (\n node !== sentinel &&\n (tileset.gpuMemoryUsageInBytes > maximumMemoryUsageInBytes || trimTiles)\n ) {\n const tile = node.item;\n node = node.next;\n this.unloadTile(tileset, tile, unloadCallback);\n }\n }\n\n trim() {\n this._trimTiles = true;\n }\n}\n"],"file":"tileset-cache.js"}
1
+ {"version":3,"sources":["../../../src/tileset/tileset-cache.ts"],"names":["DoublyLinkedList","defined","x","undefined","TilesetCache","constructor","_list","_sentinel","add","_trimTiles","reset","splice","tail","touch","tile","node","_cacheNode","tileset","addCallback","unloadTile","unloadCallback","remove","unloadTiles","trimTiles","list","maximumMemoryUsageInBytes","maximumMemoryUsage","sentinel","head","gpuMemoryUsageInBytes","item","next","trim"],"mappings":";AAGA,OAAOA,gBAAP,MAA6B,6BAA7B;;AAEA,SAASC,OAAT,CAAiBC,CAAjB,EAAoB;AAClB,SAAOA,CAAC,KAAKC,SAAN,IAAmBD,CAAC,KAAK,IAAhC;AACD;;AAOD,eAAe,MAAME,YAAN,CAAmB;AAKhCC,EAAAA,WAAW,GAAG;AAAA;;AAAA;;AAAA;;AAGZ,SAAKC,KAAL,GAAa,IAAIN,gBAAJ,EAAb;AACA,SAAKO,SAAL,GAAiB,KAAKD,KAAL,CAAWE,GAAX,CAAe,UAAf,CAAjB;AACA,SAAKC,UAAL,GAAkB,KAAlB;AACD;;AAEDC,EAAAA,KAAK,GAAG;AAIN,SAAKJ,KAAL,CAAWK,MAAX,CAAkB,KAAKL,KAAL,CAAWM,IAA7B,EAAmC,KAAKL,SAAxC;AACD;;AAEDM,EAAAA,KAAK,CAACC,IAAD,EAAO;AACV,UAAMC,IAAI,GAAGD,IAAI,CAACE,UAAlB;;AACA,QAAIf,OAAO,CAACc,IAAD,CAAX,EAAmB;AACjB,WAAKT,KAAL,CAAWK,MAAX,CAAkB,KAAKJ,SAAvB,EAAkCQ,IAAlC;AACD;AACF;;AAEDP,EAAAA,GAAG,CAACS,OAAD,EAAUH,IAAV,EAAgBI,WAAhB,EAA6B;AAC9B,QAAI,CAACjB,OAAO,CAACa,IAAI,CAACE,UAAN,CAAZ,EAA+B;AAC7BF,MAAAA,IAAI,CAACE,UAAL,GAAkB,KAAKV,KAAL,CAAWE,GAAX,CAAeM,IAAf,CAAlB;;AAEA,UAAII,WAAJ,EAAiB;AACfA,QAAAA,WAAW,CAACD,OAAD,EAAUH,IAAV,CAAX;AACD;AACF;AACF;;AAEDK,EAAAA,UAAU,CAACF,OAAD,EAAUH,IAAV,EAAgBM,cAAhB,EAAiC;AACzC,UAAML,IAAI,GAAGD,IAAI,CAACE,UAAlB;;AACA,QAAI,CAACf,OAAO,CAACc,IAAD,CAAZ,EAAoB;AAClB;AACD;;AAED,SAAKT,KAAL,CAAWe,MAAX,CAAkBN,IAAlB;;AACAD,IAAAA,IAAI,CAACE,UAAL,GAAkBb,SAAlB;;AACA,QAAIiB,cAAJ,EAAoB;AAClBA,MAAAA,cAAc,CAACH,OAAD,EAAUH,IAAV,CAAd;AACD;AACF;;AAEDQ,EAAAA,WAAW,CAACL,OAAD,EAAUG,cAAV,EAA0B;AACnC,UAAMG,SAAS,GAAG,KAAKd,UAAvB;AACA,SAAKA,UAAL,GAAkB,KAAlB;AAEA,UAAMe,IAAI,GAAG,KAAKlB,KAAlB;AAEA,UAAMmB,yBAAyB,GAAGR,OAAO,CAACS,kBAAR,GAA6B,IAA7B,GAAoC,IAAtE;AAKA,UAAMC,QAAQ,GAAG,KAAKpB,SAAtB;AACA,QAAIQ,IAAI,GAAGS,IAAI,CAACI,IAAhB;;AAEA,WACEb,IAAI,KAAKY,QAAT,KACCV,OAAO,CAACY,qBAAR,GAAgCJ,yBAAhC,IAA6DF,SAD9D,CADF,EAGE;AAEA,YAAMT,IAAI,GAAGC,IAAI,CAACe,IAAlB;AAEAf,MAAAA,IAAI,GAAGA,IAAI,CAACgB,IAAZ;AACA,WAAKZ,UAAL,CAAgBF,OAAhB,EAAyBH,IAAzB,EAA+BM,cAA/B;AACD;AACF;;AAEDY,EAAAA,IAAI,GAAG;AACL,SAAKvB,UAAL,GAAkB,IAAlB;AACD;;AA9E+B","sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport DoublyLinkedList from '../utils/doubly-linked-list';\n\nfunction defined(x) {\n return x !== undefined && x !== null;\n}\n\n/**\n * Stores tiles with content loaded.\n *\n * @private\n */\nexport default class TilesetCache {\n private _list: DoublyLinkedList;\n private _sentinel: any;\n private _trimTiles: boolean;\n\n constructor() {\n // [head, sentinel) -> tiles that weren't selected this frame and may be removed from the cache\n // (sentinel, tail] -> tiles that were selected this frame\n this._list = new DoublyLinkedList();\n this._sentinel = this._list.add('sentinel');\n this._trimTiles = false;\n }\n\n reset() {\n // Move sentinel node to the tail so, at the start of the frame, all tiles\n // may be potentially replaced. Tiles are moved to the right of the sentinel\n // when they are selected so they will not be replaced.\n this._list.splice(this._list.tail, this._sentinel);\n }\n\n touch(tile) {\n const node = tile._cacheNode;\n if (defined(node)) {\n this._list.splice(this._sentinel, node);\n }\n }\n\n add(tileset, tile, addCallback) {\n if (!defined(tile._cacheNode)) {\n tile._cacheNode = this._list.add(tile);\n\n if (addCallback) {\n addCallback(tileset, tile);\n }\n }\n }\n\n unloadTile(tileset, tile, unloadCallback?) {\n const node = tile._cacheNode;\n if (!defined(node)) {\n return;\n }\n\n this._list.remove(node);\n tile._cacheNode = undefined;\n if (unloadCallback) {\n unloadCallback(tileset, tile);\n }\n }\n\n unloadTiles(tileset, unloadCallback) {\n const trimTiles = this._trimTiles;\n this._trimTiles = false;\n\n const list = this._list;\n\n const maximumMemoryUsageInBytes = tileset.maximumMemoryUsage * 1024 * 1024;\n\n // Traverse the list only to the sentinel since tiles/nodes to the\n // right of the sentinel were used this frame.\n // The sub-list to the left of the sentinel is ordered from LRU to MRU.\n const sentinel = this._sentinel;\n let node = list.head;\n\n while (\n node !== sentinel &&\n (tileset.gpuMemoryUsageInBytes > maximumMemoryUsageInBytes || trimTiles)\n ) {\n // @ts-expect-error\n const tile = node.item;\n // @ts-expect-error\n node = node.next;\n this.unloadTile(tileset, tile, unloadCallback);\n }\n }\n\n trim() {\n this._trimTiles = true;\n }\n}\n"],"file":"tileset-cache.js"}
@@ -1,5 +1,12 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
1
2
  export default class DoublyLinkedListNode {
2
3
  constructor(item, previous, next) {
4
+ _defineProperty(this, "item", void 0);
5
+
6
+ _defineProperty(this, "previous", void 0);
7
+
8
+ _defineProperty(this, "next", void 0);
9
+
3
10
  this.item = item;
4
11
  this.previous = previous;
5
12
  this.next = next;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/doubly-linked-list-node.js"],"names":["DoublyLinkedListNode","constructor","item","previous","next"],"mappings":"AAQA,eAAe,MAAMA,oBAAN,CAA2B;AACxCC,EAAAA,WAAW,CAACC,IAAD,EAAOC,QAAP,EAAiBC,IAAjB,EAAuB;AAChC,SAAKF,IAAL,GAAYA,IAAZ;AACA,SAAKC,QAAL,GAAgBA,QAAhB;AACA,SAAKC,IAAL,GAAYA,IAAZ;AACD;;AALuC","sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\n/**\n * Doubly linked list node\n *\n * @private\n */\nexport default class DoublyLinkedListNode {\n constructor(item, previous, next) {\n this.item = item;\n this.previous = previous;\n this.next = next;\n }\n}\n"],"file":"doubly-linked-list-node.js"}
1
+ {"version":3,"sources":["../../../src/utils/doubly-linked-list-node.ts"],"names":["DoublyLinkedListNode","constructor","item","previous","next"],"mappings":";AAQA,eAAe,MAAMA,oBAAN,CAA2B;AAKxCC,EAAAA,WAAW,CAACC,IAAD,EAAOC,QAAP,EAAiBC,IAAjB,EAAuB;AAAA;;AAAA;;AAAA;;AAChC,SAAKF,IAAL,GAAYA,IAAZ;AACA,SAAKC,QAAL,GAAgBA,QAAhB;AACA,SAAKC,IAAL,GAAYA,IAAZ;AACD;;AATuC","sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\n/**\n * Doubly linked list node\n *\n * @private\n */\nexport default class DoublyLinkedListNode {\n item;\n previous;\n next;\n\n constructor(item, previous, next) {\n this.item = item;\n this.previous = previous;\n this.next = next;\n }\n}\n"],"file":"doubly-linked-list-node.js"}
@@ -1,9 +1,12 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
1
2
  import DoublyLinkedListNode from '../utils/doubly-linked-list-node';
2
3
  export default class DoublyLinkedList {
3
4
  constructor() {
4
- this.head = null;
5
- this.tail = null;
6
- this._length = 0;
5
+ _defineProperty(this, "head", null);
6
+
7
+ _defineProperty(this, "tail", null);
8
+
9
+ _defineProperty(this, "_length", 0);
7
10
  }
8
11
 
9
12
  get length() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/doubly-linked-list.js"],"names":["DoublyLinkedListNode","DoublyLinkedList","constructor","head","tail","_length","length","add","item","node","next","remove","previous","splice","nextNode","_insert","oldNodeNext"],"mappings":"AAGA,OAAOA,oBAAP,MAAiC,kCAAjC;AAOA,eAAe,MAAMC,gBAAN,CAAuB;AACpCC,EAAAA,WAAW,GAAG;AACZ,SAAKC,IAAL,GAAY,IAAZ;AACA,SAAKC,IAAL,GAAY,IAAZ;AACA,SAAKC,OAAL,GAAe,CAAf;AACD;;AAES,MAANC,MAAM,GAAG;AACX,WAAO,KAAKD,OAAZ;AACD;;AAODE,EAAAA,GAAG,CAACC,IAAD,EAAO;AACR,UAAMC,IAAI,GAAG,IAAIT,oBAAJ,CAAyBQ,IAAzB,EAA+B,KAAKJ,IAApC,EAA0C,IAA1C,CAAb;;AAEA,QAAI,KAAKA,IAAT,EAAe;AACb,WAAKA,IAAL,CAAUM,IAAV,GAAiBD,IAAjB;AACA,WAAKL,IAAL,GAAYK,IAAZ;AACD,KAHD,MAGO;AACL,WAAKN,IAAL,GAAYM,IAAZ;AACA,WAAKL,IAAL,GAAYK,IAAZ;AACD;;AAED,MAAE,KAAKJ,OAAP;AAEA,WAAOI,IAAP;AACD;;AAMDE,EAAAA,MAAM,CAACF,IAAD,EAAO;AACX,QAAI,CAACA,IAAL,EAAW;AACT;AACD;;AAED,QAAIA,IAAI,CAACG,QAAL,IAAiBH,IAAI,CAACC,IAA1B,EAAgC;AAC9BD,MAAAA,IAAI,CAACG,QAAL,CAAcF,IAAd,GAAqBD,IAAI,CAACC,IAA1B;AACAD,MAAAA,IAAI,CAACC,IAAL,CAAUE,QAAV,GAAqBH,IAAI,CAACG,QAA1B;AACD,KAHD,MAGO,IAAIH,IAAI,CAACG,QAAT,EAAmB;AAExBH,MAAAA,IAAI,CAACG,QAAL,CAAcF,IAAd,GAAqB,IAArB;AACA,WAAKN,IAAL,GAAYK,IAAI,CAACG,QAAjB;AACD,KAJM,MAIA,IAAIH,IAAI,CAACC,IAAT,EAAe;AAEpBD,MAAAA,IAAI,CAACC,IAAL,CAAUE,QAAV,GAAqB,IAArB;AACA,WAAKT,IAAL,GAAYM,IAAI,CAACC,IAAjB;AACD,KAJM,MAIA;AAEL,WAAKP,IAAL,GAAY,IAAZ;AACA,WAAKC,IAAL,GAAY,IAAZ;AACD;;AAEDK,IAAAA,IAAI,CAACC,IAAL,GAAY,IAAZ;AACAD,IAAAA,IAAI,CAACG,QAAL,GAAgB,IAAhB;AAEA,MAAE,KAAKP,OAAP;AACD;;AAODQ,EAAAA,MAAM,CAACJ,IAAD,EAAOK,QAAP,EAAiB;AACrB,QAAIL,IAAI,KAAKK,QAAb,EAAuB;AACrB;AACD;;AAGD,SAAKH,MAAL,CAAYG,QAAZ;;AACA,SAAKC,OAAL,CAAaN,IAAb,EAAmBK,QAAnB;AACD;;AAEDC,EAAAA,OAAO,CAACN,IAAD,EAAOK,QAAP,EAAiB;AACtB,UAAME,WAAW,GAAGP,IAAI,CAACC,IAAzB;AACAD,IAAAA,IAAI,CAACC,IAAL,GAAYI,QAAZ;;AAGA,QAAI,KAAKV,IAAL,KAAcK,IAAlB,EAAwB;AACtB,WAAKL,IAAL,GAAYU,QAAZ;AACD,KAFD,MAEO;AACLE,MAAAA,WAAW,CAACJ,QAAZ,GAAuBE,QAAvB;AACD;;AAEDA,IAAAA,QAAQ,CAACJ,IAAT,GAAgBM,WAAhB;AACAF,IAAAA,QAAQ,CAACF,QAAT,GAAoBH,IAApB;AAEA,MAAE,KAAKJ,OAAP;AACD;;AA9FmC","sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport DoublyLinkedListNode from '../utils/doubly-linked-list-node';\n\n/**\n * Doubly linked list\n *\n * @private\n */\nexport default class DoublyLinkedList {\n constructor() {\n this.head = null;\n this.tail = null;\n this._length = 0;\n }\n\n get length() {\n return this._length;\n }\n\n /**\n * Adds the item to the end of the list\n * @param {*} [item]\n * @return {DoublyLinkedListNode}\n */\n add(item) {\n const node = new DoublyLinkedListNode(item, this.tail, null);\n\n if (this.tail) {\n this.tail.next = node;\n this.tail = node;\n } else {\n this.head = node;\n this.tail = node;\n }\n\n ++this._length;\n\n return node;\n }\n\n /**\n * Removes the given node from the list\n * @param {DoublyLinkedListNode} node\n */\n remove(node) {\n if (!node) {\n return;\n }\n\n if (node.previous && node.next) {\n node.previous.next = node.next;\n node.next.previous = node.previous;\n } else if (node.previous) {\n // Remove last node\n node.previous.next = null;\n this.tail = node.previous;\n } else if (node.next) {\n // Remove first node\n node.next.previous = null;\n this.head = node.next;\n } else {\n // Remove last node in the linked list\n this.head = null;\n this.tail = null;\n }\n\n node.next = null;\n node.previous = null;\n\n --this._length;\n }\n\n /**\n * Moves nextNode after node\n * @param {DoublyLinkedListNode} node\n * @param {DoublyLinkedListNode} nextNode\n */\n splice(node, nextNode) {\n if (node === nextNode) {\n return;\n }\n\n // Remove nextNode, then insert after node\n this.remove(nextNode);\n this._insert(node, nextNode);\n }\n\n _insert(node, nextNode) {\n const oldNodeNext = node.next;\n node.next = nextNode;\n\n // nextNode is the new tail\n if (this.tail === node) {\n this.tail = nextNode;\n } else {\n oldNodeNext.previous = nextNode;\n }\n\n nextNode.next = oldNodeNext;\n nextNode.previous = node;\n\n ++this._length;\n }\n}\n"],"file":"doubly-linked-list.js"}
1
+ {"version":3,"sources":["../../../src/utils/doubly-linked-list.ts"],"names":["DoublyLinkedListNode","DoublyLinkedList","length","_length","add","item","node","tail","next","head","remove","previous","splice","nextNode","_insert","oldNodeNext"],"mappings":";AAGA,OAAOA,oBAAP,MAAiC,kCAAjC;AAOA,eAAe,MAAMC,gBAAN,CAAuB;AAAA;AAAA,kCACA,IADA;;AAAA,kCAEA,IAFA;;AAAA,qCAG1B,CAH0B;AAAA;;AAK1B,MAANC,MAAM,GAAG;AACX,WAAO,KAAKC,OAAZ;AACD;;AAODC,EAAAA,GAAG,CAACC,IAAD,EAAO;AACR,UAAMC,IAAI,GAAG,IAAIN,oBAAJ,CAAyBK,IAAzB,EAA+B,KAAKE,IAApC,EAA0C,IAA1C,CAAb;;AAEA,QAAI,KAAKA,IAAT,EAAe;AACb,WAAKA,IAAL,CAAUC,IAAV,GAAiBF,IAAjB;AACA,WAAKC,IAAL,GAAYD,IAAZ;AACD,KAHD,MAGO;AACL,WAAKG,IAAL,GAAYH,IAAZ;AACA,WAAKC,IAAL,GAAYD,IAAZ;AACD;;AAED,MAAE,KAAKH,OAAP;AAEA,WAAOG,IAAP;AACD;;AAMDI,EAAAA,MAAM,CAACJ,IAAD,EAAO;AACX,QAAI,CAACA,IAAL,EAAW;AACT;AACD;;AAED,QAAIA,IAAI,CAACK,QAAL,IAAiBL,IAAI,CAACE,IAA1B,EAAgC;AAC9BF,MAAAA,IAAI,CAACK,QAAL,CAAcH,IAAd,GAAqBF,IAAI,CAACE,IAA1B;AACAF,MAAAA,IAAI,CAACE,IAAL,CAAUG,QAAV,GAAqBL,IAAI,CAACK,QAA1B;AACD,KAHD,MAGO,IAAIL,IAAI,CAACK,QAAT,EAAmB;AAExBL,MAAAA,IAAI,CAACK,QAAL,CAAcH,IAAd,GAAqB,IAArB;AACA,WAAKD,IAAL,GAAYD,IAAI,CAACK,QAAjB;AACD,KAJM,MAIA,IAAIL,IAAI,CAACE,IAAT,EAAe;AAEpBF,MAAAA,IAAI,CAACE,IAAL,CAAUG,QAAV,GAAqB,IAArB;AACA,WAAKF,IAAL,GAAYH,IAAI,CAACE,IAAjB;AACD,KAJM,MAIA;AAEL,WAAKC,IAAL,GAAY,IAAZ;AACA,WAAKF,IAAL,GAAY,IAAZ;AACD;;AAEDD,IAAAA,IAAI,CAACE,IAAL,GAAY,IAAZ;AACAF,IAAAA,IAAI,CAACK,QAAL,GAAgB,IAAhB;AAEA,MAAE,KAAKR,OAAP;AACD;;AAODS,EAAAA,MAAM,CAACN,IAAD,EAAOO,QAAP,EAAiB;AACrB,QAAIP,IAAI,KAAKO,QAAb,EAAuB;AACrB;AACD;;AAGD,SAAKH,MAAL,CAAYG,QAAZ;;AACA,SAAKC,OAAL,CAAaR,IAAb,EAAmBO,QAAnB;AACD;;AAEDC,EAAAA,OAAO,CAACR,IAAD,EAAOO,QAAP,EAAiB;AACtB,UAAME,WAAW,GAAGT,IAAI,CAACE,IAAzB;AACAF,IAAAA,IAAI,CAACE,IAAL,GAAYK,QAAZ;;AAGA,QAAI,KAAKN,IAAL,KAAcD,IAAlB,EAAwB;AACtB,WAAKC,IAAL,GAAYM,QAAZ;AACD,KAFD,MAEO;AACLE,MAAAA,WAAW,CAACJ,QAAZ,GAAuBE,QAAvB;AACD;;AAEDA,IAAAA,QAAQ,CAACL,IAAT,GAAgBO,WAAhB;AACAF,IAAAA,QAAQ,CAACF,QAAT,GAAoBL,IAApB;AAEA,MAAE,KAAKH,OAAP;AACD;;AA5FmC","sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport DoublyLinkedListNode from '../utils/doubly-linked-list-node';\n\n/**\n * Doubly linked list\n *\n * @private\n */\nexport default class DoublyLinkedList {\n head: DoublyLinkedListNode | null = null;\n tail: DoublyLinkedListNode | null = null;\n _length = 0;\n\n get length() {\n return this._length;\n }\n\n /**\n * Adds the item to the end of the list\n * @param {*} [item]\n * @return {DoublyLinkedListNode}\n */\n add(item) {\n const node = new DoublyLinkedListNode(item, this.tail, null);\n\n if (this.tail) {\n this.tail.next = node;\n this.tail = node;\n } else {\n this.head = node;\n this.tail = node;\n }\n\n ++this._length;\n\n return node;\n }\n\n /**\n * Removes the given node from the list\n * @param {DoublyLinkedListNode} node\n */\n remove(node) {\n if (!node) {\n return;\n }\n\n if (node.previous && node.next) {\n node.previous.next = node.next;\n node.next.previous = node.previous;\n } else if (node.previous) {\n // Remove last node\n node.previous.next = null;\n this.tail = node.previous;\n } else if (node.next) {\n // Remove first node\n node.next.previous = null;\n this.head = node.next;\n } else {\n // Remove last node in the linked list\n this.head = null;\n this.tail = null;\n }\n\n node.next = null;\n node.previous = null;\n\n --this._length;\n }\n\n /**\n * Moves nextNode after node\n * @param {DoublyLinkedListNode} node\n * @param {DoublyLinkedListNode} nextNode\n */\n splice(node, nextNode) {\n if (node === nextNode) {\n return;\n }\n\n // Remove nextNode, then insert after node\n this.remove(nextNode);\n this._insert(node, nextNode);\n }\n\n _insert(node, nextNode) {\n const oldNodeNext = node.next;\n node.next = nextNode;\n\n // nextNode is the new tail\n if (this.tail === node) {\n this.tail = nextNode;\n } else {\n oldNodeNext.previous = nextNode;\n }\n\n nextNode.next = oldNodeNext;\n nextNode.previous = node;\n\n ++this._length;\n }\n}\n"],"file":"doubly-linked-list.js"}
@@ -1,8 +1,14 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
1
2
  import { assert } from '@loaders.gl/loader-utils';
2
3
  export default class ManagedArray {
3
4
  constructor(length = 0) {
5
+ _defineProperty(this, "_map", new Map());
6
+
7
+ _defineProperty(this, "_array", void 0);
8
+
9
+ _defineProperty(this, "_length", void 0);
10
+
4
11
  this._array = new Array(length);
5
- this._map = new Map();
6
12
  this._length = length;
7
13
  }
8
14
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/managed-array.js"],"names":["assert","ManagedArray","constructor","length","_array","Array","_map","Map","_length","values","get","index","set","element","has","delete","splice","peek","push","pop","reserve","resize","trim","undefined","reset","find","target"],"mappings":"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","sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport {assert} from '@loaders.gl/loader-utils';\n\n/**\n * A wrapper around arrays so that the internal length of the array can be manually managed.\n *\n * @alias ManagedArray\n * @constructor\n * @private\n *\n * @param {Number} [length=0] The initial length of the array.\n */\nexport default class ManagedArray {\n constructor(length = 0) {\n this._array = new Array(length);\n this._map = new Map();\n this._length = length;\n }\n\n /**\n * Gets or sets the length of the array.\n * If the set length is greater than the length of the internal array, the internal array is resized.\n *\n * @memberof ManagedArray.prototype\n * @type Number\n */\n get length() {\n return this._length;\n }\n\n set length(length) {\n this._length = length;\n if (length > this._array.length) {\n this._array.length = length;\n }\n }\n\n /**\n * Gets the internal array.\n *\n * @memberof ManagedArray.prototype\n * @type Array\n * @readonly\n */\n get values() {\n return this._array;\n }\n\n /**\n * Gets the element at an index.\n *\n * @param {Number} index The index to get.\n */\n get(index) {\n assert(index < this._array.length);\n return this._array[index];\n }\n\n /**\n * Sets the element at an index. Resizes the array if index is greater than the length of the array.\n *\n * @param {Number} index The index to set.\n * @param {*} element The element to set at index.\n */\n set(index, element) {\n assert(index >= 0);\n\n if (index >= this.length) {\n this.length = index + 1;\n }\n\n if (this._map.has(this._array[index])) {\n this._map.delete(this._array[index]);\n }\n\n this._array[index] = element;\n this._map.set(element, index);\n }\n\n delete(element) {\n const index = this._map.get(element);\n if (index >= 0) {\n this._array.splice(index, 1);\n this._map.delete(element);\n this.length--;\n }\n }\n\n /**\n * Returns the last element in the array without modifying the array.\n *\n * @returns {*} The last element in the array.\n */\n peek() {\n return this._array[this._length - 1];\n }\n\n /**\n * Push an element into the array.\n *\n * @param {*} element The element to push.\n */\n push(element) {\n if (!this._map.has(element)) {\n const index = this.length++;\n this._array[index] = element;\n this._map.set(element, index);\n }\n }\n\n /**\n * Pop an element from the array.\n *\n * @returns {*} The last element in the array.\n */\n pop() {\n const element = this._array[--this.length];\n this._map.delete(element);\n return element;\n }\n\n /**\n * Resize the internal array if length > _array.length.\n *\n * @param {Number} length The length.\n */\n reserve(length) {\n assert(length >= 0);\n\n if (length > this._array.length) {\n this._array.length = length;\n }\n }\n\n /**\n * Resize the array.\n *\n * @param {Number} length The length.\n */\n resize(length) {\n assert(length >= 0);\n\n this.length = length;\n }\n\n /**\n * Trim the internal array to the specified length. Defaults to the current length.\n *\n * @param {Number} [length] The length.\n */\n trim(length) {\n if (length === null || length === undefined) {\n length = this.length;\n }\n this._array.length = length;\n }\n\n reset() {\n this._array = [];\n this._map = new Map();\n this._length = 0;\n }\n\n find(target) {\n return this._map.has(target);\n }\n}\n"],"file":"managed-array.js"}
1
+ {"version":3,"sources":["../../../src/utils/managed-array.ts"],"names":["assert","ManagedArray","constructor","length","Map","_array","Array","_length","values","get","index","set","element","_map","has","delete","splice","peek","push","pop","reserve","resize","trim","undefined","reset","find","target"],"mappings":"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","sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport {assert} from '@loaders.gl/loader-utils';\n\n/**\n * A wrapper around arrays so that the internal length of the array can be manually managed.\n *\n * @alias ManagedArray\n * @constructor\n * @private\n *\n * @param {Number} [length=0] The initial length of the array.\n */\nexport default class ManagedArray {\n _map = new Map();\n _array: any[];\n _length: number;\n\n constructor(length = 0) {\n this._array = new Array(length);\n this._length = length;\n }\n\n /**\n * Gets or sets the length of the array.\n * If the set length is greater than the length of the internal array, the internal array is resized.\n *\n * @memberof ManagedArray.prototype\n * @type Number\n */\n get length() {\n return this._length;\n }\n\n set length(length) {\n this._length = length;\n if (length > this._array.length) {\n this._array.length = length;\n }\n }\n\n /**\n * Gets the internal array.\n *\n * @memberof ManagedArray.prototype\n * @type Array\n * @readonly\n */\n get values() {\n return this._array;\n }\n\n /**\n * Gets the element at an index.\n *\n * @param {Number} index The index to get.\n */\n get(index) {\n assert(index < this._array.length);\n return this._array[index];\n }\n\n /**\n * Sets the element at an index. Resizes the array if index is greater than the length of the array.\n *\n * @param {Number} index The index to set.\n * @param {*} element The element to set at index.\n */\n set(index, element) {\n assert(index >= 0);\n\n if (index >= this.length) {\n this.length = index + 1;\n }\n\n if (this._map.has(this._array[index])) {\n this._map.delete(this._array[index]);\n }\n\n this._array[index] = element;\n this._map.set(element, index);\n }\n\n delete(element) {\n const index = this._map.get(element);\n if (index >= 0) {\n this._array.splice(index, 1);\n this._map.delete(element);\n this.length--;\n }\n }\n\n /**\n * Returns the last element in the array without modifying the array.\n *\n * @returns {*} The last element in the array.\n */\n peek() {\n return this._array[this._length - 1];\n }\n\n /**\n * Push an element into the array.\n *\n * @param {*} element The element to push.\n */\n push(element) {\n if (!this._map.has(element)) {\n const index = this.length++;\n this._array[index] = element;\n this._map.set(element, index);\n }\n }\n\n /**\n * Pop an element from the array.\n *\n * @returns {*} The last element in the array.\n */\n pop() {\n const element = this._array[--this.length];\n this._map.delete(element);\n return element;\n }\n\n /**\n * Resize the internal array if length > _array.length.\n *\n * @param {Number} length The length.\n */\n reserve(length) {\n assert(length >= 0);\n\n if (length > this._array.length) {\n this._array.length = length;\n }\n }\n\n /**\n * Resize the array.\n *\n * @param {Number} length The length.\n */\n resize(length) {\n assert(length >= 0);\n\n this.length = length;\n }\n\n /**\n * Trim the internal array to the specified length. Defaults to the current length.\n *\n * @param {Number} [length] The length.\n */\n trim(length) {\n if (length === null || length === undefined) {\n length = this.length;\n }\n this._array.length = length;\n }\n\n reset() {\n this._array = [];\n this._map = new Map();\n this._length = 0;\n }\n\n find(target) {\n return this._map.has(target);\n }\n}\n"],"file":"managed-array.js"}
package/dist/index.d.ts CHANGED
@@ -8,3 +8,4 @@ export { calculateTransformProps } from './tileset/helpers/transform-utils';
8
8
  export { getFrameState } from './tileset/helpers/frame-state';
9
9
  export { getLodStatus } from './tileset/helpers/i3s-lod';
10
10
  export { TILE_CONTENT_STATE, TILE_REFINEMENT, TILE_TYPE, TILESET_TYPE, LOD_METRIC_TYPE } from './constants';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAC,cAAc,EAAC,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAC,OAAO,IAAI,MAAM,EAAC,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAC,OAAO,IAAI,gBAAgB,EAAC,MAAM,wCAAwC,CAAC;AACnF,OAAO,EAAC,OAAO,IAAI,YAAY,EAAC,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EAAC,oBAAoB,EAAC,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAC,uBAAuB,EAAC,MAAM,mCAAmC,CAAC;AAE1E,OAAO,EAAC,aAAa,EAAC,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AAEvD,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,SAAS,EACT,YAAY,EACZ,eAAe,EAChB,MAAM,aAAa,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.LOD_METRIC_TYPE = exports.TILESET_TYPE = exports.TILE_TYPE = exports.TILE_REFINEMENT = exports.TILE_CONTENT_STATE = exports.getLodStatus = exports.getFrameState = exports.calculateTransformProps = exports.createBoundingVolume = exports.TilesetCache = exports.TilesetTraverser = exports.Tile3D = exports.Tileset3D = void 0;
7
+ var tileset_3d_1 = require("./tileset/tileset-3d");
8
+ Object.defineProperty(exports, "Tileset3D", { enumerable: true, get: function () { return __importDefault(tileset_3d_1).default; } });
9
+ var tile_3d_1 = require("./tileset/tile-3d");
10
+ Object.defineProperty(exports, "Tile3D", { enumerable: true, get: function () { return __importDefault(tile_3d_1).default; } });
11
+ var tileset_traverser_1 = require("./tileset/traversers/tileset-traverser");
12
+ Object.defineProperty(exports, "TilesetTraverser", { enumerable: true, get: function () { return __importDefault(tileset_traverser_1).default; } });
13
+ var tileset_cache_1 = require("./tileset/tileset-cache");
14
+ Object.defineProperty(exports, "TilesetCache", { enumerable: true, get: function () { return __importDefault(tileset_cache_1).default; } });
15
+ var bounding_volume_1 = require("./tileset/helpers/bounding-volume");
16
+ Object.defineProperty(exports, "createBoundingVolume", { enumerable: true, get: function () { return bounding_volume_1.createBoundingVolume; } });
17
+ var transform_utils_1 = require("./tileset/helpers/transform-utils");
18
+ Object.defineProperty(exports, "calculateTransformProps", { enumerable: true, get: function () { return transform_utils_1.calculateTransformProps; } });
19
+ var frame_state_1 = require("./tileset/helpers/frame-state");
20
+ Object.defineProperty(exports, "getFrameState", { enumerable: true, get: function () { return frame_state_1.getFrameState; } });
21
+ var i3s_lod_1 = require("./tileset/helpers/i3s-lod");
22
+ Object.defineProperty(exports, "getLodStatus", { enumerable: true, get: function () { return i3s_lod_1.getLodStatus; } });
23
+ var constants_1 = require("./constants");
24
+ Object.defineProperty(exports, "TILE_CONTENT_STATE", { enumerable: true, get: function () { return constants_1.TILE_CONTENT_STATE; } });
25
+ Object.defineProperty(exports, "TILE_REFINEMENT", { enumerable: true, get: function () { return constants_1.TILE_REFINEMENT; } });
26
+ Object.defineProperty(exports, "TILE_TYPE", { enumerable: true, get: function () { return constants_1.TILE_TYPE; } });
27
+ Object.defineProperty(exports, "TILESET_TYPE", { enumerable: true, get: function () { return constants_1.TILESET_TYPE; } });
28
+ Object.defineProperty(exports, "LOD_METRIC_TYPE", { enumerable: true, get: function () { return constants_1.LOD_METRIC_TYPE; } });
@@ -1,3 +1,4 @@
1
1
  export declare function get3dTilesOptions(tileset: any): {
2
2
  assetGltfUpAxis: any;
3
3
  };
4
+ //# sourceMappingURL=3d-tiles-options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"3d-tiles-options.d.ts","sourceRoot":"","sources":["../../../src/tileset/helpers/3d-tiles-options.ts"],"names":[],"mappings":"AAAA,wBAAgB,iBAAiB,CAAC,OAAO,KAAA;;EAIxC"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.get3dTilesOptions = void 0;
4
+ function get3dTilesOptions(tileset) {
5
+ return {
6
+ assetGltfUpAxis: (tileset.asset && tileset.asset.gltfUpAxis) || 'Y'
7
+ };
8
+ }
9
+ exports.get3dTilesOptions = get3dTilesOptions;
@@ -6,3 +6,4 @@
6
6
  * @returns The modified result parameter or a new TileBoundingVolume instance if none was provided.
7
7
  */
8
8
  export declare function createBoundingVolume(boundingVolumeHeader: any, transform: any, result: any): any;
9
+ //# sourceMappingURL=bounding-volume.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bounding-volume.d.ts","sourceRoot":"","sources":["../../../src/tileset/helpers/bounding-volume.ts"],"names":[],"mappings":"AAuBA;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,oBAAoB,KAAA,EAAE,SAAS,KAAA,EAAE,MAAM,KAAA,OAsC3E"}