@loaders.gl/terrain 3.4.14 → 3.4.15

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.
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- var moduleExports = require('./index');
3
+ const moduleExports = require('./index');
4
4
  globalThis.loaders = globalThis.loaders || {};
5
5
  module.exports = Object.assign(globalThis.loaders, moduleExports);
6
6
  //# sourceMappingURL=bundle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bundle.js","names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"sources":["../../src/bundle.ts"],"sourcesContent":["// @ts-nocheck\nconst moduleExports = require('./index');\nglobalThis.loaders = globalThis.loaders || {};\nmodule.exports = Object.assign(globalThis.loaders, moduleExports);\n"],"mappings":";;AACA,IAAMA,aAAa,GAAGC,OAAO,CAAC,SAAS,CAAC;AACxCC,UAAU,CAACC,OAAO,GAAGD,UAAU,CAACC,OAAO,IAAI,CAAC,CAAC;AAC7CC,MAAM,CAACC,OAAO,GAAGC,MAAM,CAACC,MAAM,CAACL,UAAU,CAACC,OAAO,EAAEH,aAAa,CAAC"}
1
+ {"version":3,"file":"bundle.js","names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"sources":["../../src/bundle.ts"],"sourcesContent":["// @ts-nocheck\nconst moduleExports = require('./index');\nglobalThis.loaders = globalThis.loaders || {};\nmodule.exports = Object.assign(globalThis.loaders, moduleExports);\n"],"mappings":";;AACA,MAAMA,aAAa,GAAGC,OAAO,CAAC,SAAS,CAAC;AACxCC,UAAU,CAACC,OAAO,GAAGD,UAAU,CAACC,OAAO,IAAI,CAAC,CAAC;AAC7CC,MAAM,CAACC,OAAO,GAAGC,MAAM,CAACC,MAAM,CAACL,UAAU,CAACC,OAAO,EAAEH,aAAa,CAAC"}
package/dist/es5/index.js CHANGED
@@ -7,54 +7,35 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.QuantizedMeshLoader = void 0;
8
8
  Object.defineProperty(exports, "QuantizedMeshWorkerLoader", {
9
9
  enumerable: true,
10
- get: function get() {
10
+ get: function () {
11
11
  return _quantizedMeshLoader.QuantizedMeshLoader;
12
12
  }
13
13
  });
14
14
  exports.TerrainLoader = void 0;
15
15
  Object.defineProperty(exports, "TerrainWorkerLoader", {
16
16
  enumerable: true,
17
- get: function get() {
17
+ get: function () {
18
18
  return _terrainLoader.TerrainLoader;
19
19
  }
20
20
  });
21
21
  exports._typecheckTerrainLoader = exports._typecheckQuantizedMeshLoader = void 0;
22
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
23
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
24
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
25
22
  var _parseQuantizedMesh = _interopRequireDefault(require("./lib/parse-quantized-mesh"));
26
23
  var _parseTerrain = _interopRequireDefault(require("./lib/parse-terrain"));
27
24
  var _terrainLoader = require("./terrain-loader");
28
25
  var _quantizedMeshLoader = require("./quantized-mesh-loader");
29
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
30
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
31
- var TerrainLoader = _objectSpread(_objectSpread({}, _terrainLoader.TerrainLoader), {}, {
26
+ const TerrainLoader = {
27
+ ..._terrainLoader.TerrainLoader,
32
28
  parse: _parseTerrain.default
33
- });
29
+ };
34
30
  exports.TerrainLoader = TerrainLoader;
35
- var _typecheckTerrainLoader = TerrainLoader;
31
+ const _typecheckTerrainLoader = TerrainLoader;
36
32
  exports._typecheckTerrainLoader = _typecheckTerrainLoader;
37
- var QuantizedMeshLoader = _objectSpread(_objectSpread({}, _quantizedMeshLoader.QuantizedMeshLoader), {}, {
33
+ const QuantizedMeshLoader = {
34
+ ..._quantizedMeshLoader.QuantizedMeshLoader,
38
35
  parseSync: _parseQuantizedMesh.default,
39
- parse: function () {
40
- var _parse = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(arrayBuffer, options) {
41
- return _regenerator.default.wrap(function _callee$(_context) {
42
- while (1) switch (_context.prev = _context.next) {
43
- case 0:
44
- return _context.abrupt("return", (0, _parseQuantizedMesh.default)(arrayBuffer, options));
45
- case 1:
46
- case "end":
47
- return _context.stop();
48
- }
49
- }, _callee);
50
- }));
51
- function parse(_x, _x2) {
52
- return _parse.apply(this, arguments);
53
- }
54
- return parse;
55
- }()
56
- });
36
+ parse: async (arrayBuffer, options) => (0, _parseQuantizedMesh.default)(arrayBuffer, options)
37
+ };
57
38
  exports.QuantizedMeshLoader = QuantizedMeshLoader;
58
- var _typecheckQuantizedMeshLoader = QuantizedMeshLoader;
39
+ const _typecheckQuantizedMeshLoader = QuantizedMeshLoader;
59
40
  exports._typecheckQuantizedMeshLoader = _typecheckQuantizedMeshLoader;
60
41
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_parseQuantizedMesh","_interopRequireDefault","require","_parseTerrain","_terrainLoader","_quantizedMeshLoader","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","TerrainLoader","TerrainWorkerLoader","parse","loadTerrain","exports","_typecheckTerrainLoader","QuantizedMeshLoader","QuantizedMeshWorkerLoader","parseSync","parseQuantizedMesh","_parse","_asyncToGenerator2","_regenerator","mark","_callee","arrayBuffer","options","wrap","_callee$","_context","prev","next","abrupt","stop","_x","_x2","_typecheckQuantizedMeshLoader"],"sources":["../../src/index.ts"],"sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport parseQuantizedMesh from './lib/parse-quantized-mesh';\nimport loadTerrain from './lib/parse-terrain';\n\nimport {TerrainLoader as TerrainWorkerLoader} from './terrain-loader';\nimport {QuantizedMeshLoader as QuantizedMeshWorkerLoader} from './quantized-mesh-loader';\n\n// TerrainLoader\n\nexport {TerrainWorkerLoader};\n\nexport const TerrainLoader = {\n ...TerrainWorkerLoader,\n parse: loadTerrain\n};\n\nexport const _typecheckTerrainLoader: LoaderWithParser = TerrainLoader; // eslint-disable-line\n\n// QuantizedMeshLoader\n\nexport {QuantizedMeshWorkerLoader};\n\n/**\n * Loader for quantized meshes\n */\nexport const QuantizedMeshLoader = {\n ...QuantizedMeshWorkerLoader,\n parseSync: parseQuantizedMesh,\n parse: async (arrayBuffer, options) => parseQuantizedMesh(arrayBuffer, options)\n};\n\nexport const _typecheckQuantizedMeshLoader: LoaderWithParser = QuantizedMeshLoader;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AACA,IAAAA,mBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,aAAA,GAAAF,sBAAA,CAAAC,OAAA;AAEA,IAAAE,cAAA,GAAAF,OAAA;AACA,IAAAG,oBAAA,GAAAH,OAAA;AAAyF,SAAAI,QAAAC,MAAA,EAAAC,cAAA,QAAAC,IAAA,GAAAC,MAAA,CAAAD,IAAA,CAAAF,MAAA,OAAAG,MAAA,CAAAC,qBAAA,QAAAC,OAAA,GAAAF,MAAA,CAAAC,qBAAA,CAAAJ,MAAA,GAAAC,cAAA,KAAAI,OAAA,GAAAA,OAAA,CAAAC,MAAA,WAAAC,GAAA,WAAAJ,MAAA,CAAAK,wBAAA,CAAAR,MAAA,EAAAO,GAAA,EAAAE,UAAA,OAAAP,IAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,IAAA,EAAAG,OAAA,YAAAH,IAAA;AAAA,SAAAU,cAAAC,MAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAF,CAAA,UAAAG,MAAA,WAAAF,SAAA,CAAAD,CAAA,IAAAC,SAAA,CAAAD,CAAA,QAAAA,CAAA,OAAAf,OAAA,CAAAI,MAAA,CAAAc,MAAA,OAAAC,OAAA,WAAAC,GAAA,QAAAC,gBAAA,CAAAC,OAAA,EAAAR,MAAA,EAAAM,GAAA,EAAAF,MAAA,CAAAE,GAAA,SAAAhB,MAAA,CAAAmB,yBAAA,GAAAnB,MAAA,CAAAoB,gBAAA,CAAAV,MAAA,EAAAV,MAAA,CAAAmB,yBAAA,CAAAL,MAAA,KAAAlB,OAAA,CAAAI,MAAA,CAAAc,MAAA,GAAAC,OAAA,WAAAC,GAAA,IAAAhB,MAAA,CAAAqB,cAAA,CAAAX,MAAA,EAAAM,GAAA,EAAAhB,MAAA,CAAAK,wBAAA,CAAAS,MAAA,EAAAE,GAAA,iBAAAN,MAAA;AAMlF,IAAMY,aAAa,GAAAb,aAAA,CAAAA,aAAA,KACrBc,4BAAmB;EACtBC,KAAK,EAAEC;AAAW,EACnB;AAACC,OAAA,CAAAJ,aAAA,GAAAA,aAAA;AAEK,IAAMK,uBAAyC,GAAGL,aAAa;AAACI,OAAA,CAAAC,uBAAA,GAAAA,uBAAA;AAShE,IAAMC,mBAAmB,GAAAnB,aAAA,CAAAA,aAAA,KAC3BoB,wCAAyB;EAC5BC,SAAS,EAAEC,2BAAkB;EAC7BP,KAAK;IAAA,IAAAQ,MAAA,OAAAC,kBAAA,CAAAf,OAAA,EAAAgB,YAAA,CAAAhB,OAAA,CAAAiB,IAAA,CAAE,SAAAC,QAAOC,WAAW,EAAEC,OAAO;MAAA,OAAAJ,YAAA,CAAAhB,OAAA,CAAAqB,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;UAAA;YAAA,OAAAF,QAAA,CAAAG,MAAA,WAAK,IAAAb,2BAAkB,EAACM,WAAW,EAAEC,OAAO,CAAC;UAAA;UAAA;YAAA,OAAAG,QAAA,CAAAI,IAAA;QAAA;MAAA,GAAAT,OAAA;IAAA;IAAA,SAAAZ,MAAAsB,EAAA,EAAAC,GAAA;MAAA,OAAAf,MAAA,CAAAxB,KAAA,OAAAI,SAAA;IAAA;IAAA,OAAAY,KAAA;EAAA;AAAA,EAChF;AAACE,OAAA,CAAAE,mBAAA,GAAAA,mBAAA;AAEK,IAAMoB,6BAA+C,GAAGpB,mBAAmB;AAACF,OAAA,CAAAsB,6BAAA,GAAAA,6BAAA"}
1
+ {"version":3,"file":"index.js","names":["_parseQuantizedMesh","_interopRequireDefault","require","_parseTerrain","_terrainLoader","_quantizedMeshLoader","TerrainLoader","TerrainWorkerLoader","parse","loadTerrain","exports","_typecheckTerrainLoader","QuantizedMeshLoader","QuantizedMeshWorkerLoader","parseSync","parseQuantizedMesh","arrayBuffer","options","_typecheckQuantizedMeshLoader"],"sources":["../../src/index.ts"],"sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport parseQuantizedMesh from './lib/parse-quantized-mesh';\nimport loadTerrain from './lib/parse-terrain';\n\nimport {TerrainLoader as TerrainWorkerLoader} from './terrain-loader';\nimport {QuantizedMeshLoader as QuantizedMeshWorkerLoader} from './quantized-mesh-loader';\n\n// TerrainLoader\n\nexport {TerrainWorkerLoader};\n\nexport const TerrainLoader = {\n ...TerrainWorkerLoader,\n parse: loadTerrain\n};\n\nexport const _typecheckTerrainLoader: LoaderWithParser = TerrainLoader; // eslint-disable-line\n\n// QuantizedMeshLoader\n\nexport {QuantizedMeshWorkerLoader};\n\n/**\n * Loader for quantized meshes\n */\nexport const QuantizedMeshLoader = {\n ...QuantizedMeshWorkerLoader,\n parseSync: parseQuantizedMesh,\n parse: async (arrayBuffer, options) => parseQuantizedMesh(arrayBuffer, options)\n};\n\nexport const _typecheckQuantizedMeshLoader: LoaderWithParser = QuantizedMeshLoader;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AACA,IAAAA,mBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,aAAA,GAAAF,sBAAA,CAAAC,OAAA;AAEA,IAAAE,cAAA,GAAAF,OAAA;AACA,IAAAG,oBAAA,GAAAH,OAAA;AAMO,MAAMI,aAAa,GAAG;EAC3B,GAAGC,4BAAmB;EACtBC,KAAK,EAAEC;AACT,CAAC;AAACC,OAAA,CAAAJ,aAAA,GAAAA,aAAA;AAEK,MAAMK,uBAAyC,GAAGL,aAAa;AAACI,OAAA,CAAAC,uBAAA,GAAAA,uBAAA;AAShE,MAAMC,mBAAmB,GAAG;EACjC,GAAGC,wCAAyB;EAC5BC,SAAS,EAAEC,2BAAkB;EAC7BP,KAAK,EAAE,MAAAA,CAAOQ,WAAW,EAAEC,OAAO,KAAK,IAAAF,2BAAkB,EAACC,WAAW,EAAEC,OAAO;AAChF,CAAC;AAACP,OAAA,CAAAE,mBAAA,GAAAA,mBAAA;AAEK,MAAMM,6BAA+C,GAAGN,mBAAmB;AAACF,OAAA,CAAAQ,6BAAA,GAAAA,6BAAA"}
@@ -1,58 +1,42 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports.DECODING_STEPS = void 0;
8
7
  exports.default = decode;
9
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
11
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
12
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
13
- var QUANTIZED_MESH_HEADER = new Map([['centerX', Float64Array.BYTES_PER_ELEMENT], ['centerY', Float64Array.BYTES_PER_ELEMENT], ['centerZ', Float64Array.BYTES_PER_ELEMENT], ['minHeight', Float32Array.BYTES_PER_ELEMENT], ['maxHeight', Float32Array.BYTES_PER_ELEMENT], ['boundingSphereCenterX', Float64Array.BYTES_PER_ELEMENT], ['boundingSphereCenterY', Float64Array.BYTES_PER_ELEMENT], ['boundingSphereCenterZ', Float64Array.BYTES_PER_ELEMENT], ['boundingSphereRadius', Float64Array.BYTES_PER_ELEMENT], ['horizonOcclusionPointX', Float64Array.BYTES_PER_ELEMENT], ['horizonOcclusionPointY', Float64Array.BYTES_PER_ELEMENT], ['horizonOcclusionPointZ', Float64Array.BYTES_PER_ELEMENT]]);
8
+ const QUANTIZED_MESH_HEADER = new Map([['centerX', Float64Array.BYTES_PER_ELEMENT], ['centerY', Float64Array.BYTES_PER_ELEMENT], ['centerZ', Float64Array.BYTES_PER_ELEMENT], ['minHeight', Float32Array.BYTES_PER_ELEMENT], ['maxHeight', Float32Array.BYTES_PER_ELEMENT], ['boundingSphereCenterX', Float64Array.BYTES_PER_ELEMENT], ['boundingSphereCenterY', Float64Array.BYTES_PER_ELEMENT], ['boundingSphereCenterZ', Float64Array.BYTES_PER_ELEMENT], ['boundingSphereRadius', Float64Array.BYTES_PER_ELEMENT], ['horizonOcclusionPointX', Float64Array.BYTES_PER_ELEMENT], ['horizonOcclusionPointY', Float64Array.BYTES_PER_ELEMENT], ['horizonOcclusionPointZ', Float64Array.BYTES_PER_ELEMENT]]);
14
9
  function decodeZigZag(value) {
15
10
  return value >> 1 ^ -(value & 1);
16
11
  }
17
12
  function decodeHeader(dataView) {
18
- var position = 0;
19
- var header = {};
20
- var _iterator = _createForOfIteratorHelper(QUANTIZED_MESH_HEADER),
21
- _step;
22
- try {
23
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
24
- var _step$value = (0, _slicedToArray2.default)(_step.value, 2),
25
- key = _step$value[0],
26
- bytesCount = _step$value[1];
27
- var getter = bytesCount === 8 ? dataView.getFloat64 : dataView.getFloat32;
28
- header[key] = getter.call(dataView, position, true);
29
- position += bytesCount;
30
- }
31
- } catch (err) {
32
- _iterator.e(err);
33
- } finally {
34
- _iterator.f();
13
+ let position = 0;
14
+ const header = {};
15
+ for (const [key, bytesCount] of QUANTIZED_MESH_HEADER) {
16
+ const getter = bytesCount === 8 ? dataView.getFloat64 : dataView.getFloat32;
17
+ header[key] = getter.call(dataView, position, true);
18
+ position += bytesCount;
35
19
  }
36
20
  return {
37
- header: header,
21
+ header,
38
22
  headerEndPosition: position
39
23
  };
40
24
  }
41
25
  function decodeVertexData(dataView, headerEndPosition) {
42
- var position = headerEndPosition;
43
- var elementsPerVertex = 3;
44
- var vertexCount = dataView.getUint32(position, true);
45
- var vertexData = new Uint16Array(vertexCount * elementsPerVertex);
26
+ let position = headerEndPosition;
27
+ const elementsPerVertex = 3;
28
+ const vertexCount = dataView.getUint32(position, true);
29
+ const vertexData = new Uint16Array(vertexCount * elementsPerVertex);
46
30
  position += Uint32Array.BYTES_PER_ELEMENT;
47
- var bytesPerArrayElement = Uint16Array.BYTES_PER_ELEMENT;
48
- var elementArrayLength = vertexCount * bytesPerArrayElement;
49
- var uArrayStartPosition = position;
50
- var vArrayStartPosition = uArrayStartPosition + elementArrayLength;
51
- var heightArrayStartPosition = vArrayStartPosition + elementArrayLength;
52
- var u = 0;
53
- var v = 0;
54
- var height = 0;
55
- for (var i = 0; i < vertexCount; i++) {
31
+ const bytesPerArrayElement = Uint16Array.BYTES_PER_ELEMENT;
32
+ const elementArrayLength = vertexCount * bytesPerArrayElement;
33
+ const uArrayStartPosition = position;
34
+ const vArrayStartPosition = uArrayStartPosition + elementArrayLength;
35
+ const heightArrayStartPosition = vArrayStartPosition + elementArrayLength;
36
+ let u = 0;
37
+ let v = 0;
38
+ let height = 0;
39
+ for (let i = 0; i < vertexCount; i++) {
56
40
  u += decodeZigZag(dataView.getUint16(uArrayStartPosition + bytesPerArrayElement * i, true));
57
41
  v += decodeZigZag(dataView.getUint16(vArrayStartPosition + bytesPerArrayElement * i, true));
58
42
  height += decodeZigZag(dataView.getUint16(heightArrayStartPosition + bytesPerArrayElement * i, true));
@@ -62,13 +46,13 @@ function decodeVertexData(dataView, headerEndPosition) {
62
46
  }
63
47
  position += elementArrayLength * 3;
64
48
  return {
65
- vertexData: vertexData,
49
+ vertexData,
66
50
  vertexDataEndPosition: position
67
51
  };
68
52
  }
69
53
  function decodeIndex(buffer, position, indicesCount, bytesPerIndex) {
70
- var encoded = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
71
- var indices;
54
+ let encoded = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
55
+ let indices;
72
56
  if (bytesPerIndex === 2) {
73
57
  indices = new Uint16Array(buffer, position, indicesCount);
74
58
  } else {
@@ -77,9 +61,9 @@ function decodeIndex(buffer, position, indicesCount, bytesPerIndex) {
77
61
  if (!encoded) {
78
62
  return indices;
79
63
  }
80
- var highest = 0;
81
- for (var i = 0; i < indices.length; ++i) {
82
- var code = indices[i];
64
+ let highest = 0;
65
+ for (let i = 0; i < indices.length; ++i) {
66
+ const code = indices[i];
83
67
  indices[i] = highest - code;
84
68
  if (code === 0) {
85
69
  ++highest;
@@ -88,50 +72,50 @@ function decodeIndex(buffer, position, indicesCount, bytesPerIndex) {
88
72
  return indices;
89
73
  }
90
74
  function decodeTriangleIndices(dataView, vertexData, vertexDataEndPosition) {
91
- var position = vertexDataEndPosition;
92
- var elementsPerVertex = 3;
93
- var vertexCount = vertexData.length / elementsPerVertex;
94
- var bytesPerIndex = vertexCount > 65536 ? Uint32Array.BYTES_PER_ELEMENT : Uint16Array.BYTES_PER_ELEMENT;
75
+ let position = vertexDataEndPosition;
76
+ const elementsPerVertex = 3;
77
+ const vertexCount = vertexData.length / elementsPerVertex;
78
+ const bytesPerIndex = vertexCount > 65536 ? Uint32Array.BYTES_PER_ELEMENT : Uint16Array.BYTES_PER_ELEMENT;
95
79
  if (position % bytesPerIndex !== 0) {
96
80
  position += bytesPerIndex - position % bytesPerIndex;
97
81
  }
98
- var triangleCount = dataView.getUint32(position, true);
82
+ const triangleCount = dataView.getUint32(position, true);
99
83
  position += Uint32Array.BYTES_PER_ELEMENT;
100
- var triangleIndicesCount = triangleCount * 3;
101
- var triangleIndices = decodeIndex(dataView.buffer, position, triangleIndicesCount, bytesPerIndex);
84
+ const triangleIndicesCount = triangleCount * 3;
85
+ const triangleIndices = decodeIndex(dataView.buffer, position, triangleIndicesCount, bytesPerIndex);
102
86
  position += triangleIndicesCount * bytesPerIndex;
103
87
  return {
104
88
  triangleIndicesEndPosition: position,
105
- triangleIndices: triangleIndices
89
+ triangleIndices
106
90
  };
107
91
  }
108
92
  function decodeEdgeIndices(dataView, vertexData, triangleIndicesEndPosition) {
109
- var position = triangleIndicesEndPosition;
110
- var elementsPerVertex = 3;
111
- var vertexCount = vertexData.length / elementsPerVertex;
112
- var bytesPerIndex = vertexCount > 65536 ? Uint32Array.BYTES_PER_ELEMENT : Uint16Array.BYTES_PER_ELEMENT;
113
- var westVertexCount = dataView.getUint32(position, true);
93
+ let position = triangleIndicesEndPosition;
94
+ const elementsPerVertex = 3;
95
+ const vertexCount = vertexData.length / elementsPerVertex;
96
+ const bytesPerIndex = vertexCount > 65536 ? Uint32Array.BYTES_PER_ELEMENT : Uint16Array.BYTES_PER_ELEMENT;
97
+ const westVertexCount = dataView.getUint32(position, true);
114
98
  position += Uint32Array.BYTES_PER_ELEMENT;
115
- var westIndices = decodeIndex(dataView.buffer, position, westVertexCount, bytesPerIndex, false);
99
+ const westIndices = decodeIndex(dataView.buffer, position, westVertexCount, bytesPerIndex, false);
116
100
  position += westVertexCount * bytesPerIndex;
117
- var southVertexCount = dataView.getUint32(position, true);
101
+ const southVertexCount = dataView.getUint32(position, true);
118
102
  position += Uint32Array.BYTES_PER_ELEMENT;
119
- var southIndices = decodeIndex(dataView.buffer, position, southVertexCount, bytesPerIndex, false);
103
+ const southIndices = decodeIndex(dataView.buffer, position, southVertexCount, bytesPerIndex, false);
120
104
  position += southVertexCount * bytesPerIndex;
121
- var eastVertexCount = dataView.getUint32(position, true);
105
+ const eastVertexCount = dataView.getUint32(position, true);
122
106
  position += Uint32Array.BYTES_PER_ELEMENT;
123
- var eastIndices = decodeIndex(dataView.buffer, position, eastVertexCount, bytesPerIndex, false);
107
+ const eastIndices = decodeIndex(dataView.buffer, position, eastVertexCount, bytesPerIndex, false);
124
108
  position += eastVertexCount * bytesPerIndex;
125
- var northVertexCount = dataView.getUint32(position, true);
109
+ const northVertexCount = dataView.getUint32(position, true);
126
110
  position += Uint32Array.BYTES_PER_ELEMENT;
127
- var northIndices = decodeIndex(dataView.buffer, position, northVertexCount, bytesPerIndex, false);
111
+ const northIndices = decodeIndex(dataView.buffer, position, northVertexCount, bytesPerIndex, false);
128
112
  position += northVertexCount * bytesPerIndex;
129
113
  return {
130
114
  edgeIndicesEndPosition: position,
131
- westIndices: westIndices,
132
- southIndices: southIndices,
133
- eastIndices: eastIndices,
134
- northIndices: northIndices
115
+ westIndices,
116
+ southIndices,
117
+ eastIndices,
118
+ northIndices
135
119
  };
136
120
  }
137
121
  function decodeVertexNormalsExtension(extensionDataView) {
@@ -141,20 +125,20 @@ function decodeWaterMaskExtension(extensionDataView) {
141
125
  return extensionDataView.buffer.slice(extensionDataView.byteOffset, extensionDataView.byteOffset + extensionDataView.byteLength);
142
126
  }
143
127
  function decodeExtensions(dataView, indicesEndPosition) {
144
- var extensions = {};
128
+ const extensions = {};
145
129
  if (dataView.byteLength <= indicesEndPosition) {
146
130
  return {
147
- extensions: extensions,
131
+ extensions,
148
132
  extensionsEndPosition: indicesEndPosition
149
133
  };
150
134
  }
151
- var position = indicesEndPosition;
135
+ let position = indicesEndPosition;
152
136
  while (position < dataView.byteLength) {
153
- var extensionId = dataView.getUint8(position, true);
137
+ const extensionId = dataView.getUint8(position, true);
154
138
  position += Uint8Array.BYTES_PER_ELEMENT;
155
- var extensionLength = dataView.getUint32(position, true);
139
+ const extensionLength = dataView.getUint32(position, true);
156
140
  position += Uint32Array.BYTES_PER_ELEMENT;
157
- var extensionView = new DataView(dataView.buffer, position, extensionLength);
141
+ const extensionView = new DataView(dataView.buffer, position, extensionLength);
158
142
  switch (extensionId) {
159
143
  case 1:
160
144
  {
@@ -172,11 +156,11 @@ function decodeExtensions(dataView, indicesEndPosition) {
172
156
  position += extensionLength;
173
157
  }
174
158
  return {
175
- extensions: extensions,
159
+ extensions,
176
160
  extensionsEndPosition: position
177
161
  };
178
162
  }
179
- var DECODING_STEPS = {
163
+ const DECODING_STEPS = {
180
164
  header: 0,
181
165
  vertices: 1,
182
166
  triangleIndices: 2,
@@ -184,67 +168,72 @@ var DECODING_STEPS = {
184
168
  extensions: 4
185
169
  };
186
170
  exports.DECODING_STEPS = DECODING_STEPS;
187
- var DEFAULT_OPTIONS = {
171
+ const DEFAULT_OPTIONS = {
188
172
  maxDecodingStep: DECODING_STEPS.extensions
189
173
  };
190
174
  function decode(data, userOptions) {
191
- var options = Object.assign({}, DEFAULT_OPTIONS, userOptions);
192
- var view = new DataView(data);
193
- var _decodeHeader = decodeHeader(view),
194
- header = _decodeHeader.header,
195
- headerEndPosition = _decodeHeader.headerEndPosition;
175
+ const options = Object.assign({}, DEFAULT_OPTIONS, userOptions);
176
+ const view = new DataView(data);
177
+ const {
178
+ header,
179
+ headerEndPosition
180
+ } = decodeHeader(view);
196
181
  if (options.maxDecodingStep < DECODING_STEPS.vertices) {
197
182
  return {
198
- header: header
183
+ header
199
184
  };
200
185
  }
201
- var _decodeVertexData = decodeVertexData(view, headerEndPosition),
202
- vertexData = _decodeVertexData.vertexData,
203
- vertexDataEndPosition = _decodeVertexData.vertexDataEndPosition;
186
+ const {
187
+ vertexData,
188
+ vertexDataEndPosition
189
+ } = decodeVertexData(view, headerEndPosition);
204
190
  if (options.maxDecodingStep < DECODING_STEPS.triangleIndices) {
205
191
  return {
206
- header: header,
207
- vertexData: vertexData
192
+ header,
193
+ vertexData
208
194
  };
209
195
  }
210
- var _decodeTriangleIndice = decodeTriangleIndices(view, vertexData, vertexDataEndPosition),
211
- triangleIndices = _decodeTriangleIndice.triangleIndices,
212
- triangleIndicesEndPosition = _decodeTriangleIndice.triangleIndicesEndPosition;
196
+ const {
197
+ triangleIndices,
198
+ triangleIndicesEndPosition
199
+ } = decodeTriangleIndices(view, vertexData, vertexDataEndPosition);
213
200
  if (options.maxDecodingStep < DECODING_STEPS.edgeIndices) {
214
201
  return {
215
- header: header,
216
- vertexData: vertexData,
217
- triangleIndices: triangleIndices
202
+ header,
203
+ vertexData,
204
+ triangleIndices
218
205
  };
219
206
  }
220
- var _decodeEdgeIndices = decodeEdgeIndices(view, vertexData, triangleIndicesEndPosition),
221
- westIndices = _decodeEdgeIndices.westIndices,
222
- southIndices = _decodeEdgeIndices.southIndices,
223
- eastIndices = _decodeEdgeIndices.eastIndices,
224
- northIndices = _decodeEdgeIndices.northIndices,
225
- edgeIndicesEndPosition = _decodeEdgeIndices.edgeIndicesEndPosition;
207
+ const {
208
+ westIndices,
209
+ southIndices,
210
+ eastIndices,
211
+ northIndices,
212
+ edgeIndicesEndPosition
213
+ } = decodeEdgeIndices(view, vertexData, triangleIndicesEndPosition);
226
214
  if (options.maxDecodingStep < DECODING_STEPS.extensions) {
227
215
  return {
228
- header: header,
229
- vertexData: vertexData,
230
- triangleIndices: triangleIndices,
231
- westIndices: westIndices,
232
- northIndices: northIndices,
233
- eastIndices: eastIndices,
234
- southIndices: southIndices
216
+ header,
217
+ vertexData,
218
+ triangleIndices,
219
+ westIndices,
220
+ northIndices,
221
+ eastIndices,
222
+ southIndices
235
223
  };
236
224
  }
237
- var _decodeExtensions = decodeExtensions(view, edgeIndicesEndPosition),
238
- extensions = _decodeExtensions.extensions;
225
+ const {
226
+ extensions
227
+ } = decodeExtensions(view, edgeIndicesEndPosition);
239
228
  return {
240
- header: header,
241
- vertexData: vertexData,
242
- triangleIndices: triangleIndices,
243
- westIndices: westIndices,
244
- northIndices: northIndices,
245
- eastIndices: eastIndices,
246
- southIndices: southIndices,
247
- extensions: extensions
229
+ header,
230
+ vertexData,
231
+ triangleIndices,
232
+ westIndices,
233
+ northIndices,
234
+ eastIndices,
235
+ southIndices,
236
+ extensions
248
237
  };
249
238
  }
250
239
  //# sourceMappingURL=decode-quantized-mesh.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"decode-quantized-mesh.js","names":["QUANTIZED_MESH_HEADER","Map","Float64Array","BYTES_PER_ELEMENT","Float32Array","decodeZigZag","value","decodeHeader","dataView","position","header","_iterator","_createForOfIteratorHelper","_step","s","n","done","_step$value","_slicedToArray2","default","key","bytesCount","getter","getFloat64","getFloat32","call","err","e","f","headerEndPosition","decodeVertexData","elementsPerVertex","vertexCount","getUint32","vertexData","Uint16Array","Uint32Array","bytesPerArrayElement","elementArrayLength","uArrayStartPosition","vArrayStartPosition","heightArrayStartPosition","u","v","height","i","getUint16","vertexDataEndPosition","decodeIndex","buffer","indicesCount","bytesPerIndex","encoded","arguments","length","undefined","indices","highest","code","decodeTriangleIndices","triangleCount","triangleIndicesCount","triangleIndices","triangleIndicesEndPosition","decodeEdgeIndices","westVertexCount","westIndices","southVertexCount","southIndices","eastVertexCount","eastIndices","northVertexCount","northIndices","edgeIndicesEndPosition","decodeVertexNormalsExtension","extensionDataView","Uint8Array","byteOffset","byteLength","decodeWaterMaskExtension","slice","decodeExtensions","indicesEndPosition","extensions","extensionsEndPosition","extensionId","getUint8","extensionLength","extensionView","DataView","vertexNormals","waterMask","DECODING_STEPS","vertices","edgeIndices","exports","DEFAULT_OPTIONS","maxDecodingStep","decode","data","userOptions","options","Object","assign","view","_decodeHeader","_decodeVertexData","_decodeTriangleIndice","_decodeEdgeIndices","_decodeExtensions"],"sources":["../../../src/lib/decode-quantized-mesh.ts"],"sourcesContent":["// Copyright (C) 2018-2019 HERE Europe B.V.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\nconst QUANTIZED_MESH_HEADER = new Map([\n ['centerX', Float64Array.BYTES_PER_ELEMENT],\n ['centerY', Float64Array.BYTES_PER_ELEMENT],\n ['centerZ', Float64Array.BYTES_PER_ELEMENT],\n\n ['minHeight', Float32Array.BYTES_PER_ELEMENT],\n ['maxHeight', Float32Array.BYTES_PER_ELEMENT],\n\n ['boundingSphereCenterX', Float64Array.BYTES_PER_ELEMENT],\n ['boundingSphereCenterY', Float64Array.BYTES_PER_ELEMENT],\n ['boundingSphereCenterZ', Float64Array.BYTES_PER_ELEMENT],\n ['boundingSphereRadius', Float64Array.BYTES_PER_ELEMENT],\n\n ['horizonOcclusionPointX', Float64Array.BYTES_PER_ELEMENT],\n ['horizonOcclusionPointY', Float64Array.BYTES_PER_ELEMENT],\n ['horizonOcclusionPointZ', Float64Array.BYTES_PER_ELEMENT]\n]);\n\nfunction decodeZigZag(value) {\n return (value >> 1) ^ -(value & 1);\n}\n\nfunction decodeHeader(dataView) {\n let position = 0;\n const header = {};\n\n for (const [key, bytesCount] of QUANTIZED_MESH_HEADER) {\n const getter = bytesCount === 8 ? dataView.getFloat64 : dataView.getFloat32;\n\n header[key] = getter.call(dataView, position, true);\n position += bytesCount;\n }\n\n return {header, headerEndPosition: position};\n}\n\nfunction decodeVertexData(dataView, headerEndPosition) {\n let position = headerEndPosition;\n const elementsPerVertex = 3;\n const vertexCount = dataView.getUint32(position, true);\n const vertexData = new Uint16Array(vertexCount * elementsPerVertex);\n\n position += Uint32Array.BYTES_PER_ELEMENT;\n\n const bytesPerArrayElement = Uint16Array.BYTES_PER_ELEMENT;\n const elementArrayLength = vertexCount * bytesPerArrayElement;\n const uArrayStartPosition = position;\n const vArrayStartPosition = uArrayStartPosition + elementArrayLength;\n const heightArrayStartPosition = vArrayStartPosition + elementArrayLength;\n\n let u = 0;\n let v = 0;\n let height = 0;\n\n for (let i = 0; i < vertexCount; i++) {\n u += decodeZigZag(dataView.getUint16(uArrayStartPosition + bytesPerArrayElement * i, true));\n v += decodeZigZag(dataView.getUint16(vArrayStartPosition + bytesPerArrayElement * i, true));\n height += decodeZigZag(\n dataView.getUint16(heightArrayStartPosition + bytesPerArrayElement * i, true)\n );\n\n vertexData[i] = u;\n vertexData[i + vertexCount] = v;\n vertexData[i + vertexCount * 2] = height;\n }\n\n position += elementArrayLength * 3;\n\n return {vertexData, vertexDataEndPosition: position};\n}\n\nfunction decodeIndex(buffer, position, indicesCount, bytesPerIndex, encoded = true) {\n let indices;\n\n if (bytesPerIndex === 2) {\n indices = new Uint16Array(buffer, position, indicesCount);\n } else {\n indices = new Uint32Array(buffer, position, indicesCount);\n }\n\n if (!encoded) {\n return indices;\n }\n\n let highest = 0;\n\n for (let i = 0; i < indices.length; ++i) {\n const code = indices[i];\n\n indices[i] = highest - code;\n\n if (code === 0) {\n ++highest;\n }\n }\n\n return indices;\n}\n\nfunction decodeTriangleIndices(dataView, vertexData, vertexDataEndPosition) {\n let position = vertexDataEndPosition;\n const elementsPerVertex = 3;\n const vertexCount = vertexData.length / elementsPerVertex;\n const bytesPerIndex =\n vertexCount > 65536 ? Uint32Array.BYTES_PER_ELEMENT : Uint16Array.BYTES_PER_ELEMENT;\n\n if (position % bytesPerIndex !== 0) {\n position += bytesPerIndex - (position % bytesPerIndex);\n }\n\n const triangleCount = dataView.getUint32(position, true);\n position += Uint32Array.BYTES_PER_ELEMENT;\n\n const triangleIndicesCount = triangleCount * 3;\n const triangleIndices = decodeIndex(\n dataView.buffer,\n position,\n triangleIndicesCount,\n bytesPerIndex\n );\n position += triangleIndicesCount * bytesPerIndex;\n\n return {\n triangleIndicesEndPosition: position,\n triangleIndices\n };\n}\n\nfunction decodeEdgeIndices(dataView, vertexData, triangleIndicesEndPosition) {\n let position = triangleIndicesEndPosition;\n const elementsPerVertex = 3;\n const vertexCount = vertexData.length / elementsPerVertex;\n const bytesPerIndex =\n vertexCount > 65536 ? Uint32Array.BYTES_PER_ELEMENT : Uint16Array.BYTES_PER_ELEMENT;\n\n const westVertexCount = dataView.getUint32(position, true);\n position += Uint32Array.BYTES_PER_ELEMENT;\n\n const westIndices = decodeIndex(dataView.buffer, position, westVertexCount, bytesPerIndex, false);\n position += westVertexCount * bytesPerIndex;\n\n const southVertexCount = dataView.getUint32(position, true);\n position += Uint32Array.BYTES_PER_ELEMENT;\n\n const southIndices = decodeIndex(\n dataView.buffer,\n position,\n southVertexCount,\n bytesPerIndex,\n false\n );\n position += southVertexCount * bytesPerIndex;\n\n const eastVertexCount = dataView.getUint32(position, true);\n position += Uint32Array.BYTES_PER_ELEMENT;\n\n const eastIndices = decodeIndex(dataView.buffer, position, eastVertexCount, bytesPerIndex, false);\n position += eastVertexCount * bytesPerIndex;\n\n const northVertexCount = dataView.getUint32(position, true);\n position += Uint32Array.BYTES_PER_ELEMENT;\n\n const northIndices = decodeIndex(\n dataView.buffer,\n position,\n northVertexCount,\n bytesPerIndex,\n false\n );\n position += northVertexCount * bytesPerIndex;\n\n return {\n edgeIndicesEndPosition: position,\n westIndices,\n southIndices,\n eastIndices,\n northIndices\n };\n}\n\nfunction decodeVertexNormalsExtension(extensionDataView) {\n return new Uint8Array(\n extensionDataView.buffer,\n extensionDataView.byteOffset,\n extensionDataView.byteLength\n );\n}\n\nfunction decodeWaterMaskExtension(extensionDataView) {\n return extensionDataView.buffer.slice(\n extensionDataView.byteOffset,\n extensionDataView.byteOffset + extensionDataView.byteLength\n );\n}\n\ntype Extensions = {\n vertexNormals?: any;\n waterMask?: any;\n};\n\nfunction decodeExtensions(dataView, indicesEndPosition) {\n const extensions: Extensions = {};\n\n if (dataView.byteLength <= indicesEndPosition) {\n return {extensions, extensionsEndPosition: indicesEndPosition};\n }\n\n let position = indicesEndPosition;\n\n while (position < dataView.byteLength) {\n const extensionId = dataView.getUint8(position, true);\n position += Uint8Array.BYTES_PER_ELEMENT;\n\n const extensionLength = dataView.getUint32(position, true);\n position += Uint32Array.BYTES_PER_ELEMENT;\n\n const extensionView = new DataView(dataView.buffer, position, extensionLength);\n\n switch (extensionId) {\n case 1: {\n extensions.vertexNormals = decodeVertexNormalsExtension(extensionView);\n\n break;\n }\n case 2: {\n extensions.waterMask = decodeWaterMaskExtension(extensionView);\n\n break;\n }\n default: {\n // console.warn(`Unknown extension with id ${extensionId}`)\n }\n }\n\n position += extensionLength;\n }\n\n return {extensions, extensionsEndPosition: position};\n}\n\nexport const DECODING_STEPS = {\n header: 0,\n vertices: 1,\n triangleIndices: 2,\n edgeIndices: 3,\n extensions: 4\n};\n\nconst DEFAULT_OPTIONS = {\n maxDecodingStep: DECODING_STEPS.extensions\n};\n\nexport default function decode(data, userOptions) {\n const options = Object.assign({}, DEFAULT_OPTIONS, userOptions);\n const view = new DataView(data);\n const {header, headerEndPosition} = decodeHeader(view);\n\n if (options.maxDecodingStep < DECODING_STEPS.vertices) {\n return {header};\n }\n\n const {vertexData, vertexDataEndPosition} = decodeVertexData(view, headerEndPosition);\n\n if (options.maxDecodingStep < DECODING_STEPS.triangleIndices) {\n return {header, vertexData};\n }\n\n const {triangleIndices, triangleIndicesEndPosition} = decodeTriangleIndices(\n view,\n vertexData,\n vertexDataEndPosition\n );\n\n if (options.maxDecodingStep < DECODING_STEPS.edgeIndices) {\n return {header, vertexData, triangleIndices};\n }\n\n const {westIndices, southIndices, eastIndices, northIndices, edgeIndicesEndPosition} =\n decodeEdgeIndices(view, vertexData, triangleIndicesEndPosition);\n\n if (options.maxDecodingStep < DECODING_STEPS.extensions) {\n return {\n header,\n vertexData,\n triangleIndices,\n westIndices,\n northIndices,\n eastIndices,\n southIndices\n };\n }\n\n const {extensions} = decodeExtensions(view, edgeIndicesEndPosition);\n\n return {\n header,\n vertexData,\n triangleIndices,\n westIndices,\n northIndices,\n eastIndices,\n southIndices,\n extensions\n };\n}\n"],"mappings":";;;;;;;;;;;;AAoBA,IAAMA,qBAAqB,GAAG,IAAIC,GAAG,CAAC,CACpC,CAAC,SAAS,EAAEC,YAAY,CAACC,iBAAiB,CAAC,EAC3C,CAAC,SAAS,EAAED,YAAY,CAACC,iBAAiB,CAAC,EAC3C,CAAC,SAAS,EAAED,YAAY,CAACC,iBAAiB,CAAC,EAE3C,CAAC,WAAW,EAAEC,YAAY,CAACD,iBAAiB,CAAC,EAC7C,CAAC,WAAW,EAAEC,YAAY,CAACD,iBAAiB,CAAC,EAE7C,CAAC,uBAAuB,EAAED,YAAY,CAACC,iBAAiB,CAAC,EACzD,CAAC,uBAAuB,EAAED,YAAY,CAACC,iBAAiB,CAAC,EACzD,CAAC,uBAAuB,EAAED,YAAY,CAACC,iBAAiB,CAAC,EACzD,CAAC,sBAAsB,EAAED,YAAY,CAACC,iBAAiB,CAAC,EAExD,CAAC,wBAAwB,EAAED,YAAY,CAACC,iBAAiB,CAAC,EAC1D,CAAC,wBAAwB,EAAED,YAAY,CAACC,iBAAiB,CAAC,EAC1D,CAAC,wBAAwB,EAAED,YAAY,CAACC,iBAAiB,CAAC,CAC3D,CAAC;AAEF,SAASE,YAAYA,CAACC,KAAK,EAAE;EAC3B,OAAQA,KAAK,IAAI,CAAC,GAAI,EAAEA,KAAK,GAAG,CAAC,CAAC;AACpC;AAEA,SAASC,YAAYA,CAACC,QAAQ,EAAE;EAC9B,IAAIC,QAAQ,GAAG,CAAC;EAChB,IAAMC,MAAM,GAAG,CAAC,CAAC;EAAC,IAAAC,SAAA,GAAAC,0BAAA,CAEcZ,qBAAqB;IAAAa,KAAA;EAAA;IAArD,KAAAF,SAAA,CAAAG,CAAA,MAAAD,KAAA,GAAAF,SAAA,CAAAI,CAAA,IAAAC,IAAA,GAAuD;MAAA,IAAAC,WAAA,OAAAC,eAAA,CAAAC,OAAA,EAAAN,KAAA,CAAAP,KAAA;QAA3Cc,GAAG,GAAAH,WAAA;QAAEI,UAAU,GAAAJ,WAAA;MACzB,IAAMK,MAAM,GAAGD,UAAU,KAAK,CAAC,GAAGb,QAAQ,CAACe,UAAU,GAAGf,QAAQ,CAACgB,UAAU;MAE3Ed,MAAM,CAACU,GAAG,CAAC,GAAGE,MAAM,CAACG,IAAI,CAACjB,QAAQ,EAAEC,QAAQ,EAAE,IAAI,CAAC;MACnDA,QAAQ,IAAIY,UAAU;IACxB;EAAC,SAAAK,GAAA;IAAAf,SAAA,CAAAgB,CAAA,CAAAD,GAAA;EAAA;IAAAf,SAAA,CAAAiB,CAAA;EAAA;EAED,OAAO;IAAClB,MAAM,EAANA,MAAM;IAAEmB,iBAAiB,EAAEpB;EAAQ,CAAC;AAC9C;AAEA,SAASqB,gBAAgBA,CAACtB,QAAQ,EAAEqB,iBAAiB,EAAE;EACrD,IAAIpB,QAAQ,GAAGoB,iBAAiB;EAChC,IAAME,iBAAiB,GAAG,CAAC;EAC3B,IAAMC,WAAW,GAAGxB,QAAQ,CAACyB,SAAS,CAACxB,QAAQ,EAAE,IAAI,CAAC;EACtD,IAAMyB,UAAU,GAAG,IAAIC,WAAW,CAACH,WAAW,GAAGD,iBAAiB,CAAC;EAEnEtB,QAAQ,IAAI2B,WAAW,CAACjC,iBAAiB;EAEzC,IAAMkC,oBAAoB,GAAGF,WAAW,CAAChC,iBAAiB;EAC1D,IAAMmC,kBAAkB,GAAGN,WAAW,GAAGK,oBAAoB;EAC7D,IAAME,mBAAmB,GAAG9B,QAAQ;EACpC,IAAM+B,mBAAmB,GAAGD,mBAAmB,GAAGD,kBAAkB;EACpE,IAAMG,wBAAwB,GAAGD,mBAAmB,GAAGF,kBAAkB;EAEzE,IAAII,CAAC,GAAG,CAAC;EACT,IAAIC,CAAC,GAAG,CAAC;EACT,IAAIC,MAAM,GAAG,CAAC;EAEd,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGb,WAAW,EAAEa,CAAC,EAAE,EAAE;IACpCH,CAAC,IAAIrC,YAAY,CAACG,QAAQ,CAACsC,SAAS,CAACP,mBAAmB,GAAGF,oBAAoB,GAAGQ,CAAC,EAAE,IAAI,CAAC,CAAC;IAC3FF,CAAC,IAAItC,YAAY,CAACG,QAAQ,CAACsC,SAAS,CAACN,mBAAmB,GAAGH,oBAAoB,GAAGQ,CAAC,EAAE,IAAI,CAAC,CAAC;IAC3FD,MAAM,IAAIvC,YAAY,CACpBG,QAAQ,CAACsC,SAAS,CAACL,wBAAwB,GAAGJ,oBAAoB,GAAGQ,CAAC,EAAE,IAAI,CAC9E,CAAC;IAEDX,UAAU,CAACW,CAAC,CAAC,GAAGH,CAAC;IACjBR,UAAU,CAACW,CAAC,GAAGb,WAAW,CAAC,GAAGW,CAAC;IAC/BT,UAAU,CAACW,CAAC,GAAGb,WAAW,GAAG,CAAC,CAAC,GAAGY,MAAM;EAC1C;EAEAnC,QAAQ,IAAI6B,kBAAkB,GAAG,CAAC;EAElC,OAAO;IAACJ,UAAU,EAAVA,UAAU;IAAEa,qBAAqB,EAAEtC;EAAQ,CAAC;AACtD;AAEA,SAASuC,WAAWA,CAACC,MAAM,EAAExC,QAAQ,EAAEyC,YAAY,EAAEC,aAAa,EAAkB;EAAA,IAAhBC,OAAO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;EAChF,IAAIG,OAAO;EAEX,IAAIL,aAAa,KAAK,CAAC,EAAE;IACvBK,OAAO,GAAG,IAAIrB,WAAW,CAACc,MAAM,EAAExC,QAAQ,EAAEyC,YAAY,CAAC;EAC3D,CAAC,MAAM;IACLM,OAAO,GAAG,IAAIpB,WAAW,CAACa,MAAM,EAAExC,QAAQ,EAAEyC,YAAY,CAAC;EAC3D;EAEA,IAAI,CAACE,OAAO,EAAE;IACZ,OAAOI,OAAO;EAChB;EAEA,IAAIC,OAAO,GAAG,CAAC;EAEf,KAAK,IAAIZ,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGW,OAAO,CAACF,MAAM,EAAE,EAAET,CAAC,EAAE;IACvC,IAAMa,IAAI,GAAGF,OAAO,CAACX,CAAC,CAAC;IAEvBW,OAAO,CAACX,CAAC,CAAC,GAAGY,OAAO,GAAGC,IAAI;IAE3B,IAAIA,IAAI,KAAK,CAAC,EAAE;MACd,EAAED,OAAO;IACX;EACF;EAEA,OAAOD,OAAO;AAChB;AAEA,SAASG,qBAAqBA,CAACnD,QAAQ,EAAE0B,UAAU,EAAEa,qBAAqB,EAAE;EAC1E,IAAItC,QAAQ,GAAGsC,qBAAqB;EACpC,IAAMhB,iBAAiB,GAAG,CAAC;EAC3B,IAAMC,WAAW,GAAGE,UAAU,CAACoB,MAAM,GAAGvB,iBAAiB;EACzD,IAAMoB,aAAa,GACjBnB,WAAW,GAAG,KAAK,GAAGI,WAAW,CAACjC,iBAAiB,GAAGgC,WAAW,CAAChC,iBAAiB;EAErF,IAAIM,QAAQ,GAAG0C,aAAa,KAAK,CAAC,EAAE;IAClC1C,QAAQ,IAAI0C,aAAa,GAAI1C,QAAQ,GAAG0C,aAAc;EACxD;EAEA,IAAMS,aAAa,GAAGpD,QAAQ,CAACyB,SAAS,CAACxB,QAAQ,EAAE,IAAI,CAAC;EACxDA,QAAQ,IAAI2B,WAAW,CAACjC,iBAAiB;EAEzC,IAAM0D,oBAAoB,GAAGD,aAAa,GAAG,CAAC;EAC9C,IAAME,eAAe,GAAGd,WAAW,CACjCxC,QAAQ,CAACyC,MAAM,EACfxC,QAAQ,EACRoD,oBAAoB,EACpBV,aACF,CAAC;EACD1C,QAAQ,IAAIoD,oBAAoB,GAAGV,aAAa;EAEhD,OAAO;IACLY,0BAA0B,EAAEtD,QAAQ;IACpCqD,eAAe,EAAfA;EACF,CAAC;AACH;AAEA,SAASE,iBAAiBA,CAACxD,QAAQ,EAAE0B,UAAU,EAAE6B,0BAA0B,EAAE;EAC3E,IAAItD,QAAQ,GAAGsD,0BAA0B;EACzC,IAAMhC,iBAAiB,GAAG,CAAC;EAC3B,IAAMC,WAAW,GAAGE,UAAU,CAACoB,MAAM,GAAGvB,iBAAiB;EACzD,IAAMoB,aAAa,GACjBnB,WAAW,GAAG,KAAK,GAAGI,WAAW,CAACjC,iBAAiB,GAAGgC,WAAW,CAAChC,iBAAiB;EAErF,IAAM8D,eAAe,GAAGzD,QAAQ,CAACyB,SAAS,CAACxB,QAAQ,EAAE,IAAI,CAAC;EAC1DA,QAAQ,IAAI2B,WAAW,CAACjC,iBAAiB;EAEzC,IAAM+D,WAAW,GAAGlB,WAAW,CAACxC,QAAQ,CAACyC,MAAM,EAAExC,QAAQ,EAAEwD,eAAe,EAAEd,aAAa,EAAE,KAAK,CAAC;EACjG1C,QAAQ,IAAIwD,eAAe,GAAGd,aAAa;EAE3C,IAAMgB,gBAAgB,GAAG3D,QAAQ,CAACyB,SAAS,CAACxB,QAAQ,EAAE,IAAI,CAAC;EAC3DA,QAAQ,IAAI2B,WAAW,CAACjC,iBAAiB;EAEzC,IAAMiE,YAAY,GAAGpB,WAAW,CAC9BxC,QAAQ,CAACyC,MAAM,EACfxC,QAAQ,EACR0D,gBAAgB,EAChBhB,aAAa,EACb,KACF,CAAC;EACD1C,QAAQ,IAAI0D,gBAAgB,GAAGhB,aAAa;EAE5C,IAAMkB,eAAe,GAAG7D,QAAQ,CAACyB,SAAS,CAACxB,QAAQ,EAAE,IAAI,CAAC;EAC1DA,QAAQ,IAAI2B,WAAW,CAACjC,iBAAiB;EAEzC,IAAMmE,WAAW,GAAGtB,WAAW,CAACxC,QAAQ,CAACyC,MAAM,EAAExC,QAAQ,EAAE4D,eAAe,EAAElB,aAAa,EAAE,KAAK,CAAC;EACjG1C,QAAQ,IAAI4D,eAAe,GAAGlB,aAAa;EAE3C,IAAMoB,gBAAgB,GAAG/D,QAAQ,CAACyB,SAAS,CAACxB,QAAQ,EAAE,IAAI,CAAC;EAC3DA,QAAQ,IAAI2B,WAAW,CAACjC,iBAAiB;EAEzC,IAAMqE,YAAY,GAAGxB,WAAW,CAC9BxC,QAAQ,CAACyC,MAAM,EACfxC,QAAQ,EACR8D,gBAAgB,EAChBpB,aAAa,EACb,KACF,CAAC;EACD1C,QAAQ,IAAI8D,gBAAgB,GAAGpB,aAAa;EAE5C,OAAO;IACLsB,sBAAsB,EAAEhE,QAAQ;IAChCyD,WAAW,EAAXA,WAAW;IACXE,YAAY,EAAZA,YAAY;IACZE,WAAW,EAAXA,WAAW;IACXE,YAAY,EAAZA;EACF,CAAC;AACH;AAEA,SAASE,4BAA4BA,CAACC,iBAAiB,EAAE;EACvD,OAAO,IAAIC,UAAU,CACnBD,iBAAiB,CAAC1B,MAAM,EACxB0B,iBAAiB,CAACE,UAAU,EAC5BF,iBAAiB,CAACG,UACpB,CAAC;AACH;AAEA,SAASC,wBAAwBA,CAACJ,iBAAiB,EAAE;EACnD,OAAOA,iBAAiB,CAAC1B,MAAM,CAAC+B,KAAK,CACnCL,iBAAiB,CAACE,UAAU,EAC5BF,iBAAiB,CAACE,UAAU,GAAGF,iBAAiB,CAACG,UACnD,CAAC;AACH;AAOA,SAASG,gBAAgBA,CAACzE,QAAQ,EAAE0E,kBAAkB,EAAE;EACtD,IAAMC,UAAsB,GAAG,CAAC,CAAC;EAEjC,IAAI3E,QAAQ,CAACsE,UAAU,IAAII,kBAAkB,EAAE;IAC7C,OAAO;MAACC,UAAU,EAAVA,UAAU;MAAEC,qBAAqB,EAAEF;IAAkB,CAAC;EAChE;EAEA,IAAIzE,QAAQ,GAAGyE,kBAAkB;EAEjC,OAAOzE,QAAQ,GAAGD,QAAQ,CAACsE,UAAU,EAAE;IACrC,IAAMO,WAAW,GAAG7E,QAAQ,CAAC8E,QAAQ,CAAC7E,QAAQ,EAAE,IAAI,CAAC;IACrDA,QAAQ,IAAImE,UAAU,CAACzE,iBAAiB;IAExC,IAAMoF,eAAe,GAAG/E,QAAQ,CAACyB,SAAS,CAACxB,QAAQ,EAAE,IAAI,CAAC;IAC1DA,QAAQ,IAAI2B,WAAW,CAACjC,iBAAiB;IAEzC,IAAMqF,aAAa,GAAG,IAAIC,QAAQ,CAACjF,QAAQ,CAACyC,MAAM,EAAExC,QAAQ,EAAE8E,eAAe,CAAC;IAE9E,QAAQF,WAAW;MACjB,KAAK,CAAC;QAAE;UACNF,UAAU,CAACO,aAAa,GAAGhB,4BAA4B,CAACc,aAAa,CAAC;UAEtE;QACF;MACA,KAAK,CAAC;QAAE;UACNL,UAAU,CAACQ,SAAS,GAAGZ,wBAAwB,CAACS,aAAa,CAAC;UAE9D;QACF;MACA;QAAS,CAET;IACF;IAEA/E,QAAQ,IAAI8E,eAAe;EAC7B;EAEA,OAAO;IAACJ,UAAU,EAAVA,UAAU;IAAEC,qBAAqB,EAAE3E;EAAQ,CAAC;AACtD;AAEO,IAAMmF,cAAc,GAAG;EAC5BlF,MAAM,EAAE,CAAC;EACTmF,QAAQ,EAAE,CAAC;EACX/B,eAAe,EAAE,CAAC;EAClBgC,WAAW,EAAE,CAAC;EACdX,UAAU,EAAE;AACd,CAAC;AAACY,OAAA,CAAAH,cAAA,GAAAA,cAAA;AAEF,IAAMI,eAAe,GAAG;EACtBC,eAAe,EAAEL,cAAc,CAACT;AAClC,CAAC;AAEc,SAASe,MAAMA,CAACC,IAAI,EAAEC,WAAW,EAAE;EAChD,IAAMC,OAAO,GAAGC,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,EAAEP,eAAe,EAAEI,WAAW,CAAC;EAC/D,IAAMI,IAAI,GAAG,IAAIf,QAAQ,CAACU,IAAI,CAAC;EAC/B,IAAAM,aAAA,GAAoClG,YAAY,CAACiG,IAAI,CAAC;IAA/C9F,MAAM,GAAA+F,aAAA,CAAN/F,MAAM;IAAEmB,iBAAiB,GAAA4E,aAAA,CAAjB5E,iBAAiB;EAEhC,IAAIwE,OAAO,CAACJ,eAAe,GAAGL,cAAc,CAACC,QAAQ,EAAE;IACrD,OAAO;MAACnF,MAAM,EAANA;IAAM,CAAC;EACjB;EAEA,IAAAgG,iBAAA,GAA4C5E,gBAAgB,CAAC0E,IAAI,EAAE3E,iBAAiB,CAAC;IAA9EK,UAAU,GAAAwE,iBAAA,CAAVxE,UAAU;IAAEa,qBAAqB,GAAA2D,iBAAA,CAArB3D,qBAAqB;EAExC,IAAIsD,OAAO,CAACJ,eAAe,GAAGL,cAAc,CAAC9B,eAAe,EAAE;IAC5D,OAAO;MAACpD,MAAM,EAANA,MAAM;MAAEwB,UAAU,EAAVA;IAAU,CAAC;EAC7B;EAEA,IAAAyE,qBAAA,GAAsDhD,qBAAqB,CACzE6C,IAAI,EACJtE,UAAU,EACVa,qBACF,CAAC;IAJMe,eAAe,GAAA6C,qBAAA,CAAf7C,eAAe;IAAEC,0BAA0B,GAAA4C,qBAAA,CAA1B5C,0BAA0B;EAMlD,IAAIsC,OAAO,CAACJ,eAAe,GAAGL,cAAc,CAACE,WAAW,EAAE;IACxD,OAAO;MAACpF,MAAM,EAANA,MAAM;MAAEwB,UAAU,EAAVA,UAAU;MAAE4B,eAAe,EAAfA;IAAe,CAAC;EAC9C;EAEA,IAAA8C,kBAAA,GACE5C,iBAAiB,CAACwC,IAAI,EAAEtE,UAAU,EAAE6B,0BAA0B,CAAC;IAD1DG,WAAW,GAAA0C,kBAAA,CAAX1C,WAAW;IAAEE,YAAY,GAAAwC,kBAAA,CAAZxC,YAAY;IAAEE,WAAW,GAAAsC,kBAAA,CAAXtC,WAAW;IAAEE,YAAY,GAAAoC,kBAAA,CAAZpC,YAAY;IAAEC,sBAAsB,GAAAmC,kBAAA,CAAtBnC,sBAAsB;EAGnF,IAAI4B,OAAO,CAACJ,eAAe,GAAGL,cAAc,CAACT,UAAU,EAAE;IACvD,OAAO;MACLzE,MAAM,EAANA,MAAM;MACNwB,UAAU,EAAVA,UAAU;MACV4B,eAAe,EAAfA,eAAe;MACfI,WAAW,EAAXA,WAAW;MACXM,YAAY,EAAZA,YAAY;MACZF,WAAW,EAAXA,WAAW;MACXF,YAAY,EAAZA;IACF,CAAC;EACH;EAEA,IAAAyC,iBAAA,GAAqB5B,gBAAgB,CAACuB,IAAI,EAAE/B,sBAAsB,CAAC;IAA5DU,UAAU,GAAA0B,iBAAA,CAAV1B,UAAU;EAEjB,OAAO;IACLzE,MAAM,EAANA,MAAM;IACNwB,UAAU,EAAVA,UAAU;IACV4B,eAAe,EAAfA,eAAe;IACfI,WAAW,EAAXA,WAAW;IACXM,YAAY,EAAZA,YAAY;IACZF,WAAW,EAAXA,WAAW;IACXF,YAAY,EAAZA,YAAY;IACZe,UAAU,EAAVA;EACF,CAAC;AACH"}
1
+ {"version":3,"file":"decode-quantized-mesh.js","names":["QUANTIZED_MESH_HEADER","Map","Float64Array","BYTES_PER_ELEMENT","Float32Array","decodeZigZag","value","decodeHeader","dataView","position","header","key","bytesCount","getter","getFloat64","getFloat32","call","headerEndPosition","decodeVertexData","elementsPerVertex","vertexCount","getUint32","vertexData","Uint16Array","Uint32Array","bytesPerArrayElement","elementArrayLength","uArrayStartPosition","vArrayStartPosition","heightArrayStartPosition","u","v","height","i","getUint16","vertexDataEndPosition","decodeIndex","buffer","indicesCount","bytesPerIndex","encoded","arguments","length","undefined","indices","highest","code","decodeTriangleIndices","triangleCount","triangleIndicesCount","triangleIndices","triangleIndicesEndPosition","decodeEdgeIndices","westVertexCount","westIndices","southVertexCount","southIndices","eastVertexCount","eastIndices","northVertexCount","northIndices","edgeIndicesEndPosition","decodeVertexNormalsExtension","extensionDataView","Uint8Array","byteOffset","byteLength","decodeWaterMaskExtension","slice","decodeExtensions","indicesEndPosition","extensions","extensionsEndPosition","extensionId","getUint8","extensionLength","extensionView","DataView","vertexNormals","waterMask","DECODING_STEPS","vertices","edgeIndices","exports","DEFAULT_OPTIONS","maxDecodingStep","decode","data","userOptions","options","Object","assign","view"],"sources":["../../../src/lib/decode-quantized-mesh.ts"],"sourcesContent":["// Copyright (C) 2018-2019 HERE Europe B.V.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\nconst QUANTIZED_MESH_HEADER = new Map([\n ['centerX', Float64Array.BYTES_PER_ELEMENT],\n ['centerY', Float64Array.BYTES_PER_ELEMENT],\n ['centerZ', Float64Array.BYTES_PER_ELEMENT],\n\n ['minHeight', Float32Array.BYTES_PER_ELEMENT],\n ['maxHeight', Float32Array.BYTES_PER_ELEMENT],\n\n ['boundingSphereCenterX', Float64Array.BYTES_PER_ELEMENT],\n ['boundingSphereCenterY', Float64Array.BYTES_PER_ELEMENT],\n ['boundingSphereCenterZ', Float64Array.BYTES_PER_ELEMENT],\n ['boundingSphereRadius', Float64Array.BYTES_PER_ELEMENT],\n\n ['horizonOcclusionPointX', Float64Array.BYTES_PER_ELEMENT],\n ['horizonOcclusionPointY', Float64Array.BYTES_PER_ELEMENT],\n ['horizonOcclusionPointZ', Float64Array.BYTES_PER_ELEMENT]\n]);\n\nfunction decodeZigZag(value) {\n return (value >> 1) ^ -(value & 1);\n}\n\nfunction decodeHeader(dataView) {\n let position = 0;\n const header = {};\n\n for (const [key, bytesCount] of QUANTIZED_MESH_HEADER) {\n const getter = bytesCount === 8 ? dataView.getFloat64 : dataView.getFloat32;\n\n header[key] = getter.call(dataView, position, true);\n position += bytesCount;\n }\n\n return {header, headerEndPosition: position};\n}\n\nfunction decodeVertexData(dataView, headerEndPosition) {\n let position = headerEndPosition;\n const elementsPerVertex = 3;\n const vertexCount = dataView.getUint32(position, true);\n const vertexData = new Uint16Array(vertexCount * elementsPerVertex);\n\n position += Uint32Array.BYTES_PER_ELEMENT;\n\n const bytesPerArrayElement = Uint16Array.BYTES_PER_ELEMENT;\n const elementArrayLength = vertexCount * bytesPerArrayElement;\n const uArrayStartPosition = position;\n const vArrayStartPosition = uArrayStartPosition + elementArrayLength;\n const heightArrayStartPosition = vArrayStartPosition + elementArrayLength;\n\n let u = 0;\n let v = 0;\n let height = 0;\n\n for (let i = 0; i < vertexCount; i++) {\n u += decodeZigZag(dataView.getUint16(uArrayStartPosition + bytesPerArrayElement * i, true));\n v += decodeZigZag(dataView.getUint16(vArrayStartPosition + bytesPerArrayElement * i, true));\n height += decodeZigZag(\n dataView.getUint16(heightArrayStartPosition + bytesPerArrayElement * i, true)\n );\n\n vertexData[i] = u;\n vertexData[i + vertexCount] = v;\n vertexData[i + vertexCount * 2] = height;\n }\n\n position += elementArrayLength * 3;\n\n return {vertexData, vertexDataEndPosition: position};\n}\n\nfunction decodeIndex(buffer, position, indicesCount, bytesPerIndex, encoded = true) {\n let indices;\n\n if (bytesPerIndex === 2) {\n indices = new Uint16Array(buffer, position, indicesCount);\n } else {\n indices = new Uint32Array(buffer, position, indicesCount);\n }\n\n if (!encoded) {\n return indices;\n }\n\n let highest = 0;\n\n for (let i = 0; i < indices.length; ++i) {\n const code = indices[i];\n\n indices[i] = highest - code;\n\n if (code === 0) {\n ++highest;\n }\n }\n\n return indices;\n}\n\nfunction decodeTriangleIndices(dataView, vertexData, vertexDataEndPosition) {\n let position = vertexDataEndPosition;\n const elementsPerVertex = 3;\n const vertexCount = vertexData.length / elementsPerVertex;\n const bytesPerIndex =\n vertexCount > 65536 ? Uint32Array.BYTES_PER_ELEMENT : Uint16Array.BYTES_PER_ELEMENT;\n\n if (position % bytesPerIndex !== 0) {\n position += bytesPerIndex - (position % bytesPerIndex);\n }\n\n const triangleCount = dataView.getUint32(position, true);\n position += Uint32Array.BYTES_PER_ELEMENT;\n\n const triangleIndicesCount = triangleCount * 3;\n const triangleIndices = decodeIndex(\n dataView.buffer,\n position,\n triangleIndicesCount,\n bytesPerIndex\n );\n position += triangleIndicesCount * bytesPerIndex;\n\n return {\n triangleIndicesEndPosition: position,\n triangleIndices\n };\n}\n\nfunction decodeEdgeIndices(dataView, vertexData, triangleIndicesEndPosition) {\n let position = triangleIndicesEndPosition;\n const elementsPerVertex = 3;\n const vertexCount = vertexData.length / elementsPerVertex;\n const bytesPerIndex =\n vertexCount > 65536 ? Uint32Array.BYTES_PER_ELEMENT : Uint16Array.BYTES_PER_ELEMENT;\n\n const westVertexCount = dataView.getUint32(position, true);\n position += Uint32Array.BYTES_PER_ELEMENT;\n\n const westIndices = decodeIndex(dataView.buffer, position, westVertexCount, bytesPerIndex, false);\n position += westVertexCount * bytesPerIndex;\n\n const southVertexCount = dataView.getUint32(position, true);\n position += Uint32Array.BYTES_PER_ELEMENT;\n\n const southIndices = decodeIndex(\n dataView.buffer,\n position,\n southVertexCount,\n bytesPerIndex,\n false\n );\n position += southVertexCount * bytesPerIndex;\n\n const eastVertexCount = dataView.getUint32(position, true);\n position += Uint32Array.BYTES_PER_ELEMENT;\n\n const eastIndices = decodeIndex(dataView.buffer, position, eastVertexCount, bytesPerIndex, false);\n position += eastVertexCount * bytesPerIndex;\n\n const northVertexCount = dataView.getUint32(position, true);\n position += Uint32Array.BYTES_PER_ELEMENT;\n\n const northIndices = decodeIndex(\n dataView.buffer,\n position,\n northVertexCount,\n bytesPerIndex,\n false\n );\n position += northVertexCount * bytesPerIndex;\n\n return {\n edgeIndicesEndPosition: position,\n westIndices,\n southIndices,\n eastIndices,\n northIndices\n };\n}\n\nfunction decodeVertexNormalsExtension(extensionDataView) {\n return new Uint8Array(\n extensionDataView.buffer,\n extensionDataView.byteOffset,\n extensionDataView.byteLength\n );\n}\n\nfunction decodeWaterMaskExtension(extensionDataView) {\n return extensionDataView.buffer.slice(\n extensionDataView.byteOffset,\n extensionDataView.byteOffset + extensionDataView.byteLength\n );\n}\n\ntype Extensions = {\n vertexNormals?: any;\n waterMask?: any;\n};\n\nfunction decodeExtensions(dataView, indicesEndPosition) {\n const extensions: Extensions = {};\n\n if (dataView.byteLength <= indicesEndPosition) {\n return {extensions, extensionsEndPosition: indicesEndPosition};\n }\n\n let position = indicesEndPosition;\n\n while (position < dataView.byteLength) {\n const extensionId = dataView.getUint8(position, true);\n position += Uint8Array.BYTES_PER_ELEMENT;\n\n const extensionLength = dataView.getUint32(position, true);\n position += Uint32Array.BYTES_PER_ELEMENT;\n\n const extensionView = new DataView(dataView.buffer, position, extensionLength);\n\n switch (extensionId) {\n case 1: {\n extensions.vertexNormals = decodeVertexNormalsExtension(extensionView);\n\n break;\n }\n case 2: {\n extensions.waterMask = decodeWaterMaskExtension(extensionView);\n\n break;\n }\n default: {\n // console.warn(`Unknown extension with id ${extensionId}`)\n }\n }\n\n position += extensionLength;\n }\n\n return {extensions, extensionsEndPosition: position};\n}\n\nexport const DECODING_STEPS = {\n header: 0,\n vertices: 1,\n triangleIndices: 2,\n edgeIndices: 3,\n extensions: 4\n};\n\nconst DEFAULT_OPTIONS = {\n maxDecodingStep: DECODING_STEPS.extensions\n};\n\nexport default function decode(data, userOptions) {\n const options = Object.assign({}, DEFAULT_OPTIONS, userOptions);\n const view = new DataView(data);\n const {header, headerEndPosition} = decodeHeader(view);\n\n if (options.maxDecodingStep < DECODING_STEPS.vertices) {\n return {header};\n }\n\n const {vertexData, vertexDataEndPosition} = decodeVertexData(view, headerEndPosition);\n\n if (options.maxDecodingStep < DECODING_STEPS.triangleIndices) {\n return {header, vertexData};\n }\n\n const {triangleIndices, triangleIndicesEndPosition} = decodeTriangleIndices(\n view,\n vertexData,\n vertexDataEndPosition\n );\n\n if (options.maxDecodingStep < DECODING_STEPS.edgeIndices) {\n return {header, vertexData, triangleIndices};\n }\n\n const {westIndices, southIndices, eastIndices, northIndices, edgeIndicesEndPosition} =\n decodeEdgeIndices(view, vertexData, triangleIndicesEndPosition);\n\n if (options.maxDecodingStep < DECODING_STEPS.extensions) {\n return {\n header,\n vertexData,\n triangleIndices,\n westIndices,\n northIndices,\n eastIndices,\n southIndices\n };\n }\n\n const {extensions} = decodeExtensions(view, edgeIndicesEndPosition);\n\n return {\n header,\n vertexData,\n triangleIndices,\n westIndices,\n northIndices,\n eastIndices,\n southIndices,\n extensions\n };\n}\n"],"mappings":"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"}