@loaders.gl/gltf 4.0.0-alpha.23 → 4.0.0-alpha.25
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 +378 -241
- package/dist/es5/index.js +12 -0
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/api/gltf-extensions.js +1 -1
- package/dist/es5/lib/api/gltf-extensions.js.map +1 -1
- package/dist/es5/lib/extensions/EXT_mesh_features.js +13 -25
- package/dist/es5/lib/extensions/EXT_mesh_features.js.map +1 -1
- package/dist/es5/lib/extensions/EXT_structural_metadata.js +152 -106
- package/dist/es5/lib/extensions/EXT_structural_metadata.js.map +1 -1
- package/dist/es5/lib/extensions/deprecated/EXT_feature_metadata.js +64 -16
- package/dist/es5/lib/extensions/deprecated/EXT_feature_metadata.js.map +1 -1
- package/dist/es5/lib/extensions/{data-processing.js → utils/3d-tiles-utils.js} +51 -24
- package/dist/es5/lib/extensions/utils/3d-tiles-utils.js.map +1 -0
- package/dist/es5/lib/gltf-utils/gltf-utils.js +29 -0
- package/dist/es5/lib/gltf-utils/gltf-utils.js.map +1 -1
- package/dist/es5/lib/types/gltf-ext-feature-metadata-schema.js +2 -0
- package/dist/es5/lib/types/gltf-ext-feature-metadata-schema.js.map +1 -0
- package/dist/es5/lib/types/gltf-ext-mesh-features-schema.js.map +1 -1
- package/dist/es5/lib/types/gltf-ext-structural-metadata-schema.js.map +1 -1
- package/dist/es5/lib/types/gltf-json-schema.js.map +1 -1
- package/dist/es5/lib/types/gltf-types.js.map +1 -1
- package/dist/es5/lib/utils/version.js +1 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/api/gltf-extensions.js +1 -1
- package/dist/esm/lib/api/gltf-extensions.js.map +1 -1
- package/dist/esm/lib/extensions/EXT_mesh_features.js +13 -25
- package/dist/esm/lib/extensions/EXT_mesh_features.js.map +1 -1
- package/dist/esm/lib/extensions/EXT_structural_metadata.js +127 -89
- package/dist/esm/lib/extensions/EXT_structural_metadata.js.map +1 -1
- package/dist/esm/lib/extensions/deprecated/EXT_feature_metadata.js +64 -17
- package/dist/esm/lib/extensions/deprecated/EXT_feature_metadata.js.map +1 -1
- package/dist/esm/lib/extensions/{data-processing.js → utils/3d-tiles-utils.js} +50 -24
- package/dist/esm/lib/extensions/utils/3d-tiles-utils.js.map +1 -0
- package/dist/esm/lib/gltf-utils/gltf-utils.js +30 -0
- package/dist/esm/lib/gltf-utils/gltf-utils.js.map +1 -1
- package/dist/esm/lib/types/gltf-ext-feature-metadata-schema.js +2 -0
- package/dist/esm/lib/types/gltf-ext-feature-metadata-schema.js.map +1 -0
- package/dist/esm/lib/types/gltf-ext-mesh-features-schema.js.map +1 -1
- package/dist/esm/lib/types/gltf-ext-structural-metadata-schema.js.map +1 -1
- package/dist/esm/lib/types/gltf-json-schema.js.map +1 -1
- package/dist/esm/lib/types/gltf-types.js.map +1 -1
- package/dist/esm/lib/utils/version.js +1 -1
- package/dist/index.d.ts +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/lib/extensions/EXT_mesh_features.d.ts.map +1 -1
- package/dist/lib/extensions/EXT_structural_metadata.d.ts +12 -4
- package/dist/lib/extensions/EXT_structural_metadata.d.ts.map +1 -1
- package/dist/lib/extensions/deprecated/EXT_feature_metadata.d.ts +9 -0
- package/dist/lib/extensions/deprecated/EXT_feature_metadata.d.ts.map +1 -1
- package/dist/lib/extensions/utils/3d-tiles-utils.d.ts +52 -0
- package/dist/lib/extensions/utils/3d-tiles-utils.d.ts.map +1 -0
- package/dist/lib/gltf-utils/gltf-utils.d.ts +2 -0
- package/dist/lib/gltf-utils/gltf-utils.d.ts.map +1 -1
- package/dist/lib/types/gltf-ext-feature-metadata-schema.d.ts +421 -0
- package/dist/lib/types/gltf-ext-feature-metadata-schema.d.ts.map +1 -0
- package/dist/lib/types/gltf-ext-mesh-features-schema.d.ts +4 -6
- package/dist/lib/types/gltf-ext-mesh-features-schema.d.ts.map +1 -1
- package/dist/lib/types/gltf-ext-structural-metadata-schema.d.ts +48 -29
- package/dist/lib/types/gltf-ext-structural-metadata-schema.d.ts.map +1 -1
- package/dist/lib/types/gltf-json-schema.d.ts +1 -420
- package/dist/lib/types/gltf-json-schema.d.ts.map +1 -1
- package/dist/lib/types/gltf-types.d.ts +3 -0
- package/dist/lib/types/gltf-types.d.ts.map +1 -1
- package/package.json +6 -6
- package/src/index.ts +10 -5
- package/src/lib/api/gltf-extensions.ts +1 -1
- package/src/lib/extensions/EXT_mesh_features.ts +18 -44
- package/src/lib/extensions/EXT_structural_metadata.ts +364 -217
- package/src/lib/extensions/deprecated/EXT_feature_metadata.ts +193 -30
- package/src/lib/extensions/{data-processing.ts → utils/3d-tiles-utils.ts} +128 -56
- package/src/lib/gltf-utils/gltf-utils.ts +38 -0
- package/src/lib/types/gltf-ext-feature-metadata-schema.ts +470 -0
- package/src/lib/types/gltf-ext-mesh-features-schema.ts +4 -6
- package/src/lib/types/gltf-ext-structural-metadata-schema.ts +52 -31
- package/src/lib/types/gltf-json-schema.ts +1 -468
- package/src/lib/types/gltf-types.ts +4 -0
- package/dist/bundle.js +0 -5
- package/dist/es5/lib/extensions/data-processing.js.map +0 -1
- package/dist/esm/lib/extensions/data-processing.js.map +0 -1
- package/dist/glb-loader.js +0 -34
- package/dist/glb-writer.js +0 -35
- package/dist/gltf-loader.js +0 -50
- package/dist/gltf-writer.js +0 -32
- package/dist/index.js +0 -34
- package/dist/lib/api/gltf-extensions.js +0 -88
- package/dist/lib/api/gltf-scenegraph.js +0 -580
- package/dist/lib/api/normalize-gltf-v1.js +0 -299
- package/dist/lib/api/post-process-gltf.js +0 -433
- package/dist/lib/encoders/encode-glb.js +0 -72
- package/dist/lib/encoders/encode-gltf.js +0 -32
- package/dist/lib/extensions/EXT_mesh_features.js +0 -89
- package/dist/lib/extensions/EXT_meshopt_compression.js +0 -41
- package/dist/lib/extensions/EXT_structural_metadata.js +0 -504
- package/dist/lib/extensions/EXT_texture_webp.js +0 -36
- package/dist/lib/extensions/KHR_binary_gltf.js +0 -39
- package/dist/lib/extensions/KHR_draco_mesh_compression.js +0 -137
- package/dist/lib/extensions/KHR_texture_basisu.js +0 -29
- package/dist/lib/extensions/KHR_texture_transform.js +0 -227
- package/dist/lib/extensions/data-processing.d.ts +0 -34
- package/dist/lib/extensions/data-processing.d.ts.map +0 -1
- package/dist/lib/extensions/data-processing.js +0 -212
- package/dist/lib/extensions/deprecated/EXT_feature_metadata.js +0 -282
- package/dist/lib/extensions/deprecated/KHR_lights_punctual.js +0 -59
- package/dist/lib/extensions/deprecated/KHR_materials_unlit.js +0 -44
- package/dist/lib/extensions/deprecated/KHR_techniques_webgl.js +0 -79
- package/dist/lib/gltf-utils/get-typed-array.js +0 -41
- package/dist/lib/gltf-utils/gltf-attribute-utils.js +0 -73
- package/dist/lib/gltf-utils/gltf-constants.js +0 -43
- package/dist/lib/gltf-utils/gltf-utils.js +0 -90
- package/dist/lib/gltf-utils/resolve-url.js +0 -18
- package/dist/lib/parsers/parse-glb.js +0 -166
- package/dist/lib/parsers/parse-gltf.js +0 -185
- package/dist/lib/types/glb-types.js +0 -2
- package/dist/lib/types/gltf-ext-mesh-features-schema.js +0 -2
- package/dist/lib/types/gltf-ext-structural-metadata-schema.js +0 -2
- package/dist/lib/types/gltf-json-schema.js +0 -4
- package/dist/lib/types/gltf-postprocessed-schema.js +0 -4
- package/dist/lib/types/gltf-types.js +0 -3
- package/dist/lib/utils/assert.js +0 -12
- package/dist/lib/utils/version.js +0 -7
- package/dist/meshopt/meshopt-decoder.js +0 -118
- package/dist/webp/webp.js +0 -38
|
@@ -5,12 +5,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.decode = decode;
|
|
8
|
+
exports.getPropertyTableFromExtStructuralMetadata = getPropertyTableFromExtStructuralMetadata;
|
|
8
9
|
exports.getPropertyTablePopulated = getPropertyTablePopulated;
|
|
9
10
|
exports.name = void 0;
|
|
10
11
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
12
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
12
13
|
var _gltfScenegraph = require("../api/gltf-scenegraph");
|
|
13
|
-
var
|
|
14
|
+
var _dTilesUtils = require("./utils/3d-tiles-utils");
|
|
14
15
|
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; } } }; }
|
|
15
16
|
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); }
|
|
16
17
|
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; }
|
|
@@ -36,6 +37,26 @@ function _decode() {
|
|
|
36
37
|
}));
|
|
37
38
|
return _decode.apply(this, arguments);
|
|
38
39
|
}
|
|
40
|
+
function getPropertyTableFromExtStructuralMetadata(extension, metadataClass) {
|
|
41
|
+
if (extension.propertyTables) {
|
|
42
|
+
var firstPropertyTable = extension === null || extension === void 0 ? void 0 : extension.propertyTables[0];
|
|
43
|
+
var propertyTableWithData = {};
|
|
44
|
+
for (var propertyName in firstPropertyTable.properties) {
|
|
45
|
+
propertyTableWithData[propertyName] = firstPropertyTable.properties[propertyName].data;
|
|
46
|
+
}
|
|
47
|
+
return propertyTableWithData;
|
|
48
|
+
}
|
|
49
|
+
if (extension.propertyTextures) {
|
|
50
|
+
var firstPropertyTexture = extension === null || extension === void 0 ? void 0 : extension.propertyTextures[0];
|
|
51
|
+
var _propertyTableWithData = {};
|
|
52
|
+
for (var _propertyName in firstPropertyTexture.properties) {
|
|
53
|
+
_propertyTableWithData[_propertyName] = firstPropertyTexture.properties[_propertyName].data;
|
|
54
|
+
}
|
|
55
|
+
return _propertyTableWithData;
|
|
56
|
+
}
|
|
57
|
+
console.warn('Cannot get property table from EXT_structural_metadata extension. There is neither propertyTables, nor propertyTextures in the extension.');
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
39
60
|
function getPropertyTablePopulated(scenegraph, propertyTableIndex) {
|
|
40
61
|
var _extension$propertyTa;
|
|
41
62
|
var extension = scenegraph.getExtension(EXT_STRUCTURAL_METADATA_NAME);
|
|
@@ -47,14 +68,23 @@ function getPropertyTablePopulated(scenegraph, propertyTableIndex) {
|
|
|
47
68
|
throw new Error("Incorrect data in the EXT_structural_metadata extension: no property table with index ".concat(propertyTableIndex));
|
|
48
69
|
}
|
|
49
70
|
function decodeExtStructuralMetadata(scenegraph, options) {
|
|
50
|
-
var _options$gltf;
|
|
71
|
+
var _options$gltf, _options$gltf2;
|
|
72
|
+
if (!((_options$gltf = options.gltf) !== null && _options$gltf !== void 0 && _options$gltf.loadBuffers)) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
51
75
|
var extension = scenegraph.getExtension(EXT_STRUCTURAL_METADATA_NAME);
|
|
52
|
-
if (!
|
|
76
|
+
if (!extension) {
|
|
53
77
|
return;
|
|
54
78
|
}
|
|
79
|
+
if ((_options$gltf2 = options.gltf) !== null && _options$gltf2 !== void 0 && _options$gltf2.loadImages) {
|
|
80
|
+
decodePropertyTextures(scenegraph, extension);
|
|
81
|
+
}
|
|
82
|
+
decodePropertyTables(scenegraph, extension);
|
|
83
|
+
}
|
|
84
|
+
function decodePropertyTextures(scenegraph, extension) {
|
|
55
85
|
var propertyTextures = extension.propertyTextures;
|
|
56
86
|
var json = scenegraph.gltf.json;
|
|
57
|
-
if (propertyTextures && json.meshes
|
|
87
|
+
if (propertyTextures && json.meshes) {
|
|
58
88
|
var _iterator = _createForOfIteratorHelper(json.meshes),
|
|
59
89
|
_step;
|
|
60
90
|
try {
|
|
@@ -79,17 +109,40 @@ function decodeExtStructuralMetadata(scenegraph, options) {
|
|
|
79
109
|
_iterator.f();
|
|
80
110
|
}
|
|
81
111
|
}
|
|
82
|
-
|
|
112
|
+
}
|
|
113
|
+
function decodePropertyTables(scenegraph, extension) {
|
|
114
|
+
var schema = extension.schema;
|
|
115
|
+
if (!schema) {
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
var schemaClasses = schema.classes;
|
|
83
119
|
var propertyTables = extension.propertyTables;
|
|
84
120
|
if (schemaClasses && propertyTables) {
|
|
85
121
|
for (var schemaName in schemaClasses) {
|
|
86
122
|
var propertyTable = findPropertyTableByClass(propertyTables, schemaName);
|
|
87
123
|
if (propertyTable) {
|
|
88
|
-
processPropertyTable(scenegraph,
|
|
124
|
+
processPropertyTable(scenegraph, schema, propertyTable);
|
|
89
125
|
}
|
|
90
126
|
}
|
|
91
127
|
}
|
|
92
128
|
}
|
|
129
|
+
function findPropertyTableByClass(propertyTables, schemaClassName) {
|
|
130
|
+
var _iterator3 = _createForOfIteratorHelper(propertyTables),
|
|
131
|
+
_step3;
|
|
132
|
+
try {
|
|
133
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
134
|
+
var propertyTable = _step3.value;
|
|
135
|
+
if (propertyTable.class === schemaClassName) {
|
|
136
|
+
return propertyTable;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
} catch (err) {
|
|
140
|
+
_iterator3.e(err);
|
|
141
|
+
} finally {
|
|
142
|
+
_iterator3.f();
|
|
143
|
+
}
|
|
144
|
+
return null;
|
|
145
|
+
}
|
|
93
146
|
function processPrimitivePropertyTextures(scenegraph, propertyTextures, primitive, extension) {
|
|
94
147
|
var _primitive$extensions;
|
|
95
148
|
if (!propertyTextures) {
|
|
@@ -100,18 +153,18 @@ function processPrimitivePropertyTextures(scenegraph, propertyTextures, primitiv
|
|
|
100
153
|
if (!primitivePropertyTextureIndices) {
|
|
101
154
|
return;
|
|
102
155
|
}
|
|
103
|
-
var
|
|
104
|
-
|
|
156
|
+
var _iterator4 = _createForOfIteratorHelper(primitivePropertyTextureIndices),
|
|
157
|
+
_step4;
|
|
105
158
|
try {
|
|
106
|
-
for (
|
|
107
|
-
var primitivePropertyTextureIndex =
|
|
159
|
+
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
160
|
+
var primitivePropertyTextureIndex = _step4.value;
|
|
108
161
|
var propertyTexture = propertyTextures[primitivePropertyTextureIndex];
|
|
109
162
|
processPrimitivePropertyTexture(scenegraph, propertyTexture, primitive, extension);
|
|
110
163
|
}
|
|
111
164
|
} catch (err) {
|
|
112
|
-
|
|
165
|
+
_iterator4.e(err);
|
|
113
166
|
} finally {
|
|
114
|
-
|
|
167
|
+
_iterator4.f();
|
|
115
168
|
}
|
|
116
169
|
}
|
|
117
170
|
function processPrimitivePropertyTexture(scenegraph, propertyTexture, primitive, extension) {
|
|
@@ -122,10 +175,10 @@ function processPrimitivePropertyTexture(scenegraph, propertyTexture, primitive,
|
|
|
122
175
|
extension.dataAttributeNames = [];
|
|
123
176
|
}
|
|
124
177
|
var className = propertyTexture.class;
|
|
125
|
-
for (var
|
|
178
|
+
for (var propertyName in propertyTexture.properties) {
|
|
126
179
|
var _propertyTexture$prop;
|
|
127
|
-
var attributeName = "".concat(className, "_").concat(
|
|
128
|
-
var textureInfoTopLevel = (_propertyTexture$prop = propertyTexture.properties) === null || _propertyTexture$prop === void 0 ? void 0 : _propertyTexture$prop[
|
|
180
|
+
var attributeName = "".concat(className, "_").concat(propertyName);
|
|
181
|
+
var textureInfoTopLevel = (_propertyTexture$prop = propertyTexture.properties) === null || _propertyTexture$prop === void 0 ? void 0 : _propertyTexture$prop[propertyName];
|
|
129
182
|
if (!textureInfoTopLevel) {
|
|
130
183
|
continue;
|
|
131
184
|
}
|
|
@@ -133,11 +186,11 @@ function processPrimitivePropertyTexture(scenegraph, propertyTexture, primitive,
|
|
|
133
186
|
textureInfoTopLevel.data = [];
|
|
134
187
|
}
|
|
135
188
|
var featureTextureTable = textureInfoTopLevel.data;
|
|
136
|
-
var propertyData = (0,
|
|
189
|
+
var propertyData = (0, _dTilesUtils.getPrimitiveTextureData)(scenegraph, textureInfoTopLevel, primitive);
|
|
137
190
|
if (propertyData === null) {
|
|
138
191
|
continue;
|
|
139
192
|
}
|
|
140
|
-
(0,
|
|
193
|
+
(0, _dTilesUtils.primitivePropertyDataToAttributes)(scenegraph, attributeName, propertyData, featureTextureTable, primitive);
|
|
141
194
|
textureInfoTopLevel.data = featureTextureTable;
|
|
142
195
|
extension.dataAttributeNames.push(attributeName);
|
|
143
196
|
}
|
|
@@ -163,14 +216,8 @@ function getPropertyDataFromBinarySource(scenegraph, schema, classProperty, numb
|
|
|
163
216
|
var data = [];
|
|
164
217
|
var valuesBufferView = propertyTableProperty.values;
|
|
165
218
|
var valuesDataBytes = scenegraph.getTypedArrayForBufferView(valuesBufferView);
|
|
166
|
-
var arrayOffsets =
|
|
167
|
-
|
|
168
|
-
arrayOffsets = getOffsetArray(scenegraph, propertyTableProperty.arrayOffsets, propertyTableProperty.arrayOffsetType, numberOfElements);
|
|
169
|
-
}
|
|
170
|
-
var stringOffsets = null;
|
|
171
|
-
if (typeof propertyTableProperty.stringOffsets !== 'undefined' && typeof propertyTableProperty.stringOffsetType !== 'undefined') {
|
|
172
|
-
stringOffsets = getOffsetArray(scenegraph, propertyTableProperty.stringOffsets, propertyTableProperty.stringOffsetType, numberOfElements);
|
|
173
|
-
}
|
|
219
|
+
var arrayOffsets = getArrayOffsetsForProperty(scenegraph, classProperty, propertyTableProperty, numberOfElements);
|
|
220
|
+
var stringOffsets = getStringOffsetsForProperty(scenegraph, propertyTableProperty, numberOfElements);
|
|
174
221
|
switch (classProperty.type) {
|
|
175
222
|
case 'SCALAR':
|
|
176
223
|
case 'VEC2':
|
|
@@ -202,66 +249,62 @@ function getPropertyDataFromBinarySource(scenegraph, schema, classProperty, numb
|
|
|
202
249
|
}
|
|
203
250
|
return data;
|
|
204
251
|
}
|
|
205
|
-
function
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
return
|
|
252
|
+
function getArrayOffsetsForProperty(scenegraph, classProperty, propertyTableProperty, numberOfElements) {
|
|
253
|
+
if (classProperty.array && typeof classProperty.count === 'undefined' && typeof propertyTableProperty.arrayOffsets !== 'undefined') {
|
|
254
|
+
return (0, _dTilesUtils.getOffsetsForProperty)(scenegraph, propertyTableProperty.arrayOffsets, propertyTableProperty.arrayOffsetType || 'UINT32', numberOfElements);
|
|
255
|
+
}
|
|
256
|
+
return null;
|
|
257
|
+
}
|
|
258
|
+
function getStringOffsetsForProperty(scenegraph, propertyTableProperty, numberOfElements) {
|
|
259
|
+
if (typeof propertyTableProperty.stringOffsets !== 'undefined') {
|
|
260
|
+
return (0, _dTilesUtils.getOffsetsForProperty)(scenegraph, propertyTableProperty.stringOffsets, propertyTableProperty.stringOffsetType || 'UINT32', numberOfElements);
|
|
261
|
+
}
|
|
262
|
+
return null;
|
|
210
263
|
}
|
|
211
264
|
function getPropertyDataNumeric(classProperty, numberOfElements, valuesDataBytes, arrayOffsets) {
|
|
212
265
|
var isArray = classProperty.array;
|
|
213
266
|
var arrayCount = classProperty.count;
|
|
214
|
-
var elementSize = (0,
|
|
267
|
+
var elementSize = (0, _dTilesUtils.getArrayElementByteSize)(classProperty.type, classProperty.componentType);
|
|
215
268
|
var elementCount = valuesDataBytes.byteLength / elementSize;
|
|
216
269
|
var valuesData;
|
|
217
270
|
if (classProperty.componentType) {
|
|
218
|
-
valuesData = (0,
|
|
271
|
+
valuesData = (0, _dTilesUtils.convertRawBufferToMetadataArray)(valuesDataBytes, classProperty.type, classProperty.componentType, elementCount);
|
|
272
|
+
if (!valuesData) {
|
|
273
|
+
valuesData = valuesDataBytes;
|
|
274
|
+
}
|
|
219
275
|
} else {
|
|
220
276
|
valuesData = valuesDataBytes;
|
|
221
277
|
}
|
|
222
278
|
if (isArray) {
|
|
223
279
|
if (arrayOffsets) {
|
|
224
|
-
return
|
|
280
|
+
return parseVariableLengthArrayNumeric(valuesData, numberOfElements, arrayOffsets, valuesDataBytes.length, elementSize);
|
|
225
281
|
}
|
|
226
282
|
if (arrayCount) {
|
|
227
|
-
return
|
|
283
|
+
return parseFixedLengthArrayNumeric(valuesData, numberOfElements, arrayCount);
|
|
228
284
|
}
|
|
229
285
|
return [];
|
|
230
286
|
}
|
|
231
|
-
|
|
232
|
-
for (var index = 0; index < numberOfElements; index++) {
|
|
233
|
-
var value = valuesData[index];
|
|
234
|
-
attributeValueArray.push(value);
|
|
235
|
-
}
|
|
236
|
-
return attributeValueArray;
|
|
287
|
+
return valuesData;
|
|
237
288
|
}
|
|
238
|
-
function
|
|
289
|
+
function parseVariableLengthArrayNumeric(valuesData, numberOfElements, arrayOffsets, valuesDataBytesLength, valueSize) {
|
|
239
290
|
var attributeValueArray = [];
|
|
240
291
|
for (var index = 0; index < numberOfElements; index++) {
|
|
241
|
-
var array = [];
|
|
242
292
|
var arrayOffset = arrayOffsets[index];
|
|
243
293
|
var arrayByteSize = arrayOffsets[index + 1] - arrayOffsets[index];
|
|
244
|
-
if (arrayByteSize + arrayOffset
|
|
245
|
-
|
|
246
|
-
var elementCount = arrayByteSize / elementSize;
|
|
247
|
-
for (var i = 0; i < elementCount; i++) {
|
|
248
|
-
var value = valuesData[typedArrayOffset + i];
|
|
249
|
-
array.push(value);
|
|
250
|
-
}
|
|
294
|
+
if (arrayByteSize + arrayOffset > valuesDataBytesLength) {
|
|
295
|
+
break;
|
|
251
296
|
}
|
|
252
|
-
|
|
297
|
+
var typedArrayOffset = arrayOffset / valueSize;
|
|
298
|
+
var elementCount = arrayByteSize / valueSize;
|
|
299
|
+
attributeValueArray.push(valuesData.slice(typedArrayOffset, typedArrayOffset + elementCount));
|
|
253
300
|
}
|
|
254
301
|
return attributeValueArray;
|
|
255
302
|
}
|
|
256
|
-
function
|
|
303
|
+
function parseFixedLengthArrayNumeric(valuesData, numberOfElements, arrayCount) {
|
|
257
304
|
var attributeValueArray = [];
|
|
258
305
|
for (var index = 0; index < numberOfElements; index++) {
|
|
259
|
-
var
|
|
260
|
-
|
|
261
|
-
var value = valuesData[i];
|
|
262
|
-
array.push(value);
|
|
263
|
-
}
|
|
264
|
-
attributeValueArray.push(array);
|
|
306
|
+
var elementOffset = index * arrayCount;
|
|
307
|
+
attributeValueArray.push(valuesData.slice(elementOffset, elementOffset + arrayCount));
|
|
265
308
|
}
|
|
266
309
|
return attributeValueArray;
|
|
267
310
|
}
|
|
@@ -288,9 +331,6 @@ function getPropertyDataString(classProperty, numberOfElements, valuesDataBytes,
|
|
|
288
331
|
}
|
|
289
332
|
function getPropertyDataENUM(schema, classProperty, numberOfElements, valuesDataBytes, arrayOffsets) {
|
|
290
333
|
var _schema$enums;
|
|
291
|
-
var data = [];
|
|
292
|
-
var isArray = classProperty.array;
|
|
293
|
-
var arrayCount = classProperty.count;
|
|
294
334
|
var enumType = classProperty.enumType;
|
|
295
335
|
if (!enumType) {
|
|
296
336
|
throw new Error('Incorrect data in the EXT_structural_metadata extension: classProperty.enumType is not set for type ENUM');
|
|
@@ -300,86 +340,92 @@ function getPropertyDataENUM(schema, classProperty, numberOfElements, valuesData
|
|
|
300
340
|
throw new Error("Incorrect data in the EXT_structural_metadata extension: schema.enums does't contain ".concat(enumType));
|
|
301
341
|
}
|
|
302
342
|
var enumValueType = enumEntry.valueType || 'UINT16';
|
|
303
|
-
var elementSize = (0,
|
|
343
|
+
var elementSize = (0, _dTilesUtils.getArrayElementByteSize)(classProperty.type, enumValueType);
|
|
304
344
|
var elementCount = valuesDataBytes.byteLength / elementSize;
|
|
305
|
-
var valuesData = (0,
|
|
306
|
-
if (
|
|
345
|
+
var valuesData = (0, _dTilesUtils.convertRawBufferToMetadataArray)(valuesDataBytes, classProperty.type, enumValueType, elementCount);
|
|
346
|
+
if (!valuesData) {
|
|
347
|
+
valuesData = valuesDataBytes;
|
|
348
|
+
}
|
|
349
|
+
if (classProperty.array) {
|
|
307
350
|
if (arrayOffsets) {
|
|
308
|
-
return
|
|
351
|
+
return parseVariableLengthArrayENUM({
|
|
352
|
+
valuesData: valuesData,
|
|
353
|
+
numberOfElements: numberOfElements,
|
|
354
|
+
arrayOffsets: arrayOffsets,
|
|
355
|
+
valuesDataBytesLength: valuesDataBytes.length,
|
|
356
|
+
elementSize: elementSize,
|
|
357
|
+
enumEntry: enumEntry
|
|
358
|
+
});
|
|
309
359
|
}
|
|
360
|
+
var arrayCount = classProperty.count;
|
|
310
361
|
if (arrayCount) {
|
|
311
|
-
return
|
|
362
|
+
return parseFixedLengthArrayENUM(valuesData, numberOfElements, arrayCount, enumEntry);
|
|
312
363
|
}
|
|
313
364
|
return [];
|
|
314
365
|
}
|
|
315
|
-
|
|
316
|
-
var enumValue = valuesData[index];
|
|
317
|
-
var enumObject = getEnumByValue(enumEntry, enumValue);
|
|
318
|
-
if (enumObject) {
|
|
319
|
-
data.push(enumObject.name);
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
return data;
|
|
366
|
+
return getEnumsArray(valuesData, 0, numberOfElements, enumEntry);
|
|
323
367
|
}
|
|
324
|
-
function
|
|
368
|
+
function parseVariableLengthArrayENUM(params) {
|
|
369
|
+
var valuesData = params.valuesData,
|
|
370
|
+
numberOfElements = params.numberOfElements,
|
|
371
|
+
arrayOffsets = params.arrayOffsets,
|
|
372
|
+
valuesDataBytesLength = params.valuesDataBytesLength,
|
|
373
|
+
elementSize = params.elementSize,
|
|
374
|
+
enumEntry = params.enumEntry;
|
|
325
375
|
var attributeValueArray = [];
|
|
326
376
|
for (var index = 0; index < numberOfElements; index++) {
|
|
327
|
-
var array = [];
|
|
328
377
|
var arrayOffset = arrayOffsets[index];
|
|
329
378
|
var arrayByteSize = arrayOffsets[index + 1] - arrayOffsets[index];
|
|
330
|
-
if (arrayByteSize + arrayOffset
|
|
331
|
-
|
|
332
|
-
var elementCount = arrayByteSize / elementSize;
|
|
333
|
-
for (var i = 0; i < elementCount; i++) {
|
|
334
|
-
var value = valuesData[typedArrayOffset + i];
|
|
335
|
-
var enumObject = getEnumByValue(enumEntry, value);
|
|
336
|
-
if (enumObject) {
|
|
337
|
-
array.push(enumObject.name);
|
|
338
|
-
}
|
|
339
|
-
}
|
|
379
|
+
if (arrayByteSize + arrayOffset > valuesDataBytesLength) {
|
|
380
|
+
break;
|
|
340
381
|
}
|
|
382
|
+
var typedArrayOffset = arrayOffset / elementSize;
|
|
383
|
+
var elementCount = arrayByteSize / elementSize;
|
|
384
|
+
var array = getEnumsArray(valuesData, typedArrayOffset, elementCount, enumEntry);
|
|
341
385
|
attributeValueArray.push(array);
|
|
342
386
|
}
|
|
343
387
|
return attributeValueArray;
|
|
344
388
|
}
|
|
345
|
-
function
|
|
389
|
+
function parseFixedLengthArrayENUM(valuesData, numberOfElements, arrayCount, enumEntry) {
|
|
346
390
|
var attributeValueArray = [];
|
|
347
391
|
for (var index = 0; index < numberOfElements; index++) {
|
|
348
|
-
var
|
|
349
|
-
|
|
350
|
-
var value = valuesData[i];
|
|
351
|
-
var enumObject = getEnumByValue(enumEntry, value);
|
|
352
|
-
if (enumObject) {
|
|
353
|
-
array.push(enumObject.name);
|
|
354
|
-
}
|
|
355
|
-
}
|
|
392
|
+
var elementOffset = arrayCount * index;
|
|
393
|
+
var array = getEnumsArray(valuesData, elementOffset, arrayCount, enumEntry);
|
|
356
394
|
attributeValueArray.push(array);
|
|
357
395
|
}
|
|
358
396
|
return attributeValueArray;
|
|
359
397
|
}
|
|
360
|
-
function
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
if (
|
|
364
|
-
|
|
398
|
+
function getEnumsArray(valuesData, offset, count, enumEntry) {
|
|
399
|
+
var array = [];
|
|
400
|
+
for (var i = 0; i < count; i++) {
|
|
401
|
+
if (valuesData instanceof BigInt64Array || valuesData instanceof BigUint64Array) {
|
|
402
|
+
array.push('');
|
|
403
|
+
} else {
|
|
404
|
+
var value = valuesData[offset + i];
|
|
405
|
+
var enumObject = getEnumByValue(enumEntry, value);
|
|
406
|
+
if (enumObject) {
|
|
407
|
+
array.push(enumObject.name);
|
|
408
|
+
} else {
|
|
409
|
+
array.push('');
|
|
410
|
+
}
|
|
365
411
|
}
|
|
366
412
|
}
|
|
367
|
-
return
|
|
413
|
+
return array;
|
|
368
414
|
}
|
|
369
415
|
function getEnumByValue(enumEntry, value) {
|
|
370
|
-
var
|
|
371
|
-
|
|
416
|
+
var _iterator5 = _createForOfIteratorHelper(enumEntry.values),
|
|
417
|
+
_step5;
|
|
372
418
|
try {
|
|
373
|
-
for (
|
|
374
|
-
var enumValue =
|
|
419
|
+
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
420
|
+
var enumValue = _step5.value;
|
|
375
421
|
if (enumValue.value === value) {
|
|
376
422
|
return enumValue;
|
|
377
423
|
}
|
|
378
424
|
}
|
|
379
425
|
} catch (err) {
|
|
380
|
-
|
|
426
|
+
_iterator5.e(err);
|
|
381
427
|
} finally {
|
|
382
|
-
|
|
428
|
+
_iterator5.f();
|
|
383
429
|
}
|
|
384
430
|
return null;
|
|
385
431
|
}
|