@loaders.gl/potree 3.1.0-beta.7 → 3.1.3

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.
package/dist/bundle.js CHANGED
@@ -1,182 +1,5 @@
1
- (() => {
2
- var __defProp = Object.defineProperty;
3
- var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
4
- var __esm = (fn, res) => function __init() {
5
- return fn && (res = (0, fn[Object.keys(fn)[0]])(fn = 0)), res;
6
- };
7
- var __commonJS = (cb, mod) => function __require() {
8
- return mod || (0, cb[Object.keys(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
9
- };
10
- var __export = (target, all) => {
11
- __markAsModule(target);
12
- for (var name in all)
13
- __defProp(target, name, { get: all[name], enumerable: true });
14
- };
15
-
16
- // src/potree-loader.ts
17
- var VERSION, PotreeLoader;
18
- var init_potree_loader = __esm({
19
- "src/potree-loader.ts"() {
20
- VERSION = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
21
- PotreeLoader = {
22
- name: "potree",
23
- id: "potree",
24
- module: "potree",
25
- version: VERSION,
26
- extensions: ["json"],
27
- mimeTypes: ["application/json"],
28
- testText: (text) => text.indexOf("octreeDir") >= 0,
29
- parseTextSync: (text) => JSON.parse(text),
30
- options: {
31
- potree: {}
32
- }
33
- };
34
- }
35
- });
36
-
37
- // src/parsers/parse-potree-hierarchy-chunk.ts
38
- function parsePotreeHierarchyChunk(arrayBuffer) {
39
- const tileHeaders = parseBinaryChunk(arrayBuffer);
40
- return buildHierarchy(tileHeaders);
41
- }
42
- function parseBinaryChunk(arrayBuffer, byteOffset = 0) {
43
- const dataView = new DataView(arrayBuffer);
44
- const stack = [];
45
- const topTileHeader = {};
46
- byteOffset = decodeRow(dataView, byteOffset, topTileHeader);
47
- stack.push(topTileHeader);
48
- const tileHeaders = [];
49
- while (stack.length > 0) {
50
- const snode = stack.shift();
51
- let mask = 1;
52
- for (let i = 0; i < 8; i++) {
53
- if (snode && (snode.header.childMask & mask) !== 0) {
54
- const tileHeader = {};
55
- byteOffset = decodeRow(dataView, byteOffset, tileHeader);
56
- tileHeader.name = snode.name + i;
57
- stack.push(tileHeader);
58
- tileHeaders.push(tileHeader);
59
- snode.header.childCount++;
60
- }
61
- mask = mask * 2;
62
- }
63
- if (byteOffset === dataView.byteLength) {
64
- break;
65
- }
66
- }
67
- return tileHeaders;
68
- }
69
- function decodeRow(dataView, byteOffset, tileHeader) {
70
- tileHeader.header = tileHeader.header || {};
71
- tileHeader.header.childMask = dataView.getUint8(byteOffset);
72
- tileHeader.header.childCount = 0;
73
- tileHeader.pointCount = dataView.getUint32(byteOffset + 1, true);
74
- tileHeader.name = "";
75
- byteOffset += 5;
76
- return byteOffset;
77
- }
78
- function buildHierarchy(tileHeaders, options = {}) {
79
- const DEFAULT_OPTIONS = { spacing: 100 };
80
- options = { ...DEFAULT_OPTIONS, ...options };
81
- const topNode = tileHeaders[0];
82
- const nodes = {};
83
- for (const tileHeader of tileHeaders) {
84
- const { name } = tileHeader;
85
- const index = parseInt(name.charAt(name.length - 1), 10);
86
- const parentName = name.substring(0, name.length - 1);
87
- const parentNode = nodes[parentName];
88
- const level = name.length - 1;
89
- tileHeader.level = level;
90
- tileHeader.hasChildren = tileHeader.header.childCount;
91
- tileHeader.children = [];
92
- tileHeader.childrenByIndex = new Array(8).fill(null);
93
- tileHeader.spacing = options.spacing / Math.pow(2, level);
94
- if (parentNode) {
95
- parentNode.children.push(tileHeader);
96
- parentNode.childrenByIndex[index] = tileHeader;
97
- }
98
- nodes[name] = tileHeader;
99
- }
100
- return topNode;
101
- }
102
- var init_parse_potree_hierarchy_chunk = __esm({
103
- "src/parsers/parse-potree-hierarchy-chunk.ts"() {
104
- }
105
- });
106
-
107
- // src/potree-hierarchy-chunk-loader.ts
108
- function parseSync(arrayBuffer) {
109
- return parsePotreeHierarchyChunk(arrayBuffer);
110
- }
111
- var PotreeHierarchyChunkLoader;
112
- var init_potree_hierarchy_chunk_loader = __esm({
113
- "src/potree-hierarchy-chunk-loader.ts"() {
114
- init_parse_potree_hierarchy_chunk();
115
- PotreeHierarchyChunkLoader = {
116
- id: "potree",
117
- name: "potree Hierarchy Chunk",
118
- extensions: ["hrc"],
119
- mimeTypes: ["application/octet-stream"],
120
- parse: async (arrayBuffer, options) => await parseSync(arrayBuffer),
121
- parseSync,
122
- binary: true
123
- };
124
- }
125
- });
126
-
127
- // src/parsers/parse-potree-bin.ts
128
- function parsePotreeBin(arrayBuffer, byteOffset, options, index) {
129
- return null;
130
- }
131
- var init_parse_potree_bin = __esm({
132
- "src/parsers/parse-potree-bin.ts"() {
133
- }
134
- });
135
-
136
- // src/potree-bin-loader.ts
137
- function parseSync2(arrayBuffer, options) {
138
- const index = {};
139
- const byteOffset = 0;
140
- parsePotreeBin(arrayBuffer, byteOffset, options, index);
141
- return index;
142
- }
143
- var PotreeBinLoader;
144
- var init_potree_bin_loader = __esm({
145
- "src/potree-bin-loader.ts"() {
146
- init_parse_potree_bin();
147
- PotreeBinLoader = {
148
- name: "potree Binary Point Attributes",
149
- id: "potree",
150
- extensions: ["bin"],
151
- mimeTypes: ["application/octet-stream"],
152
- parseSync: parseSync2,
153
- binary: true
154
- };
155
- }
156
- });
157
-
158
- // src/index.ts
159
- var src_exports = {};
160
- __export(src_exports, {
161
- PotreeBinLoader: () => PotreeBinLoader,
162
- PotreeHierarchyChunkLoader: () => PotreeHierarchyChunkLoader,
163
- PotreeLoader: () => PotreeLoader
164
- });
165
- var init_src = __esm({
166
- "src/index.ts"() {
167
- init_potree_loader();
168
- init_potree_hierarchy_chunk_loader();
169
- init_potree_bin_loader();
170
- }
171
- });
172
-
173
- // src/bundle.ts
174
- var require_bundle = __commonJS({
175
- "src/bundle.ts"(exports, module) {
176
- var moduleExports = (init_src(), src_exports);
177
- globalThis.loaders = globalThis.loaders || {};
178
- module.exports = Object.assign(globalThis.loaders, moduleExports);
179
- }
180
- });
181
- require_bundle();
182
- })();
1
+ "use strict";
2
+ // @ts-nocheck
3
+ const moduleExports = require('./index');
4
+ globalThis.loaders = globalThis.loaders || {};
5
+ module.exports = Object.assign(globalThis.loaders, moduleExports);
@@ -0,0 +1,182 @@
1
+ (() => {
2
+ var __defProp = Object.defineProperty;
3
+ var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
4
+ var __esm = (fn, res) => function __init() {
5
+ return fn && (res = (0, fn[Object.keys(fn)[0]])(fn = 0)), res;
6
+ };
7
+ var __commonJS = (cb, mod) => function __require() {
8
+ return mod || (0, cb[Object.keys(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
9
+ };
10
+ var __export = (target, all) => {
11
+ __markAsModule(target);
12
+ for (var name in all)
13
+ __defProp(target, name, { get: all[name], enumerable: true });
14
+ };
15
+
16
+ // src/potree-loader.ts
17
+ var VERSION, PotreeLoader;
18
+ var init_potree_loader = __esm({
19
+ "src/potree-loader.ts"() {
20
+ VERSION = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
21
+ PotreeLoader = {
22
+ name: "potree",
23
+ id: "potree",
24
+ module: "potree",
25
+ version: VERSION,
26
+ extensions: ["json"],
27
+ mimeTypes: ["application/json"],
28
+ testText: (text) => text.indexOf("octreeDir") >= 0,
29
+ parseTextSync: (text) => JSON.parse(text),
30
+ options: {
31
+ potree: {}
32
+ }
33
+ };
34
+ }
35
+ });
36
+
37
+ // src/parsers/parse-potree-hierarchy-chunk.ts
38
+ function parsePotreeHierarchyChunk(arrayBuffer) {
39
+ const tileHeaders = parseBinaryChunk(arrayBuffer);
40
+ return buildHierarchy(tileHeaders);
41
+ }
42
+ function parseBinaryChunk(arrayBuffer, byteOffset = 0) {
43
+ const dataView = new DataView(arrayBuffer);
44
+ const stack = [];
45
+ const topTileHeader = {};
46
+ byteOffset = decodeRow(dataView, byteOffset, topTileHeader);
47
+ stack.push(topTileHeader);
48
+ const tileHeaders = [];
49
+ while (stack.length > 0) {
50
+ const snode = stack.shift();
51
+ let mask = 1;
52
+ for (let i = 0; i < 8; i++) {
53
+ if (snode && (snode.header.childMask & mask) !== 0) {
54
+ const tileHeader = {};
55
+ byteOffset = decodeRow(dataView, byteOffset, tileHeader);
56
+ tileHeader.name = snode.name + i;
57
+ stack.push(tileHeader);
58
+ tileHeaders.push(tileHeader);
59
+ snode.header.childCount++;
60
+ }
61
+ mask = mask * 2;
62
+ }
63
+ if (byteOffset === dataView.byteLength) {
64
+ break;
65
+ }
66
+ }
67
+ return tileHeaders;
68
+ }
69
+ function decodeRow(dataView, byteOffset, tileHeader) {
70
+ tileHeader.header = tileHeader.header || {};
71
+ tileHeader.header.childMask = dataView.getUint8(byteOffset);
72
+ tileHeader.header.childCount = 0;
73
+ tileHeader.pointCount = dataView.getUint32(byteOffset + 1, true);
74
+ tileHeader.name = "";
75
+ byteOffset += 5;
76
+ return byteOffset;
77
+ }
78
+ function buildHierarchy(tileHeaders, options = {}) {
79
+ const DEFAULT_OPTIONS = { spacing: 100 };
80
+ options = { ...DEFAULT_OPTIONS, ...options };
81
+ const topNode = tileHeaders[0];
82
+ const nodes = {};
83
+ for (const tileHeader of tileHeaders) {
84
+ const { name } = tileHeader;
85
+ const index = parseInt(name.charAt(name.length - 1), 10);
86
+ const parentName = name.substring(0, name.length - 1);
87
+ const parentNode = nodes[parentName];
88
+ const level = name.length - 1;
89
+ tileHeader.level = level;
90
+ tileHeader.hasChildren = tileHeader.header.childCount;
91
+ tileHeader.children = [];
92
+ tileHeader.childrenByIndex = new Array(8).fill(null);
93
+ tileHeader.spacing = options.spacing / Math.pow(2, level);
94
+ if (parentNode) {
95
+ parentNode.children.push(tileHeader);
96
+ parentNode.childrenByIndex[index] = tileHeader;
97
+ }
98
+ nodes[name] = tileHeader;
99
+ }
100
+ return topNode;
101
+ }
102
+ var init_parse_potree_hierarchy_chunk = __esm({
103
+ "src/parsers/parse-potree-hierarchy-chunk.ts"() {
104
+ }
105
+ });
106
+
107
+ // src/potree-hierarchy-chunk-loader.ts
108
+ function parseSync(arrayBuffer) {
109
+ return parsePotreeHierarchyChunk(arrayBuffer);
110
+ }
111
+ var PotreeHierarchyChunkLoader;
112
+ var init_potree_hierarchy_chunk_loader = __esm({
113
+ "src/potree-hierarchy-chunk-loader.ts"() {
114
+ init_parse_potree_hierarchy_chunk();
115
+ PotreeHierarchyChunkLoader = {
116
+ id: "potree",
117
+ name: "potree Hierarchy Chunk",
118
+ extensions: ["hrc"],
119
+ mimeTypes: ["application/octet-stream"],
120
+ parse: async (arrayBuffer, options) => await parseSync(arrayBuffer),
121
+ parseSync,
122
+ binary: true
123
+ };
124
+ }
125
+ });
126
+
127
+ // src/parsers/parse-potree-bin.ts
128
+ function parsePotreeBin(arrayBuffer, byteOffset, options, index) {
129
+ return null;
130
+ }
131
+ var init_parse_potree_bin = __esm({
132
+ "src/parsers/parse-potree-bin.ts"() {
133
+ }
134
+ });
135
+
136
+ // src/potree-bin-loader.ts
137
+ function parseSync2(arrayBuffer, options) {
138
+ const index = {};
139
+ const byteOffset = 0;
140
+ parsePotreeBin(arrayBuffer, byteOffset, options, index);
141
+ return index;
142
+ }
143
+ var PotreeBinLoader;
144
+ var init_potree_bin_loader = __esm({
145
+ "src/potree-bin-loader.ts"() {
146
+ init_parse_potree_bin();
147
+ PotreeBinLoader = {
148
+ name: "potree Binary Point Attributes",
149
+ id: "potree",
150
+ extensions: ["bin"],
151
+ mimeTypes: ["application/octet-stream"],
152
+ parseSync: parseSync2,
153
+ binary: true
154
+ };
155
+ }
156
+ });
157
+
158
+ // src/index.ts
159
+ var src_exports = {};
160
+ __export(src_exports, {
161
+ PotreeBinLoader: () => PotreeBinLoader,
162
+ PotreeHierarchyChunkLoader: () => PotreeHierarchyChunkLoader,
163
+ PotreeLoader: () => PotreeLoader
164
+ });
165
+ var init_src = __esm({
166
+ "src/index.ts"() {
167
+ init_potree_loader();
168
+ init_potree_hierarchy_chunk_loader();
169
+ init_potree_bin_loader();
170
+ }
171
+ });
172
+
173
+ // src/bundle.ts
174
+ var require_bundle = __commonJS({
175
+ "src/bundle.ts"(exports, module) {
176
+ var moduleExports = (init_src(), src_exports);
177
+ globalThis.loaders = globalThis.loaders || {};
178
+ module.exports = Object.assign(globalThis.loaders, moduleExports);
179
+ }
180
+ });
181
+ require_bundle();
182
+ })();
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- const moduleExports = require('./index');
3
+ var moduleExports = require('./index');
4
4
 
5
5
  globalThis.loaders = globalThis.loaders || {};
6
6
  module.exports = Object.assign(globalThis.loaders, moduleExports);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/bundle.ts"],"names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"mappings":";;AACA,MAAMA,aAAa,GAAGC,OAAO,CAAC,SAAD,CAA7B;;AACAC,UAAU,CAACC,OAAX,GAAqBD,UAAU,CAACC,OAAX,IAAsB,EAA3C;AACAC,MAAM,CAACC,OAAP,GAAiBC,MAAM,CAACC,MAAP,CAAcL,UAAU,CAACC,OAAzB,EAAkCH,aAAlC,CAAjB","sourcesContent":["// @ts-nocheck\nconst moduleExports = require('./index');\nglobalThis.loaders = globalThis.loaders || {};\nmodule.exports = Object.assign(globalThis.loaders, moduleExports);\n"],"file":"bundle.js"}
1
+ {"version":3,"sources":["../../src/bundle.ts"],"names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"mappings":";;AACA,IAAMA,aAAa,GAAGC,OAAO,CAAC,SAAD,CAA7B;;AACAC,UAAU,CAACC,OAAX,GAAqBD,UAAU,CAACC,OAAX,IAAsB,EAA3C;AACAC,MAAM,CAACC,OAAP,GAAiBC,MAAM,CAACC,MAAP,CAAcL,UAAU,CAACC,OAAzB,EAAkCH,aAAlC,CAAjB","sourcesContent":["// @ts-nocheck\nconst moduleExports = require('./index');\nglobalThis.loaders = globalThis.loaders || {};\nmodule.exports = Object.assign(globalThis.loaders, moduleExports);\n"],"file":"bundle.js"}
package/dist/es5/index.js CHANGED
@@ -5,19 +5,19 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  Object.defineProperty(exports, "PotreeLoader", {
7
7
  enumerable: true,
8
- get: function () {
8
+ get: function get() {
9
9
  return _potreeLoader.PotreeLoader;
10
10
  }
11
11
  });
12
12
  Object.defineProperty(exports, "PotreeHierarchyChunkLoader", {
13
13
  enumerable: true,
14
- get: function () {
14
+ get: function get() {
15
15
  return _potreeHierarchyChunkLoader.PotreeHierarchyChunkLoader;
16
16
  }
17
17
  });
18
18
  Object.defineProperty(exports, "PotreeBinLoader", {
19
19
  enumerable: true,
20
- get: function () {
20
+ get: function get() {
21
21
  return _potreeBinLoader.PotreeBinLoader;
22
22
  }
23
23
  });
@@ -1,29 +1,34 @@
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.PointCloudOctant = exports.PointCloudOctree = void 0;
7
9
 
8
- class PointCloudOctree {
9
- constructor() {
10
- this.url = null;
11
- this.octreeDir = null;
12
- this.spacing = 0;
13
- this.boundingBox = null;
14
- this.root = null;
15
- this.nodes = null;
16
- this.pointAttributes = null;
17
- this.hierarchyStepSize = -1;
18
- this.loader = null;
19
- }
10
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
20
11
 
21
- }
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
+
14
+ var PointCloudOctree = function PointCloudOctree() {
15
+ (0, _classCallCheck2.default)(this, PointCloudOctree);
16
+ this.url = null;
17
+ this.octreeDir = null;
18
+ this.spacing = 0;
19
+ this.boundingBox = null;
20
+ this.root = null;
21
+ this.nodes = null;
22
+ this.pointAttributes = null;
23
+ this.hierarchyStepSize = -1;
24
+ this.loader = null;
25
+ };
22
26
 
23
27
  exports.PointCloudOctree = PointCloudOctree;
24
28
 
25
- class PointCloudOctant {
26
- constructor(name, octree, boundingBox) {
29
+ var PointCloudOctant = function () {
30
+ function PointCloudOctant(name, octree, boundingBox) {
31
+ (0, _classCallCheck2.default)(this, PointCloudOctant);
27
32
  this.octree = this.id = PointCloudOctreeGeometryNode.IDCount++;
28
33
  this.name = name;
29
34
  this.index = parseInt(name.charAt(name.length - 1));
@@ -38,202 +43,217 @@ class PointCloudOctant {
38
43
  this.oneTimeDisposeHandlers = [];
39
44
  }
40
45
 
41
- isGeometryNode() {
42
- return true;
43
- }
44
-
45
- getLevel() {
46
- return this.level;
47
- }
48
-
49
- isTreeNode() {
50
- return false;
51
- }
52
-
53
- isLoaded() {
54
- return this.loaded;
55
- }
56
-
57
- getBoundingSphere() {
58
- return this.boundingSphere;
59
- }
60
-
61
- getBoundingBox() {
62
- return this.boundingBox;
63
- }
64
-
65
- getChildren() {
66
- return this.children.filter(Boolean);
67
- }
68
-
69
- getURL() {
70
- const {
71
- version
72
- } = this.octree;
73
- const hierarchyPath = version >= 1.5 ? "".concat(this.getHierarchyPath(), "/") : '';
74
- return "".concat(this.octree.octreeDir, "/").concat(hierarchyPath).concat(this.name);
75
- }
76
-
77
- getHierarchyPath() {
78
- let path = 'r/';
79
- let hierarchyStepSize = this.octree.hierarchyStepSize;
80
- let indices = this.name.substr(1);
81
- let numParts = Math.floor(indices.length / hierarchyStepSize);
82
-
83
- for (let i = 0; i < numParts; i++) {
84
- path += indices.substr(i * hierarchyStepSize, hierarchyStepSize) + '/';
46
+ (0, _createClass2.default)(PointCloudOctant, [{
47
+ key: "isGeometryNode",
48
+ value: function isGeometryNode() {
49
+ return true;
85
50
  }
51
+ }, {
52
+ key: "getLevel",
53
+ value: function getLevel() {
54
+ return this.level;
55
+ }
56
+ }, {
57
+ key: "isTreeNode",
58
+ value: function isTreeNode() {
59
+ return false;
60
+ }
61
+ }, {
62
+ key: "isLoaded",
63
+ value: function isLoaded() {
64
+ return this.loaded;
65
+ }
66
+ }, {
67
+ key: "getBoundingSphere",
68
+ value: function getBoundingSphere() {
69
+ return this.boundingSphere;
70
+ }
71
+ }, {
72
+ key: "getBoundingBox",
73
+ value: function getBoundingBox() {
74
+ return this.boundingBox;
75
+ }
76
+ }, {
77
+ key: "getChildren",
78
+ value: function getChildren() {
79
+ return this.children.filter(Boolean);
80
+ }
81
+ }, {
82
+ key: "getURL",
83
+ value: function getURL() {
84
+ var version = this.octree.version;
85
+ var hierarchyPath = version >= 1.5 ? "".concat(this.getHierarchyPath(), "/") : '';
86
+ return "".concat(this.octree.octreeDir, "/").concat(hierarchyPath).concat(this.name);
87
+ }
88
+ }, {
89
+ key: "getHierarchyPath",
90
+ value: function getHierarchyPath() {
91
+ var path = 'r/';
92
+ var hierarchyStepSize = this.octree.hierarchyStepSize;
93
+ var indices = this.name.substr(1);
94
+ var numParts = Math.floor(indices.length / hierarchyStepSize);
95
+
96
+ for (var i = 0; i < numParts; i++) {
97
+ path += indices.substr(i * hierarchyStepSize, hierarchyStepSize) + '/';
98
+ }
86
99
 
87
- path = path.slice(0, -1);
88
- return path;
89
- }
90
-
91
- addChild(child) {
92
- this.children[child.index] = child;
93
- child.parent = this;
94
- }
95
-
96
- load() {
97
- if (this.loading === true || this.loaded === true || Potree.numNodesLoading >= Potree.maxNodesLoading) {
98
- return;
100
+ path = path.slice(0, -1);
101
+ return path;
99
102
  }
103
+ }, {
104
+ key: "addChild",
105
+ value: function addChild(child) {
106
+ this.children[child.index] = child;
107
+ child.parent = this;
108
+ }
109
+ }, {
110
+ key: "load",
111
+ value: function load() {
112
+ if (this.loading === true || this.loaded === true || Potree.numNodesLoading >= Potree.maxNodesLoading) {
113
+ return;
114
+ }
100
115
 
101
- this.loading = true;
102
- Potree.numNodesLoading++;
116
+ this.loading = true;
117
+ Potree.numNodesLoading++;
103
118
 
104
- if (this.octree.loader.version.equalOrHigher('1.5')) {
105
- if (this.level % this.octree.hierarchyStepSize === 0 && this.hasChildren) {
106
- this.loadHierachyThenPoints();
119
+ if (this.octree.loader.version.equalOrHigher('1.5')) {
120
+ if (this.level % this.octree.hierarchyStepSize === 0 && this.hasChildren) {
121
+ this.loadHierachyThenPoints();
122
+ } else {
123
+ this.loadPoints();
124
+ }
107
125
  } else {
108
126
  this.loadPoints();
109
127
  }
110
- } else {
111
- this.loadPoints();
112
128
  }
113
- }
114
-
115
- loadPoints() {
116
- this.octree.loader.load(this);
117
- }
118
-
119
- loadHierachyThenPoints() {
120
- let node = this;
121
-
122
- let callback = function (node, hbuffer) {
123
- let view = new DataView(hbuffer);
124
- let stack = [];
125
- let children = view.getUint8(0);
126
- let numPoints = view.getUint32(1, true);
127
- node.numPoints = numPoints;
128
- stack.push({
129
- children: children,
130
- numPoints: numPoints,
131
- name: node.name
132
- });
133
- let decoded = [];
134
- let offset = 5;
135
-
136
- while (stack.length > 0) {
137
- let snode = stack.shift();
138
- let mask = 1;
139
-
140
- for (let i = 0; i < 8; i++) {
141
- if ((snode.children & mask) !== 0) {
142
- let childName = snode.name + i;
143
- let childChildren = view.getUint8(offset);
144
- let childNumPoints = view.getUint32(offset + 1, true);
145
- stack.push({
146
- children: childChildren,
147
- numPoints: childNumPoints,
148
- name: childName
149
- });
150
- decoded.push({
151
- children: childChildren,
152
- numPoints: childNumPoints,
153
- name: childName
154
- });
155
- offset += 5;
129
+ }, {
130
+ key: "loadPoints",
131
+ value: function loadPoints() {
132
+ this.octree.loader.load(this);
133
+ }
134
+ }, {
135
+ key: "loadHierachyThenPoints",
136
+ value: function loadHierachyThenPoints() {
137
+ var node = this;
138
+
139
+ var callback = function callback(node, hbuffer) {
140
+ var view = new DataView(hbuffer);
141
+ var stack = [];
142
+ var children = view.getUint8(0);
143
+ var numPoints = view.getUint32(1, true);
144
+ node.numPoints = numPoints;
145
+ stack.push({
146
+ children: children,
147
+ numPoints: numPoints,
148
+ name: node.name
149
+ });
150
+ var decoded = [];
151
+ var offset = 5;
152
+
153
+ while (stack.length > 0) {
154
+ var snode = stack.shift();
155
+ var mask = 1;
156
+
157
+ for (var i = 0; i < 8; i++) {
158
+ if ((snode.children & mask) !== 0) {
159
+ var childName = snode.name + i;
160
+ var childChildren = view.getUint8(offset);
161
+ var childNumPoints = view.getUint32(offset + 1, true);
162
+ stack.push({
163
+ children: childChildren,
164
+ numPoints: childNumPoints,
165
+ name: childName
166
+ });
167
+ decoded.push({
168
+ children: childChildren,
169
+ numPoints: childNumPoints,
170
+ name: childName
171
+ });
172
+ offset += 5;
173
+ }
174
+
175
+ mask = mask * 2;
156
176
  }
157
177
 
158
- mask = mask * 2;
178
+ if (offset === hbuffer.byteLength) {
179
+ break;
180
+ }
159
181
  }
160
182
 
161
- if (offset === hbuffer.byteLength) {
162
- break;
183
+ var nodes = {};
184
+ nodes[node.name] = node;
185
+ var pco = node.pcoGeometry;
186
+
187
+ for (var _i = 0; _i < decoded.length; _i++) {
188
+ var name = decoded[_i].name;
189
+ var decodedNumPoints = decoded[_i].numPoints;
190
+ var index = parseInt(name.charAt(name.length - 1));
191
+ var parentName = name.substring(0, name.length - 1);
192
+ var parentNode = nodes[parentName];
193
+ var level = name.length - 1;
194
+ var boundingBox = Utils.createChildAABB(parentNode.boundingBox, index);
195
+ var currentNode = new PointCloudOctreeGeometryNode(name, pco, boundingBox);
196
+ currentNode.level = level;
197
+ currentNode.numPoints = decodedNumPoints;
198
+ currentNode.hasChildren = decoded[_i].children > 0;
199
+ currentNode.spacing = pco.spacing / Math.pow(2, level);
200
+ parentNode.addChild(currentNode);
201
+ nodes[name] = currentNode;
163
202
  }
164
- }
165
203
 
166
- let nodes = {};
167
- nodes[node.name] = node;
168
- let pco = node.pcoGeometry;
169
-
170
- for (let i = 0; i < decoded.length; i++) {
171
- let name = decoded[i].name;
172
- let decodedNumPoints = decoded[i].numPoints;
173
- let index = parseInt(name.charAt(name.length - 1));
174
- let parentName = name.substring(0, name.length - 1);
175
- let parentNode = nodes[parentName];
176
- let level = name.length - 1;
177
- let boundingBox = Utils.createChildAABB(parentNode.boundingBox, index);
178
- let currentNode = new PointCloudOctreeGeometryNode(name, pco, boundingBox);
179
- currentNode.level = level;
180
- currentNode.numPoints = decodedNumPoints;
181
- currentNode.hasChildren = decoded[i].children > 0;
182
- currentNode.spacing = pco.spacing / Math.pow(2, level);
183
- parentNode.addChild(currentNode);
184
- nodes[name] = currentNode;
185
- }
204
+ node.loadPoints();
205
+ };
186
206
 
187
- node.loadPoints();
188
- };
189
-
190
- if (node.level % node.pcoGeometry.hierarchyStepSize === 0) {
191
- let hurl = node.pcoGeometry.octreeDir + '/' + node.getHierarchyPath() + '/' + node.name + '.hrc';
192
- let xhr = XHRFactory.createXMLHttpRequest();
193
- xhr.open('GET', hurl, true);
194
- xhr.responseType = 'arraybuffer';
195
- xhr.overrideMimeType('text/plain; charset=x-user-defined');
196
-
197
- xhr.onreadystatechange = () => {
198
- if (xhr.readyState === 4) {
199
- if (xhr.status === 200 || xhr.status === 0) {
200
- let hbuffer = xhr.response;
201
- callback(node, hbuffer);
202
- } else {
203
- console.log('Failed to load file! HTTP status: ' + xhr.status + ', file: ' + hurl);
204
- Potree.numNodesLoading--;
207
+ if (node.level % node.pcoGeometry.hierarchyStepSize === 0) {
208
+ var hurl = node.pcoGeometry.octreeDir + '/' + node.getHierarchyPath() + '/' + node.name + '.hrc';
209
+ var xhr = XHRFactory.createXMLHttpRequest();
210
+ xhr.open('GET', hurl, true);
211
+ xhr.responseType = 'arraybuffer';
212
+ xhr.overrideMimeType('text/plain; charset=x-user-defined');
213
+
214
+ xhr.onreadystatechange = function () {
215
+ if (xhr.readyState === 4) {
216
+ if (xhr.status === 200 || xhr.status === 0) {
217
+ var hbuffer = xhr.response;
218
+ callback(node, hbuffer);
219
+ } else {
220
+ console.log('Failed to load file! HTTP status: ' + xhr.status + ', file: ' + hurl);
221
+ Potree.numNodesLoading--;
222
+ }
205
223
  }
206
- }
207
- };
224
+ };
208
225
 
209
- try {
210
- xhr.send(null);
211
- } catch (e) {
212
- console.log('fehler beim laden der punktwolke: ' + e);
226
+ try {
227
+ xhr.send(null);
228
+ } catch (e) {
229
+ console.log('fehler beim laden der punktwolke: ' + e);
230
+ }
213
231
  }
214
232
  }
215
- }
216
-
217
- getNumPoints() {
218
- return this.numPoints;
219
- }
220
-
221
- dispose() {
222
- if (this.geometry && this.parent != null) {
223
- this.geometry.dispose();
224
- this.geometry = null;
225
- this.loaded = false;
233
+ }, {
234
+ key: "getNumPoints",
235
+ value: function getNumPoints() {
236
+ return this.numPoints;
237
+ }
238
+ }, {
239
+ key: "dispose",
240
+ value: function dispose() {
241
+ if (this.geometry && this.parent != null) {
242
+ this.geometry.dispose();
243
+ this.geometry = null;
244
+ this.loaded = false;
245
+
246
+ for (var i = 0; i < this.oneTimeDisposeHandlers.length; i++) {
247
+ var handler = this.oneTimeDisposeHandlers[i];
248
+ handler();
249
+ }
226
250
 
227
- for (let i = 0; i < this.oneTimeDisposeHandlers.length; i++) {
228
- let handler = this.oneTimeDisposeHandlers[i];
229
- handler();
251
+ this.oneTimeDisposeHandlers = [];
230
252
  }
231
-
232
- this.oneTimeDisposeHandlers = [];
233
253
  }
234
- }
235
-
236
- }
254
+ }]);
255
+ return PointCloudOctant;
256
+ }();
237
257
 
238
258
  exports.PointCloudOctant = PointCloudOctant;
239
259
  PointCloudOctreeGeometryNode.IDCount = 0;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/octree.ts"],"names":["PointCloudOctree","constructor","url","octreeDir","spacing","boundingBox","root","nodes","pointAttributes","hierarchyStepSize","loader","PointCloudOctant","name","octree","id","PointCloudOctreeGeometryNode","IDCount","index","parseInt","charAt","length","geometry","boundingSphere","getBoundingSphere","THREE","Sphere","children","numPoints","level","loaded","oneTimeDisposeHandlers","isGeometryNode","getLevel","isTreeNode","isLoaded","getBoundingBox","getChildren","filter","Boolean","getURL","version","hierarchyPath","getHierarchyPath","path","indices","substr","numParts","Math","floor","i","slice","addChild","child","parent","load","loading","Potree","numNodesLoading","maxNodesLoading","equalOrHigher","hasChildren","loadHierachyThenPoints","loadPoints","node","callback","hbuffer","view","DataView","stack","getUint8","getUint32","push","decoded","offset","snode","shift","mask","childName","childChildren","childNumPoints","byteLength","pco","pcoGeometry","decodedNumPoints","parentName","substring","parentNode","Utils","createChildAABB","currentNode","pow","hurl","xhr","XHRFactory","createXMLHttpRequest","open","responseType","overrideMimeType","onreadystatechange","readyState","status","response","console","log","send","e","getNumPoints","dispose","handler"],"mappings":";;;;;;;AAIO,MAAMA,gBAAN,CAAuB;AAC5BC,EAAAA,WAAW,GAAG;AACZ,SAAKC,GAAL,GAAW,IAAX;AACA,SAAKC,SAAL,GAAiB,IAAjB;AACA,SAAKC,OAAL,GAAe,CAAf;AACA,SAAKC,WAAL,GAAmB,IAAnB;AACA,SAAKC,IAAL,GAAY,IAAZ;AACA,SAAKC,KAAL,GAAa,IAAb;AACA,SAAKC,eAAL,GAAuB,IAAvB;AACA,SAAKC,iBAAL,GAAyB,CAAC,CAA1B;AACA,SAAKC,MAAL,GAAc,IAAd;AACD;;AAX2B;;;;AAcvB,MAAMC,gBAAN,CAAuB;AAC5BV,EAAAA,WAAW,CAACW,IAAD,EAAOC,MAAP,EAAeR,WAAf,EAA4B;AACrC,SAAKQ,MAAL,GAAc,KAAKC,EAAL,GAAUC,4BAA4B,CAACC,OAA7B,EAAxB;AACA,SAAKJ,IAAL,GAAYA,IAAZ;AACA,SAAKK,KAAL,GAAaC,QAAQ,CAACN,IAAI,CAACO,MAAL,CAAYP,IAAI,CAACQ,MAAL,GAAc,CAA1B,CAAD,CAArB;AACA,SAAKP,MAAL,GAAcA,MAAd;AACA,SAAKQ,QAAL,GAAgB,IAAhB;AACA,SAAKhB,WAAL,GAAmBA,WAAnB;AACA,SAAKiB,cAAL,GAAsBjB,WAAW,CAACkB,iBAAZ,CAA8B,IAAIC,KAAK,CAACC,MAAV,EAA9B,CAAtB;AACA,SAAKC,QAAL,GAAgB,EAAhB;AACA,SAAKC,SAAL,GAAiB,CAAjB;AACA,SAAKC,KAAL,GAAa,IAAb;AACA,SAAKC,MAAL,GAAc,KAAd;AACA,SAAKC,sBAAL,GAA8B,EAA9B;AACD;;AAEDC,EAAAA,cAAc,GAAG;AACf,WAAO,IAAP;AACD;;AAEDC,EAAAA,QAAQ,GAAG;AACT,WAAO,KAAKJ,KAAZ;AACD;;AAEDK,EAAAA,UAAU,GAAG;AACX,WAAO,KAAP;AACD;;AAEDC,EAAAA,QAAQ,GAAG;AACT,WAAO,KAAKL,MAAZ;AACD;;AAEDN,EAAAA,iBAAiB,GAAG;AAClB,WAAO,KAAKD,cAAZ;AACD;;AAEDa,EAAAA,cAAc,GAAG;AACf,WAAO,KAAK9B,WAAZ;AACD;;AAED+B,EAAAA,WAAW,GAAG;AAEZ,WAAO,KAAKV,QAAL,CAAcW,MAAd,CAAqBC,OAArB,CAAP;AACD;;AAEDC,EAAAA,MAAM,GAAG;AACP,UAAM;AAACC,MAAAA;AAAD,QAAY,KAAK3B,MAAvB;AACA,UAAM4B,aAAa,GAAGD,OAAO,IAAI,GAAX,aAAoB,KAAKE,gBAAL,EAApB,SAAiD,EAAvE;AACA,qBAAU,KAAK7B,MAAL,CAAYV,SAAtB,cAAmCsC,aAAnC,SAAmD,KAAK7B,IAAxD;AACD;;AAED8B,EAAAA,gBAAgB,GAAG;AACjB,QAAIC,IAAI,GAAG,IAAX;AAEA,QAAIlC,iBAAiB,GAAG,KAAKI,MAAL,CAAYJ,iBAApC;AACA,QAAImC,OAAO,GAAG,KAAKhC,IAAL,CAAUiC,MAAV,CAAiB,CAAjB,CAAd;AAEA,QAAIC,QAAQ,GAAGC,IAAI,CAACC,KAAL,CAAWJ,OAAO,CAACxB,MAAR,GAAiBX,iBAA5B,CAAf;;AACA,SAAK,IAAIwC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGH,QAApB,EAA8BG,CAAC,EAA/B,EAAmC;AACjCN,MAAAA,IAAI,IAAIC,OAAO,CAACC,MAAR,CAAeI,CAAC,GAAGxC,iBAAnB,EAAsCA,iBAAtC,IAA2D,GAAnE;AACD;;AAEDkC,IAAAA,IAAI,GAAGA,IAAI,CAACO,KAAL,CAAW,CAAX,EAAc,CAAC,CAAf,CAAP;AAEA,WAAOP,IAAP;AACD;;AAEDQ,EAAAA,QAAQ,CAACC,KAAD,EAAQ;AACd,SAAK1B,QAAL,CAAc0B,KAAK,CAACnC,KAApB,IAA6BmC,KAA7B;AACAA,IAAAA,KAAK,CAACC,MAAN,GAAe,IAAf;AACD;;AAEDC,EAAAA,IAAI,GAAG;AACL,QACE,KAAKC,OAAL,KAAiB,IAAjB,IACA,KAAK1B,MAAL,KAAgB,IADhB,IAEA2B,MAAM,CAACC,eAAP,IAA0BD,MAAM,CAACE,eAHnC,EAIE;AACA;AACD;;AAED,SAAKH,OAAL,GAAe,IAAf;AAEAC,IAAAA,MAAM,CAACC,eAAP;;AAEA,QAAI,KAAK5C,MAAL,CAAYH,MAAZ,CAAmB8B,OAAnB,CAA2BmB,aAA3B,CAAyC,KAAzC,CAAJ,EAAqD;AACnD,UAAI,KAAK/B,KAAL,GAAa,KAAKf,MAAL,CAAYJ,iBAAzB,KAA+C,CAA/C,IAAoD,KAAKmD,WAA7D,EAA0E;AACxE,aAAKC,sBAAL;AACD,OAFD,MAEO;AACL,aAAKC,UAAL;AACD;AACF,KAND,MAMO;AACL,WAAKA,UAAL;AACD;AACF;;AAEDA,EAAAA,UAAU,GAAG;AACX,SAAKjD,MAAL,CAAYH,MAAZ,CAAmB4C,IAAnB,CAAwB,IAAxB;AACD;;AAEDO,EAAAA,sBAAsB,GAAG;AACvB,QAAIE,IAAI,GAAG,IAAX;;AAGA,QAAIC,QAAQ,GAAG,UAAUD,IAAV,EAAgBE,OAAhB,EAAyB;AACtC,UAAIC,IAAI,GAAG,IAAIC,QAAJ,CAAaF,OAAb,CAAX;AAEA,UAAIG,KAAK,GAAG,EAAZ;AACA,UAAI1C,QAAQ,GAAGwC,IAAI,CAACG,QAAL,CAAc,CAAd,CAAf;AACA,UAAI1C,SAAS,GAAGuC,IAAI,CAACI,SAAL,CAAe,CAAf,EAAkB,IAAlB,CAAhB;AACAP,MAAAA,IAAI,CAACpC,SAAL,GAAiBA,SAAjB;AACAyC,MAAAA,KAAK,CAACG,IAAN,CAAW;AAAC7C,QAAAA,QAAQ,EAAEA,QAAX;AAAqBC,QAAAA,SAAS,EAAEA,SAAhC;AAA2Cf,QAAAA,IAAI,EAAEmD,IAAI,CAACnD;AAAtD,OAAX;AAEA,UAAI4D,OAAO,GAAG,EAAd;AAEA,UAAIC,MAAM,GAAG,CAAb;;AACA,aAAOL,KAAK,CAAChD,MAAN,GAAe,CAAtB,EAAyB;AACvB,YAAIsD,KAAK,GAAGN,KAAK,CAACO,KAAN,EAAZ;AACA,YAAIC,IAAI,GAAG,CAAX;;AACA,aAAK,IAAI3B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,CAApB,EAAuBA,CAAC,EAAxB,EAA4B;AAC1B,cAAI,CAACyB,KAAK,CAAChD,QAAN,GAAiBkD,IAAlB,MAA4B,CAAhC,EAAmC;AACjC,gBAAIC,SAAS,GAAGH,KAAK,CAAC9D,IAAN,GAAaqC,CAA7B;AAEA,gBAAI6B,aAAa,GAAGZ,IAAI,CAACG,QAAL,CAAcI,MAAd,CAApB;AACA,gBAAIM,cAAc,GAAGb,IAAI,CAACI,SAAL,CAAeG,MAAM,GAAG,CAAxB,EAA2B,IAA3B,CAArB;AAEAL,YAAAA,KAAK,CAACG,IAAN,CAAW;AAAC7C,cAAAA,QAAQ,EAAEoD,aAAX;AAA0BnD,cAAAA,SAAS,EAAEoD,cAArC;AAAqDnE,cAAAA,IAAI,EAAEiE;AAA3D,aAAX;AAEAL,YAAAA,OAAO,CAACD,IAAR,CAAa;AAAC7C,cAAAA,QAAQ,EAAEoD,aAAX;AAA0BnD,cAAAA,SAAS,EAAEoD,cAArC;AAAqDnE,cAAAA,IAAI,EAAEiE;AAA3D,aAAb;AAEAJ,YAAAA,MAAM,IAAI,CAAV;AACD;;AAEDG,UAAAA,IAAI,GAAGA,IAAI,GAAG,CAAd;AACD;;AAED,YAAIH,MAAM,KAAKR,OAAO,CAACe,UAAvB,EAAmC;AACjC;AACD;AACF;;AAID,UAAIzE,KAAK,GAAG,EAAZ;AACAA,MAAAA,KAAK,CAACwD,IAAI,CAACnD,IAAN,CAAL,GAAmBmD,IAAnB;AACA,UAAIkB,GAAG,GAAGlB,IAAI,CAACmB,WAAf;;AAEA,WAAK,IAAIjC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuB,OAAO,CAACpD,MAA5B,EAAoC6B,CAAC,EAArC,EAAyC;AACvC,YAAIrC,IAAI,GAAG4D,OAAO,CAACvB,CAAD,CAAP,CAAWrC,IAAtB;AACA,YAAIuE,gBAAgB,GAAGX,OAAO,CAACvB,CAAD,CAAP,CAAWtB,SAAlC;AACA,YAAIV,KAAK,GAAGC,QAAQ,CAACN,IAAI,CAACO,MAAL,CAAYP,IAAI,CAACQ,MAAL,GAAc,CAA1B,CAAD,CAApB;AACA,YAAIgE,UAAU,GAAGxE,IAAI,CAACyE,SAAL,CAAe,CAAf,EAAkBzE,IAAI,CAACQ,MAAL,GAAc,CAAhC,CAAjB;AACA,YAAIkE,UAAU,GAAG/E,KAAK,CAAC6E,UAAD,CAAtB;AACA,YAAIxD,KAAK,GAAGhB,IAAI,CAACQ,MAAL,GAAc,CAA1B;AACA,YAAIf,WAAW,GAAGkF,KAAK,CAACC,eAAN,CAAsBF,UAAU,CAACjF,WAAjC,EAA8CY,KAA9C,CAAlB;AAEA,YAAIwE,WAAW,GAAG,IAAI1E,4BAAJ,CAAiCH,IAAjC,EAAuCqE,GAAvC,EAA4C5E,WAA5C,CAAlB;AACAoF,QAAAA,WAAW,CAAC7D,KAAZ,GAAoBA,KAApB;AACA6D,QAAAA,WAAW,CAAC9D,SAAZ,GAAwBwD,gBAAxB;AACAM,QAAAA,WAAW,CAAC7B,WAAZ,GAA0BY,OAAO,CAACvB,CAAD,CAAP,CAAWvB,QAAX,GAAsB,CAAhD;AACA+D,QAAAA,WAAW,CAACrF,OAAZ,GAAsB6E,GAAG,CAAC7E,OAAJ,GAAc2C,IAAI,CAAC2C,GAAL,CAAS,CAAT,EAAY9D,KAAZ,CAApC;AACA0D,QAAAA,UAAU,CAACnC,QAAX,CAAoBsC,WAApB;AACAlF,QAAAA,KAAK,CAACK,IAAD,CAAL,GAAc6E,WAAd;AACD;;AAED1B,MAAAA,IAAI,CAACD,UAAL;AACD,KA9DD;;AA+DA,QAAIC,IAAI,CAACnC,KAAL,GAAamC,IAAI,CAACmB,WAAL,CAAiBzE,iBAA9B,KAAoD,CAAxD,EAA2D;AAEzD,UAAIkF,IAAI,GACN5B,IAAI,CAACmB,WAAL,CAAiB/E,SAAjB,GAA6B,GAA7B,GAAmC4D,IAAI,CAACrB,gBAAL,EAAnC,GAA6D,GAA7D,GAAmEqB,IAAI,CAACnD,IAAxE,GAA+E,MADjF;AAGA,UAAIgF,GAAG,GAAGC,UAAU,CAACC,oBAAX,EAAV;AACAF,MAAAA,GAAG,CAACG,IAAJ,CAAS,KAAT,EAAgBJ,IAAhB,EAAsB,IAAtB;AACAC,MAAAA,GAAG,CAACI,YAAJ,GAAmB,aAAnB;AACAJ,MAAAA,GAAG,CAACK,gBAAJ,CAAqB,oCAArB;;AACAL,MAAAA,GAAG,CAACM,kBAAJ,GAAyB,MAAM;AAC7B,YAAIN,GAAG,CAACO,UAAJ,KAAmB,CAAvB,EAA0B;AACxB,cAAIP,GAAG,CAACQ,MAAJ,KAAe,GAAf,IAAsBR,GAAG,CAACQ,MAAJ,KAAe,CAAzC,EAA4C;AAC1C,gBAAInC,OAAO,GAAG2B,GAAG,CAACS,QAAlB;AACArC,YAAAA,QAAQ,CAACD,IAAD,EAAOE,OAAP,CAAR;AACD,WAHD,MAGO;AACLqC,YAAAA,OAAO,CAACC,GAAR,CAAY,uCAAuCX,GAAG,CAACQ,MAA3C,GAAoD,UAApD,GAAiET,IAA7E;AACAnC,YAAAA,MAAM,CAACC,eAAP;AACD;AACF;AACF,OAVD;;AAWA,UAAI;AACFmC,QAAAA,GAAG,CAACY,IAAJ,CAAS,IAAT;AACD,OAFD,CAEE,OAAOC,CAAP,EAAU;AACVH,QAAAA,OAAO,CAACC,GAAR,CAAY,uCAAuCE,CAAnD;AACD;AACF;AACF;;AAEDC,EAAAA,YAAY,GAAG;AACb,WAAO,KAAK/E,SAAZ;AACD;;AAEDgF,EAAAA,OAAO,GAAG;AACR,QAAI,KAAKtF,QAAL,IAAiB,KAAKgC,MAAL,IAAe,IAApC,EAA0C;AACxC,WAAKhC,QAAL,CAAcsF,OAAd;AACA,WAAKtF,QAAL,GAAgB,IAAhB;AACA,WAAKQ,MAAL,GAAc,KAAd;;AAGA,WAAK,IAAIoB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKnB,sBAAL,CAA4BV,MAAhD,EAAwD6B,CAAC,EAAzD,EAA6D;AAC3D,YAAI2D,OAAO,GAAG,KAAK9E,sBAAL,CAA4BmB,CAA5B,CAAd;AACA2D,QAAAA,OAAO;AACR;;AACD,WAAK9E,sBAAL,GAA8B,EAA9B;AACD;AACF;;AApN2B;;;AAuN9Bf,4BAA4B,CAACC,OAA7B,GAAuC,CAAvC","sourcesContent":["/* eslint-disable */\n\n// @ts-nocheck\n\nexport class PointCloudOctree {\n constructor() {\n this.url = null;\n this.octreeDir = null;\n this.spacing = 0;\n this.boundingBox = null;\n this.root = null;\n this.nodes = null;\n this.pointAttributes = null;\n this.hierarchyStepSize = -1;\n this.loader = null;\n }\n}\n\nexport class PointCloudOctant {\n constructor(name, octree, boundingBox) {\n this.octree = this.id = PointCloudOctreeGeometryNode.IDCount++;\n this.name = name;\n this.index = parseInt(name.charAt(name.length - 1));\n this.octree = octree;\n this.geometry = null;\n this.boundingBox = boundingBox;\n this.boundingSphere = boundingBox.getBoundingSphere(new THREE.Sphere());\n this.children = {};\n this.numPoints = 0;\n this.level = null;\n this.loaded = false;\n this.oneTimeDisposeHandlers = [];\n }\n\n isGeometryNode() {\n return true;\n }\n\n getLevel() {\n return this.level;\n }\n\n isTreeNode() {\n return false;\n }\n\n isLoaded() {\n return this.loaded;\n }\n\n getBoundingSphere() {\n return this.boundingSphere;\n }\n\n getBoundingBox() {\n return this.boundingBox;\n }\n\n getChildren() {\n // Children is a length 8 array with nulls for \"missing\" octants\n return this.children.filter(Boolean);\n }\n\n getURL() {\n const {version} = this.octree;\n const hierarchyPath = version >= 1.5 ? `${this.getHierarchyPath()}/` : '';\n return `${this.octree.octreeDir}/${hierarchyPath}${this.name}`;\n }\n\n getHierarchyPath() {\n let path = 'r/';\n\n let hierarchyStepSize = this.octree.hierarchyStepSize;\n let indices = this.name.substr(1);\n\n let numParts = Math.floor(indices.length / hierarchyStepSize);\n for (let i = 0; i < numParts; i++) {\n path += indices.substr(i * hierarchyStepSize, hierarchyStepSize) + '/';\n }\n\n path = path.slice(0, -1);\n\n return path;\n }\n\n addChild(child) {\n this.children[child.index] = child;\n child.parent = this;\n }\n\n load() {\n if (\n this.loading === true ||\n this.loaded === true ||\n Potree.numNodesLoading >= Potree.maxNodesLoading\n ) {\n return;\n }\n\n this.loading = true;\n\n Potree.numNodesLoading++;\n\n if (this.octree.loader.version.equalOrHigher('1.5')) {\n if (this.level % this.octree.hierarchyStepSize === 0 && this.hasChildren) {\n this.loadHierachyThenPoints();\n } else {\n this.loadPoints();\n }\n } else {\n this.loadPoints();\n }\n }\n\n loadPoints() {\n this.octree.loader.load(this);\n }\n\n loadHierachyThenPoints() {\n let node = this;\n\n // load hierarchy\n let callback = function (node, hbuffer) {\n let view = new DataView(hbuffer);\n\n let stack = [];\n let children = view.getUint8(0);\n let numPoints = view.getUint32(1, true);\n node.numPoints = numPoints;\n stack.push({children: children, numPoints: numPoints, name: node.name});\n\n let decoded = [];\n\n let offset = 5;\n while (stack.length > 0) {\n let snode = stack.shift();\n let mask = 1;\n for (let i = 0; i < 8; i++) {\n if ((snode.children & mask) !== 0) {\n let childName = snode.name + i;\n\n let childChildren = view.getUint8(offset);\n let childNumPoints = view.getUint32(offset + 1, true);\n\n stack.push({children: childChildren, numPoints: childNumPoints, name: childName});\n\n decoded.push({children: childChildren, numPoints: childNumPoints, name: childName});\n\n offset += 5;\n }\n\n mask = mask * 2;\n }\n\n if (offset === hbuffer.byteLength) {\n break;\n }\n }\n\n // console.log(decoded);\n\n let nodes = {};\n nodes[node.name] = node;\n let pco = node.pcoGeometry;\n\n for (let i = 0; i < decoded.length; i++) {\n let name = decoded[i].name;\n let decodedNumPoints = decoded[i].numPoints;\n let index = parseInt(name.charAt(name.length - 1));\n let parentName = name.substring(0, name.length - 1);\n let parentNode = nodes[parentName];\n let level = name.length - 1;\n let boundingBox = Utils.createChildAABB(parentNode.boundingBox, index);\n\n let currentNode = new PointCloudOctreeGeometryNode(name, pco, boundingBox);\n currentNode.level = level;\n currentNode.numPoints = decodedNumPoints;\n currentNode.hasChildren = decoded[i].children > 0;\n currentNode.spacing = pco.spacing / Math.pow(2, level);\n parentNode.addChild(currentNode);\n nodes[name] = currentNode;\n }\n\n node.loadPoints();\n };\n if (node.level % node.pcoGeometry.hierarchyStepSize === 0) {\n // let hurl = node.pcoGeometry.octreeDir + \"/../hierarchy/\" + node.name + \".hrc\";\n let hurl =\n node.pcoGeometry.octreeDir + '/' + node.getHierarchyPath() + '/' + node.name + '.hrc';\n\n let xhr = XHRFactory.createXMLHttpRequest();\n xhr.open('GET', hurl, true);\n xhr.responseType = 'arraybuffer';\n xhr.overrideMimeType('text/plain; charset=x-user-defined');\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n if (xhr.status === 200 || xhr.status === 0) {\n let hbuffer = xhr.response;\n callback(node, hbuffer);\n } else {\n console.log('Failed to load file! HTTP status: ' + xhr.status + ', file: ' + hurl);\n Potree.numNodesLoading--;\n }\n }\n };\n try {\n xhr.send(null);\n } catch (e) {\n console.log('fehler beim laden der punktwolke: ' + e);\n }\n }\n }\n\n getNumPoints() {\n return this.numPoints;\n }\n\n dispose() {\n if (this.geometry && this.parent != null) {\n this.geometry.dispose();\n this.geometry = null;\n this.loaded = false;\n\n // this.dispatchEvent( { type: 'dispose' } );\n for (let i = 0; i < this.oneTimeDisposeHandlers.length; i++) {\n let handler = this.oneTimeDisposeHandlers[i];\n handler();\n }\n this.oneTimeDisposeHandlers = [];\n }\n }\n}\n\nPointCloudOctreeGeometryNode.IDCount = 0;\n"],"file":"octree.js"}
1
+ {"version":3,"sources":["../../../src/lib/octree.ts"],"names":["PointCloudOctree","url","octreeDir","spacing","boundingBox","root","nodes","pointAttributes","hierarchyStepSize","loader","PointCloudOctant","name","octree","id","PointCloudOctreeGeometryNode","IDCount","index","parseInt","charAt","length","geometry","boundingSphere","getBoundingSphere","THREE","Sphere","children","numPoints","level","loaded","oneTimeDisposeHandlers","filter","Boolean","version","hierarchyPath","getHierarchyPath","path","indices","substr","numParts","Math","floor","i","slice","child","parent","loading","Potree","numNodesLoading","maxNodesLoading","equalOrHigher","hasChildren","loadHierachyThenPoints","loadPoints","load","node","callback","hbuffer","view","DataView","stack","getUint8","getUint32","push","decoded","offset","snode","shift","mask","childName","childChildren","childNumPoints","byteLength","pco","pcoGeometry","decodedNumPoints","parentName","substring","parentNode","Utils","createChildAABB","currentNode","pow","addChild","hurl","xhr","XHRFactory","createXMLHttpRequest","open","responseType","overrideMimeType","onreadystatechange","readyState","status","response","console","log","send","e","dispose","handler"],"mappings":"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","sourcesContent":["/* eslint-disable */\n\n// @ts-nocheck\n\nexport class PointCloudOctree {\n constructor() {\n this.url = null;\n this.octreeDir = null;\n this.spacing = 0;\n this.boundingBox = null;\n this.root = null;\n this.nodes = null;\n this.pointAttributes = null;\n this.hierarchyStepSize = -1;\n this.loader = null;\n }\n}\n\nexport class PointCloudOctant {\n constructor(name, octree, boundingBox) {\n this.octree = this.id = PointCloudOctreeGeometryNode.IDCount++;\n this.name = name;\n this.index = parseInt(name.charAt(name.length - 1));\n this.octree = octree;\n this.geometry = null;\n this.boundingBox = boundingBox;\n this.boundingSphere = boundingBox.getBoundingSphere(new THREE.Sphere());\n this.children = {};\n this.numPoints = 0;\n this.level = null;\n this.loaded = false;\n this.oneTimeDisposeHandlers = [];\n }\n\n isGeometryNode() {\n return true;\n }\n\n getLevel() {\n return this.level;\n }\n\n isTreeNode() {\n return false;\n }\n\n isLoaded() {\n return this.loaded;\n }\n\n getBoundingSphere() {\n return this.boundingSphere;\n }\n\n getBoundingBox() {\n return this.boundingBox;\n }\n\n getChildren() {\n // Children is a length 8 array with nulls for \"missing\" octants\n return this.children.filter(Boolean);\n }\n\n getURL() {\n const {version} = this.octree;\n const hierarchyPath = version >= 1.5 ? `${this.getHierarchyPath()}/` : '';\n return `${this.octree.octreeDir}/${hierarchyPath}${this.name}`;\n }\n\n getHierarchyPath() {\n let path = 'r/';\n\n let hierarchyStepSize = this.octree.hierarchyStepSize;\n let indices = this.name.substr(1);\n\n let numParts = Math.floor(indices.length / hierarchyStepSize);\n for (let i = 0; i < numParts; i++) {\n path += indices.substr(i * hierarchyStepSize, hierarchyStepSize) + '/';\n }\n\n path = path.slice(0, -1);\n\n return path;\n }\n\n addChild(child) {\n this.children[child.index] = child;\n child.parent = this;\n }\n\n load() {\n if (\n this.loading === true ||\n this.loaded === true ||\n Potree.numNodesLoading >= Potree.maxNodesLoading\n ) {\n return;\n }\n\n this.loading = true;\n\n Potree.numNodesLoading++;\n\n if (this.octree.loader.version.equalOrHigher('1.5')) {\n if (this.level % this.octree.hierarchyStepSize === 0 && this.hasChildren) {\n this.loadHierachyThenPoints();\n } else {\n this.loadPoints();\n }\n } else {\n this.loadPoints();\n }\n }\n\n loadPoints() {\n this.octree.loader.load(this);\n }\n\n loadHierachyThenPoints() {\n let node = this;\n\n // load hierarchy\n let callback = function (node, hbuffer) {\n let view = new DataView(hbuffer);\n\n let stack = [];\n let children = view.getUint8(0);\n let numPoints = view.getUint32(1, true);\n node.numPoints = numPoints;\n stack.push({children: children, numPoints: numPoints, name: node.name});\n\n let decoded = [];\n\n let offset = 5;\n while (stack.length > 0) {\n let snode = stack.shift();\n let mask = 1;\n for (let i = 0; i < 8; i++) {\n if ((snode.children & mask) !== 0) {\n let childName = snode.name + i;\n\n let childChildren = view.getUint8(offset);\n let childNumPoints = view.getUint32(offset + 1, true);\n\n stack.push({children: childChildren, numPoints: childNumPoints, name: childName});\n\n decoded.push({children: childChildren, numPoints: childNumPoints, name: childName});\n\n offset += 5;\n }\n\n mask = mask * 2;\n }\n\n if (offset === hbuffer.byteLength) {\n break;\n }\n }\n\n // console.log(decoded);\n\n let nodes = {};\n nodes[node.name] = node;\n let pco = node.pcoGeometry;\n\n for (let i = 0; i < decoded.length; i++) {\n let name = decoded[i].name;\n let decodedNumPoints = decoded[i].numPoints;\n let index = parseInt(name.charAt(name.length - 1));\n let parentName = name.substring(0, name.length - 1);\n let parentNode = nodes[parentName];\n let level = name.length - 1;\n let boundingBox = Utils.createChildAABB(parentNode.boundingBox, index);\n\n let currentNode = new PointCloudOctreeGeometryNode(name, pco, boundingBox);\n currentNode.level = level;\n currentNode.numPoints = decodedNumPoints;\n currentNode.hasChildren = decoded[i].children > 0;\n currentNode.spacing = pco.spacing / Math.pow(2, level);\n parentNode.addChild(currentNode);\n nodes[name] = currentNode;\n }\n\n node.loadPoints();\n };\n if (node.level % node.pcoGeometry.hierarchyStepSize === 0) {\n // let hurl = node.pcoGeometry.octreeDir + \"/../hierarchy/\" + node.name + \".hrc\";\n let hurl =\n node.pcoGeometry.octreeDir + '/' + node.getHierarchyPath() + '/' + node.name + '.hrc';\n\n let xhr = XHRFactory.createXMLHttpRequest();\n xhr.open('GET', hurl, true);\n xhr.responseType = 'arraybuffer';\n xhr.overrideMimeType('text/plain; charset=x-user-defined');\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n if (xhr.status === 200 || xhr.status === 0) {\n let hbuffer = xhr.response;\n callback(node, hbuffer);\n } else {\n console.log('Failed to load file! HTTP status: ' + xhr.status + ', file: ' + hurl);\n Potree.numNodesLoading--;\n }\n }\n };\n try {\n xhr.send(null);\n } catch (e) {\n console.log('fehler beim laden der punktwolke: ' + e);\n }\n }\n }\n\n getNumPoints() {\n return this.numPoints;\n }\n\n dispose() {\n if (this.geometry && this.parent != null) {\n this.geometry.dispose();\n this.geometry = null;\n this.loaded = false;\n\n // this.dispatchEvent( { type: 'dispose' } );\n for (let i = 0; i < this.oneTimeDisposeHandlers.length; i++) {\n let handler = this.oneTimeDisposeHandlers[i];\n handler();\n }\n this.oneTimeDisposeHandlers = [];\n }\n }\n}\n\nPointCloudOctreeGeometryNode.IDCount = 0;\n"],"file":"octree.js"}
@@ -1,30 +1,45 @@
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 = parsePotreeHierarchyChunk;
7
9
 
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ 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; } } }; }
13
+
14
+ 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); }
15
+
16
+ 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; }
17
+
18
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
19
+
20
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
21
+
8
22
  function parsePotreeHierarchyChunk(arrayBuffer) {
9
- const tileHeaders = parseBinaryChunk(arrayBuffer);
23
+ var tileHeaders = parseBinaryChunk(arrayBuffer);
10
24
  return buildHierarchy(tileHeaders);
11
25
  }
12
26
 
13
- function parseBinaryChunk(arrayBuffer, byteOffset = 0) {
14
- const dataView = new DataView(arrayBuffer);
15
- const stack = [];
16
- const topTileHeader = {};
27
+ function parseBinaryChunk(arrayBuffer) {
28
+ var byteOffset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
29
+ var dataView = new DataView(arrayBuffer);
30
+ var stack = [];
31
+ var topTileHeader = {};
17
32
  byteOffset = decodeRow(dataView, byteOffset, topTileHeader);
18
33
  stack.push(topTileHeader);
19
- const tileHeaders = [];
34
+ var tileHeaders = [];
20
35
 
21
36
  while (stack.length > 0) {
22
- const snode = stack.shift();
23
- let mask = 1;
37
+ var snode = stack.shift();
38
+ var mask = 1;
24
39
 
25
- for (let i = 0; i < 8; i++) {
40
+ for (var i = 0; i < 8; i++) {
26
41
  if (snode && (snode.header.childMask & mask) !== 0) {
27
- const tileHeader = {};
42
+ var tileHeader = {};
28
43
  byteOffset = decodeRow(dataView, byteOffset, tileHeader);
29
44
  tileHeader.name = snode.name + i;
30
45
  stack.push(tileHeader);
@@ -53,36 +68,43 @@ function decodeRow(dataView, byteOffset, tileHeader) {
53
68
  return byteOffset;
54
69
  }
55
70
 
56
- function buildHierarchy(tileHeaders, options = {}) {
57
- const DEFAULT_OPTIONS = {
71
+ function buildHierarchy(tileHeaders) {
72
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
73
+ var DEFAULT_OPTIONS = {
58
74
  spacing: 100
59
75
  };
60
- options = { ...DEFAULT_OPTIONS,
61
- ...options
62
- };
63
- const topNode = tileHeaders[0];
64
- const nodes = {};
65
-
66
- for (const tileHeader of tileHeaders) {
67
- const {
68
- name
69
- } = tileHeader;
70
- const index = parseInt(name.charAt(name.length - 1), 10);
71
- const parentName = name.substring(0, name.length - 1);
72
- const parentNode = nodes[parentName];
73
- const level = name.length - 1;
74
- tileHeader.level = level;
75
- tileHeader.hasChildren = tileHeader.header.childCount;
76
- tileHeader.children = [];
77
- tileHeader.childrenByIndex = new Array(8).fill(null);
78
- tileHeader.spacing = options.spacing / Math.pow(2, level);
79
-
80
- if (parentNode) {
81
- parentNode.children.push(tileHeader);
82
- parentNode.childrenByIndex[index] = tileHeader;
83
- }
76
+ options = _objectSpread(_objectSpread({}, DEFAULT_OPTIONS), options);
77
+ var topNode = tileHeaders[0];
78
+ var nodes = {};
79
+
80
+ var _iterator = _createForOfIteratorHelper(tileHeaders),
81
+ _step;
82
+
83
+ try {
84
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
85
+ var tileHeader = _step.value;
86
+ var name = tileHeader.name;
87
+ var index = parseInt(name.charAt(name.length - 1), 10);
88
+ var parentName = name.substring(0, name.length - 1);
89
+ var parentNode = nodes[parentName];
90
+ var level = name.length - 1;
91
+ tileHeader.level = level;
92
+ tileHeader.hasChildren = tileHeader.header.childCount;
93
+ tileHeader.children = [];
94
+ tileHeader.childrenByIndex = new Array(8).fill(null);
95
+ tileHeader.spacing = options.spacing / Math.pow(2, level);
84
96
 
85
- nodes[name] = tileHeader;
97
+ if (parentNode) {
98
+ parentNode.children.push(tileHeader);
99
+ parentNode.childrenByIndex[index] = tileHeader;
100
+ }
101
+
102
+ nodes[name] = tileHeader;
103
+ }
104
+ } catch (err) {
105
+ _iterator.e(err);
106
+ } finally {
107
+ _iterator.f();
86
108
  }
87
109
 
88
110
  return topNode;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/parsers/parse-potree-hierarchy-chunk.ts"],"names":["parsePotreeHierarchyChunk","arrayBuffer","tileHeaders","parseBinaryChunk","buildHierarchy","byteOffset","dataView","DataView","stack","topTileHeader","decodeRow","push","length","snode","shift","mask","i","header","childMask","tileHeader","name","childCount","byteLength","getUint8","pointCount","getUint32","options","DEFAULT_OPTIONS","spacing","topNode","nodes","index","parseInt","charAt","parentName","substring","parentNode","level","hasChildren","children","childrenByIndex","Array","fill","Math","pow"],"mappings":"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","sourcesContent":["// This file is derived from the Cesium code base under BSD 2-clause license\n// See LICENSE.md and https://github.com/potree/potree/blob/develop/LICENSE\n\n// Potree Hierarchy Chunk file format\n// https://github.com/potree/potree/blob/develop/docs/potree-file-format.md#index-files\n\n/*\n### Hierarchy Chunk Files\n\nAs mentioned in the former section, the `.hrc` files contain the index structure\nmeaning a list of all the files stored within the directory tree.\n\nAn index file contains a list of tuple values with the first being a `uint8`\n\"mask\" and the second being `uint32` \"number of points\" of a hierarchy level\nin a [breadth first level order][breadth-first].\n\nPer hierarchy level we have 8 possible nodes. To indicate whether a node exists\na simple binary mask is used:\n\n| Position | Mask | [Binary][bin] |\n|----------|------|---------------|\n| 0 | 1 | 0b00000001 |\n| 1 | 2 | 0b00000010 |\n| 2 | 4 | 0b00000100 |\n| 3 | 8 | 0b00001000 |\n| 4 | 16 | 0b00010000 |\n| 5 | 32 | 0b00100000 |\n| 6 | 64 | 0b01000000 |\n| 7 | 128 | 0b10000000 |\n\nSo if in a hierarchy the child node 3 and node 7 exist then the hierarchies\nmask has to be `0b00001000 | 0b10000000` → `0b10001000` (=136).\n\n_Example:_ A simple, non-realistic tree:\n\n```\n|- r1\n| |\n| \\- r14 (2 Points)\n|\n\\- r3\n |\n \\- r36 (1 Point)\n```\n\nWould have an index looking like this:\n\n| name | mask | points |\n|------|--------------------|--------|\n| r | `0b00001010` (=10) | `3` |\n| r1 | `0b00010000` (=16) | `2` |\n| r3 | `0b01000000` (=64) | `1` |\n| r14 | `0b00000000` (=0) | `2` |\n| r36 | `0b00000000` (=0) | `1` |\n*/\n\n// @ts-nocheck\n\n// load hierarchy\nexport default function parsePotreeHierarchyChunk(arrayBuffer: ArrayBuffer) {\n const tileHeaders = parseBinaryChunk(arrayBuffer);\n return buildHierarchy(tileHeaders);\n}\n\n// Parses the binary rows\nfunction parseBinaryChunk(arrayBuffer: ArrayBuffer, byteOffset = 0) {\n const dataView = new DataView(arrayBuffer);\n\n const stack = [];\n\n // Get root mask\n const topTileHeader = {};\n byteOffset = decodeRow(dataView, byteOffset, topTileHeader);\n\n stack.push(topTileHeader);\n\n const tileHeaders = [];\n\n while (stack.length > 0) {\n const snode = stack.shift();\n let mask = 1;\n\n for (let i = 0; i < 8; i++) {\n if (snode && (snode.header.childMask & mask) !== 0) {\n const tileHeader = {};\n byteOffset = decodeRow(dataView, byteOffset, tileHeader);\n tileHeader.name = snode.name + i;\n\n stack.push(tileHeader);\n tileHeaders.push(tileHeader);\n snode.header.childCount++;\n }\n mask = mask * 2;\n }\n\n if (byteOffset === dataView.byteLength) {\n break;\n }\n }\n\n return tileHeaders;\n}\n\nfunction decodeRow(dataView, byteOffset, tileHeader) {\n tileHeader.header = tileHeader.header || {};\n tileHeader.header.childMask = dataView.getUint8(byteOffset);\n tileHeader.header.childCount = 0;\n tileHeader.pointCount = dataView.getUint32(byteOffset + 1, true);\n tileHeader.name = '';\n byteOffset += 5;\n return byteOffset;\n}\n\n// Resolves the binary rows into a hierarchy (tree structure)\nfunction buildHierarchy(tileHeaders, options = {}) {\n const DEFAULT_OPTIONS = {spacing: 100}; // TODO assert instead of default?\n options = {...DEFAULT_OPTIONS, ...options};\n\n const topNode = tileHeaders[0];\n const nodes = {};\n\n for (const tileHeader of tileHeaders) {\n const {name} = tileHeader;\n\n const index = parseInt(name.charAt(name.length - 1), 10);\n const parentName = name.substring(0, name.length - 1);\n const parentNode = nodes[parentName];\n const level = name.length - 1;\n // assert(parentNode && level >= 0);\n\n tileHeader.level = level;\n tileHeader.hasChildren = tileHeader.header.childCount;\n tileHeader.children = [];\n tileHeader.childrenByIndex = new Array(8).fill(null);\n tileHeader.spacing = options.spacing / Math.pow(2, level);\n // tileHeader.boundingVolume = Utils.createChildAABB(parentNode.boundingBox, index);\n\n if (parentNode) {\n parentNode.children.push(tileHeader);\n parentNode.childrenByIndex[index] = tileHeader;\n }\n\n // Add the node to the map\n nodes[name] = tileHeader;\n }\n\n // First node is the root\n return topNode;\n}\n"],"file":"parse-potree-hierarchy-chunk.js"}
1
+ {"version":3,"sources":["../../../src/parsers/parse-potree-hierarchy-chunk.ts"],"names":["parsePotreeHierarchyChunk","arrayBuffer","tileHeaders","parseBinaryChunk","buildHierarchy","byteOffset","dataView","DataView","stack","topTileHeader","decodeRow","push","length","snode","shift","mask","i","header","childMask","tileHeader","name","childCount","byteLength","getUint8","pointCount","getUint32","options","DEFAULT_OPTIONS","spacing","topNode","nodes","index","parseInt","charAt","parentName","substring","parentNode","level","hasChildren","children","childrenByIndex","Array","fill","Math","pow"],"mappings":"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","sourcesContent":["// This file is derived from the Cesium code base under BSD 2-clause license\n// See LICENSE.md and https://github.com/potree/potree/blob/develop/LICENSE\n\n// Potree Hierarchy Chunk file format\n// https://github.com/potree/potree/blob/develop/docs/potree-file-format.md#index-files\n\n/*\n### Hierarchy Chunk Files\n\nAs mentioned in the former section, the `.hrc` files contain the index structure\nmeaning a list of all the files stored within the directory tree.\n\nAn index file contains a list of tuple values with the first being a `uint8`\n\"mask\" and the second being `uint32` \"number of points\" of a hierarchy level\nin a [breadth first level order][breadth-first].\n\nPer hierarchy level we have 8 possible nodes. To indicate whether a node exists\na simple binary mask is used:\n\n| Position | Mask | [Binary][bin] |\n|----------|------|---------------|\n| 0 | 1 | 0b00000001 |\n| 1 | 2 | 0b00000010 |\n| 2 | 4 | 0b00000100 |\n| 3 | 8 | 0b00001000 |\n| 4 | 16 | 0b00010000 |\n| 5 | 32 | 0b00100000 |\n| 6 | 64 | 0b01000000 |\n| 7 | 128 | 0b10000000 |\n\nSo if in a hierarchy the child node 3 and node 7 exist then the hierarchies\nmask has to be `0b00001000 | 0b10000000` → `0b10001000` (=136).\n\n_Example:_ A simple, non-realistic tree:\n\n```\n|- r1\n| |\n| \\- r14 (2 Points)\n|\n\\- r3\n |\n \\- r36 (1 Point)\n```\n\nWould have an index looking like this:\n\n| name | mask | points |\n|------|--------------------|--------|\n| r | `0b00001010` (=10) | `3` |\n| r1 | `0b00010000` (=16) | `2` |\n| r3 | `0b01000000` (=64) | `1` |\n| r14 | `0b00000000` (=0) | `2` |\n| r36 | `0b00000000` (=0) | `1` |\n*/\n\n// @ts-nocheck\n\n// load hierarchy\nexport default function parsePotreeHierarchyChunk(arrayBuffer: ArrayBuffer) {\n const tileHeaders = parseBinaryChunk(arrayBuffer);\n return buildHierarchy(tileHeaders);\n}\n\n// Parses the binary rows\nfunction parseBinaryChunk(arrayBuffer: ArrayBuffer, byteOffset = 0) {\n const dataView = new DataView(arrayBuffer);\n\n const stack = [];\n\n // Get root mask\n const topTileHeader = {};\n byteOffset = decodeRow(dataView, byteOffset, topTileHeader);\n\n stack.push(topTileHeader);\n\n const tileHeaders = [];\n\n while (stack.length > 0) {\n const snode = stack.shift();\n let mask = 1;\n\n for (let i = 0; i < 8; i++) {\n if (snode && (snode.header.childMask & mask) !== 0) {\n const tileHeader = {};\n byteOffset = decodeRow(dataView, byteOffset, tileHeader);\n tileHeader.name = snode.name + i;\n\n stack.push(tileHeader);\n tileHeaders.push(tileHeader);\n snode.header.childCount++;\n }\n mask = mask * 2;\n }\n\n if (byteOffset === dataView.byteLength) {\n break;\n }\n }\n\n return tileHeaders;\n}\n\nfunction decodeRow(dataView, byteOffset, tileHeader) {\n tileHeader.header = tileHeader.header || {};\n tileHeader.header.childMask = dataView.getUint8(byteOffset);\n tileHeader.header.childCount = 0;\n tileHeader.pointCount = dataView.getUint32(byteOffset + 1, true);\n tileHeader.name = '';\n byteOffset += 5;\n return byteOffset;\n}\n\n// Resolves the binary rows into a hierarchy (tree structure)\nfunction buildHierarchy(tileHeaders, options = {}) {\n const DEFAULT_OPTIONS = {spacing: 100}; // TODO assert instead of default?\n options = {...DEFAULT_OPTIONS, ...options};\n\n const topNode = tileHeaders[0];\n const nodes = {};\n\n for (const tileHeader of tileHeaders) {\n const {name} = tileHeader;\n\n const index = parseInt(name.charAt(name.length - 1), 10);\n const parentName = name.substring(0, name.length - 1);\n const parentNode = nodes[parentName];\n const level = name.length - 1;\n // assert(parentNode && level >= 0);\n\n tileHeader.level = level;\n tileHeader.hasChildren = tileHeader.header.childCount;\n tileHeader.children = [];\n tileHeader.childrenByIndex = new Array(8).fill(null);\n tileHeader.spacing = options.spacing / Math.pow(2, level);\n // tileHeader.boundingVolume = Utils.createChildAABB(parentNode.boundingBox, index);\n\n if (parentNode) {\n parentNode.children.push(tileHeader);\n parentNode.childrenByIndex[index] = tileHeader;\n }\n\n // Add the node to the map\n nodes[name] = tileHeader;\n }\n\n // First node is the root\n return topNode;\n}\n"],"file":"parse-potree-hierarchy-chunk.js"}
@@ -9,19 +9,19 @@ exports.PotreeBinLoader = void 0;
9
9
 
10
10
  var _parsePotreeBin = _interopRequireDefault(require("./parsers/parse-potree-bin"));
11
11
 
12
- const PotreeBinLoader = {
12
+ var PotreeBinLoader = {
13
13
  name: 'potree Binary Point Attributes',
14
14
  id: 'potree',
15
15
  extensions: ['bin'],
16
16
  mimeTypes: ['application/octet-stream'],
17
- parseSync,
17
+ parseSync: parseSync,
18
18
  binary: true
19
19
  };
20
20
  exports.PotreeBinLoader = PotreeBinLoader;
21
21
 
22
22
  function parseSync(arrayBuffer, options) {
23
- const index = {};
24
- const byteOffset = 0;
23
+ var index = {};
24
+ var byteOffset = 0;
25
25
  (0, _parsePotreeBin.default)(arrayBuffer, byteOffset, options, index);
26
26
  return index;
27
27
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/potree-bin-loader.ts"],"names":["PotreeBinLoader","name","id","extensions","mimeTypes","parseSync","binary","arrayBuffer","options","index","byteOffset"],"mappings":";;;;;;;;;AACA;;AAMO,MAAMA,eAAiC,GAAG;AAC/CC,EAAAA,IAAI,EAAE,gCADyC;AAE/CC,EAAAA,EAAE,EAAE,QAF2C;AAG/CC,EAAAA,UAAU,EAAE,CAAC,KAAD,CAHmC;AAI/CC,EAAAA,SAAS,EAAE,CAAC,0BAAD,CAJoC;AAO/CC,EAAAA,SAP+C;AAQ/CC,EAAAA,MAAM,EAAE;AARuC,CAA1C;;;AAWP,SAASD,SAAT,CAAmBE,WAAnB,EAA6CC,OAA7C,EAAsE;AACpE,QAAMC,KAAK,GAAG,EAAd;AACA,QAAMC,UAAU,GAAG,CAAnB;AACA,+BAAeH,WAAf,EAA4BG,UAA5B,EAAwCF,OAAxC,EAAiDC,KAAjD;AACA,SAAOA,KAAP;AACD","sourcesContent":["import type {LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';\nimport {default as parsePotreeBin} from './parsers/parse-potree-bin';\n\n/**\n * Loader for potree Binary Point Attributes\n * */\n// @ts-ignore\nexport const PotreeBinLoader: LoaderWithParser = {\n name: 'potree Binary Point Attributes',\n id: 'potree',\n extensions: ['bin'],\n mimeTypes: ['application/octet-stream'],\n // Unfortunately binary potree files have no header bytes, no test possible\n // test: ['...'],\n parseSync,\n binary: true\n};\n\nfunction parseSync(arrayBuffer: ArrayBuffer, options?: LoaderOptions) {\n const index = {};\n const byteOffset = 0;\n parsePotreeBin(arrayBuffer, byteOffset, options, index);\n return index;\n}\n"],"file":"potree-bin-loader.js"}
1
+ {"version":3,"sources":["../../src/potree-bin-loader.ts"],"names":["PotreeBinLoader","name","id","extensions","mimeTypes","parseSync","binary","arrayBuffer","options","index","byteOffset"],"mappings":";;;;;;;;;AACA;;AAMO,IAAMA,eAAiC,GAAG;AAC/CC,EAAAA,IAAI,EAAE,gCADyC;AAE/CC,EAAAA,EAAE,EAAE,QAF2C;AAG/CC,EAAAA,UAAU,EAAE,CAAC,KAAD,CAHmC;AAI/CC,EAAAA,SAAS,EAAE,CAAC,0BAAD,CAJoC;AAO/CC,EAAAA,SAAS,EAATA,SAP+C;AAQ/CC,EAAAA,MAAM,EAAE;AARuC,CAA1C;;;AAWP,SAASD,SAAT,CAAmBE,WAAnB,EAA6CC,OAA7C,EAAsE;AACpE,MAAMC,KAAK,GAAG,EAAd;AACA,MAAMC,UAAU,GAAG,CAAnB;AACA,+BAAeH,WAAf,EAA4BG,UAA5B,EAAwCF,OAAxC,EAAiDC,KAAjD;AACA,SAAOA,KAAP;AACD","sourcesContent":["import type {LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';\nimport {default as parsePotreeBin} from './parsers/parse-potree-bin';\n\n/**\n * Loader for potree Binary Point Attributes\n * */\n// @ts-ignore\nexport const PotreeBinLoader: LoaderWithParser = {\n name: 'potree Binary Point Attributes',\n id: 'potree',\n extensions: ['bin'],\n mimeTypes: ['application/octet-stream'],\n // Unfortunately binary potree files have no header bytes, no test possible\n // test: ['...'],\n parseSync,\n binary: true\n};\n\nfunction parseSync(arrayBuffer: ArrayBuffer, options?: LoaderOptions) {\n const index = {};\n const byteOffset = 0;\n parsePotreeBin(arrayBuffer, byteOffset, options, index);\n return index;\n}\n"],"file":"potree-bin-loader.js"}
@@ -7,15 +7,44 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.PotreeHierarchyChunkLoader = void 0;
9
9
 
10
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
+
12
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
+
10
14
  var _parsePotreeHierarchyChunk = _interopRequireDefault(require("./parsers/parse-potree-hierarchy-chunk"));
11
15
 
12
- const PotreeHierarchyChunkLoader = {
16
+ var PotreeHierarchyChunkLoader = {
13
17
  id: 'potree',
14
18
  name: 'potree Hierarchy Chunk',
15
19
  extensions: ['hrc'],
16
20
  mimeTypes: ['application/octet-stream'],
17
- parse: async (arrayBuffer, options) => await parseSync(arrayBuffer),
18
- parseSync,
21
+ parse: function () {
22
+ var _parse = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(arrayBuffer, options) {
23
+ return _regenerator.default.wrap(function _callee$(_context) {
24
+ while (1) {
25
+ switch (_context.prev = _context.next) {
26
+ case 0:
27
+ _context.next = 2;
28
+ return parseSync(arrayBuffer);
29
+
30
+ case 2:
31
+ return _context.abrupt("return", _context.sent);
32
+
33
+ case 3:
34
+ case "end":
35
+ return _context.stop();
36
+ }
37
+ }
38
+ }, _callee);
39
+ }));
40
+
41
+ function parse(_x, _x2) {
42
+ return _parse.apply(this, arguments);
43
+ }
44
+
45
+ return parse;
46
+ }(),
47
+ parseSync: parseSync,
19
48
  binary: true
20
49
  };
21
50
  exports.PotreeHierarchyChunkLoader = PotreeHierarchyChunkLoader;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/potree-hierarchy-chunk-loader.ts"],"names":["PotreeHierarchyChunkLoader","id","name","extensions","mimeTypes","parse","arrayBuffer","options","parseSync","binary"],"mappings":";;;;;;;;;AACA;;AAIO,MAAMA,0BAA4C,GAAG;AAC1DC,EAAAA,EAAE,EAAE,QADsD;AAE1DC,EAAAA,IAAI,EAAE,wBAFoD;AAG1DC,EAAAA,UAAU,EAAE,CAAC,KAAD,CAH8C;AAI1DC,EAAAA,SAAS,EAAE,CAAC,0BAAD,CAJ+C;AAO1DC,EAAAA,KAAK,EAAE,OAAOC,WAAP,EAAoBC,OAApB,KAAgC,MAAMC,SAAS,CAACF,WAAD,CAPI;AAQ1DE,EAAAA,SAR0D;AAS1DC,EAAAA,MAAM,EAAE;AATkD,CAArD;;;AAYP,SAASD,SAAT,CAAmBF,WAAnB,EAAgC;AAC9B,SAAO,wCAA0BA,WAA1B,CAAP;AACD","sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {default as parsePotreeHierarchyChunk} from './parsers/parse-potree-hierarchy-chunk';\n\n/** Potree hierarchy chunk loader */\n// @ts-ignore\nexport const PotreeHierarchyChunkLoader: LoaderWithParser = {\n id: 'potree',\n name: 'potree Hierarchy Chunk',\n extensions: ['hrc'],\n mimeTypes: ['application/octet-stream'],\n // binary potree files have no header bytes, no content test function possible\n // test: ['...'],\n parse: async (arrayBuffer, options) => await parseSync(arrayBuffer),\n parseSync,\n binary: true\n};\n\nfunction parseSync(arrayBuffer) {\n return parsePotreeHierarchyChunk(arrayBuffer);\n}\n"],"file":"potree-hierarchy-chunk-loader.js"}
1
+ {"version":3,"sources":["../../src/potree-hierarchy-chunk-loader.ts"],"names":["PotreeHierarchyChunkLoader","id","name","extensions","mimeTypes","parse","arrayBuffer","options","parseSync","binary"],"mappings":";;;;;;;;;;;;;AACA;;AAIO,IAAMA,0BAA4C,GAAG;AAC1DC,EAAAA,EAAE,EAAE,QADsD;AAE1DC,EAAAA,IAAI,EAAE,wBAFoD;AAG1DC,EAAAA,UAAU,EAAE,CAAC,KAAD,CAH8C;AAI1DC,EAAAA,SAAS,EAAE,CAAC,0BAAD,CAJ+C;AAO1DC,EAAAA,KAAK;AAAA,2EAAE,iBAAOC,WAAP,EAAoBC,OAApB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAsCC,SAAS,CAACF,WAAD,CAA/C;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAF;;AAAA;AAAA;AAAA;;AAAA;AAAA,KAPqD;AAQ1DE,EAAAA,SAAS,EAATA,SAR0D;AAS1DC,EAAAA,MAAM,EAAE;AATkD,CAArD;;;AAYP,SAASD,SAAT,CAAmBF,WAAnB,EAAgC;AAC9B,SAAO,wCAA0BA,WAA1B,CAAP;AACD","sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {default as parsePotreeHierarchyChunk} from './parsers/parse-potree-hierarchy-chunk';\n\n/** Potree hierarchy chunk loader */\n// @ts-ignore\nexport const PotreeHierarchyChunkLoader: LoaderWithParser = {\n id: 'potree',\n name: 'potree Hierarchy Chunk',\n extensions: ['hrc'],\n mimeTypes: ['application/octet-stream'],\n // binary potree files have no header bytes, no content test function possible\n // test: ['...'],\n parse: async (arrayBuffer, options) => await parseSync(arrayBuffer),\n parseSync,\n binary: true\n};\n\nfunction parseSync(arrayBuffer) {\n return parsePotreeHierarchyChunk(arrayBuffer);\n}\n"],"file":"potree-hierarchy-chunk-loader.js"}
@@ -4,16 +4,20 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.PotreeLoader = void 0;
7
- const VERSION = typeof "3.1.0-beta.7" !== 'undefined' ? "3.1.0-beta.7" : 'latest';
8
- const PotreeLoader = {
7
+ var VERSION = typeof "3.1.3" !== 'undefined' ? "3.1.3" : 'latest';
8
+ var PotreeLoader = {
9
9
  name: 'potree',
10
10
  id: 'potree',
11
11
  module: 'potree',
12
12
  version: VERSION,
13
13
  extensions: ['json'],
14
14
  mimeTypes: ['application/json'],
15
- testText: text => text.indexOf('octreeDir') >= 0,
16
- parseTextSync: text => JSON.parse(text),
15
+ testText: function testText(text) {
16
+ return text.indexOf('octreeDir') >= 0;
17
+ },
18
+ parseTextSync: function parseTextSync(text) {
19
+ return JSON.parse(text);
20
+ },
17
21
  options: {
18
22
  potree: {}
19
23
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/potree-loader.ts"],"names":["VERSION","PotreeLoader","name","id","module","version","extensions","mimeTypes","testText","text","indexOf","parseTextSync","JSON","parse","options","potree"],"mappings":";;;;;;AAIA,MAAMA,OAAO,GAAG,0BAAuB,WAAvB,oBAAmD,QAAnE;AAIO,MAAMC,YAA8B,GAAG;AAC5CC,EAAAA,IAAI,EAAE,QADsC;AAE5CC,EAAAA,EAAE,EAAE,QAFwC;AAG5CC,EAAAA,MAAM,EAAE,QAHoC;AAI5CC,EAAAA,OAAO,EAAEL,OAJmC;AAK5CM,EAAAA,UAAU,EAAE,CAAC,MAAD,CALgC;AAM5CC,EAAAA,SAAS,EAAE,CAAC,kBAAD,CANiC;AAO5CC,EAAAA,QAAQ,EAAGC,IAAD,IAAUA,IAAI,CAACC,OAAL,CAAa,WAAb,KAA6B,CAPL;AAQ5CC,EAAAA,aAAa,EAAGF,IAAD,IAAUG,IAAI,CAACC,KAAL,CAAWJ,IAAX,CARmB;AAS5CK,EAAAA,OAAO,EAAE;AACPC,IAAAA,MAAM,EAAE;AADD;AATmC,CAAvC","sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\n/** Potree loader */\n// @ts-ignore\nexport const PotreeLoader: LoaderWithParser = {\n name: 'potree',\n id: 'potree',\n module: 'potree',\n version: VERSION,\n extensions: ['json'],\n mimeTypes: ['application/json'],\n testText: (text) => text.indexOf('octreeDir') >= 0,\n parseTextSync: (text) => JSON.parse(text),\n options: {\n potree: {}\n }\n};\n"],"file":"potree-loader.js"}
1
+ {"version":3,"sources":["../../src/potree-loader.ts"],"names":["VERSION","PotreeLoader","name","id","module","version","extensions","mimeTypes","testText","text","indexOf","parseTextSync","JSON","parse","options","potree"],"mappings":";;;;;;AAIA,IAAMA,OAAO,GAAG,mBAAuB,WAAvB,aAAmD,QAAnE;AAIO,IAAMC,YAA8B,GAAG;AAC5CC,EAAAA,IAAI,EAAE,QADsC;AAE5CC,EAAAA,EAAE,EAAE,QAFwC;AAG5CC,EAAAA,MAAM,EAAE,QAHoC;AAI5CC,EAAAA,OAAO,EAAEL,OAJmC;AAK5CM,EAAAA,UAAU,EAAE,CAAC,MAAD,CALgC;AAM5CC,EAAAA,SAAS,EAAE,CAAC,kBAAD,CANiC;AAO5CC,EAAAA,QAAQ,EAAE,kBAACC,IAAD;AAAA,WAAUA,IAAI,CAACC,OAAL,CAAa,WAAb,KAA6B,CAAvC;AAAA,GAPkC;AAQ5CC,EAAAA,aAAa,EAAE,uBAACF,IAAD;AAAA,WAAUG,IAAI,CAACC,KAAL,CAAWJ,IAAX,CAAV;AAAA,GAR6B;AAS5CK,EAAAA,OAAO,EAAE;AACPC,IAAAA,MAAM,EAAE;AADD;AATmC,CAAvC","sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\n/** Potree loader */\n// @ts-ignore\nexport const PotreeLoader: LoaderWithParser = {\n name: 'potree',\n id: 'potree',\n module: 'potree',\n version: VERSION,\n extensions: ['json'],\n mimeTypes: ['application/json'],\n testText: (text) => text.indexOf('octreeDir') >= 0,\n parseTextSync: (text) => JSON.parse(text),\n options: {\n potree: {}\n }\n};\n"],"file":"potree-loader.js"}
@@ -1,4 +1,4 @@
1
- const VERSION = typeof "3.1.0-beta.7" !== 'undefined' ? "3.1.0-beta.7" : 'latest';
1
+ const VERSION = typeof "3.1.3" !== 'undefined' ? "3.1.3" : 'latest';
2
2
  export const PotreeLoader = {
3
3
  name: 'potree',
4
4
  id: 'potree',
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/potree-loader.ts"],"names":["VERSION","PotreeLoader","name","id","module","version","extensions","mimeTypes","testText","text","indexOf","parseTextSync","JSON","parse","options","potree"],"mappings":"AAIA,MAAMA,OAAO,GAAG,0BAAuB,WAAvB,oBAAmD,QAAnE;AAIA,OAAO,MAAMC,YAA8B,GAAG;AAC5CC,EAAAA,IAAI,EAAE,QADsC;AAE5CC,EAAAA,EAAE,EAAE,QAFwC;AAG5CC,EAAAA,MAAM,EAAE,QAHoC;AAI5CC,EAAAA,OAAO,EAAEL,OAJmC;AAK5CM,EAAAA,UAAU,EAAE,CAAC,MAAD,CALgC;AAM5CC,EAAAA,SAAS,EAAE,CAAC,kBAAD,CANiC;AAO5CC,EAAAA,QAAQ,EAAGC,IAAD,IAAUA,IAAI,CAACC,OAAL,CAAa,WAAb,KAA6B,CAPL;AAQ5CC,EAAAA,aAAa,EAAGF,IAAD,IAAUG,IAAI,CAACC,KAAL,CAAWJ,IAAX,CARmB;AAS5CK,EAAAA,OAAO,EAAE;AACPC,IAAAA,MAAM,EAAE;AADD;AATmC,CAAvC","sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\n/** Potree loader */\n// @ts-ignore\nexport const PotreeLoader: LoaderWithParser = {\n name: 'potree',\n id: 'potree',\n module: 'potree',\n version: VERSION,\n extensions: ['json'],\n mimeTypes: ['application/json'],\n testText: (text) => text.indexOf('octreeDir') >= 0,\n parseTextSync: (text) => JSON.parse(text),\n options: {\n potree: {}\n }\n};\n"],"file":"potree-loader.js"}
1
+ {"version":3,"sources":["../../src/potree-loader.ts"],"names":["VERSION","PotreeLoader","name","id","module","version","extensions","mimeTypes","testText","text","indexOf","parseTextSync","JSON","parse","options","potree"],"mappings":"AAIA,MAAMA,OAAO,GAAG,mBAAuB,WAAvB,aAAmD,QAAnE;AAIA,OAAO,MAAMC,YAA8B,GAAG;AAC5CC,EAAAA,IAAI,EAAE,QADsC;AAE5CC,EAAAA,EAAE,EAAE,QAFwC;AAG5CC,EAAAA,MAAM,EAAE,QAHoC;AAI5CC,EAAAA,OAAO,EAAEL,OAJmC;AAK5CM,EAAAA,UAAU,EAAE,CAAC,MAAD,CALgC;AAM5CC,EAAAA,SAAS,EAAE,CAAC,kBAAD,CANiC;AAO5CC,EAAAA,QAAQ,EAAGC,IAAD,IAAUA,IAAI,CAACC,OAAL,CAAa,WAAb,KAA6B,CAPL;AAQ5CC,EAAAA,aAAa,EAAGF,IAAD,IAAUG,IAAI,CAACC,KAAL,CAAWJ,IAAX,CARmB;AAS5CK,EAAAA,OAAO,EAAE;AACPC,IAAAA,MAAM,EAAE;AADD;AATmC,CAAvC","sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\n/** Potree loader */\n// @ts-ignore\nexport const PotreeLoader: LoaderWithParser = {\n name: 'potree',\n id: 'potree',\n module: 'potree',\n version: VERSION,\n extensions: ['json'],\n mimeTypes: ['application/json'],\n testText: (text) => text.indexOf('octreeDir') >= 0,\n parseTextSync: (text) => JSON.parse(text),\n options: {\n potree: {}\n }\n};\n"],"file":"potree-loader.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loaders.gl/potree",
3
- "version": "3.1.0-beta.7",
3
+ "version": "3.1.3",
4
4
  "description": "potree loaders for large point clouds.",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -32,11 +32,11 @@
32
32
  ],
33
33
  "scripts": {
34
34
  "pre-build": "npm run build-bundle",
35
- "build-bundle": "esbuild src/bundle.ts --bundle --outfile=dist/bundle.js"
35
+ "build-bundle": "esbuild src/bundle.ts --bundle --outfile=dist/dist.min.js"
36
36
  },
37
37
  "dependencies": {
38
- "@loaders.gl/math": "3.1.0-beta.7",
38
+ "@loaders.gl/math": "3.1.3",
39
39
  "@math.gl/core": "^3.5.1"
40
40
  },
41
- "gitHead": "f3b4d81ac02758398c4e4eef5e556b206ef2dfbe"
41
+ "gitHead": "4a690c369779346d73c9a27395d1c08d77d279a4"
42
42
  }