@loaders.gl/3d-tiles 3.3.0-alpha.4 → 3.3.0-alpha.6
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/dist.min.js +924 -1372
- package/dist/es5/bundle.js +0 -1
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/cesium-ion-loader.js +7 -26
- package/dist/es5/cesium-ion-loader.js.map +1 -1
- package/dist/es5/index.js +14 -23
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/classes/helpers/tile-3d-accessor-utils.js +1 -5
- package/dist/es5/lib/classes/helpers/tile-3d-accessor-utils.js.map +1 -1
- package/dist/es5/lib/classes/tile-3d-batch-table-hierarchy.js +1 -40
- package/dist/es5/lib/classes/tile-3d-batch-table-hierarchy.js.map +1 -1
- package/dist/es5/lib/classes/tile-3d-batch-table.js +12 -59
- package/dist/es5/lib/classes/tile-3d-batch-table.js.map +1 -1
- package/dist/es5/lib/classes/tile-3d-feature-table.js +4 -23
- package/dist/es5/lib/classes/tile-3d-feature-table.js.map +1 -1
- package/dist/es5/lib/constants.js +3 -1
- package/dist/es5/lib/constants.js.map +1 -1
- package/dist/es5/lib/encoders/encode-3d-tile-batched-model.js +7 -16
- package/dist/es5/lib/encoders/encode-3d-tile-batched-model.js.map +1 -1
- package/dist/es5/lib/encoders/encode-3d-tile-composite.js +2 -11
- package/dist/es5/lib/encoders/encode-3d-tile-composite.js.map +1 -1
- package/dist/es5/lib/encoders/encode-3d-tile-instanced-model.js +10 -17
- package/dist/es5/lib/encoders/encode-3d-tile-instanced-model.js.map +1 -1
- package/dist/es5/lib/encoders/encode-3d-tile-point-cloud.js +8 -16
- package/dist/es5/lib/encoders/encode-3d-tile-point-cloud.js.map +1 -1
- package/dist/es5/lib/encoders/encode-3d-tile.js +0 -12
- package/dist/es5/lib/encoders/encode-3d-tile.js.map +1 -1
- package/dist/es5/lib/encoders/helpers/encode-3d-tile-header.js +6 -9
- package/dist/es5/lib/encoders/helpers/encode-3d-tile-header.js.map +1 -1
- package/dist/es5/lib/ion/ion.js +5 -46
- package/dist/es5/lib/ion/ion.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-colors.js +2 -11
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-colors.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-normals.js +0 -8
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-normals.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-positions.js +0 -5
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-positions.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/parse-3d-implicit-tiles.js +17 -51
- package/dist/es5/lib/parsers/helpers/parse-3d-implicit-tiles.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-gltf-view.js +6 -25
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-header.js +1 -1
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-header.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-subtree.js +0 -38
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-subtree.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-tables.js +6 -14
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-tables.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/parse-utils.js +1 -3
- package/dist/es5/lib/parsers/helpers/parse-utils.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile-batched-model.js +0 -16
- package/dist/es5/lib/parsers/parse-3d-tile-batched-model.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile-composite.js +1 -11
- package/dist/es5/lib/parsers/parse-3d-tile-composite.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile-gltf.js +0 -8
- package/dist/es5/lib/parsers/parse-3d-tile-gltf.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile-header.js +2 -70
- package/dist/es5/lib/parsers/parse-3d-tile-header.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile-instanced-model.js +5 -41
- package/dist/es5/lib/parsers/parse-3d-tile-instanced-model.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile-point-cloud.js +4 -71
- package/dist/es5/lib/parsers/parse-3d-tile-point-cloud.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile.js +5 -28
- package/dist/es5/lib/parsers/parse-3d-tile.js.map +1 -1
- package/dist/es5/lib/utils/version.js +1 -1
- package/dist/es5/lib/utils/version.js.map +1 -1
- package/dist/es5/tile-3d-subtree-loader.js +0 -4
- package/dist/es5/tile-3d-subtree-loader.js.map +1 -1
- package/dist/es5/tile-3d-writer.js +0 -6
- package/dist/es5/tile-3d-writer.js.map +1 -1
- package/dist/es5/tiles-3d-loader.js +0 -29
- package/dist/es5/tiles-3d-loader.js.map +1 -1
- package/dist/es5/types.js.map +1 -1
- package/dist/esm/bundle.js +1 -1
- package/dist/esm/bundle.js.map +1 -1
- package/dist/esm/cesium-ion-loader.js +9 -7
- package/dist/esm/cesium-ion-loader.js.map +1 -1
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/classes/helpers/tile-3d-accessor-utils.js +1 -0
- package/dist/esm/lib/classes/helpers/tile-3d-accessor-utils.js.map +1 -1
- package/dist/esm/lib/classes/tile-3d-batch-table-hierarchy.js +3 -40
- package/dist/esm/lib/classes/tile-3d-batch-table-hierarchy.js.map +1 -1
- package/dist/esm/lib/classes/tile-3d-batch-table.js +7 -67
- package/dist/esm/lib/classes/tile-3d-batch-table.js.map +1 -1
- package/dist/esm/lib/classes/tile-3d-feature-table.js +5 -26
- package/dist/esm/lib/classes/tile-3d-feature-table.js.map +1 -1
- package/dist/esm/lib/constants.js +3 -0
- package/dist/esm/lib/constants.js.map +1 -1
- package/dist/esm/lib/encoders/encode-3d-tile-batched-model.js +5 -3
- package/dist/esm/lib/encoders/encode-3d-tile-batched-model.js.map +1 -1
- package/dist/esm/lib/encoders/encode-3d-tile-composite.js +2 -2
- package/dist/esm/lib/encoders/encode-3d-tile-composite.js.map +1 -1
- package/dist/esm/lib/encoders/encode-3d-tile-instanced-model.js +5 -1
- package/dist/esm/lib/encoders/encode-3d-tile-instanced-model.js.map +1 -1
- package/dist/esm/lib/encoders/encode-3d-tile-point-cloud.js +4 -1
- package/dist/esm/lib/encoders/encode-3d-tile-point-cloud.js.map +1 -1
- package/dist/esm/lib/encoders/encode-3d-tile.js +2 -6
- package/dist/esm/lib/encoders/encode-3d-tile.js.map +1 -1
- package/dist/esm/lib/encoders/helpers/encode-3d-tile-header.js +3 -3
- package/dist/esm/lib/encoders/helpers/encode-3d-tile-header.js.map +1 -1
- package/dist/esm/lib/ion/ion.js +10 -8
- package/dist/esm/lib/ion/ion.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/normalize-3d-tile-colors.js +1 -6
- package/dist/esm/lib/parsers/helpers/normalize-3d-tile-colors.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/normalize-3d-tile-normals.js +0 -4
- package/dist/esm/lib/parsers/helpers/normalize-3d-tile-normals.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/normalize-3d-tile-positions.js +1 -2
- package/dist/esm/lib/parsers/helpers/normalize-3d-tile-positions.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/parse-3d-implicit-tiles.js +2 -16
- package/dist/esm/lib/parsers/helpers/parse-3d-implicit-tiles.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-gltf-view.js +6 -9
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-header.js +5 -2
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-header.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-subtree.js +1 -13
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-subtree.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-tables.js +4 -7
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-tables.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/parse-utils.js +6 -1
- package/dist/esm/lib/parsers/helpers/parse-utils.js.map +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile-batched-model.js +3 -4
- package/dist/esm/lib/parsers/parse-3d-tile-batched-model.js.map +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile-composite.js +5 -1
- package/dist/esm/lib/parsers/parse-3d-tile-composite.js.map +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile-gltf.js.map +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile-header.js +3 -26
- package/dist/esm/lib/parsers/parse-3d-tile-header.js.map +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile-instanced-model.js +7 -25
- package/dist/esm/lib/parsers/parse-3d-tile-instanced-model.js.map +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile-point-cloud.js +9 -37
- package/dist/esm/lib/parsers/parse-3d-tile-point-cloud.js.map +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile.js +8 -6
- package/dist/esm/lib/parsers/parse-3d-tile.js.map +1 -1
- package/dist/esm/lib/utils/version.js +2 -1
- package/dist/esm/lib/utils/version.js.map +1 -1
- package/dist/esm/tile-3d-subtree-loader.js +1 -0
- package/dist/esm/tile-3d-subtree-loader.js.map +1 -1
- package/dist/esm/tile-3d-writer.js +1 -1
- package/dist/esm/tile-3d-writer.js.map +1 -1
- package/dist/esm/tiles-3d-loader.js +1 -8
- package/dist/esm/tiles-3d-loader.js.map +1 -1
- package/dist/esm/types.js.map +1 -1
- package/dist/lib/classes/helpers/tile-3d-accessor-utils.d.ts +1 -1
- package/dist/lib/classes/tile-3d-batch-table.d.ts +1 -1
- package/package.json +7 -7
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
+
|
|
2
3
|
import { assert } from '@loaders.gl/loader-utils';
|
|
3
4
|
import { createTypedArrayFromAccessor } from './helpers/tile-3d-accessor-utils';
|
|
4
5
|
import { initializeHierarchy, traverseHierarchy } from './tile-3d-batch-table-hierarchy';
|
|
5
|
-
|
|
6
6
|
function defined(x) {
|
|
7
7
|
return x !== undefined && x !== null;
|
|
8
8
|
}
|
|
9
|
-
|
|
10
9
|
const clone = (x, y) => x;
|
|
11
10
|
|
|
12
11
|
const IGNORED_PROPERTY_FIELDS = {
|
|
@@ -14,55 +13,45 @@ const IGNORED_PROPERTY_FIELDS = {
|
|
|
14
13
|
extensions: true,
|
|
15
14
|
extras: true
|
|
16
15
|
};
|
|
16
|
+
|
|
17
17
|
export default class Tile3DBatchTableParser {
|
|
18
|
-
constructor(json, binary, featureCount, options = {}) {
|
|
19
|
-
var _this$json;
|
|
20
18
|
|
|
19
|
+
constructor(json, binary, featureCount) {
|
|
20
|
+
var _this$json;
|
|
21
|
+
let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
|
|
21
22
|
_defineProperty(this, "json", void 0);
|
|
22
|
-
|
|
23
23
|
_defineProperty(this, "binary", void 0);
|
|
24
|
-
|
|
25
24
|
_defineProperty(this, "featureCount", void 0);
|
|
26
|
-
|
|
27
25
|
_defineProperty(this, "_extensions", void 0);
|
|
28
|
-
|
|
29
26
|
_defineProperty(this, "_properties", void 0);
|
|
30
|
-
|
|
31
27
|
_defineProperty(this, "_binaryProperties", void 0);
|
|
32
|
-
|
|
33
28
|
_defineProperty(this, "_hierarchy", void 0);
|
|
34
|
-
|
|
35
29
|
assert(featureCount >= 0);
|
|
36
30
|
this.json = json || {};
|
|
37
31
|
this.binary = binary;
|
|
38
32
|
this.featureCount = featureCount;
|
|
39
33
|
this._extensions = ((_this$json = this.json) === null || _this$json === void 0 ? void 0 : _this$json.extensions) || {};
|
|
40
|
-
this._properties = {};
|
|
41
34
|
|
|
35
|
+
this._properties = {};
|
|
42
36
|
for (const propertyName in this.json) {
|
|
43
37
|
if (!IGNORED_PROPERTY_FIELDS[propertyName]) {
|
|
44
38
|
this._properties[propertyName] = this.json[propertyName];
|
|
45
39
|
}
|
|
46
40
|
}
|
|
47
|
-
|
|
48
41
|
this._binaryProperties = this._initializeBinaryProperties();
|
|
49
42
|
|
|
50
43
|
if (options['3DTILES_batch_table_hierarchy']) {
|
|
51
44
|
this._hierarchy = initializeHierarchy(this, this.json, this.binary);
|
|
52
45
|
}
|
|
53
46
|
}
|
|
54
|
-
|
|
55
47
|
getExtension(extensionName) {
|
|
56
48
|
return this.json && this.json.extensions && this.json.extensions[extensionName];
|
|
57
49
|
}
|
|
58
|
-
|
|
59
50
|
memorySizeInBytes() {
|
|
60
51
|
return 0;
|
|
61
52
|
}
|
|
62
|
-
|
|
63
53
|
isClass(batchId, className) {
|
|
64
54
|
this._checkBatchId(batchId);
|
|
65
|
-
|
|
66
55
|
assert(typeof className === 'string', className);
|
|
67
56
|
|
|
68
57
|
if (this._hierarchy) {
|
|
@@ -73,15 +62,12 @@ export default class Tile3DBatchTableParser {
|
|
|
73
62
|
});
|
|
74
63
|
return defined(result);
|
|
75
64
|
}
|
|
76
|
-
|
|
77
65
|
return false;
|
|
78
66
|
}
|
|
79
|
-
|
|
80
67
|
isExactClass(batchId, className) {
|
|
81
68
|
assert(typeof className === 'string', className);
|
|
82
69
|
return this.getExactClassName(batchId) === className;
|
|
83
70
|
}
|
|
84
|
-
|
|
85
71
|
getExactClassName(batchId) {
|
|
86
72
|
this._checkBatchId(batchId);
|
|
87
73
|
|
|
@@ -90,75 +76,54 @@ export default class Tile3DBatchTableParser {
|
|
|
90
76
|
const instanceClass = this._hierarchy.classes[classId];
|
|
91
77
|
return instanceClass.name;
|
|
92
78
|
}
|
|
93
|
-
|
|
94
79
|
return undefined;
|
|
95
80
|
}
|
|
96
|
-
|
|
97
81
|
hasProperty(batchId, name) {
|
|
98
82
|
this._checkBatchId(batchId);
|
|
99
|
-
|
|
100
83
|
assert(typeof name === 'string', name);
|
|
101
84
|
return defined(this._properties[name]) || this._hasPropertyInHierarchy(batchId, name);
|
|
102
85
|
}
|
|
103
|
-
|
|
104
86
|
getPropertyNames(batchId, results) {
|
|
105
87
|
this._checkBatchId(batchId);
|
|
106
|
-
|
|
107
88
|
results = defined(results) ? results : [];
|
|
108
89
|
results.length = 0;
|
|
109
90
|
const propertyNames = Object.keys(this._properties);
|
|
110
91
|
results.push(...propertyNames);
|
|
111
|
-
|
|
112
92
|
if (this._hierarchy) {
|
|
113
93
|
this._getPropertyNamesInHierarchy(batchId, results);
|
|
114
94
|
}
|
|
115
|
-
|
|
116
95
|
return results;
|
|
117
96
|
}
|
|
118
|
-
|
|
119
97
|
getProperty(batchId, name) {
|
|
120
98
|
this._checkBatchId(batchId);
|
|
121
|
-
|
|
122
99
|
assert(typeof name === 'string', name);
|
|
123
|
-
|
|
124
100
|
if (this._binaryProperties) {
|
|
125
101
|
const binaryProperty = this._binaryProperties[name];
|
|
126
|
-
|
|
127
102
|
if (defined(binaryProperty)) {
|
|
128
103
|
return this._getBinaryProperty(binaryProperty, batchId);
|
|
129
104
|
}
|
|
130
105
|
}
|
|
131
|
-
|
|
132
106
|
const propertyValues = this._properties[name];
|
|
133
|
-
|
|
134
107
|
if (defined(propertyValues)) {
|
|
135
108
|
return clone(propertyValues[batchId], true);
|
|
136
109
|
}
|
|
137
110
|
|
|
138
111
|
if (this._hierarchy) {
|
|
139
112
|
const hierarchyProperty = this._getHierarchyProperty(batchId, name);
|
|
140
|
-
|
|
141
113
|
if (defined(hierarchyProperty)) {
|
|
142
114
|
return hierarchyProperty;
|
|
143
115
|
}
|
|
144
116
|
}
|
|
145
|
-
|
|
146
117
|
return undefined;
|
|
147
118
|
}
|
|
148
|
-
|
|
149
119
|
setProperty(batchId, name, value) {
|
|
150
120
|
const featureCount = this.featureCount;
|
|
151
|
-
|
|
152
121
|
this._checkBatchId(batchId);
|
|
153
|
-
|
|
154
122
|
assert(typeof name === 'string', name);
|
|
155
|
-
|
|
156
123
|
if (this._binaryProperties) {
|
|
157
124
|
const binaryProperty = this._binaryProperties[name];
|
|
158
|
-
|
|
159
125
|
if (binaryProperty) {
|
|
160
126
|
this._setBinaryProperty(binaryProperty, batchId, value);
|
|
161
|
-
|
|
162
127
|
return;
|
|
163
128
|
}
|
|
164
129
|
}
|
|
@@ -168,56 +133,45 @@ export default class Tile3DBatchTableParser {
|
|
|
168
133
|
return;
|
|
169
134
|
}
|
|
170
135
|
}
|
|
171
|
-
|
|
172
136
|
let propertyValues = this._properties[name];
|
|
173
|
-
|
|
174
137
|
if (!defined(propertyValues)) {
|
|
175
138
|
this._properties[name] = new Array(featureCount);
|
|
176
139
|
propertyValues = this._properties[name];
|
|
177
140
|
}
|
|
178
|
-
|
|
179
141
|
propertyValues[batchId] = clone(value, true);
|
|
180
142
|
}
|
|
181
143
|
|
|
182
144
|
_checkBatchId(batchId) {
|
|
183
145
|
const valid = batchId >= 0 && batchId < this.featureCount;
|
|
184
|
-
|
|
185
146
|
if (!valid) {
|
|
186
147
|
throw new Error('batchId not in range [0, featureCount - 1].');
|
|
187
148
|
}
|
|
188
149
|
}
|
|
189
|
-
|
|
190
150
|
_getBinaryProperty(binaryProperty, index) {
|
|
191
151
|
return binaryProperty.unpack(binaryProperty.typedArray, index);
|
|
192
152
|
}
|
|
193
|
-
|
|
194
153
|
_setBinaryProperty(binaryProperty, index, value) {
|
|
195
154
|
binaryProperty.pack(value, binaryProperty.typedArray, index);
|
|
196
155
|
}
|
|
197
|
-
|
|
198
156
|
_initializeBinaryProperties() {
|
|
199
157
|
let binaryProperties = null;
|
|
200
|
-
|
|
201
158
|
for (const name in this._properties) {
|
|
202
159
|
const property = this._properties[name];
|
|
203
|
-
|
|
204
160
|
const binaryProperty = this._initializeBinaryProperty(name, property);
|
|
205
|
-
|
|
206
161
|
if (binaryProperty) {
|
|
207
162
|
binaryProperties = binaryProperties || {};
|
|
208
163
|
binaryProperties[name] = binaryProperty;
|
|
209
164
|
}
|
|
210
165
|
}
|
|
211
|
-
|
|
212
166
|
return binaryProperties;
|
|
213
167
|
}
|
|
214
|
-
|
|
215
168
|
_initializeBinaryProperty(name, property) {
|
|
216
169
|
if ('byteOffset' in property) {
|
|
217
170
|
const tile3DAccessor = property;
|
|
218
171
|
assert(this.binary, "Property ".concat(name, " requires a batch table binary."));
|
|
219
172
|
assert(tile3DAccessor.type, "Property ".concat(name, " requires a type."));
|
|
220
173
|
const accessor = createTypedArrayFromAccessor(tile3DAccessor, this.binary.buffer, this.binary.byteOffset | 0, this.featureCount);
|
|
174
|
+
|
|
221
175
|
return {
|
|
222
176
|
typedArray: accessor.values,
|
|
223
177
|
componentCount: accessor.size,
|
|
@@ -225,7 +179,6 @@ export default class Tile3DBatchTableParser {
|
|
|
225
179
|
pack: accessor.packer
|
|
226
180
|
};
|
|
227
181
|
}
|
|
228
|
-
|
|
229
182
|
return null;
|
|
230
183
|
}
|
|
231
184
|
|
|
@@ -233,7 +186,6 @@ export default class Tile3DBatchTableParser {
|
|
|
233
186
|
if (!this._hierarchy) {
|
|
234
187
|
return false;
|
|
235
188
|
}
|
|
236
|
-
|
|
237
189
|
const result = traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {
|
|
238
190
|
const classId = hierarchy.classIds[instanceIndex];
|
|
239
191
|
const instances = hierarchy.classes[classId].instances;
|
|
@@ -241,12 +193,10 @@ export default class Tile3DBatchTableParser {
|
|
|
241
193
|
});
|
|
242
194
|
return defined(result);
|
|
243
195
|
}
|
|
244
|
-
|
|
245
196
|
_getPropertyNamesInHierarchy(batchId, results) {
|
|
246
197
|
traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {
|
|
247
198
|
const classId = hierarchy.classIds[instanceIndex];
|
|
248
199
|
const instances = hierarchy.classes[classId].instances;
|
|
249
|
-
|
|
250
200
|
for (const name in instances) {
|
|
251
201
|
if (instances.hasOwnProperty(name)) {
|
|
252
202
|
if (results.indexOf(name) === -1) {
|
|
@@ -256,49 +206,39 @@ export default class Tile3DBatchTableParser {
|
|
|
256
206
|
}
|
|
257
207
|
});
|
|
258
208
|
}
|
|
259
|
-
|
|
260
209
|
_getHierarchyProperty(batchId, name) {
|
|
261
210
|
return traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {
|
|
262
211
|
const classId = hierarchy.classIds[instanceIndex];
|
|
263
212
|
const instanceClass = hierarchy.classes[classId];
|
|
264
213
|
const indexInClass = hierarchy.classIndexes[instanceIndex];
|
|
265
214
|
const propertyValues = instanceClass.instances[name];
|
|
266
|
-
|
|
267
215
|
if (defined(propertyValues)) {
|
|
268
216
|
if (defined(propertyValues.typedArray)) {
|
|
269
217
|
return this._getBinaryProperty(propertyValues, indexInClass);
|
|
270
218
|
}
|
|
271
|
-
|
|
272
219
|
return clone(propertyValues[indexInClass], true);
|
|
273
220
|
}
|
|
274
|
-
|
|
275
221
|
return null;
|
|
276
222
|
});
|
|
277
223
|
}
|
|
278
|
-
|
|
279
224
|
_setHierarchyProperty(batchTable, batchId, name, value) {
|
|
280
225
|
const result = traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {
|
|
281
226
|
const classId = hierarchy.classIds[instanceIndex];
|
|
282
227
|
const instanceClass = hierarchy.classes[classId];
|
|
283
228
|
const indexInClass = hierarchy.classIndexes[instanceIndex];
|
|
284
229
|
const propertyValues = instanceClass.instances[name];
|
|
285
|
-
|
|
286
230
|
if (defined(propertyValues)) {
|
|
287
231
|
assert(instanceIndex === batchId, "Inherited property \"".concat(name, "\" is read-only."));
|
|
288
|
-
|
|
289
232
|
if (defined(propertyValues.typedArray)) {
|
|
290
233
|
this._setBinaryProperty(propertyValues, indexInClass, value);
|
|
291
234
|
} else {
|
|
292
235
|
propertyValues[indexInClass] = clone(value, true);
|
|
293
236
|
}
|
|
294
|
-
|
|
295
237
|
return true;
|
|
296
238
|
}
|
|
297
|
-
|
|
298
239
|
return false;
|
|
299
240
|
});
|
|
300
241
|
return defined(result);
|
|
301
242
|
}
|
|
302
|
-
|
|
303
243
|
}
|
|
304
244
|
//# sourceMappingURL=tile-3d-batch-table.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/classes/tile-3d-batch-table.ts"],"names":["assert","createTypedArrayFromAccessor","initializeHierarchy","traverseHierarchy","defined","x","undefined","clone","y","IGNORED_PROPERTY_FIELDS","HIERARCHY","extensions","extras","Tile3DBatchTableParser","constructor","json","binary","featureCount","options","_extensions","_properties","propertyName","_binaryProperties","_initializeBinaryProperties","_hierarchy","getExtension","extensionName","memorySizeInBytes","isClass","batchId","className","_checkBatchId","result","hierarchy","instanceIndex","classId","classIds","instanceClass","classes","name","isExactClass","getExactClassName","hasProperty","_hasPropertyInHierarchy","getPropertyNames","results","length","propertyNames","Object","keys","push","_getPropertyNamesInHierarchy","getProperty","binaryProperty","_getBinaryProperty","propertyValues","hierarchyProperty","_getHierarchyProperty","setProperty","value","_setBinaryProperty","_setHierarchyProperty","Array","valid","Error","index","unpack","typedArray","pack","binaryProperties","property","_initializeBinaryProperty","tile3DAccessor","type","accessor","buffer","byteOffset","values","componentCount","size","unpacker","packer","instances","hasOwnProperty","indexOf","indexInClass","classIndexes","batchTable"],"mappings":"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","sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport {assert} from '@loaders.gl/loader-utils';\n\nimport {createTypedArrayFromAccessor} from './helpers/tile-3d-accessor-utils';\nimport {initializeHierarchy, traverseHierarchy} from './tile-3d-batch-table-hierarchy';\n\nfunction defined(x) {\n return x !== undefined && x !== null;\n}\n\nconst clone = (x, y) => x;\n\n// These top level fields in the batch table json are not properties\nconst IGNORED_PROPERTY_FIELDS = {\n HIERARCHY: true, // Deprecated HIERARCHY property\n extensions: true,\n extras: true\n};\n\n// The size of this array equals the maximum instance count among all loaded tiles, which has the potential to be large.\nexport default class Tile3DBatchTableParser {\n json;\n binary;\n featureCount;\n _extensions;\n // Copy all top-level property fields from the json object, ignoring special fields\n _properties;\n _binaryProperties;\n // TODO: hierarchy support is only partially implemented and not tested\n _hierarchy;\n\n constructor(json, binary, featureCount, options = {}) {\n assert(featureCount >= 0);\n this.json = json || {};\n this.binary = binary;\n this.featureCount = featureCount;\n\n this._extensions = this.json?.extensions || {};\n\n // Copy all top-level property fields from the json object, ignoring special fields\n this._properties = {};\n for (const propertyName in this.json) {\n if (!IGNORED_PROPERTY_FIELDS[propertyName]) {\n this._properties[propertyName] = this.json[propertyName];\n }\n }\n\n this._binaryProperties = this._initializeBinaryProperties();\n\n // TODO: hierarchy support is only partially implemented and not tested\n if (options['3DTILES_batch_table_hierarchy']) {\n this._hierarchy = initializeHierarchy(this, this.json, this.binary);\n }\n }\n\n getExtension(extensionName) {\n return this.json && this.json.extensions && this.json.extensions[extensionName];\n }\n\n memorySizeInBytes(): number {\n return 0;\n }\n\n isClass(batchId, className: string): boolean {\n this._checkBatchId(batchId);\n assert(typeof className === 'string', className);\n\n // extension: 3DTILES_batch_table_hierarchy\n if (this._hierarchy) {\n // PERFORMANCE_IDEA : cache results in the ancestor classes\n // to speed up this check if this area becomes a hotspot\n // PERFORMANCE_IDEA : treat class names as integers for faster comparisons\n const result = traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {\n const classId = hierarchy.classIds[instanceIndex];\n const instanceClass = hierarchy.classes[classId];\n return instanceClass.name === className;\n });\n return defined(result);\n }\n\n return false;\n }\n\n isExactClass(batchId, className) {\n assert(typeof className === 'string', className);\n\n return this.getExactClassName(batchId) === className;\n }\n\n getExactClassName(batchId) {\n this._checkBatchId(batchId);\n\n // extension: 3DTILES_batch_table_hierarchy\n if (this._hierarchy) {\n const classId = this._hierarchy.classIds[batchId];\n const instanceClass = this._hierarchy.classes[classId];\n return instanceClass.name;\n }\n\n return undefined;\n }\n\n hasProperty(batchId, name) {\n this._checkBatchId(batchId);\n assert(typeof name === 'string', name);\n\n return defined(this._properties[name]) || this._hasPropertyInHierarchy(batchId, name);\n }\n\n getPropertyNames(batchId, results) {\n this._checkBatchId(batchId);\n\n results = defined(results) ? results : [];\n results.length = 0;\n\n const propertyNames = Object.keys(this._properties);\n results.push(...propertyNames);\n\n if (this._hierarchy) {\n this._getPropertyNamesInHierarchy(batchId, results);\n }\n\n return results;\n }\n\n getProperty(batchId, name) {\n this._checkBatchId(batchId);\n assert(typeof name === 'string', name);\n\n if (this._binaryProperties) {\n const binaryProperty = this._binaryProperties[name];\n if (defined(binaryProperty)) {\n return this._getBinaryProperty(binaryProperty, batchId);\n }\n }\n\n const propertyValues = this._properties[name];\n if (defined(propertyValues)) {\n return clone(propertyValues[batchId], true);\n }\n\n // EXTENSION: 3DTILES_batch_table_hierarchy\n if (this._hierarchy) {\n const hierarchyProperty = this._getHierarchyProperty(batchId, name);\n if (defined(hierarchyProperty)) {\n return hierarchyProperty;\n }\n }\n\n return undefined;\n }\n\n setProperty(batchId, name, value) {\n const featureCount = this.featureCount;\n\n this._checkBatchId(batchId);\n assert(typeof name === 'string', name);\n\n if (this._binaryProperties) {\n const binaryProperty = this._binaryProperties[name];\n if (binaryProperty) {\n this._setBinaryProperty(binaryProperty, batchId, value);\n return;\n }\n }\n\n // EXTENSION: 3DTILES_batch_table_hierarchy\n if (this._hierarchy) {\n if (this._setHierarchyProperty(this, batchId, name, value)) {\n return;\n }\n }\n\n let propertyValues = this._properties[name];\n if (!defined(propertyValues)) {\n // Property does not exist. Create it.\n this._properties[name] = new Array(featureCount);\n propertyValues = this._properties[name];\n }\n\n propertyValues[batchId] = clone(value, true);\n }\n\n // PRIVATE METHODS\n\n _checkBatchId(batchId) {\n const valid = batchId >= 0 && batchId < this.featureCount;\n if (!valid) {\n throw new Error('batchId not in range [0, featureCount - 1].');\n }\n }\n\n _getBinaryProperty(binaryProperty, index) {\n return binaryProperty.unpack(binaryProperty.typedArray, index);\n }\n\n _setBinaryProperty(binaryProperty, index, value) {\n binaryProperty.pack(value, binaryProperty.typedArray, index);\n }\n\n _initializeBinaryProperties() {\n let binaryProperties: Record<string, any> | null = null;\n for (const name in this._properties) {\n const property = this._properties[name];\n const binaryProperty = this._initializeBinaryProperty(name, property);\n // Store any information needed to access the binary data, including the typed array,\n // componentCount (e.g. a VEC4 would be 4), and the type used to pack and unpack (e.g. Cartesian4).\n if (binaryProperty) {\n binaryProperties = binaryProperties || {};\n binaryProperties[name] = binaryProperty;\n }\n }\n return binaryProperties;\n }\n\n _initializeBinaryProperty(name, property) {\n if ('byteOffset' in property) {\n // This is a binary property\n const tile3DAccessor = property;\n\n assert(this.binary, `Property ${name} requires a batch table binary.`);\n assert(tile3DAccessor.type, `Property ${name} requires a type.`);\n\n const accessor = createTypedArrayFromAccessor(\n tile3DAccessor,\n this.binary.buffer,\n this.binary.byteOffset | 0,\n this.featureCount\n );\n\n // Store any information needed to access the binary data, including the typed array,\n // componentCount (e.g. a VEC4 would be 4), and the type used to pack and unpack (e.g. Cartesian4).\n return {\n typedArray: accessor.values,\n componentCount: accessor.size,\n unpack: accessor.unpacker,\n pack: accessor.packer\n };\n }\n\n return null;\n }\n\n // EXTENSION SUPPORT: 3DTILES_batch_table_hierarchy\n\n _hasPropertyInHierarchy(batchId, name) {\n if (!this._hierarchy) {\n return false;\n }\n\n const result = traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {\n const classId = hierarchy.classIds[instanceIndex];\n const instances = hierarchy.classes[classId].instances;\n return defined(instances[name]);\n });\n\n return defined(result);\n }\n\n _getPropertyNamesInHierarchy(batchId, results) {\n traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {\n const classId = hierarchy.classIds[instanceIndex];\n const instances = hierarchy.classes[classId].instances;\n for (const name in instances) {\n if (instances.hasOwnProperty(name)) {\n if (results.indexOf(name) === -1) {\n results.push(name);\n }\n }\n }\n });\n }\n\n _getHierarchyProperty(batchId, name) {\n return traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {\n const classId = hierarchy.classIds[instanceIndex];\n const instanceClass = hierarchy.classes[classId];\n const indexInClass = hierarchy.classIndexes[instanceIndex];\n const propertyValues = instanceClass.instances[name];\n if (defined(propertyValues)) {\n if (defined(propertyValues.typedArray)) {\n return this._getBinaryProperty(propertyValues, indexInClass);\n }\n return clone(propertyValues[indexInClass], true);\n }\n return null;\n });\n }\n\n _setHierarchyProperty(batchTable, batchId, name, value) {\n const result = traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {\n const classId = hierarchy.classIds[instanceIndex];\n const instanceClass = hierarchy.classes[classId];\n const indexInClass = hierarchy.classIndexes[instanceIndex];\n const propertyValues = instanceClass.instances[name];\n if (defined(propertyValues)) {\n assert(instanceIndex === batchId, `Inherited property \"${name}\" is read-only.`);\n if (defined(propertyValues.typedArray)) {\n this._setBinaryProperty(propertyValues, indexInClass, value);\n } else {\n propertyValues[indexInClass] = clone(value, true);\n }\n return true;\n }\n return false;\n });\n return defined(result);\n }\n}\n"],"file":"tile-3d-batch-table.js"}
|
|
1
|
+
{"version":3,"file":"tile-3d-batch-table.js","names":["assert","createTypedArrayFromAccessor","initializeHierarchy","traverseHierarchy","defined","x","undefined","clone","y","IGNORED_PROPERTY_FIELDS","HIERARCHY","extensions","extras","Tile3DBatchTableParser","constructor","json","binary","featureCount","options","_extensions","_properties","propertyName","_binaryProperties","_initializeBinaryProperties","_hierarchy","getExtension","extensionName","memorySizeInBytes","isClass","batchId","className","_checkBatchId","result","hierarchy","instanceIndex","classId","classIds","instanceClass","classes","name","isExactClass","getExactClassName","hasProperty","_hasPropertyInHierarchy","getPropertyNames","results","length","propertyNames","Object","keys","push","_getPropertyNamesInHierarchy","getProperty","binaryProperty","_getBinaryProperty","propertyValues","hierarchyProperty","_getHierarchyProperty","setProperty","value","_setBinaryProperty","_setHierarchyProperty","Array","valid","Error","index","unpack","typedArray","pack","binaryProperties","property","_initializeBinaryProperty","tile3DAccessor","type","accessor","buffer","byteOffset","values","componentCount","size","unpacker","packer","instances","hasOwnProperty","indexOf","indexInClass","classIndexes","batchTable"],"sources":["../../../../src/lib/classes/tile-3d-batch-table.ts"],"sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport {assert} from '@loaders.gl/loader-utils';\n\nimport {createTypedArrayFromAccessor} from './helpers/tile-3d-accessor-utils';\nimport {initializeHierarchy, traverseHierarchy} from './tile-3d-batch-table-hierarchy';\n\nfunction defined(x) {\n return x !== undefined && x !== null;\n}\n\nconst clone = (x, y) => x;\n\n// These top level fields in the batch table json are not properties\nconst IGNORED_PROPERTY_FIELDS = {\n HIERARCHY: true, // Deprecated HIERARCHY property\n extensions: true,\n extras: true\n};\n\n// The size of this array equals the maximum instance count among all loaded tiles, which has the potential to be large.\nexport default class Tile3DBatchTableParser {\n json;\n binary;\n featureCount;\n _extensions;\n // Copy all top-level property fields from the json object, ignoring special fields\n _properties;\n _binaryProperties;\n // TODO: hierarchy support is only partially implemented and not tested\n _hierarchy;\n\n constructor(json, binary, featureCount, options = {}) {\n assert(featureCount >= 0);\n this.json = json || {};\n this.binary = binary;\n this.featureCount = featureCount;\n\n this._extensions = this.json?.extensions || {};\n\n // Copy all top-level property fields from the json object, ignoring special fields\n this._properties = {};\n for (const propertyName in this.json) {\n if (!IGNORED_PROPERTY_FIELDS[propertyName]) {\n this._properties[propertyName] = this.json[propertyName];\n }\n }\n\n this._binaryProperties = this._initializeBinaryProperties();\n\n // TODO: hierarchy support is only partially implemented and not tested\n if (options['3DTILES_batch_table_hierarchy']) {\n this._hierarchy = initializeHierarchy(this, this.json, this.binary);\n }\n }\n\n getExtension(extensionName) {\n return this.json && this.json.extensions && this.json.extensions[extensionName];\n }\n\n memorySizeInBytes(): number {\n return 0;\n }\n\n isClass(batchId, className: string): boolean {\n this._checkBatchId(batchId);\n assert(typeof className === 'string', className);\n\n // extension: 3DTILES_batch_table_hierarchy\n if (this._hierarchy) {\n // PERFORMANCE_IDEA : cache results in the ancestor classes\n // to speed up this check if this area becomes a hotspot\n // PERFORMANCE_IDEA : treat class names as integers for faster comparisons\n const result = traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {\n const classId = hierarchy.classIds[instanceIndex];\n const instanceClass = hierarchy.classes[classId];\n return instanceClass.name === className;\n });\n return defined(result);\n }\n\n return false;\n }\n\n isExactClass(batchId, className) {\n assert(typeof className === 'string', className);\n\n return this.getExactClassName(batchId) === className;\n }\n\n getExactClassName(batchId) {\n this._checkBatchId(batchId);\n\n // extension: 3DTILES_batch_table_hierarchy\n if (this._hierarchy) {\n const classId = this._hierarchy.classIds[batchId];\n const instanceClass = this._hierarchy.classes[classId];\n return instanceClass.name;\n }\n\n return undefined;\n }\n\n hasProperty(batchId, name) {\n this._checkBatchId(batchId);\n assert(typeof name === 'string', name);\n\n return defined(this._properties[name]) || this._hasPropertyInHierarchy(batchId, name);\n }\n\n getPropertyNames(batchId, results) {\n this._checkBatchId(batchId);\n\n results = defined(results) ? results : [];\n results.length = 0;\n\n const propertyNames = Object.keys(this._properties);\n results.push(...propertyNames);\n\n if (this._hierarchy) {\n this._getPropertyNamesInHierarchy(batchId, results);\n }\n\n return results;\n }\n\n getProperty(batchId, name) {\n this._checkBatchId(batchId);\n assert(typeof name === 'string', name);\n\n if (this._binaryProperties) {\n const binaryProperty = this._binaryProperties[name];\n if (defined(binaryProperty)) {\n return this._getBinaryProperty(binaryProperty, batchId);\n }\n }\n\n const propertyValues = this._properties[name];\n if (defined(propertyValues)) {\n return clone(propertyValues[batchId], true);\n }\n\n // EXTENSION: 3DTILES_batch_table_hierarchy\n if (this._hierarchy) {\n const hierarchyProperty = this._getHierarchyProperty(batchId, name);\n if (defined(hierarchyProperty)) {\n return hierarchyProperty;\n }\n }\n\n return undefined;\n }\n\n setProperty(batchId, name, value) {\n const featureCount = this.featureCount;\n\n this._checkBatchId(batchId);\n assert(typeof name === 'string', name);\n\n if (this._binaryProperties) {\n const binaryProperty = this._binaryProperties[name];\n if (binaryProperty) {\n this._setBinaryProperty(binaryProperty, batchId, value);\n return;\n }\n }\n\n // EXTENSION: 3DTILES_batch_table_hierarchy\n if (this._hierarchy) {\n if (this._setHierarchyProperty(this, batchId, name, value)) {\n return;\n }\n }\n\n let propertyValues = this._properties[name];\n if (!defined(propertyValues)) {\n // Property does not exist. Create it.\n this._properties[name] = new Array(featureCount);\n propertyValues = this._properties[name];\n }\n\n propertyValues[batchId] = clone(value, true);\n }\n\n // PRIVATE METHODS\n\n _checkBatchId(batchId) {\n const valid = batchId >= 0 && batchId < this.featureCount;\n if (!valid) {\n throw new Error('batchId not in range [0, featureCount - 1].');\n }\n }\n\n _getBinaryProperty(binaryProperty, index) {\n return binaryProperty.unpack(binaryProperty.typedArray, index);\n }\n\n _setBinaryProperty(binaryProperty, index, value) {\n binaryProperty.pack(value, binaryProperty.typedArray, index);\n }\n\n _initializeBinaryProperties() {\n let binaryProperties: Record<string, any> | null = null;\n for (const name in this._properties) {\n const property = this._properties[name];\n const binaryProperty = this._initializeBinaryProperty(name, property);\n // Store any information needed to access the binary data, including the typed array,\n // componentCount (e.g. a VEC4 would be 4), and the type used to pack and unpack (e.g. Cartesian4).\n if (binaryProperty) {\n binaryProperties = binaryProperties || {};\n binaryProperties[name] = binaryProperty;\n }\n }\n return binaryProperties;\n }\n\n _initializeBinaryProperty(name, property) {\n if ('byteOffset' in property) {\n // This is a binary property\n const tile3DAccessor = property;\n\n assert(this.binary, `Property ${name} requires a batch table binary.`);\n assert(tile3DAccessor.type, `Property ${name} requires a type.`);\n\n const accessor = createTypedArrayFromAccessor(\n tile3DAccessor,\n this.binary.buffer,\n this.binary.byteOffset | 0,\n this.featureCount\n );\n\n // Store any information needed to access the binary data, including the typed array,\n // componentCount (e.g. a VEC4 would be 4), and the type used to pack and unpack (e.g. Cartesian4).\n return {\n typedArray: accessor.values,\n componentCount: accessor.size,\n unpack: accessor.unpacker,\n pack: accessor.packer\n };\n }\n\n return null;\n }\n\n // EXTENSION SUPPORT: 3DTILES_batch_table_hierarchy\n\n _hasPropertyInHierarchy(batchId, name) {\n if (!this._hierarchy) {\n return false;\n }\n\n const result = traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {\n const classId = hierarchy.classIds[instanceIndex];\n const instances = hierarchy.classes[classId].instances;\n return defined(instances[name]);\n });\n\n return defined(result);\n }\n\n _getPropertyNamesInHierarchy(batchId, results) {\n traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {\n const classId = hierarchy.classIds[instanceIndex];\n const instances = hierarchy.classes[classId].instances;\n for (const name in instances) {\n if (instances.hasOwnProperty(name)) {\n if (results.indexOf(name) === -1) {\n results.push(name);\n }\n }\n }\n });\n }\n\n _getHierarchyProperty(batchId, name) {\n return traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {\n const classId = hierarchy.classIds[instanceIndex];\n const instanceClass = hierarchy.classes[classId];\n const indexInClass = hierarchy.classIndexes[instanceIndex];\n const propertyValues = instanceClass.instances[name];\n if (defined(propertyValues)) {\n if (defined(propertyValues.typedArray)) {\n return this._getBinaryProperty(propertyValues, indexInClass);\n }\n return clone(propertyValues[indexInClass], true);\n }\n return null;\n });\n }\n\n _setHierarchyProperty(batchTable, batchId, name, value) {\n const result = traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {\n const classId = hierarchy.classIds[instanceIndex];\n const instanceClass = hierarchy.classes[classId];\n const indexInClass = hierarchy.classIndexes[instanceIndex];\n const propertyValues = instanceClass.instances[name];\n if (defined(propertyValues)) {\n assert(instanceIndex === batchId, `Inherited property \"${name}\" is read-only.`);\n if (defined(propertyValues.typedArray)) {\n this._setBinaryProperty(propertyValues, indexInClass, value);\n } else {\n propertyValues[indexInClass] = clone(value, true);\n }\n return true;\n }\n return false;\n });\n return defined(result);\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,94 +1,73 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
+
|
|
2
3
|
import { GL, GLType } from '@loaders.gl/math';
|
|
4
|
+
|
|
3
5
|
export default class Tile3DFeatureTable {
|
|
4
6
|
constructor(featureTableJson, featureTableBinary) {
|
|
5
7
|
_defineProperty(this, "json", void 0);
|
|
6
|
-
|
|
7
8
|
_defineProperty(this, "buffer", void 0);
|
|
8
|
-
|
|
9
9
|
_defineProperty(this, "featuresLength", 0);
|
|
10
|
-
|
|
11
10
|
_defineProperty(this, "_cachedTypedArrays", {});
|
|
12
|
-
|
|
13
11
|
this.json = featureTableJson;
|
|
14
12
|
this.buffer = featureTableBinary;
|
|
15
13
|
}
|
|
16
|
-
|
|
17
14
|
getExtension(extensionName) {
|
|
18
15
|
return this.json.extensions && this.json.extensions[extensionName];
|
|
19
16
|
}
|
|
20
|
-
|
|
21
17
|
hasProperty(propertyName) {
|
|
22
18
|
return Boolean(this.json[propertyName]);
|
|
23
19
|
}
|
|
24
|
-
|
|
25
|
-
|
|
20
|
+
getGlobalProperty(propertyName) {
|
|
21
|
+
let componentType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : GL.UNSIGNED_INT;
|
|
22
|
+
let componentLength = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
|
|
26
23
|
const jsonValue = this.json[propertyName];
|
|
27
|
-
|
|
28
24
|
if (jsonValue && Number.isFinite(jsonValue.byteOffset)) {
|
|
29
25
|
return this._getTypedArrayFromBinary(propertyName, componentType, componentLength, 1, jsonValue.byteOffset);
|
|
30
26
|
}
|
|
31
|
-
|
|
32
27
|
return jsonValue;
|
|
33
28
|
}
|
|
34
|
-
|
|
35
29
|
getPropertyArray(propertyName, componentType, componentLength) {
|
|
36
30
|
const jsonValue = this.json[propertyName];
|
|
37
|
-
|
|
38
31
|
if (jsonValue && Number.isFinite(jsonValue.byteOffset)) {
|
|
39
32
|
if ('componentType' in jsonValue) {
|
|
40
33
|
componentType = GLType.fromName(jsonValue.componentType);
|
|
41
34
|
}
|
|
42
|
-
|
|
43
35
|
return this._getTypedArrayFromBinary(propertyName, componentType, componentLength, this.featuresLength, jsonValue.byteOffset);
|
|
44
36
|
}
|
|
45
|
-
|
|
46
37
|
return this._getTypedArrayFromArray(propertyName, componentType, jsonValue);
|
|
47
38
|
}
|
|
48
|
-
|
|
49
39
|
getProperty(propertyName, componentType, componentLength, featureId, result) {
|
|
50
40
|
const jsonValue = this.json[propertyName];
|
|
51
|
-
|
|
52
41
|
if (!jsonValue) {
|
|
53
42
|
return jsonValue;
|
|
54
43
|
}
|
|
55
|
-
|
|
56
44
|
const typedArray = this.getPropertyArray(propertyName, componentType, componentLength);
|
|
57
|
-
|
|
58
45
|
if (componentLength === 1) {
|
|
59
46
|
return typedArray[featureId];
|
|
60
47
|
}
|
|
61
|
-
|
|
62
48
|
for (let i = 0; i < componentLength; ++i) {
|
|
63
49
|
result[i] = typedArray[componentLength * featureId + i];
|
|
64
50
|
}
|
|
65
|
-
|
|
66
51
|
return result;
|
|
67
52
|
}
|
|
68
53
|
|
|
69
54
|
_getTypedArrayFromBinary(propertyName, componentType, componentLength, count, byteOffset) {
|
|
70
55
|
const cachedTypedArrays = this._cachedTypedArrays;
|
|
71
56
|
let typedArray = cachedTypedArrays[propertyName];
|
|
72
|
-
|
|
73
57
|
if (!typedArray) {
|
|
74
58
|
typedArray = GLType.createTypedArray(componentType, this.buffer.buffer, this.buffer.byteOffset + byteOffset, count * componentLength);
|
|
75
59
|
cachedTypedArrays[propertyName] = typedArray;
|
|
76
60
|
}
|
|
77
|
-
|
|
78
61
|
return typedArray;
|
|
79
62
|
}
|
|
80
|
-
|
|
81
63
|
_getTypedArrayFromArray(propertyName, componentType, array) {
|
|
82
64
|
const cachedTypedArrays = this._cachedTypedArrays;
|
|
83
65
|
let typedArray = cachedTypedArrays[propertyName];
|
|
84
|
-
|
|
85
66
|
if (!typedArray) {
|
|
86
67
|
typedArray = GLType.createTypedArray(componentType, array);
|
|
87
68
|
cachedTypedArrays[propertyName] = typedArray;
|
|
88
69
|
}
|
|
89
|
-
|
|
90
70
|
return typedArray;
|
|
91
71
|
}
|
|
92
|
-
|
|
93
72
|
}
|
|
94
73
|
//# sourceMappingURL=tile-3d-feature-table.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"tile-3d-feature-table.js","names":["GL","GLType","Tile3DFeatureTable","constructor","featureTableJson","featureTableBinary","json","buffer","getExtension","extensionName","extensions","hasProperty","propertyName","Boolean","getGlobalProperty","componentType","UNSIGNED_INT","componentLength","jsonValue","Number","isFinite","byteOffset","_getTypedArrayFromBinary","getPropertyArray","fromName","featuresLength","_getTypedArrayFromArray","getProperty","featureId","result","typedArray","i","count","cachedTypedArrays","_cachedTypedArrays","createTypedArray","array"],"sources":["../../../../src/lib/classes/tile-3d-feature-table.ts"],"sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport {GL, GLType} from '@loaders.gl/math';\n\n// Reference:\n// https://github.com/AnalyticalGraphicsInc/cesium/blob/1de96d087f0b17575eb1a3f736407b348c765d59/Source/Scene/Cesium3DTileFeatureTable.js\nexport default class Tile3DFeatureTable {\n json;\n buffer;\n featuresLength = 0;\n _cachedTypedArrays = {};\n\n constructor(featureTableJson, featureTableBinary) {\n this.json = featureTableJson;\n this.buffer = featureTableBinary;\n }\n\n getExtension(extensionName) {\n return this.json.extensions && this.json.extensions[extensionName];\n }\n\n hasProperty(propertyName) {\n return Boolean(this.json[propertyName]);\n }\n\n getGlobalProperty(propertyName, componentType = GL.UNSIGNED_INT, componentLength = 1) {\n const jsonValue = this.json[propertyName];\n\n if (jsonValue && Number.isFinite(jsonValue.byteOffset)) {\n return this._getTypedArrayFromBinary(\n propertyName,\n componentType,\n componentLength,\n 1,\n jsonValue.byteOffset\n );\n }\n\n return jsonValue;\n }\n\n getPropertyArray(propertyName, componentType, componentLength) {\n const jsonValue = this.json[propertyName];\n\n if (jsonValue && Number.isFinite(jsonValue.byteOffset)) {\n if ('componentType' in jsonValue) {\n componentType = GLType.fromName(jsonValue.componentType);\n }\n return this._getTypedArrayFromBinary(\n propertyName,\n componentType,\n componentLength,\n this.featuresLength,\n jsonValue.byteOffset\n );\n }\n\n return this._getTypedArrayFromArray(propertyName, componentType, jsonValue);\n }\n\n getProperty(propertyName, componentType, componentLength, featureId, result) {\n const jsonValue = this.json[propertyName];\n if (!jsonValue) {\n return jsonValue;\n }\n\n const typedArray = this.getPropertyArray(propertyName, componentType, componentLength);\n\n if (componentLength === 1) {\n return typedArray[featureId];\n }\n\n for (let i = 0; i < componentLength; ++i) {\n result[i] = typedArray[componentLength * featureId + i];\n }\n\n return result;\n }\n\n // HELPERS\n\n _getTypedArrayFromBinary(propertyName, componentType, componentLength, count, byteOffset) {\n const cachedTypedArrays = this._cachedTypedArrays;\n let typedArray = cachedTypedArrays[propertyName];\n if (!typedArray) {\n typedArray = GLType.createTypedArray(\n componentType,\n this.buffer.buffer,\n this.buffer.byteOffset + byteOffset,\n count * componentLength\n );\n cachedTypedArrays[propertyName] = typedArray;\n }\n return typedArray;\n }\n\n _getTypedArrayFromArray(propertyName, componentType, array) {\n const cachedTypedArrays = this._cachedTypedArrays;\n let typedArray = cachedTypedArrays[propertyName];\n if (!typedArray) {\n typedArray = GLType.createTypedArray(componentType, array);\n cachedTypedArrays[propertyName] = typedArray;\n }\n return typedArray;\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
1
3
|
export const TILE3D_TYPE = {
|
|
2
4
|
COMPOSITE: 'cmpt',
|
|
3
5
|
POINT_CLOUD: 'pnts',
|
|
@@ -14,6 +16,7 @@ export const MAGIC_ARRAY = {
|
|
|
14
16
|
POINT_CLOUD: [112, 110, 116, 115],
|
|
15
17
|
COMPOSITE: [99, 109, 112, 116]
|
|
16
18
|
};
|
|
19
|
+
|
|
17
20
|
export const TILE3D_OPTIMIZATION_HINT = {
|
|
18
21
|
NOT_COMPUTED: -1,
|
|
19
22
|
USE_OPTIMIZATION: 1,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"constants.js","names":["TILE3D_TYPE","COMPOSITE","POINT_CLOUD","BATCHED_3D_MODEL","INSTANCED_3D_MODEL","GEOMETRY","VECTOR","GLTF","TILE3D_TYPES","Object","keys","MAGIC_ARRAY","BATCHED_MODEL","INSTANCED_MODEL","TILE3D_OPTIMIZATION_HINT","NOT_COMPUTED","USE_OPTIMIZATION","SKIP_OPTIMIZATION"],"sources":["../../../src/lib/constants.ts"],"sourcesContent":["// TILE TYPES\n\nexport const TILE3D_TYPE = {\n COMPOSITE: 'cmpt',\n POINT_CLOUD: 'pnts',\n BATCHED_3D_MODEL: 'b3dm',\n INSTANCED_3D_MODEL: 'i3dm',\n GEOMETRY: 'geom',\n VECTOR: 'vect',\n GLTF: 'glTF'\n};\n\nexport const TILE3D_TYPES = Object.keys(TILE3D_TYPE);\n\nexport const MAGIC_ARRAY = {\n BATCHED_MODEL: [98, 51, 100, 109],\n INSTANCED_MODEL: [105, 51, 100, 109],\n POINT_CLOUD: [112, 110, 116, 115],\n COMPOSITE: [99, 109, 112, 116]\n};\n\n// TILE CONSTANTS\nexport const TILE3D_OPTIMIZATION_HINT = {\n NOT_COMPUTED: -1,\n USE_OPTIMIZATION: 1,\n SKIP_OPTIMIZATION: 0\n};\n"],"mappings":";;AAEA,OAAO,MAAMA,WAAW,GAAG;EACzBC,SAAS,EAAE,MAAM;EACjBC,WAAW,EAAE,MAAM;EACnBC,gBAAgB,EAAE,MAAM;EACxBC,kBAAkB,EAAE,MAAM;EAC1BC,QAAQ,EAAE,MAAM;EAChBC,MAAM,EAAE,MAAM;EACdC,IAAI,EAAE;AACR,CAAC;AAED,OAAO,MAAMC,YAAY,GAAGC,MAAM,CAACC,IAAI,CAACV,WAAW,CAAC;AAEpD,OAAO,MAAMW,WAAW,GAAG;EACzBC,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;EACjCC,eAAe,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;EACpCX,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACjCD,SAAS,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC/B,CAAC;;AAGD,OAAO,MAAMa,wBAAwB,GAAG;EACtCC,YAAY,EAAE,CAAC,CAAC;EAChBC,gBAAgB,EAAE,CAAC;EACnBC,iBAAiB,EAAE;AACrB,CAAC"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
1
3
|
import { padToNBytes, copyBinaryToDataView, copyPaddedStringToDataView } from '@loaders.gl/loader-utils';
|
|
2
4
|
import { MAGIC_ARRAY } from '../constants';
|
|
3
5
|
import { encode3DTileHeader, encode3DTileByteLength } from './helpers/encode-3d-tile-header';
|
|
6
|
+
|
|
4
7
|
export function encodeBatchedModel3DTile(tile, dataView, byteOffset, options) {
|
|
5
8
|
const {
|
|
6
9
|
featuresLength = 0,
|
|
@@ -13,13 +16,13 @@ export function encodeBatchedModel3DTile(tile, dataView, byteOffset, options) {
|
|
|
13
16
|
const batchTableJsonString = batchTable ? JSON.stringify(batchTable) : '';
|
|
14
17
|
const featureTableJsonByteLength = padToNBytes(featureTableJsonString.length, 8);
|
|
15
18
|
const batchTableJsonByteLength = batchTableJsonString ? padToNBytes(batchTableJsonString.length, 8) : 0;
|
|
19
|
+
|
|
16
20
|
tile = {
|
|
17
21
|
magic: MAGIC_ARRAY.BATCHED_MODEL,
|
|
18
22
|
...tile
|
|
19
23
|
};
|
|
20
24
|
const byteOffsetStart = byteOffset;
|
|
21
25
|
byteOffset = encode3DTileHeader(tile, dataView, byteOffset);
|
|
22
|
-
|
|
23
26
|
if (dataView) {
|
|
24
27
|
dataView.setUint32(12, featureTableJsonByteLength, true);
|
|
25
28
|
dataView.setUint32(16, 0, true);
|
|
@@ -28,14 +31,13 @@ export function encodeBatchedModel3DTile(tile, dataView, byteOffset, options) {
|
|
|
28
31
|
}
|
|
29
32
|
|
|
30
33
|
byteOffset += 16;
|
|
31
|
-
byteOffset = copyPaddedStringToDataView(dataView, byteOffset, featureTableJsonString, 8);
|
|
32
34
|
|
|
35
|
+
byteOffset = copyPaddedStringToDataView(dataView, byteOffset, featureTableJsonString, 8);
|
|
33
36
|
if (batchTable) {
|
|
34
37
|
byteOffset = copyPaddedStringToDataView(dataView, byteOffset, batchTableJsonString, 8);
|
|
35
38
|
}
|
|
36
39
|
|
|
37
40
|
const gltfEncoded = tile.gltfEncoded;
|
|
38
|
-
|
|
39
41
|
if (gltfEncoded) {
|
|
40
42
|
byteOffset = copyBinaryToDataView(dataView, byteOffset, gltfEncoded, gltfEncoded.byteLength);
|
|
41
43
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"encode-3d-tile-batched-model.js","names":["padToNBytes","copyBinaryToDataView","copyPaddedStringToDataView","MAGIC_ARRAY","encode3DTileHeader","encode3DTileByteLength","encodeBatchedModel3DTile","tile","dataView","byteOffset","options","featuresLength","batchTable","featureTableJson","BATCH_LENGTH","featureTableJsonString","JSON","stringify","batchTableJsonString","featureTableJsonByteLength","length","batchTableJsonByteLength","magic","BATCHED_MODEL","byteOffsetStart","setUint32","gltfEncoded","byteLength"],"sources":["../../../../src/lib/encoders/encode-3d-tile-batched-model.ts"],"sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport {\n padToNBytes,\n copyBinaryToDataView,\n copyPaddedStringToDataView\n} from '@loaders.gl/loader-utils';\nimport {MAGIC_ARRAY} from '../constants';\nimport {encode3DTileHeader, encode3DTileByteLength} from './helpers/encode-3d-tile-header';\n\n// Procedurally encode the tile array dataView for testing purposes\nexport function encodeBatchedModel3DTile(tile, dataView, byteOffset, options) {\n const {featuresLength = 0, batchTable} = tile;\n\n const featureTableJson = {\n BATCH_LENGTH: featuresLength\n };\n const featureTableJsonString = JSON.stringify(featureTableJson);\n const batchTableJsonString = batchTable ? JSON.stringify(batchTable) : '';\n const featureTableJsonByteLength = padToNBytes(featureTableJsonString.length, 8);\n const batchTableJsonByteLength = batchTableJsonString\n ? padToNBytes(batchTableJsonString.length, 8)\n : 0;\n\n // Add default magic for this tile type\n tile = {magic: MAGIC_ARRAY.BATCHED_MODEL, ...tile};\n\n const byteOffsetStart = byteOffset;\n\n byteOffset = encode3DTileHeader(tile, dataView, byteOffset);\n\n if (dataView) {\n dataView.setUint32(12, featureTableJsonByteLength, true); // featureTableJsonByteLength\n dataView.setUint32(16, 0, true); // featureTableBinaryByteLength\n dataView.setUint32(20, batchTableJsonByteLength, true); // batchTableJsonByteLength\n dataView.setUint32(24, 0, true); // batchTableBinaryByteLength\n }\n byteOffset += 16;\n\n // TODO feature table binary\n byteOffset = copyPaddedStringToDataView(dataView, byteOffset, featureTableJsonString, 8);\n\n if (batchTable) {\n byteOffset = copyPaddedStringToDataView(dataView, byteOffset, batchTableJsonString, 8);\n }\n\n // Add encoded GLTF to the end of data\n const gltfEncoded = tile.gltfEncoded;\n if (gltfEncoded) {\n byteOffset = copyBinaryToDataView(dataView, byteOffset, gltfEncoded, gltfEncoded.byteLength);\n }\n\n // Go \"back\" and rewrite the tile's `byteLength` now that we know the value\n encode3DTileByteLength(dataView, byteOffsetStart, byteOffset - byteOffsetStart);\n\n return byteOffset;\n}\n"],"mappings":";;AAGA,SACEA,WAAW,EACXC,oBAAoB,EACpBC,0BAA0B,QACrB,0BAA0B;AACjC,SAAQC,WAAW,QAAO,cAAc;AACxC,SAAQC,kBAAkB,EAAEC,sBAAsB,QAAO,iCAAiC;;AAG1F,OAAO,SAASC,wBAAwB,CAACC,IAAI,EAAEC,QAAQ,EAAEC,UAAU,EAAEC,OAAO,EAAE;EAC5E,MAAM;IAACC,cAAc,GAAG,CAAC;IAAEC;EAAU,CAAC,GAAGL,IAAI;EAE7C,MAAMM,gBAAgB,GAAG;IACvBC,YAAY,EAAEH;EAChB,CAAC;EACD,MAAMI,sBAAsB,GAAGC,IAAI,CAACC,SAAS,CAACJ,gBAAgB,CAAC;EAC/D,MAAMK,oBAAoB,GAAGN,UAAU,GAAGI,IAAI,CAACC,SAAS,CAACL,UAAU,CAAC,GAAG,EAAE;EACzE,MAAMO,0BAA0B,GAAGnB,WAAW,CAACe,sBAAsB,CAACK,MAAM,EAAE,CAAC,CAAC;EAChF,MAAMC,wBAAwB,GAAGH,oBAAoB,GACjDlB,WAAW,CAACkB,oBAAoB,CAACE,MAAM,EAAE,CAAC,CAAC,GAC3C,CAAC;;EAGLb,IAAI,GAAG;IAACe,KAAK,EAAEnB,WAAW,CAACoB,aAAa;IAAE,GAAGhB;EAAI,CAAC;EAElD,MAAMiB,eAAe,GAAGf,UAAU;EAElCA,UAAU,GAAGL,kBAAkB,CAACG,IAAI,EAAEC,QAAQ,EAAEC,UAAU,CAAC;EAE3D,IAAID,QAAQ,EAAE;IACZA,QAAQ,CAACiB,SAAS,CAAC,EAAE,EAAEN,0BAA0B,EAAE,IAAI,CAAC;IACxDX,QAAQ,CAACiB,SAAS,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC;IAC/BjB,QAAQ,CAACiB,SAAS,CAAC,EAAE,EAAEJ,wBAAwB,EAAE,IAAI,CAAC;IACtDb,QAAQ,CAACiB,SAAS,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC;EACjC;;EACAhB,UAAU,IAAI,EAAE;;EAGhBA,UAAU,GAAGP,0BAA0B,CAACM,QAAQ,EAAEC,UAAU,EAAEM,sBAAsB,EAAE,CAAC,CAAC;EAExF,IAAIH,UAAU,EAAE;IACdH,UAAU,GAAGP,0BAA0B,CAACM,QAAQ,EAAEC,UAAU,EAAES,oBAAoB,EAAE,CAAC,CAAC;EACxF;;EAGA,MAAMQ,WAAW,GAAGnB,IAAI,CAACmB,WAAW;EACpC,IAAIA,WAAW,EAAE;IACfjB,UAAU,GAAGR,oBAAoB,CAACO,QAAQ,EAAEC,UAAU,EAAEiB,WAAW,EAAEA,WAAW,CAACC,UAAU,CAAC;EAC9F;;EAGAtB,sBAAsB,CAACG,QAAQ,EAAEgB,eAAe,EAAEf,UAAU,GAAGe,eAAe,CAAC;EAE/E,OAAOf,UAAU;AACnB"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
1
3
|
import { MAGIC_ARRAY } from '../constants';
|
|
2
4
|
import { encode3DTileHeader, encode3DTileByteLength } from './helpers/encode-3d-tile-header';
|
|
3
5
|
export function encodeComposite3DTile(tile, dataView, byteOffset, options, encode3DTile) {
|
|
@@ -8,13 +10,11 @@ export function encodeComposite3DTile(tile, dataView, byteOffset, options, encod
|
|
|
8
10
|
};
|
|
9
11
|
const byteOffsetStart = byteOffset;
|
|
10
12
|
byteOffset += encode3DTileHeader(tile, dataView, byteOffset);
|
|
11
|
-
|
|
12
13
|
if (dataView) {
|
|
13
14
|
dataView.setUint32(byteOffset, tile.tiles.length, true);
|
|
14
15
|
}
|
|
15
16
|
|
|
16
17
|
byteOffset += 4;
|
|
17
|
-
|
|
18
18
|
for (let i = 0; i < tile.tiles.length; ++i) {
|
|
19
19
|
byteOffset += encode3DTile(tile.tiles[i], dataView, byteOffset, options);
|
|
20
20
|
}
|