@loaders.gl/tile-converter 3.3.0-alpha.7 → 3.3.0
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/3d-tiles-attributes-worker.d.ts +2 -2
- package/dist/3d-tiles-attributes-worker.d.ts.map +1 -1
- package/dist/3d-tiles-attributes-worker.js +2 -2
- package/dist/3d-tiles-attributes-worker.js.map +3 -3
- package/dist/converter-cli.js +14 -2
- package/dist/converter.min.js +22 -22
- package/dist/deps-installer/deps-installer.d.ts.map +1 -1
- package/dist/deps-installer/deps-installer.js +8 -0
- package/dist/dist.min.js +1407 -1242
- package/dist/es5/3d-tiles-attributes-worker.js +1 -1
- package/dist/es5/3d-tiles-attributes-worker.js.map +1 -1
- package/dist/es5/converter-cli.js +14 -2
- package/dist/es5/converter-cli.js.map +1 -1
- package/dist/es5/deps-installer/deps-installer.js +13 -2
- package/dist/es5/deps-installer/deps-installer.js.map +1 -1
- package/dist/es5/i3s-attributes-worker.js +1 -1
- package/dist/es5/i3s-attributes-worker.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/geometry-attributes.js +16 -7
- package/dist/es5/i3s-converter/helpers/geometry-attributes.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/geometry-converter.js +363 -113
- package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/gltf-attributes.js +6 -11
- package/dist/es5/i3s-converter/helpers/gltf-attributes.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/node-index-document.js +517 -0
- package/dist/es5/i3s-converter/helpers/node-index-document.js.map +1 -0
- package/dist/es5/i3s-converter/helpers/node-pages.js +455 -173
- package/dist/es5/i3s-converter/helpers/node-pages.js.map +1 -1
- package/dist/es5/i3s-converter/i3s-converter.js +549 -618
- package/dist/es5/i3s-converter/i3s-converter.js.map +1 -1
- package/dist/es5/i3s-converter/json-templates/geometry-definitions.js +107 -0
- package/dist/es5/i3s-converter/json-templates/geometry-definitions.js.map +1 -0
- package/dist/es5/i3s-converter/json-templates/layers.js +2 -93
- package/dist/es5/i3s-converter/json-templates/layers.js.map +1 -1
- package/dist/es5/i3s-converter/json-templates/shared-resources.js +3 -3
- package/dist/es5/i3s-converter/json-templates/shared-resources.js.map +1 -1
- package/dist/es5/i3s-converter/types.js.map +1 -1
- package/dist/es5/lib/utils/file-utils.js +93 -9
- package/dist/es5/lib/utils/file-utils.js.map +1 -1
- package/dist/es5/lib/utils/write-queue.js +38 -25
- package/dist/es5/lib/utils/write-queue.js.map +1 -1
- package/dist/es5/pgm-loader.js +1 -1
- package/dist/es5/pgm-loader.js.map +1 -1
- package/dist/es5/workers/i3s-attributes-worker.js +1 -1
- package/dist/es5/workers/i3s-attributes-worker.js.map +1 -1
- package/dist/esm/3d-tiles-attributes-worker.js +1 -1
- package/dist/esm/3d-tiles-attributes-worker.js.map +1 -1
- package/dist/esm/converter-cli.js +14 -2
- package/dist/esm/converter-cli.js.map +1 -1
- package/dist/esm/deps-installer/deps-installer.js +9 -1
- package/dist/esm/deps-installer/deps-installer.js.map +1 -1
- package/dist/esm/i3s-attributes-worker.js +1 -1
- package/dist/esm/i3s-attributes-worker.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/geometry-attributes.js +16 -7
- package/dist/esm/i3s-converter/helpers/geometry-attributes.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/geometry-converter.js +150 -40
- package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/gltf-attributes.js +6 -9
- package/dist/esm/i3s-converter/helpers/gltf-attributes.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/node-index-document.js +202 -0
- package/dist/esm/i3s-converter/helpers/node-index-document.js.map +1 -0
- package/dist/esm/i3s-converter/helpers/node-pages.js +162 -76
- package/dist/esm/i3s-converter/helpers/node-pages.js.map +1 -1
- package/dist/esm/i3s-converter/i3s-converter.js +115 -220
- package/dist/esm/i3s-converter/i3s-converter.js.map +1 -1
- package/dist/esm/i3s-converter/json-templates/geometry-definitions.js +89 -0
- package/dist/esm/i3s-converter/json-templates/geometry-definitions.js.map +1 -0
- package/dist/esm/i3s-converter/json-templates/layers.js +2 -85
- package/dist/esm/i3s-converter/json-templates/layers.js.map +1 -1
- package/dist/esm/i3s-converter/json-templates/shared-resources.js +3 -3
- package/dist/esm/i3s-converter/json-templates/shared-resources.js.map +1 -1
- package/dist/esm/i3s-converter/types.js.map +1 -1
- package/dist/esm/lib/utils/file-utils.js +44 -3
- package/dist/esm/lib/utils/file-utils.js.map +1 -1
- package/dist/esm/lib/utils/write-queue.js +19 -10
- package/dist/esm/lib/utils/write-queue.js.map +1 -1
- package/dist/esm/pgm-loader.js +1 -1
- package/dist/esm/pgm-loader.js.map +1 -1
- package/dist/esm/workers/i3s-attributes-worker.js +1 -1
- package/dist/esm/workers/i3s-attributes-worker.js.map +1 -1
- package/dist/i3s-attributes-worker.d.ts +2 -2
- package/dist/i3s-attributes-worker.d.ts.map +1 -1
- package/dist/i3s-attributes-worker.js +2 -2
- package/dist/i3s-attributes-worker.js.map +2 -2
- package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts +3 -3
- package/dist/i3s-converter/helpers/batch-ids-extensions.js +3 -3
- package/dist/i3s-converter/helpers/geometry-attributes.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/geometry-attributes.js +16 -10
- package/dist/i3s-converter/helpers/geometry-converter.d.ts +8 -4
- package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/geometry-converter.js +200 -44
- package/dist/i3s-converter/helpers/gltf-attributes.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/gltf-attributes.js +2 -3
- package/dist/i3s-converter/helpers/node-index-document.d.ts +95 -0
- package/dist/i3s-converter/helpers/node-index-document.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/node-index-document.js +250 -0
- package/dist/i3s-converter/helpers/node-pages.d.ts +78 -43
- package/dist/i3s-converter/helpers/node-pages.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/node-pages.js +195 -94
- package/dist/i3s-converter/i3s-converter.d.ts +33 -58
- package/dist/i3s-converter/i3s-converter.d.ts.map +1 -1
- package/dist/i3s-converter/i3s-converter.js +122 -233
- package/dist/i3s-converter/json-templates/geometry-definitions.d.ts +7 -0
- package/dist/i3s-converter/json-templates/geometry-definitions.d.ts.map +1 -0
- package/dist/i3s-converter/json-templates/geometry-definitions.js +87 -0
- package/dist/i3s-converter/json-templates/layers.d.ts +1 -30
- package/dist/i3s-converter/json-templates/layers.d.ts.map +1 -1
- package/dist/i3s-converter/json-templates/layers.js +2 -86
- package/dist/i3s-converter/json-templates/shared-resources.js +3 -3
- package/dist/i3s-converter/types.d.ts +34 -8
- package/dist/i3s-converter/types.d.ts.map +1 -1
- package/dist/lib/utils/file-utils.d.ts +17 -1
- package/dist/lib/utils/file-utils.d.ts.map +1 -1
- package/dist/lib/utils/file-utils.js +64 -7
- package/dist/lib/utils/write-queue.d.ts +19 -3
- package/dist/lib/utils/write-queue.d.ts.map +1 -1
- package/dist/lib/utils/write-queue.js +18 -12
- package/dist/workers/i3s-attributes-worker.js +1 -1
- package/package.json +25 -20
- package/src/converter-cli.ts +22 -2
- package/src/deps-installer/deps-installer.ts +9 -0
- package/src/i3s-converter/helpers/batch-ids-extensions.ts +3 -3
- package/src/i3s-converter/helpers/geometry-attributes.ts +16 -11
- package/src/i3s-converter/helpers/geometry-converter.ts +217 -48
- package/src/i3s-converter/helpers/gltf-attributes.ts +2 -3
- package/src/i3s-converter/helpers/node-index-document.ts +315 -0
- package/src/i3s-converter/helpers/node-pages.ts +215 -110
- package/src/i3s-converter/i3s-converter.ts +170 -312
- package/src/i3s-converter/json-templates/geometry-definitions.ts +83 -0
- package/src/i3s-converter/json-templates/layers.ts +2 -91
- package/src/i3s-converter/json-templates/shared-resources.ts +3 -3
- package/src/i3s-converter/types.ts +29 -2
- package/src/lib/utils/file-utils.ts +62 -7
- package/src/lib/utils/write-queue.ts +36 -15
- package/src/workers/i3s-attributes-worker.ts +2 -1
|
@@ -0,0 +1,517 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.NodeIndexDocument = void 0;
|
|
8
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
10
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
12
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
|
+
var _path = require("path");
|
|
14
|
+
var _jsonMapTransform = _interopRequireDefault(require("json-map-transform"));
|
|
15
|
+
var _uuid = require("uuid");
|
|
16
|
+
var _fileUtils = require("../../lib/utils/file-utils");
|
|
17
|
+
var _node = require("../json-templates/node");
|
|
18
|
+
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; }
|
|
19
|
+
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; }
|
|
20
|
+
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; } } }; }
|
|
21
|
+
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); }
|
|
22
|
+
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; }
|
|
23
|
+
var NodeIndexDocument = function () {
|
|
24
|
+
|
|
25
|
+
function NodeIndexDocument(id, converter) {
|
|
26
|
+
(0, _classCallCheck2.default)(this, NodeIndexDocument);
|
|
27
|
+
(0, _defineProperty2.default)(this, "id", void 0);
|
|
28
|
+
(0, _defineProperty2.default)(this, "inPageId", void 0);
|
|
29
|
+
(0, _defineProperty2.default)(this, "data", null);
|
|
30
|
+
(0, _defineProperty2.default)(this, "children", []);
|
|
31
|
+
(0, _defineProperty2.default)(this, "converter", void 0);
|
|
32
|
+
this.inPageId = id;
|
|
33
|
+
this.id = id === 0 ? 'root' : id.toString();
|
|
34
|
+
this.converter = converter;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
(0, _createClass2.default)(NodeIndexDocument, [{
|
|
38
|
+
key: "addData",
|
|
39
|
+
value: function () {
|
|
40
|
+
var _addData = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(data) {
|
|
41
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
42
|
+
while (1) {
|
|
43
|
+
switch (_context.prev = _context.next) {
|
|
44
|
+
case 0:
|
|
45
|
+
if (!this.converter.options.instantNodeWriting) {
|
|
46
|
+
_context.next = 5;
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
_context.next = 3;
|
|
50
|
+
return this.write(data);
|
|
51
|
+
case 3:
|
|
52
|
+
_context.next = 6;
|
|
53
|
+
break;
|
|
54
|
+
case 5:
|
|
55
|
+
this.data = data;
|
|
56
|
+
case 6:
|
|
57
|
+
return _context.abrupt("return", this);
|
|
58
|
+
case 7:
|
|
59
|
+
case "end":
|
|
60
|
+
return _context.stop();
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}, _callee, this);
|
|
64
|
+
}));
|
|
65
|
+
function addData(_x) {
|
|
66
|
+
return _addData.apply(this, arguments);
|
|
67
|
+
}
|
|
68
|
+
return addData;
|
|
69
|
+
}()
|
|
70
|
+
}, {
|
|
71
|
+
key: "addChildren",
|
|
72
|
+
value: function () {
|
|
73
|
+
var _addChildren = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(childNodes) {
|
|
74
|
+
var newChildren, _iterator, _step, node, nodeData, data, _data$children;
|
|
75
|
+
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
76
|
+
while (1) {
|
|
77
|
+
switch (_context2.prev = _context2.next) {
|
|
78
|
+
case 0:
|
|
79
|
+
newChildren = [];
|
|
80
|
+
_iterator = _createForOfIteratorHelper(childNodes);
|
|
81
|
+
_context2.prev = 2;
|
|
82
|
+
_iterator.s();
|
|
83
|
+
case 4:
|
|
84
|
+
if ((_step = _iterator.n()).done) {
|
|
85
|
+
_context2.next = 12;
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
node = _step.value;
|
|
89
|
+
_context2.next = 8;
|
|
90
|
+
return node.load();
|
|
91
|
+
case 8:
|
|
92
|
+
nodeData = _context2.sent;
|
|
93
|
+
newChildren.push({
|
|
94
|
+
id: node.id,
|
|
95
|
+
href: "../".concat(node.id),
|
|
96
|
+
obb: nodeData.obb,
|
|
97
|
+
mbs: nodeData.mbs
|
|
98
|
+
});
|
|
99
|
+
case 10:
|
|
100
|
+
_context2.next = 4;
|
|
101
|
+
break;
|
|
102
|
+
case 12:
|
|
103
|
+
_context2.next = 17;
|
|
104
|
+
break;
|
|
105
|
+
case 14:
|
|
106
|
+
_context2.prev = 14;
|
|
107
|
+
_context2.t0 = _context2["catch"](2);
|
|
108
|
+
_iterator.e(_context2.t0);
|
|
109
|
+
case 17:
|
|
110
|
+
_context2.prev = 17;
|
|
111
|
+
_iterator.f();
|
|
112
|
+
return _context2.finish(17);
|
|
113
|
+
case 20:
|
|
114
|
+
this.children = this.children.concat(childNodes);
|
|
115
|
+
data = this.data;
|
|
116
|
+
if (!this.converter.options.instantNodeWriting) {
|
|
117
|
+
_context2.next = 26;
|
|
118
|
+
break;
|
|
119
|
+
}
|
|
120
|
+
_context2.next = 25;
|
|
121
|
+
return this.load();
|
|
122
|
+
case 25:
|
|
123
|
+
data = _context2.sent;
|
|
124
|
+
case 26:
|
|
125
|
+
if (data) {
|
|
126
|
+
data.children = (_data$children = data.children) !== null && _data$children !== void 0 ? _data$children : [];
|
|
127
|
+
data.children = data.children.concat(newChildren);
|
|
128
|
+
}
|
|
129
|
+
if (!(this.converter.options.instantNodeWriting && data)) {
|
|
130
|
+
_context2.next = 30;
|
|
131
|
+
break;
|
|
132
|
+
}
|
|
133
|
+
_context2.next = 30;
|
|
134
|
+
return this.write(data);
|
|
135
|
+
case 30:
|
|
136
|
+
case "end":
|
|
137
|
+
return _context2.stop();
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}, _callee2, this, [[2, 14, 17, 20]]);
|
|
141
|
+
}));
|
|
142
|
+
function addChildren(_x2) {
|
|
143
|
+
return _addChildren.apply(this, arguments);
|
|
144
|
+
}
|
|
145
|
+
return addChildren;
|
|
146
|
+
}()
|
|
147
|
+
}, {
|
|
148
|
+
key: "addNeighbors",
|
|
149
|
+
value: function () {
|
|
150
|
+
var _addNeighbors = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3() {
|
|
151
|
+
var nodeData, _iterator2, _step2, _childNodeData$neighb, _nodeData$children, childNode, childNodeData, _iterator3, _step3, neighbor;
|
|
152
|
+
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
153
|
+
while (1) {
|
|
154
|
+
switch (_context3.prev = _context3.next) {
|
|
155
|
+
case 0:
|
|
156
|
+
_context3.next = 2;
|
|
157
|
+
return this.load();
|
|
158
|
+
case 2:
|
|
159
|
+
nodeData = _context3.sent;
|
|
160
|
+
_iterator2 = _createForOfIteratorHelper(this.children);
|
|
161
|
+
_context3.prev = 4;
|
|
162
|
+
_iterator2.s();
|
|
163
|
+
case 6:
|
|
164
|
+
if ((_step2 = _iterator2.n()).done) {
|
|
165
|
+
_context3.next = 43;
|
|
166
|
+
break;
|
|
167
|
+
}
|
|
168
|
+
childNode = _step2.value;
|
|
169
|
+
_context3.next = 10;
|
|
170
|
+
return childNode.load();
|
|
171
|
+
case 10:
|
|
172
|
+
childNodeData = _context3.sent;
|
|
173
|
+
childNodeData.neighbors = (_childNodeData$neighb = childNodeData.neighbors) !== null && _childNodeData$neighb !== void 0 ? _childNodeData$neighb : [];
|
|
174
|
+
|
|
175
|
+
if (!(Number(nodeData === null || nodeData === void 0 ? void 0 : (_nodeData$children = nodeData.children) === null || _nodeData$children === void 0 ? void 0 : _nodeData$children.length) < 1000)) {
|
|
176
|
+
_context3.next = 33;
|
|
177
|
+
break;
|
|
178
|
+
}
|
|
179
|
+
_iterator3 = _createForOfIteratorHelper(nodeData.children || []);
|
|
180
|
+
_context3.prev = 14;
|
|
181
|
+
_iterator3.s();
|
|
182
|
+
case 16:
|
|
183
|
+
if ((_step3 = _iterator3.n()).done) {
|
|
184
|
+
_context3.next = 23;
|
|
185
|
+
break;
|
|
186
|
+
}
|
|
187
|
+
neighbor = _step3.value;
|
|
188
|
+
if (!(childNode.id === neighbor.id)) {
|
|
189
|
+
_context3.next = 20;
|
|
190
|
+
break;
|
|
191
|
+
}
|
|
192
|
+
return _context3.abrupt("continue", 21);
|
|
193
|
+
case 20:
|
|
194
|
+
childNodeData.neighbors.push(_objectSpread({}, neighbor));
|
|
195
|
+
case 21:
|
|
196
|
+
_context3.next = 16;
|
|
197
|
+
break;
|
|
198
|
+
case 23:
|
|
199
|
+
_context3.next = 28;
|
|
200
|
+
break;
|
|
201
|
+
case 25:
|
|
202
|
+
_context3.prev = 25;
|
|
203
|
+
_context3.t0 = _context3["catch"](14);
|
|
204
|
+
_iterator3.e(_context3.t0);
|
|
205
|
+
case 28:
|
|
206
|
+
_context3.prev = 28;
|
|
207
|
+
_iterator3.f();
|
|
208
|
+
return _context3.finish(28);
|
|
209
|
+
case 31:
|
|
210
|
+
_context3.next = 35;
|
|
211
|
+
break;
|
|
212
|
+
case 33:
|
|
213
|
+
console.warn("Node ".concat(childNode.id, ": neighbors attribute is omited because of large number of neigbors"));
|
|
214
|
+
delete childNodeData.neighbors;
|
|
215
|
+
case 35:
|
|
216
|
+
if (!(this.converter.options.instantNodeWriting && childNodeData)) {
|
|
217
|
+
_context3.next = 38;
|
|
218
|
+
break;
|
|
219
|
+
}
|
|
220
|
+
_context3.next = 38;
|
|
221
|
+
return childNode.write(childNodeData);
|
|
222
|
+
case 38:
|
|
223
|
+
_context3.next = 40;
|
|
224
|
+
return childNode.save();
|
|
225
|
+
case 40:
|
|
226
|
+
childNode.flush();
|
|
227
|
+
case 41:
|
|
228
|
+
_context3.next = 6;
|
|
229
|
+
break;
|
|
230
|
+
case 43:
|
|
231
|
+
_context3.next = 48;
|
|
232
|
+
break;
|
|
233
|
+
case 45:
|
|
234
|
+
_context3.prev = 45;
|
|
235
|
+
_context3.t1 = _context3["catch"](4);
|
|
236
|
+
_iterator2.e(_context3.t1);
|
|
237
|
+
case 48:
|
|
238
|
+
_context3.prev = 48;
|
|
239
|
+
_iterator2.f();
|
|
240
|
+
return _context3.finish(48);
|
|
241
|
+
case 51:
|
|
242
|
+
case "end":
|
|
243
|
+
return _context3.stop();
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
}, _callee3, this, [[4, 45, 48, 51], [14, 25, 28, 31]]);
|
|
247
|
+
}));
|
|
248
|
+
function addNeighbors() {
|
|
249
|
+
return _addNeighbors.apply(this, arguments);
|
|
250
|
+
}
|
|
251
|
+
return addNeighbors;
|
|
252
|
+
}()
|
|
253
|
+
}, {
|
|
254
|
+
key: "save",
|
|
255
|
+
value: function () {
|
|
256
|
+
var _save = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee4() {
|
|
257
|
+
return _regenerator.default.wrap(function _callee4$(_context4) {
|
|
258
|
+
while (1) {
|
|
259
|
+
switch (_context4.prev = _context4.next) {
|
|
260
|
+
case 0:
|
|
261
|
+
if (!this.data) {
|
|
262
|
+
_context4.next = 3;
|
|
263
|
+
break;
|
|
264
|
+
}
|
|
265
|
+
_context4.next = 3;
|
|
266
|
+
return this.write(this.data);
|
|
267
|
+
case 3:
|
|
268
|
+
case "end":
|
|
269
|
+
return _context4.stop();
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}, _callee4, this);
|
|
273
|
+
}));
|
|
274
|
+
function save() {
|
|
275
|
+
return _save.apply(this, arguments);
|
|
276
|
+
}
|
|
277
|
+
return save;
|
|
278
|
+
}()
|
|
279
|
+
}, {
|
|
280
|
+
key: "write",
|
|
281
|
+
value: function () {
|
|
282
|
+
var _write = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee5(node) {
|
|
283
|
+
var _this = this;
|
|
284
|
+
var path;
|
|
285
|
+
return _regenerator.default.wrap(function _callee5$(_context5) {
|
|
286
|
+
while (1) {
|
|
287
|
+
switch (_context5.prev = _context5.next) {
|
|
288
|
+
case 0:
|
|
289
|
+
path = (0, _path.join)(this.converter.layers0Path, 'nodes', this.id);
|
|
290
|
+
if (!this.converter.options.slpk) {
|
|
291
|
+
_context5.next = 6;
|
|
292
|
+
break;
|
|
293
|
+
}
|
|
294
|
+
_context5.next = 4;
|
|
295
|
+
return this.converter.writeQueue.enqueue({
|
|
296
|
+
archiveKey: "nodes/".concat(this.id, "/3dNodeIndexDocument.json.gz"),
|
|
297
|
+
writePromise: function writePromise() {
|
|
298
|
+
return (0, _fileUtils.writeFileForSlpk)(path, JSON.stringify(node), '3dNodeIndexDocument.json', true, _this.converter.compressList);
|
|
299
|
+
}
|
|
300
|
+
}, true);
|
|
301
|
+
case 4:
|
|
302
|
+
_context5.next = 8;
|
|
303
|
+
break;
|
|
304
|
+
case 6:
|
|
305
|
+
_context5.next = 8;
|
|
306
|
+
return this.converter.writeQueue.enqueue({
|
|
307
|
+
writePromise: function writePromise() {
|
|
308
|
+
return (0, _fileUtils.writeFile)(path, JSON.stringify(node));
|
|
309
|
+
}
|
|
310
|
+
}, true);
|
|
311
|
+
case 8:
|
|
312
|
+
case "end":
|
|
313
|
+
return _context5.stop();
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
}, _callee5, this);
|
|
317
|
+
}));
|
|
318
|
+
function write(_x3) {
|
|
319
|
+
return _write.apply(this, arguments);
|
|
320
|
+
}
|
|
321
|
+
return write;
|
|
322
|
+
}()
|
|
323
|
+
}, {
|
|
324
|
+
key: "load",
|
|
325
|
+
value: function () {
|
|
326
|
+
var _load = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee6() {
|
|
327
|
+
var path, parentNodePath, parentNodeFileName;
|
|
328
|
+
return _regenerator.default.wrap(function _callee6$(_context6) {
|
|
329
|
+
while (1) {
|
|
330
|
+
switch (_context6.prev = _context6.next) {
|
|
331
|
+
case 0:
|
|
332
|
+
if (!this.data) {
|
|
333
|
+
_context6.next = 2;
|
|
334
|
+
break;
|
|
335
|
+
}
|
|
336
|
+
return _context6.abrupt("return", this.data);
|
|
337
|
+
case 2:
|
|
338
|
+
path = this.id;
|
|
339
|
+
parentNodePath = (0, _path.join)(this.converter.layers0Path, 'nodes', path);
|
|
340
|
+
parentNodeFileName = 'index.json';
|
|
341
|
+
if (this.converter.options.slpk) {
|
|
342
|
+
parentNodeFileName = '3dNodeIndexDocument.json';
|
|
343
|
+
}
|
|
344
|
+
_context6.next = 8;
|
|
345
|
+
return (0, _fileUtils.openJson)(parentNodePath, parentNodeFileName);
|
|
346
|
+
case 8:
|
|
347
|
+
return _context6.abrupt("return", _context6.sent);
|
|
348
|
+
case 9:
|
|
349
|
+
case "end":
|
|
350
|
+
return _context6.stop();
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
}, _callee6, this);
|
|
354
|
+
}));
|
|
355
|
+
function load() {
|
|
356
|
+
return _load.apply(this, arguments);
|
|
357
|
+
}
|
|
358
|
+
return load;
|
|
359
|
+
}()
|
|
360
|
+
}, {
|
|
361
|
+
key: "flush",
|
|
362
|
+
value:
|
|
363
|
+
function flush() {
|
|
364
|
+
this.data = null;
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
}], [{
|
|
368
|
+
key: "createRootNode",
|
|
369
|
+
value: function () {
|
|
370
|
+
var _createRootNode = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee7(boundingVolumes, converter) {
|
|
371
|
+
var rootData, rootNode;
|
|
372
|
+
return _regenerator.default.wrap(function _callee7$(_context7) {
|
|
373
|
+
while (1) {
|
|
374
|
+
switch (_context7.prev = _context7.next) {
|
|
375
|
+
case 0:
|
|
376
|
+
rootData = NodeIndexDocument.createRootNodeIndexDocument(boundingVolumes);
|
|
377
|
+
_context7.next = 3;
|
|
378
|
+
return new NodeIndexDocument(0, converter).addData(rootData);
|
|
379
|
+
case 3:
|
|
380
|
+
rootNode = _context7.sent;
|
|
381
|
+
return _context7.abrupt("return", rootNode);
|
|
382
|
+
case 5:
|
|
383
|
+
case "end":
|
|
384
|
+
return _context7.stop();
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
}, _callee7);
|
|
388
|
+
}));
|
|
389
|
+
function createRootNode(_x4, _x5) {
|
|
390
|
+
return _createRootNode.apply(this, arguments);
|
|
391
|
+
}
|
|
392
|
+
return createRootNode;
|
|
393
|
+
}()
|
|
394
|
+
}, {
|
|
395
|
+
key: "createNode",
|
|
396
|
+
value: function () {
|
|
397
|
+
var _createNode = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee8(parentNode, boundingVolumes, lodSelection, nodeInPage, resources, converter) {
|
|
398
|
+
var data, node;
|
|
399
|
+
return _regenerator.default.wrap(function _callee8$(_context8) {
|
|
400
|
+
while (1) {
|
|
401
|
+
switch (_context8.prev = _context8.next) {
|
|
402
|
+
case 0:
|
|
403
|
+
_context8.next = 2;
|
|
404
|
+
return NodeIndexDocument.createNodeIndexDocument(parentNode, boundingVolumes, lodSelection, nodeInPage, resources);
|
|
405
|
+
case 2:
|
|
406
|
+
data = _context8.sent;
|
|
407
|
+
_context8.next = 5;
|
|
408
|
+
return new NodeIndexDocument(nodeInPage.index, converter).addData(data);
|
|
409
|
+
case 5:
|
|
410
|
+
node = _context8.sent;
|
|
411
|
+
return _context8.abrupt("return", node);
|
|
412
|
+
case 7:
|
|
413
|
+
case "end":
|
|
414
|
+
return _context8.stop();
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
}, _callee8);
|
|
418
|
+
}));
|
|
419
|
+
function createNode(_x6, _x7, _x8, _x9, _x10, _x11) {
|
|
420
|
+
return _createNode.apply(this, arguments);
|
|
421
|
+
}
|
|
422
|
+
return createNode;
|
|
423
|
+
}()
|
|
424
|
+
}, {
|
|
425
|
+
key: "createRootNodeIndexDocument",
|
|
426
|
+
value:
|
|
427
|
+
function createRootNodeIndexDocument(boundingVolumes) {
|
|
428
|
+
var root0data = _objectSpread(_objectSpread({
|
|
429
|
+
version: "{".concat((0, _uuid.v4)().toUpperCase(), "}"),
|
|
430
|
+
id: 'root',
|
|
431
|
+
level: 0,
|
|
432
|
+
lodSelection: [{
|
|
433
|
+
metricType: 'maxScreenThresholdSQ',
|
|
434
|
+
maxError: 0
|
|
435
|
+
}, {
|
|
436
|
+
metricType: 'maxScreenThreshold',
|
|
437
|
+
maxError: 0
|
|
438
|
+
}]
|
|
439
|
+
}, boundingVolumes), {}, {
|
|
440
|
+
children: []
|
|
441
|
+
});
|
|
442
|
+
return (0, _jsonMapTransform.default)(root0data, (0, _node.NODE)());
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
}, {
|
|
446
|
+
key: "createNodeIndexDocument",
|
|
447
|
+
value: function () {
|
|
448
|
+
var _createNodeIndexDocument = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee9(parentNode, boundingVolumes, lodSelection, nodeInPage, resources) {
|
|
449
|
+
var texture, attributes, nodeId, parentNodeData, nodeData, node, _parentNode$converter, _parentNode$converter2, index, folderName;
|
|
450
|
+
return _regenerator.default.wrap(function _callee9$(_context9) {
|
|
451
|
+
while (1) {
|
|
452
|
+
switch (_context9.prev = _context9.next) {
|
|
453
|
+
case 0:
|
|
454
|
+
texture = resources.texture, attributes = resources.attributes;
|
|
455
|
+
nodeId = nodeInPage.index;
|
|
456
|
+
_context9.next = 4;
|
|
457
|
+
return parentNode.load();
|
|
458
|
+
case 4:
|
|
459
|
+
parentNodeData = _context9.sent;
|
|
460
|
+
nodeData = _objectSpread(_objectSpread({
|
|
461
|
+
version: parentNodeData.version,
|
|
462
|
+
id: nodeId.toString(),
|
|
463
|
+
level: parentNodeData.level + 1
|
|
464
|
+
}, boundingVolumes), {}, {
|
|
465
|
+
lodSelection: lodSelection,
|
|
466
|
+
parentNode: {
|
|
467
|
+
id: parentNode.id,
|
|
468
|
+
href: "../".concat(parentNode.id),
|
|
469
|
+
mbs: parentNodeData.mbs,
|
|
470
|
+
obb: parentNodeData.obb
|
|
471
|
+
},
|
|
472
|
+
children: [],
|
|
473
|
+
neighbors: []
|
|
474
|
+
});
|
|
475
|
+
node = (0, _jsonMapTransform.default)(nodeData, (0, _node.NODE)());
|
|
476
|
+
if (nodeInPage.mesh) {
|
|
477
|
+
node.geometryData = [{
|
|
478
|
+
href: './geometries/0'
|
|
479
|
+
}];
|
|
480
|
+
node.sharedResource = {
|
|
481
|
+
href: './shared'
|
|
482
|
+
};
|
|
483
|
+
if (texture) {
|
|
484
|
+
node.textureData = [{
|
|
485
|
+
href: './textures/0'
|
|
486
|
+
}, {
|
|
487
|
+
href: './textures/1'
|
|
488
|
+
}];
|
|
489
|
+
}
|
|
490
|
+
if (attributes && attributes.length && (_parentNode$converter = parentNode.converter.layers0) !== null && _parentNode$converter !== void 0 && (_parentNode$converter2 = _parentNode$converter.attributeStorageInfo) !== null && _parentNode$converter2 !== void 0 && _parentNode$converter2.length) {
|
|
491
|
+
node.attributeData = [];
|
|
492
|
+
for (index = 0; index < attributes.length; index++) {
|
|
493
|
+
folderName = parentNode.converter.layers0.attributeStorageInfo[index].key;
|
|
494
|
+
node.attributeData.push({
|
|
495
|
+
href: "./attributes/".concat(folderName, "/0")
|
|
496
|
+
});
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
return _context9.abrupt("return", node);
|
|
501
|
+
case 9:
|
|
502
|
+
case "end":
|
|
503
|
+
return _context9.stop();
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
}, _callee9);
|
|
507
|
+
}));
|
|
508
|
+
function createNodeIndexDocument(_x12, _x13, _x14, _x15, _x16) {
|
|
509
|
+
return _createNodeIndexDocument.apply(this, arguments);
|
|
510
|
+
}
|
|
511
|
+
return createNodeIndexDocument;
|
|
512
|
+
}()
|
|
513
|
+
}]);
|
|
514
|
+
return NodeIndexDocument;
|
|
515
|
+
}();
|
|
516
|
+
exports.NodeIndexDocument = NodeIndexDocument;
|
|
517
|
+
//# sourceMappingURL=node-index-document.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-index-document.js","names":["NodeIndexDocument","id","converter","inPageId","toString","data","options","instantNodeWriting","write","childNodes","newChildren","node","load","nodeData","push","href","obb","mbs","children","concat","childNode","childNodeData","neighbors","Number","length","neighbor","console","warn","save","flush","path","join","layers0Path","slpk","writeQueue","enqueue","archiveKey","writePromise","writeFileForSlpk","JSON","stringify","compressList","writeFile","parentNodePath","parentNodeFileName","openJson","boundingVolumes","rootData","createRootNodeIndexDocument","addData","rootNode","parentNode","lodSelection","nodeInPage","resources","createNodeIndexDocument","index","root0data","version","uuidv4","toUpperCase","level","metricType","maxError","transform","nodeTemplate","texture","attributes","nodeId","parentNodeData","mesh","geometryData","sharedResource","textureData","layers0","attributeStorageInfo","attributeData","folderName","key"],"sources":["../../../../src/i3s-converter/helpers/node-index-document.ts"],"sourcesContent":["import {join} from 'path';\nimport {\n BoundingVolumes,\n LodSelection,\n Node3DIndexDocument,\n NodeInPage,\n NodeReference\n} from '@loaders.gl/i3s';\nimport transform from 'json-map-transform';\nimport {v4 as uuidv4} from 'uuid';\nimport {openJson, writeFile, writeFileForSlpk} from '../../lib/utils/file-utils';\nimport I3SConverter from '../i3s-converter';\nimport {NODE as nodeTemplate} from '../json-templates/node';\nimport {I3SConvertedResources} from '../types';\n\n/**\n * Wrapper for https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md data\n * The class allows working with 3DNodeIndexDocument in 2 modes:\n * in memory: the data is stored in `data` field\n * on disk: the data is written on disk in a file. The file can be rewritten when new childrend or neighbors have to be added\n */\nexport class NodeIndexDocument {\n /** Node id */\n public id: string;\n /** Id in node pages */\n public inPageId: number;\n /** 3DNodeIndexDocument data */\n public data: Node3DIndexDocument | null = null;\n /** children */\n public children: NodeIndexDocument[] = [];\n /** converter instance */\n private converter: I3SConverter;\n\n /**\n * Constructor\n * @param id - id of the node in node pages\n * @param converter - converter instance\n */\n constructor(id: number, converter: I3SConverter) {\n this.inPageId = id;\n this.id = id === 0 ? 'root' : id.toString();\n this.converter = converter;\n }\n\n /**\n * Add Node3DIndexDocument data to the node\n * @param data Node3DIndexDocument data\n * @returns this NodeIndexDocument instance (to recurring with constructor)\n */\n public async addData(data: Node3DIndexDocument): Promise<NodeIndexDocument> {\n if (this.converter.options.instantNodeWriting) {\n await this.write(data);\n } else {\n this.data = data;\n }\n return this;\n }\n\n /**\n * Add child node references\n * @param childNodes - child NodeIndexDocument instances\n */\n public async addChildren(childNodes: NodeIndexDocument[]): Promise<void> {\n const newChildren: NodeReference[] = [];\n for (const node of childNodes) {\n const nodeData = await node.load();\n newChildren.push({\n id: node.id,\n href: `../${node.id}`,\n obb: nodeData.obb,\n mbs: nodeData.mbs\n });\n }\n this.children = this.children.concat(childNodes);\n\n let data: Node3DIndexDocument | null = this.data;\n if (this.converter.options.instantNodeWriting) {\n data = (await this.load()) as Node3DIndexDocument;\n }\n if (data) {\n data.children = data.children ?? [];\n data.children = data.children.concat(newChildren);\n }\n if (this.converter.options.instantNodeWriting && data) {\n await this.write(data);\n }\n }\n\n /**\n * Add neighbors to child nodes of this node\n */\n public async addNeighbors(): Promise<void> {\n const nodeData = await this.load();\n for (const childNode of this.children) {\n const childNodeData = await childNode.load();\n childNodeData.neighbors = childNodeData.neighbors ?? [];\n\n // Don't do large amount of \"neightbors\" to avoid big memory consumption\n if (Number(nodeData?.children?.length) < 1000) {\n for (const neighbor of nodeData.children || []) {\n if (childNode.id === neighbor.id) {\n continue; // eslint-disable-line\n }\n\n childNodeData.neighbors.push({...neighbor});\n }\n } else {\n // eslint-disable-next-line no-console, no-undef\n console.warn(\n `Node ${childNode.id}: neighbors attribute is omited because of large number of neigbors`\n );\n delete childNodeData.neighbors;\n }\n\n if (this.converter.options.instantNodeWriting && childNodeData) {\n await childNode.write(childNodeData);\n }\n await childNode.save();\n // The save after adding neighbors is the last one. Flush the the node\n childNode.flush();\n }\n }\n\n /** Save 3DNodeIndexDocument in file on disk */\n public async save(): Promise<void> {\n if (this.data) {\n await this.write(this.data);\n }\n }\n\n /**\n * Write 3DNodeIndexDocument https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md\n * @param node - Node3DIndexDocument object\n */\n private async write(node: Node3DIndexDocument): Promise<void> {\n const path = join(this.converter.layers0Path, 'nodes', this.id);\n if (this.converter.options.slpk) {\n await this.converter.writeQueue.enqueue(\n {\n archiveKey: `nodes/${this.id}/3dNodeIndexDocument.json.gz`,\n writePromise: () =>\n writeFileForSlpk(\n path,\n JSON.stringify(node),\n '3dNodeIndexDocument.json',\n true,\n this.converter.compressList\n )\n },\n true\n );\n } else {\n await this.converter.writeQueue.enqueue(\n {writePromise: () => writeFile(path, JSON.stringify(node))},\n true\n );\n }\n }\n\n /**\n * Load 3DNodeIndexDocument data from file on disk\n * @returns 3DNodeIndexDocument object\n */\n private async load(): Promise<Node3DIndexDocument> {\n if (this.data) {\n return this.data;\n }\n const path = this.id;\n const parentNodePath = join(this.converter.layers0Path, 'nodes', path);\n let parentNodeFileName = 'index.json';\n if (this.converter.options.slpk) {\n parentNodeFileName = '3dNodeIndexDocument.json';\n }\n return (await openJson(parentNodePath, parentNodeFileName)) as Node3DIndexDocument;\n }\n\n /**\n * Unload the Node data\n */\n private flush(): void {\n this.data = null;\n }\n\n /**\n * Create root node of the tree\n * @param boundingVolumes - MBS and OOB bounding volumes data\n * @param converter - I3SConverter instance\n * @returns instance of NodeIndexDocument\n */\n static async createRootNode(\n boundingVolumes: BoundingVolumes,\n converter: I3SConverter\n ): Promise<NodeIndexDocument> {\n const rootData = NodeIndexDocument.createRootNodeIndexDocument(boundingVolumes);\n const rootNode = await new NodeIndexDocument(0, converter).addData(rootData);\n return rootNode;\n }\n\n /**\n * Create NodeIndexDocument instance\n * @param parentNode - parent NodeIndexDocument\n * @param boundingVolumes - MBS and OOB bounding volumes data\n * @param lodSelection - LOD metrics data\n * @param nodeInPage - node data in node pages\n * @param resources - resources extracted from gltf/b3dm file\n * @param converter - I3SConverter instance\n * @returns NodeIndexDocument instance\n */\n static async createNode(\n parentNode: NodeIndexDocument,\n boundingVolumes: BoundingVolumes,\n lodSelection: LodSelection[],\n nodeInPage: NodeInPage,\n resources: I3SConvertedResources,\n converter: I3SConverter\n ): Promise<NodeIndexDocument> {\n const data = await NodeIndexDocument.createNodeIndexDocument(\n parentNode,\n boundingVolumes,\n lodSelection,\n nodeInPage,\n resources\n );\n const node = await new NodeIndexDocument(nodeInPage.index, converter).addData(data);\n return node;\n }\n\n /**\n * Form 3DNodeIndexDocument data for the root node\n * @param boundingVolumes - mbs and obb data about node's bounding volume\n * @return 3DNodeIndexDocument data https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md\n */\n static createRootNodeIndexDocument(boundingVolumes: BoundingVolumes): Node3DIndexDocument {\n const root0data = {\n version: `{${uuidv4().toUpperCase()}}`,\n id: 'root',\n level: 0,\n lodSelection: [\n {\n metricType: 'maxScreenThresholdSQ',\n maxError: 0\n },\n {\n metricType: 'maxScreenThreshold',\n maxError: 0\n }\n ],\n ...boundingVolumes,\n children: []\n };\n return transform(root0data, nodeTemplate());\n }\n\n /**\n * Create a new Node3DIndexDocument\n * @param parentNode - 3DNodeIndexDocument https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md object of the parent node\n * @param boundingVolumes - Bounding volumes\n * @param lodSelection - Level of Details (LOD) metrics\n * @param nodeInPage - corresponding node object in a node page\n * @param resources - the node resources data\n * @param resources.texture - texture image\n * @param resources.attributes - feature attributes\n * @return 3DNodeIndexDocument https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md object\n */\n static async createNodeIndexDocument(\n parentNode: NodeIndexDocument,\n boundingVolumes: BoundingVolumes,\n lodSelection: LodSelection[],\n nodeInPage: NodeInPage,\n resources: I3SConvertedResources\n ): Promise<Node3DIndexDocument> {\n const {texture, attributes} = resources;\n const nodeId = nodeInPage.index!;\n const parentNodeData = await parentNode.load();\n const nodeData = {\n version: parentNodeData.version,\n id: nodeId.toString(),\n level: parentNodeData.level! + 1,\n ...boundingVolumes,\n lodSelection,\n parentNode: {\n id: parentNode.id,\n href: `../${parentNode.id}`,\n mbs: parentNodeData.mbs,\n obb: parentNodeData.obb\n },\n children: [],\n neighbors: []\n };\n const node = transform(nodeData, nodeTemplate());\n\n if (nodeInPage.mesh) {\n node.geometryData = [{href: './geometries/0'}];\n node.sharedResource = {href: './shared'};\n\n if (texture) {\n node.textureData = [{href: './textures/0'}, {href: './textures/1'}];\n }\n\n if (\n attributes &&\n attributes.length &&\n parentNode.converter.layers0?.attributeStorageInfo?.length\n ) {\n node.attributeData = [];\n for (let index = 0; index < attributes.length; index++) {\n const folderName = parentNode.converter.layers0.attributeStorageInfo[index].key;\n node.attributeData.push({href: `./attributes/${folderName}/0`});\n }\n }\n }\n\n return node;\n }\n}\n"],"mappings":"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"}
|