@loaders.gl/3d-tiles 3.1.0-alpha.1 → 3.1.0-alpha.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle.d.ts +1 -0
- package/dist/cesium-ion-loader.d.ts +5 -0
- package/dist/dist.min.js +1 -1
- package/dist/dist.min.js.map +1 -1
- package/dist/es5/bundle.js +7 -0
- package/dist/es5/bundle.js.map +1 -0
- package/dist/es5/cesium-ion-loader.js +45 -0
- package/dist/es5/cesium-ion-loader.js.map +1 -0
- package/dist/es5/index.js +64 -0
- package/dist/es5/index.js.map +1 -0
- package/dist/es5/lib/classes/helpers/tile-3d-accessor-utils.js +108 -0
- package/dist/es5/lib/classes/helpers/tile-3d-accessor-utils.js.map +1 -0
- package/dist/es5/lib/classes/tile-3d-batch-table-hierarchy.js +223 -0
- package/dist/es5/lib/classes/tile-3d-batch-table-hierarchy.js.map +1 -0
- package/dist/es5/lib/classes/tile-3d-batch-table.js +301 -0
- package/dist/es5/lib/classes/tile-3d-batch-table.js.map +1 -0
- package/dist/es5/lib/classes/tile-3d-feature-table.js +97 -0
- package/dist/es5/lib/classes/tile-3d-feature-table.js.map +1 -0
- package/dist/es5/lib/constants.js +31 -0
- package/dist/es5/lib/constants.js.map +1 -0
- package/dist/es5/lib/encoders/encode-3d-tile-batched-model.js +56 -0
- package/dist/es5/lib/encoders/encode-3d-tile-batched-model.js.map +1 -0
- package/dist/es5/lib/encoders/encode-3d-tile-composite.js +34 -0
- package/dist/es5/lib/encoders/encode-3d-tile-composite.js.map +1 -0
- package/dist/es5/lib/encoders/encode-3d-tile-instanced-model.js +48 -0
- package/dist/es5/lib/encoders/encode-3d-tile-instanced-model.js.map +1 -0
- package/dist/es5/lib/encoders/encode-3d-tile-point-cloud.js +52 -0
- package/dist/es5/lib/encoders/encode-3d-tile-point-cloud.js.map +1 -0
- package/dist/es5/lib/encoders/encode-3d-tile.js +48 -0
- package/dist/es5/lib/encoders/encode-3d-tile.js.map +1 -0
- package/dist/es5/lib/encoders/helpers/encode-3d-tile-header.js +41 -0
- package/dist/es5/lib/encoders/helpers/encode-3d-tile-header.js.map +1 -0
- package/dist/es5/lib/ion/ion.js +91 -0
- package/dist/es5/lib/ion/ion.js.map +1 -0
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-colors.js +75 -0
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-colors.js.map +1 -0
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-normals.js +40 -0
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-normals.js.map +1 -0
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-positions.js +40 -0
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-positions.js.map +1 -0
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-gltf-view.js +83 -0
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +1 -0
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-header.js +24 -0
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-header.js.map +1 -0
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-tables.js +100 -0
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-tables.js.map +1 -0
- package/dist/es5/lib/parsers/helpers/parse-utils.js +31 -0
- package/dist/es5/lib/parsers/helpers/parse-utils.js.map +1 -0
- package/dist/es5/lib/parsers/parse-3d-tile-batched-model.js +43 -0
- package/dist/es5/lib/parsers/parse-3d-tile-batched-model.js.map +1 -0
- package/dist/es5/lib/parsers/parse-3d-tile-composite.js +25 -0
- package/dist/es5/lib/parsers/parse-3d-tile-composite.js.map +1 -0
- package/dist/es5/lib/parsers/parse-3d-tile-header.js +86 -0
- package/dist/es5/lib/parsers/parse-3d-tile-header.js.map +1 -0
- package/dist/es5/lib/parsers/parse-3d-tile-instanced-model.js +195 -0
- package/dist/es5/lib/parsers/parse-3d-tile-instanced-model.js.map +1 -0
- package/dist/es5/lib/parsers/parse-3d-tile-point-cloud.js +265 -0
- package/dist/es5/lib/parsers/parse-3d-tile-point-cloud.js.map +1 -0
- package/dist/es5/lib/parsers/parse-3d-tile.js +41 -0
- package/dist/es5/lib/parsers/parse-3d-tile.js.map +1 -0
- package/dist/es5/lib/utils/version.js +9 -0
- package/dist/es5/lib/utils/version.js.map +1 -0
- package/dist/es5/tile-3d-writer.js +32 -0
- package/dist/es5/tile-3d-writer.js.map +1 -0
- package/dist/es5/tiles-3d-loader.js +85 -0
- package/dist/es5/tiles-3d-loader.js.map +1 -0
- package/dist/es5/types.js +2 -0
- package/dist/{types.js.map → es5/types.js.map} +0 -0
- package/dist/esm/bundle.js +5 -0
- package/dist/esm/bundle.js.map +1 -0
- package/dist/{cesium-ion-loader.js → esm/cesium-ion-loader.js} +0 -0
- package/dist/esm/cesium-ion-loader.js.map +1 -0
- package/dist/{index.js → esm/index.js} +0 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/{lib → esm/lib}/classes/helpers/tile-3d-accessor-utils.js +0 -0
- package/dist/esm/lib/classes/helpers/tile-3d-accessor-utils.js.map +1 -0
- package/dist/{lib → esm/lib}/classes/tile-3d-batch-table-hierarchy.js +1 -1
- package/dist/esm/lib/classes/tile-3d-batch-table-hierarchy.js.map +1 -0
- package/dist/{lib → esm/lib}/classes/tile-3d-batch-table.js +4 -4
- package/dist/esm/lib/classes/tile-3d-batch-table.js.map +1 -0
- package/dist/{lib → esm/lib}/classes/tile-3d-feature-table.js +0 -0
- package/dist/esm/lib/classes/tile-3d-feature-table.js.map +1 -0
- package/dist/{lib → esm/lib}/constants.js +0 -0
- package/dist/esm/lib/constants.js.map +1 -0
- package/dist/{lib → esm/lib}/encoders/encode-3d-tile-batched-model.js +0 -0
- package/dist/esm/lib/encoders/encode-3d-tile-batched-model.js.map +1 -0
- package/dist/{lib → esm/lib}/encoders/encode-3d-tile-composite.js +0 -0
- package/dist/esm/lib/encoders/encode-3d-tile-composite.js.map +1 -0
- package/dist/{lib → esm/lib}/encoders/encode-3d-tile-instanced-model.js +0 -0
- package/dist/esm/lib/encoders/encode-3d-tile-instanced-model.js.map +1 -0
- package/dist/{lib → esm/lib}/encoders/encode-3d-tile-point-cloud.js +0 -0
- package/dist/esm/lib/encoders/encode-3d-tile-point-cloud.js.map +1 -0
- package/dist/{lib → esm/lib}/encoders/encode-3d-tile.js +0 -0
- package/dist/esm/lib/encoders/encode-3d-tile.js.map +1 -0
- package/dist/{lib → esm/lib}/encoders/helpers/encode-3d-tile-header.js +0 -0
- package/dist/esm/lib/encoders/helpers/encode-3d-tile-header.js.map +1 -0
- package/dist/{lib → esm/lib}/ion/ion.js +6 -6
- package/dist/esm/lib/ion/ion.js.map +1 -0
- package/dist/{lib → esm/lib}/parsers/helpers/normalize-3d-tile-colors.js +0 -0
- package/dist/esm/lib/parsers/helpers/normalize-3d-tile-colors.js.map +1 -0
- package/dist/{lib → esm/lib}/parsers/helpers/normalize-3d-tile-normals.js +0 -0
- package/dist/esm/lib/parsers/helpers/normalize-3d-tile-normals.js.map +1 -0
- package/dist/{lib → esm/lib}/parsers/helpers/normalize-3d-tile-positions.js +0 -0
- package/dist/esm/lib/parsers/helpers/normalize-3d-tile-positions.js.map +1 -0
- package/dist/{lib → esm/lib}/parsers/helpers/parse-3d-tile-gltf-view.js +2 -2
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +1 -0
- package/dist/{lib → esm/lib}/parsers/helpers/parse-3d-tile-header.js +1 -1
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-header.js.map +1 -0
- package/dist/{lib → esm/lib}/parsers/helpers/parse-3d-tile-tables.js +1 -1
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-tables.js.map +1 -0
- package/dist/{lib → esm/lib}/parsers/helpers/parse-utils.js +1 -5
- package/dist/esm/lib/parsers/helpers/parse-utils.js.map +1 -0
- package/dist/{lib → esm/lib}/parsers/parse-3d-tile-batched-model.js +0 -0
- package/dist/esm/lib/parsers/parse-3d-tile-batched-model.js.map +1 -0
- package/dist/{lib → esm/lib}/parsers/parse-3d-tile-composite.js +0 -0
- package/dist/esm/lib/parsers/parse-3d-tile-composite.js.map +1 -0
- package/dist/{lib → esm/lib}/parsers/parse-3d-tile-header.js +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile-header.js.map +1 -0
- package/dist/{lib → esm/lib}/parsers/parse-3d-tile-instanced-model.js +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile-instanced-model.js.map +1 -0
- package/dist/{lib → esm/lib}/parsers/parse-3d-tile-point-cloud.js +0 -0
- package/dist/esm/lib/parsers/parse-3d-tile-point-cloud.js.map +1 -0
- package/dist/{lib → esm/lib}/parsers/parse-3d-tile.js +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile.js.map +1 -0
- package/dist/esm/lib/utils/version.js +2 -0
- package/dist/esm/lib/utils/version.js.map +1 -0
- package/dist/{tile-3d-writer.js → esm/tile-3d-writer.js} +0 -0
- package/dist/esm/tile-3d-writer.js.map +1 -0
- package/dist/{tiles-3d-loader.js → esm/tiles-3d-loader.js} +0 -0
- package/dist/esm/tiles-3d-loader.js.map +1 -0
- package/dist/{types.js → esm/types.js} +0 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/lib/classes/helpers/tile-3d-accessor-utils.d.ts +7 -0
- package/dist/lib/classes/tile-3d-batch-table-hierarchy.d.ts +9 -0
- package/dist/lib/classes/tile-3d-batch-table.d.ts +40 -0
- package/dist/lib/classes/tile-3d-feature-table.d.ts +14 -0
- package/dist/lib/constants.d.ts +22 -0
- package/dist/lib/encoders/encode-3d-tile-batched-model.d.ts +1 -0
- package/dist/lib/encoders/encode-3d-tile-composite.d.ts +1 -0
- package/dist/lib/encoders/encode-3d-tile-instanced-model.d.ts +1 -0
- package/dist/lib/encoders/encode-3d-tile-point-cloud.d.ts +1 -0
- package/dist/lib/encoders/encode-3d-tile.d.ts +1 -0
- package/dist/lib/encoders/helpers/encode-3d-tile-header.d.ts +2 -0
- package/dist/lib/ion/ion.d.ts +3 -0
- package/dist/lib/parsers/helpers/normalize-3d-tile-colors.d.ts +6 -0
- package/dist/lib/parsers/helpers/normalize-3d-tile-normals.d.ts +5 -0
- package/dist/lib/parsers/helpers/normalize-3d-tile-positions.d.ts +1 -0
- package/dist/lib/parsers/helpers/parse-3d-tile-gltf-view.d.ts +6 -0
- package/dist/lib/parsers/helpers/parse-3d-tile-header.d.ts +1 -0
- package/dist/lib/parsers/helpers/parse-3d-tile-tables.d.ts +2 -0
- package/dist/lib/parsers/helpers/parse-utils.d.ts +3 -0
- package/dist/lib/parsers/parse-3d-tile-batched-model.d.ts +1 -0
- package/dist/lib/parsers/parse-3d-tile-composite.d.ts +1 -0
- package/dist/lib/parsers/parse-3d-tile-header.d.ts +2 -0
- package/dist/lib/parsers/parse-3d-tile-instanced-model.d.ts +1 -0
- package/dist/lib/parsers/parse-3d-tile-point-cloud.d.ts +2 -0
- package/dist/lib/parsers/parse-3d-tile.d.ts +1 -0
- package/dist/lib/utils/version.d.ts +1 -0
- package/dist/tile-3d-writer.d.ts +5 -0
- package/dist/tiles-3d-loader.d.ts +5 -0
- package/dist/types.d.ts +47 -0
- package/package.json +14 -11
- package/src/bundle.ts +2 -3
- package/dist/bundle.js +0 -7
- package/dist/bundle.js.map +0 -1
- package/dist/cesium-ion-loader.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/lib/classes/helpers/tile-3d-accessor-utils.js.map +0 -1
- package/dist/lib/classes/tile-3d-batch-table-hierarchy.js.map +0 -1
- package/dist/lib/classes/tile-3d-batch-table.js.map +0 -1
- package/dist/lib/classes/tile-3d-feature-table.js.map +0 -1
- package/dist/lib/constants.js.map +0 -1
- package/dist/lib/encoders/encode-3d-tile-batched-model.js.map +0 -1
- package/dist/lib/encoders/encode-3d-tile-composite.js.map +0 -1
- package/dist/lib/encoders/encode-3d-tile-instanced-model.js.map +0 -1
- package/dist/lib/encoders/encode-3d-tile-point-cloud.js.map +0 -1
- package/dist/lib/encoders/encode-3d-tile.js.map +0 -1
- package/dist/lib/encoders/helpers/encode-3d-tile-header.js.map +0 -1
- package/dist/lib/ion/ion.js.map +0 -1
- package/dist/lib/parsers/helpers/normalize-3d-tile-colors.js.map +0 -1
- package/dist/lib/parsers/helpers/normalize-3d-tile-normals.js.map +0 -1
- package/dist/lib/parsers/helpers/normalize-3d-tile-positions.js.map +0 -1
- package/dist/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +0 -1
- package/dist/lib/parsers/helpers/parse-3d-tile-header.js.map +0 -1
- package/dist/lib/parsers/helpers/parse-3d-tile-tables.js.map +0 -1
- package/dist/lib/parsers/helpers/parse-utils.js.map +0 -1
- package/dist/lib/parsers/parse-3d-tile-batched-model.js.map +0 -1
- package/dist/lib/parsers/parse-3d-tile-composite.js.map +0 -1
- package/dist/lib/parsers/parse-3d-tile-header.js.map +0 -1
- package/dist/lib/parsers/parse-3d-tile-instanced-model.js.map +0 -1
- package/dist/lib/parsers/parse-3d-tile-point-cloud.js.map +0 -1
- package/dist/lib/parsers/parse-3d-tile.js.map +0 -1
- package/dist/lib/utils/version.js +0 -2
- package/dist/lib/utils/version.js.map +0 -1
- package/dist/tile-3d-writer.js.map +0 -1
- package/dist/tiles-3d-loader.js.map +0 -1
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _loaderUtils = require("@loaders.gl/loader-utils");
|
|
9
|
+
|
|
10
|
+
var _tile3dAccessorUtils = require("./helpers/tile-3d-accessor-utils");
|
|
11
|
+
|
|
12
|
+
var _tile3dBatchTableHierarchy = require("./tile-3d-batch-table-hierarchy");
|
|
13
|
+
|
|
14
|
+
function defined(x) {
|
|
15
|
+
return x !== undefined && x !== null;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const clone = (x, y) => x;
|
|
19
|
+
|
|
20
|
+
const IGNORED_PROPERTY_FIELDS = {
|
|
21
|
+
HIERARCHY: true,
|
|
22
|
+
extensions: true,
|
|
23
|
+
extras: true
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
class Tile3DBatchTableParser {
|
|
27
|
+
constructor(json, binary, featureCount, options = {}) {
|
|
28
|
+
var _this$json;
|
|
29
|
+
|
|
30
|
+
(0, _loaderUtils.assert)(featureCount >= 0);
|
|
31
|
+
this.json = json || {};
|
|
32
|
+
this.binary = binary;
|
|
33
|
+
this.featureCount = featureCount;
|
|
34
|
+
this._extensions = ((_this$json = this.json) === null || _this$json === void 0 ? void 0 : _this$json.extensions) || {};
|
|
35
|
+
this._properties = {};
|
|
36
|
+
|
|
37
|
+
for (const propertyName in this.json) {
|
|
38
|
+
if (!IGNORED_PROPERTY_FIELDS[propertyName]) {
|
|
39
|
+
this._properties[propertyName] = this.json[propertyName];
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
this._binaryProperties = this._initializeBinaryProperties();
|
|
44
|
+
|
|
45
|
+
if (options['3DTILES_batch_table_hierarchy']) {
|
|
46
|
+
this._hierarchy = (0, _tile3dBatchTableHierarchy.initializeHierarchy)(this, this.json, this.binary);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
getExtension(extensionName) {
|
|
51
|
+
return this.json && this.json.extensions && this.json.extensions[extensionName];
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
memorySizeInBytes() {
|
|
55
|
+
return 0;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
isClass(batchId, className) {
|
|
59
|
+
this._checkBatchId(batchId);
|
|
60
|
+
|
|
61
|
+
(0, _loaderUtils.assert)(typeof className === 'string', className);
|
|
62
|
+
|
|
63
|
+
if (this._hierarchy) {
|
|
64
|
+
const result = (0, _tile3dBatchTableHierarchy.traverseHierarchy)(this._hierarchy, batchId, (hierarchy, instanceIndex) => {
|
|
65
|
+
const classId = hierarchy.classIds[instanceIndex];
|
|
66
|
+
const instanceClass = hierarchy.classes[classId];
|
|
67
|
+
return instanceClass.name === className;
|
|
68
|
+
});
|
|
69
|
+
return defined(result);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
isExactClass(batchId, className) {
|
|
76
|
+
(0, _loaderUtils.assert)(typeof className === 'string', className);
|
|
77
|
+
return this.getExactClassName(batchId) === className;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
getExactClassName(batchId) {
|
|
81
|
+
this._checkBatchId(batchId);
|
|
82
|
+
|
|
83
|
+
if (this._hierarchy) {
|
|
84
|
+
const classId = this._hierarchy.classIds[batchId];
|
|
85
|
+
const instanceClass = this._hierarchy.classes[classId];
|
|
86
|
+
return instanceClass.name;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
return undefined;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
hasProperty(batchId, name) {
|
|
93
|
+
this._checkBatchId(batchId);
|
|
94
|
+
|
|
95
|
+
(0, _loaderUtils.assert)(typeof name === 'string', name);
|
|
96
|
+
return defined(this._properties[name]) || this._hasPropertyInHierarchy(batchId, name);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
getPropertyNames(batchId, results) {
|
|
100
|
+
this._checkBatchId(batchId);
|
|
101
|
+
|
|
102
|
+
results = defined(results) ? results : [];
|
|
103
|
+
results.length = 0;
|
|
104
|
+
const propertyNames = Object.keys(this._properties);
|
|
105
|
+
results.push(...propertyNames);
|
|
106
|
+
|
|
107
|
+
if (this._hierarchy) {
|
|
108
|
+
this._getPropertyNamesInHierarchy(batchId, results);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
return results;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
getProperty(batchId, name) {
|
|
115
|
+
this._checkBatchId(batchId);
|
|
116
|
+
|
|
117
|
+
(0, _loaderUtils.assert)(typeof name === 'string', name);
|
|
118
|
+
|
|
119
|
+
if (this._binaryProperties) {
|
|
120
|
+
const binaryProperty = this._binaryProperties[name];
|
|
121
|
+
|
|
122
|
+
if (defined(binaryProperty)) {
|
|
123
|
+
return this._getBinaryProperty(binaryProperty, batchId);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
const propertyValues = this._properties[name];
|
|
128
|
+
|
|
129
|
+
if (defined(propertyValues)) {
|
|
130
|
+
return clone(propertyValues[batchId], true);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
if (this._hierarchy) {
|
|
134
|
+
const hierarchyProperty = this._getHierarchyProperty(batchId, name);
|
|
135
|
+
|
|
136
|
+
if (defined(hierarchyProperty)) {
|
|
137
|
+
return hierarchyProperty;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
return undefined;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
setProperty(batchId, name, value) {
|
|
145
|
+
const featureCount = this.featureCount;
|
|
146
|
+
|
|
147
|
+
this._checkBatchId(batchId);
|
|
148
|
+
|
|
149
|
+
(0, _loaderUtils.assert)(typeof name === 'string', name);
|
|
150
|
+
|
|
151
|
+
if (this._binaryProperties) {
|
|
152
|
+
const binaryProperty = this._binaryProperties[name];
|
|
153
|
+
|
|
154
|
+
if (binaryProperty) {
|
|
155
|
+
this._setBinaryProperty(binaryProperty, batchId, value);
|
|
156
|
+
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
if (this._hierarchy) {
|
|
162
|
+
if (this._setHierarchyProperty(this, batchId, name, value)) {
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
let propertyValues = this._properties[name];
|
|
168
|
+
|
|
169
|
+
if (!defined(propertyValues)) {
|
|
170
|
+
this._properties[name] = new Array(featureCount);
|
|
171
|
+
propertyValues = this._properties[name];
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
propertyValues[batchId] = clone(value, true);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
_checkBatchId(batchId) {
|
|
178
|
+
const valid = batchId >= 0 && batchId < this.featureCount;
|
|
179
|
+
|
|
180
|
+
if (!valid) {
|
|
181
|
+
throw new Error("batchId not in range [0, featureCount - 1].");
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
_getBinaryProperty(binaryProperty, index) {
|
|
186
|
+
return binaryProperty.unpack(binaryProperty.typedArray, index);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
_setBinaryProperty(binaryProperty, index, value) {
|
|
190
|
+
binaryProperty.pack(value, binaryProperty.typedArray, index);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
_initializeBinaryProperties() {
|
|
194
|
+
let binaryProperties = null;
|
|
195
|
+
|
|
196
|
+
for (const name in this._properties) {
|
|
197
|
+
const property = this._properties[name];
|
|
198
|
+
|
|
199
|
+
const binaryProperty = this._initializeBinaryProperty(name, property);
|
|
200
|
+
|
|
201
|
+
if (binaryProperty) {
|
|
202
|
+
binaryProperties = binaryProperties || {};
|
|
203
|
+
binaryProperties[name] = binaryProperty;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
return binaryProperties;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
_initializeBinaryProperty(name, property) {
|
|
211
|
+
if ('byteOffset' in property) {
|
|
212
|
+
const tile3DAccessor = property;
|
|
213
|
+
(0, _loaderUtils.assert)(this.binary, "Property ".concat(name, " requires a batch table binary."));
|
|
214
|
+
(0, _loaderUtils.assert)(tile3DAccessor.type, "Property ".concat(name, " requires a type."));
|
|
215
|
+
const accessor = (0, _tile3dAccessorUtils.createTypedArrayFromAccessor)(tile3DAccessor, this.binary.buffer, this.binary.byteOffset | 0, this.featureCount);
|
|
216
|
+
return {
|
|
217
|
+
typedArray: accessor.values,
|
|
218
|
+
componentCount: accessor.size,
|
|
219
|
+
unpack: accessor.unpacker,
|
|
220
|
+
pack: accessor.packer
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
return null;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
_hasPropertyInHierarchy(batchId, name) {
|
|
228
|
+
if (!this._hierarchy) {
|
|
229
|
+
return false;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
const result = (0, _tile3dBatchTableHierarchy.traverseHierarchy)(this._hierarchy, batchId, (hierarchy, instanceIndex) => {
|
|
233
|
+
const classId = hierarchy.classIds[instanceIndex];
|
|
234
|
+
const instances = hierarchy.classes[classId].instances;
|
|
235
|
+
return defined(instances[name]);
|
|
236
|
+
});
|
|
237
|
+
return defined(result);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
_getPropertyNamesInHierarchy(batchId, results) {
|
|
241
|
+
(0, _tile3dBatchTableHierarchy.traverseHierarchy)(this._hierarchy, batchId, (hierarchy, instanceIndex) => {
|
|
242
|
+
const classId = hierarchy.classIds[instanceIndex];
|
|
243
|
+
const instances = hierarchy.classes[classId].instances;
|
|
244
|
+
|
|
245
|
+
for (const name in instances) {
|
|
246
|
+
if (instances.hasOwnProperty(name)) {
|
|
247
|
+
if (results.indexOf(name) === -1) {
|
|
248
|
+
results.push(name);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
_getHierarchyProperty(batchId, name) {
|
|
256
|
+
return (0, _tile3dBatchTableHierarchy.traverseHierarchy)(this._hierarchy, batchId, (hierarchy, instanceIndex) => {
|
|
257
|
+
const classId = hierarchy.classIds[instanceIndex];
|
|
258
|
+
const instanceClass = hierarchy.classes[classId];
|
|
259
|
+
const indexInClass = hierarchy.classIndexes[instanceIndex];
|
|
260
|
+
const propertyValues = instanceClass.instances[name];
|
|
261
|
+
|
|
262
|
+
if (defined(propertyValues)) {
|
|
263
|
+
if (defined(propertyValues.typedArray)) {
|
|
264
|
+
return this._getBinaryProperty(propertyValues, indexInClass);
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
return clone(propertyValues[indexInClass], true);
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
return null;
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
_setHierarchyProperty(batchTable, batchId, name, value) {
|
|
275
|
+
const result = (0, _tile3dBatchTableHierarchy.traverseHierarchy)(this._hierarchy, batchId, (hierarchy, instanceIndex) => {
|
|
276
|
+
const classId = hierarchy.classIds[instanceIndex];
|
|
277
|
+
const instanceClass = hierarchy.classes[classId];
|
|
278
|
+
const indexInClass = hierarchy.classIndexes[instanceIndex];
|
|
279
|
+
const propertyValues = instanceClass.instances[name];
|
|
280
|
+
|
|
281
|
+
if (defined(propertyValues)) {
|
|
282
|
+
(0, _loaderUtils.assert)(instanceIndex === batchId, "Inherited property \"".concat(name, "\" is read-only."));
|
|
283
|
+
|
|
284
|
+
if (defined(propertyValues.typedArray)) {
|
|
285
|
+
this._setBinaryProperty(propertyValues, indexInClass, value);
|
|
286
|
+
} else {
|
|
287
|
+
propertyValues[indexInClass] = clone(value, true);
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
return true;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
return false;
|
|
294
|
+
});
|
|
295
|
+
return defined(result);
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
exports.default = Tile3DBatchTableParser;
|
|
301
|
+
//# sourceMappingURL=tile-3d-batch-table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/classes/tile-3d-batch-table.js"],"names":["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 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() {\n return 0;\n }\n\n isClass(batchId, className) {\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 = 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"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _math = require("@loaders.gl/math");
|
|
9
|
+
|
|
10
|
+
class Tile3DFeatureTable {
|
|
11
|
+
constructor(featureTableJson, featureTableBinary) {
|
|
12
|
+
this.json = featureTableJson;
|
|
13
|
+
this.buffer = featureTableBinary;
|
|
14
|
+
this.featuresLength = 0;
|
|
15
|
+
this._cachedTypedArrays = {};
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
getExtension(extensionName) {
|
|
19
|
+
return this.json.extensions && this.json.extensions[extensionName];
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
hasProperty(propertyName) {
|
|
23
|
+
return Boolean(this.json[propertyName]);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
getGlobalProperty(propertyName, componentType = _math.GL.UNSIGNED_INT, componentLength = 1) {
|
|
27
|
+
const jsonValue = this.json[propertyName];
|
|
28
|
+
|
|
29
|
+
if (jsonValue && Number.isFinite(jsonValue.byteOffset)) {
|
|
30
|
+
return this._getTypedArrayFromBinary(propertyName, componentType, componentLength, 1, jsonValue.byteOffset);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
return jsonValue;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
getPropertyArray(propertyName, componentType, componentLength) {
|
|
37
|
+
const jsonValue = this.json[propertyName];
|
|
38
|
+
|
|
39
|
+
if (jsonValue && Number.isFinite(jsonValue.byteOffset)) {
|
|
40
|
+
if ('componentType' in jsonValue) {
|
|
41
|
+
componentType = _math.GLType.fromName(jsonValue.componentType);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return this._getTypedArrayFromBinary(propertyName, componentType, componentLength, this.featuresLength, jsonValue.byteOffset);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return this._getTypedArrayFromArray(propertyName, componentType, jsonValue);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
getProperty(propertyName, componentType, componentLength, featureId, result) {
|
|
51
|
+
const jsonValue = this.json[propertyName];
|
|
52
|
+
|
|
53
|
+
if (!jsonValue) {
|
|
54
|
+
return jsonValue;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const typedArray = this.getPropertyArray(propertyName, componentType, componentLength);
|
|
58
|
+
|
|
59
|
+
if (componentLength === 1) {
|
|
60
|
+
return typedArray[featureId];
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
for (let i = 0; i < componentLength; ++i) {
|
|
64
|
+
result[i] = typedArray[componentLength * featureId + i];
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
return result;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
_getTypedArrayFromBinary(propertyName, componentType, componentLength, count, byteOffset) {
|
|
71
|
+
const cachedTypedArrays = this._cachedTypedArrays;
|
|
72
|
+
let typedArray = cachedTypedArrays[propertyName];
|
|
73
|
+
|
|
74
|
+
if (!typedArray) {
|
|
75
|
+
typedArray = _math.GLType.createTypedArray(componentType, this.buffer.buffer, this.buffer.byteOffset + byteOffset, count * componentLength);
|
|
76
|
+
cachedTypedArrays[propertyName] = typedArray;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
return typedArray;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
_getTypedArrayFromArray(propertyName, componentType, array) {
|
|
83
|
+
const cachedTypedArrays = this._cachedTypedArrays;
|
|
84
|
+
let typedArray = cachedTypedArrays[propertyName];
|
|
85
|
+
|
|
86
|
+
if (!typedArray) {
|
|
87
|
+
typedArray = _math.GLType.createTypedArray(componentType, array);
|
|
88
|
+
cachedTypedArrays[propertyName] = typedArray;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
return typedArray;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
exports.default = Tile3DFeatureTable;
|
|
97
|
+
//# sourceMappingURL=tile-3d-feature-table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/classes/tile-3d-feature-table.js"],"names":["Tile3DFeatureTable","constructor","featureTableJson","featureTableBinary","json","buffer","featuresLength","_cachedTypedArrays","getExtension","extensionName","extensions","hasProperty","propertyName","Boolean","getGlobalProperty","componentType","GL","UNSIGNED_INT","componentLength","jsonValue","Number","isFinite","byteOffset","_getTypedArrayFromBinary","getPropertyArray","GLType","fromName","_getTypedArrayFromArray","getProperty","featureId","result","typedArray","i","count","cachedTypedArrays","createTypedArray","array"],"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 {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 constructor(featureTableJson, featureTableBinary) {\n this.json = featureTableJson;\n this.buffer = featureTableBinary;\n this.featuresLength = 0;\n this._cachedTypedArrays = {};\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"],"file":"tile-3d-feature-table.js"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.TILE3D_OPTIMIZATION_HINT = exports.MAGIC_ARRAY = exports.TILE3D_TYPES = exports.TILE3D_TYPE = void 0;
|
|
7
|
+
const TILE3D_TYPE = {
|
|
8
|
+
COMPOSITE: 'cmpt',
|
|
9
|
+
POINT_CLOUD: 'pnts',
|
|
10
|
+
BATCHED_3D_MODEL: 'b3dm',
|
|
11
|
+
INSTANCED_3D_MODEL: 'i3dm',
|
|
12
|
+
GEOMETRY: 'geom',
|
|
13
|
+
VECTOR: 'vect'
|
|
14
|
+
};
|
|
15
|
+
exports.TILE3D_TYPE = TILE3D_TYPE;
|
|
16
|
+
const TILE3D_TYPES = Object.keys(TILE3D_TYPE);
|
|
17
|
+
exports.TILE3D_TYPES = TILE3D_TYPES;
|
|
18
|
+
const MAGIC_ARRAY = {
|
|
19
|
+
BATCHED_MODEL: [98, 51, 100, 109],
|
|
20
|
+
INSTANCED_MODEL: [105, 51, 100, 109],
|
|
21
|
+
POINT_CLOUD: [112, 110, 116, 115],
|
|
22
|
+
COMPOSITE: [99, 109, 112, 116]
|
|
23
|
+
};
|
|
24
|
+
exports.MAGIC_ARRAY = MAGIC_ARRAY;
|
|
25
|
+
const TILE3D_OPTIMIZATION_HINT = {
|
|
26
|
+
NOT_COMPUTED: -1,
|
|
27
|
+
USE_OPTIMIZATION: 1,
|
|
28
|
+
SKIP_OPTIMIZATION: 0
|
|
29
|
+
};
|
|
30
|
+
exports.TILE3D_OPTIMIZATION_HINT = TILE3D_OPTIMIZATION_HINT;
|
|
31
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/constants.js"],"names":["TILE3D_TYPE","COMPOSITE","POINT_CLOUD","BATCHED_3D_MODEL","INSTANCED_3D_MODEL","GEOMETRY","VECTOR","TILE3D_TYPES","Object","keys","MAGIC_ARRAY","BATCHED_MODEL","INSTANCED_MODEL","TILE3D_OPTIMIZATION_HINT","NOT_COMPUTED","USE_OPTIMIZATION","SKIP_OPTIMIZATION"],"mappings":";;;;;;AAEO,MAAMA,WAAW,GAAG;AACzBC,EAAAA,SAAS,EAAE,MADc;AAEzBC,EAAAA,WAAW,EAAE,MAFY;AAGzBC,EAAAA,gBAAgB,EAAE,MAHO;AAIzBC,EAAAA,kBAAkB,EAAE,MAJK;AAKzBC,EAAAA,QAAQ,EAAE,MALe;AAMzBC,EAAAA,MAAM,EAAE;AANiB,CAApB;;AASA,MAAMC,YAAY,GAAGC,MAAM,CAACC,IAAP,CAAYT,WAAZ,CAArB;;AAEA,MAAMU,WAAW,GAAG;AACzBC,EAAAA,aAAa,EAAE,CAAC,EAAD,EAAK,EAAL,EAAS,GAAT,EAAc,GAAd,CADU;AAEzBC,EAAAA,eAAe,EAAE,CAAC,GAAD,EAAM,EAAN,EAAU,GAAV,EAAe,GAAf,CAFQ;AAGzBV,EAAAA,WAAW,EAAE,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,CAHY;AAIzBD,EAAAA,SAAS,EAAE,CAAC,EAAD,EAAK,GAAL,EAAU,GAAV,EAAe,GAAf;AAJc,CAApB;;AAQA,MAAMY,wBAAwB,GAAG;AACtCC,EAAAA,YAAY,EAAE,CAAC,CADuB;AAEtCC,EAAAA,gBAAgB,EAAE,CAFoB;AAGtCC,EAAAA,iBAAiB,EAAE;AAHmB,CAAjC","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};\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"],"file":"constants.js"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.encodeBatchedModel3DTile = encodeBatchedModel3DTile;
|
|
7
|
+
|
|
8
|
+
var _loaderUtils = require("@loaders.gl/loader-utils");
|
|
9
|
+
|
|
10
|
+
var _constants = require("../constants");
|
|
11
|
+
|
|
12
|
+
var _encode3dTileHeader = require("./helpers/encode-3d-tile-header");
|
|
13
|
+
|
|
14
|
+
function encodeBatchedModel3DTile(tile, dataView, byteOffset, options) {
|
|
15
|
+
const {
|
|
16
|
+
featuresLength = 0,
|
|
17
|
+
batchTable
|
|
18
|
+
} = tile;
|
|
19
|
+
const featureTableJson = {
|
|
20
|
+
BATCH_LENGTH: featuresLength
|
|
21
|
+
};
|
|
22
|
+
const featureTableJsonString = JSON.stringify(featureTableJson);
|
|
23
|
+
const batchTableJsonString = batchTable ? JSON.stringify(batchTable) : '';
|
|
24
|
+
const featureTableJsonByteLength = (0, _loaderUtils.padToNBytes)(featureTableJsonString.length, 8);
|
|
25
|
+
const batchTableJsonByteLength = batchTableJsonString ? (0, _loaderUtils.padToNBytes)(batchTableJsonString.length, 8) : 0;
|
|
26
|
+
tile = {
|
|
27
|
+
magic: _constants.MAGIC_ARRAY.BATCHED_MODEL,
|
|
28
|
+
...tile
|
|
29
|
+
};
|
|
30
|
+
const byteOffsetStart = byteOffset;
|
|
31
|
+
byteOffset = (0, _encode3dTileHeader.encode3DTileHeader)(tile, dataView, byteOffset);
|
|
32
|
+
|
|
33
|
+
if (dataView) {
|
|
34
|
+
dataView.setUint32(12, featureTableJsonByteLength, true);
|
|
35
|
+
dataView.setUint32(16, 0, true);
|
|
36
|
+
dataView.setUint32(20, batchTableJsonByteLength, true);
|
|
37
|
+
dataView.setUint32(24, 0, true);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
byteOffset += 16;
|
|
41
|
+
byteOffset = (0, _loaderUtils.copyPaddedStringToDataView)(dataView, byteOffset, featureTableJsonString, 8);
|
|
42
|
+
|
|
43
|
+
if (batchTable) {
|
|
44
|
+
byteOffset = (0, _loaderUtils.copyPaddedStringToDataView)(dataView, byteOffset, batchTableJsonString, 8);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const gltfEncoded = tile.gltfEncoded;
|
|
48
|
+
|
|
49
|
+
if (gltfEncoded) {
|
|
50
|
+
byteOffset = (0, _loaderUtils.copyBinaryToDataView)(dataView, byteOffset, gltfEncoded, gltfEncoded.byteLength);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
(0, _encode3dTileHeader.encode3DTileByteLength)(dataView, byteOffsetStart, byteOffset - byteOffsetStart);
|
|
54
|
+
return byteOffset;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=encode-3d-tile-batched-model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/encoders/encode-3d-tile-batched-model.js"],"names":["encodeBatchedModel3DTile","tile","dataView","byteOffset","options","featuresLength","batchTable","featureTableJson","BATCH_LENGTH","featureTableJsonString","JSON","stringify","batchTableJsonString","featureTableJsonByteLength","length","batchTableJsonByteLength","magic","MAGIC_ARRAY","BATCHED_MODEL","byteOffsetStart","setUint32","gltfEncoded","byteLength"],"mappings":";;;;;;;AAGA;;AAKA;;AACA;;AAGO,SAASA,wBAAT,CAAkCC,IAAlC,EAAwCC,QAAxC,EAAkDC,UAAlD,EAA8DC,OAA9D,EAAuE;AAC5E,QAAM;AAACC,IAAAA,cAAc,GAAG,CAAlB;AAAqBC,IAAAA;AAArB,MAAmCL,IAAzC;AAEA,QAAMM,gBAAgB,GAAG;AACvBC,IAAAA,YAAY,EAAEH;AADS,GAAzB;AAGA,QAAMI,sBAAsB,GAAGC,IAAI,CAACC,SAAL,CAAeJ,gBAAf,CAA/B;AACA,QAAMK,oBAAoB,GAAGN,UAAU,GAAGI,IAAI,CAACC,SAAL,CAAeL,UAAf,CAAH,GAAgC,EAAvE;AACA,QAAMO,0BAA0B,GAAG,8BAAYJ,sBAAsB,CAACK,MAAnC,EAA2C,CAA3C,CAAnC;AACA,QAAMC,wBAAwB,GAAGH,oBAAoB,GACjD,8BAAYA,oBAAoB,CAACE,MAAjC,EAAyC,CAAzC,CADiD,GAEjD,CAFJ;AAKAb,EAAAA,IAAI,GAAG;AAACe,IAAAA,KAAK,EAAEC,uBAAYC,aAApB;AAAmC,OAAGjB;AAAtC,GAAP;AAEA,QAAMkB,eAAe,GAAGhB,UAAxB;AAEAA,EAAAA,UAAU,GAAG,4CAAmBF,IAAnB,EAAyBC,QAAzB,EAAmCC,UAAnC,CAAb;;AAEA,MAAID,QAAJ,EAAc;AACZA,IAAAA,QAAQ,CAACkB,SAAT,CAAmB,EAAnB,EAAuBP,0BAAvB,EAAmD,IAAnD;AACAX,IAAAA,QAAQ,CAACkB,SAAT,CAAmB,EAAnB,EAAuB,CAAvB,EAA0B,IAA1B;AACAlB,IAAAA,QAAQ,CAACkB,SAAT,CAAmB,EAAnB,EAAuBL,wBAAvB,EAAiD,IAAjD;AACAb,IAAAA,QAAQ,CAACkB,SAAT,CAAmB,EAAnB,EAAuB,CAAvB,EAA0B,IAA1B;AACD;;AACDjB,EAAAA,UAAU,IAAI,EAAd;AAGAA,EAAAA,UAAU,GAAG,6CAA2BD,QAA3B,EAAqCC,UAArC,EAAiDM,sBAAjD,EAAyE,CAAzE,CAAb;;AAEA,MAAIH,UAAJ,EAAgB;AACdH,IAAAA,UAAU,GAAG,6CAA2BD,QAA3B,EAAqCC,UAArC,EAAiDS,oBAAjD,EAAuE,CAAvE,CAAb;AACD;;AAGD,QAAMS,WAAW,GAAGpB,IAAI,CAACoB,WAAzB;;AACA,MAAIA,WAAJ,EAAiB;AACflB,IAAAA,UAAU,GAAG,uCAAqBD,QAArB,EAA+BC,UAA/B,EAA2CkB,WAA3C,EAAwDA,WAAW,CAACC,UAApE,CAAb;AACD;;AAGD,kDAAuBpB,QAAvB,EAAiCiB,eAAjC,EAAkDhB,UAAU,GAAGgB,eAA/D;AAEA,SAAOhB,UAAP;AACD","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"],"file":"encode-3d-tile-batched-model.js"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.encodeComposite3DTile = encodeComposite3DTile;
|
|
7
|
+
|
|
8
|
+
var _constants = require("../constants");
|
|
9
|
+
|
|
10
|
+
var _encode3dTileHeader = require("./helpers/encode-3d-tile-header");
|
|
11
|
+
|
|
12
|
+
function encodeComposite3DTile(tile, dataView, byteOffset, options, encode3DTile) {
|
|
13
|
+
tile = {
|
|
14
|
+
magic: _constants.MAGIC_ARRAY.COMPOSITE,
|
|
15
|
+
tiles: [],
|
|
16
|
+
...tile
|
|
17
|
+
};
|
|
18
|
+
const byteOffsetStart = byteOffset;
|
|
19
|
+
byteOffset += (0, _encode3dTileHeader.encode3DTileHeader)(tile, dataView, byteOffset);
|
|
20
|
+
|
|
21
|
+
if (dataView) {
|
|
22
|
+
dataView.setUint32(byteOffset, tile.tiles.length, true);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
byteOffset += 4;
|
|
26
|
+
|
|
27
|
+
for (let i = 0; i < tile.tiles.length; ++i) {
|
|
28
|
+
byteOffset += encode3DTile(tile.tiles[i], dataView, byteOffset, options);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
(0, _encode3dTileHeader.encode3DTileByteLength)(dataView, byteOffsetStart, byteOffset - byteOffsetStart);
|
|
32
|
+
return byteOffset;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=encode-3d-tile-composite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/encoders/encode-3d-tile-composite.js"],"names":["encodeComposite3DTile","tile","dataView","byteOffset","options","encode3DTile","magic","MAGIC_ARRAY","COMPOSITE","tiles","byteOffsetStart","setUint32","length","i"],"mappings":";;;;;;;AAGA;;AACA;;AAEO,SAASA,qBAAT,CAA+BC,IAA/B,EAAqCC,QAArC,EAA+CC,UAA/C,EAA2DC,OAA3D,EAAoEC,YAApE,EAAkF;AAEvFJ,EAAAA,IAAI,GAAG;AAACK,IAAAA,KAAK,EAAEC,uBAAYC,SAApB;AAA+BC,IAAAA,KAAK,EAAE,EAAtC;AAA0C,OAAGR;AAA7C,GAAP;AAEA,QAAMS,eAAe,GAAGP,UAAxB;AAEAA,EAAAA,UAAU,IAAI,4CAAmBF,IAAnB,EAAyBC,QAAzB,EAAmCC,UAAnC,CAAd;;AAEA,MAAID,QAAJ,EAAc;AACZA,IAAAA,QAAQ,CAACS,SAAT,CAAmBR,UAAnB,EAA+BF,IAAI,CAACQ,KAAL,CAAWG,MAA1C,EAAkD,IAAlD;AACD;;AACDT,EAAAA,UAAU,IAAI,CAAd;;AAEA,OAAK,IAAIU,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGZ,IAAI,CAACQ,KAAL,CAAWG,MAA/B,EAAuC,EAAEC,CAAzC,EAA4C;AAC1CV,IAAAA,UAAU,IAAIE,YAAY,CAACJ,IAAI,CAACQ,KAAL,CAAWI,CAAX,CAAD,EAAgBX,QAAhB,EAA0BC,UAA1B,EAAsCC,OAAtC,CAA1B;AACD;;AAGD,kDAAuBF,QAAvB,EAAiCQ,eAAjC,EAAkDP,UAAU,GAAGO,eAA/D;AAEA,SAAOP,UAAP;AACD","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 {MAGIC_ARRAY} from '../constants';\nimport {encode3DTileHeader, encode3DTileByteLength} from './helpers/encode-3d-tile-header';\n\nexport function encodeComposite3DTile(tile, dataView, byteOffset, options, encode3DTile) {\n // Add default magic for this tile type\n tile = {magic: MAGIC_ARRAY.COMPOSITE, tiles: [], ...tile};\n\n const byteOffsetStart = byteOffset;\n\n byteOffset += encode3DTileHeader(tile, dataView, byteOffset);\n\n if (dataView) {\n dataView.setUint32(byteOffset, tile.tiles.length, true); // tilesLength\n }\n byteOffset += 4;\n\n for (let i = 0; i < tile.tiles.length; ++i) {\n byteOffset += encode3DTile(tile.tiles[i], dataView, byteOffset, options);\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"],"file":"encode-3d-tile-composite.js"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.encodeInstancedModel3DTile = encodeInstancedModel3DTile;
|
|
7
|
+
|
|
8
|
+
var _loaderUtils = require("@loaders.gl/loader-utils");
|
|
9
|
+
|
|
10
|
+
var _constants = require("../constants");
|
|
11
|
+
|
|
12
|
+
var _encode3dTileHeader = require("./helpers/encode-3d-tile-header");
|
|
13
|
+
|
|
14
|
+
function encodeInstancedModel3DTile(tile, dataView, byteOffset, options) {
|
|
15
|
+
const {
|
|
16
|
+
featuresLength = 1,
|
|
17
|
+
gltfFormat = 1,
|
|
18
|
+
gltfUri = ''
|
|
19
|
+
} = tile;
|
|
20
|
+
const gltfUriByteLength = gltfUri.length;
|
|
21
|
+
const featureTableJson = {
|
|
22
|
+
INSTANCES_LENGTH: featuresLength,
|
|
23
|
+
POSITION: new Array(featuresLength * 3).fill(0)
|
|
24
|
+
};
|
|
25
|
+
const featureTableJsonString = JSON.stringify(featureTableJson);
|
|
26
|
+
const featureTableJsonByteLength = featureTableJsonString.length;
|
|
27
|
+
tile = {
|
|
28
|
+
magic: _constants.MAGIC_ARRAY.INSTANCED_MODEL,
|
|
29
|
+
...tile
|
|
30
|
+
};
|
|
31
|
+
const byteOffsetStart = byteOffset;
|
|
32
|
+
byteOffset = (0, _encode3dTileHeader.encode3DTileHeader)(tile, dataView, 0);
|
|
33
|
+
|
|
34
|
+
if (dataView) {
|
|
35
|
+
dataView.setUint32(12, featureTableJsonByteLength, true);
|
|
36
|
+
dataView.setUint32(16, 0, true);
|
|
37
|
+
dataView.setUint32(20, 0, true);
|
|
38
|
+
dataView.setUint32(24, 0, true);
|
|
39
|
+
dataView.setUint32(28, gltfFormat, true);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
byteOffset += 20;
|
|
43
|
+
byteOffset += (0, _loaderUtils.copyStringToDataView)(dataView, byteOffset, featureTableJsonString, featureTableJsonByteLength);
|
|
44
|
+
byteOffset += (0, _loaderUtils.copyStringToDataView)(dataView, byteOffset, gltfUri, gltfUriByteLength);
|
|
45
|
+
(0, _encode3dTileHeader.encode3DTileByteLength)(dataView, byteOffsetStart, byteOffset - byteOffsetStart);
|
|
46
|
+
return byteOffset;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=encode-3d-tile-instanced-model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/encoders/encode-3d-tile-instanced-model.js"],"names":["encodeInstancedModel3DTile","tile","dataView","byteOffset","options","featuresLength","gltfFormat","gltfUri","gltfUriByteLength","length","featureTableJson","INSTANCES_LENGTH","POSITION","Array","fill","featureTableJsonString","JSON","stringify","featureTableJsonByteLength","magic","MAGIC_ARRAY","INSTANCED_MODEL","byteOffsetStart","setUint32"],"mappings":";;;;;;;AAGA;;AACA;;AACA;;AAIO,SAASA,0BAAT,CAAoCC,IAApC,EAA0CC,QAA1C,EAAoDC,UAApD,EAAgEC,OAAhE,EAAyE;AAC9E,QAAM;AAACC,IAAAA,cAAc,GAAG,CAAlB;AAAqBC,IAAAA,UAAU,GAAG,CAAlC;AAAqCC,IAAAA,OAAO,GAAG;AAA/C,MAAqDN,IAA3D;AAEA,QAAMO,iBAAiB,GAAGD,OAAO,CAACE,MAAlC;AAEA,QAAMC,gBAAgB,GAAG;AACvBC,IAAAA,gBAAgB,EAAEN,cADK;AAEvBO,IAAAA,QAAQ,EAAE,IAAIC,KAAJ,CAAUR,cAAc,GAAG,CAA3B,EAA8BS,IAA9B,CAAmC,CAAnC;AAFa,GAAzB;AAIA,QAAMC,sBAAsB,GAAGC,IAAI,CAACC,SAAL,CAAeP,gBAAf,CAA/B;AACA,QAAMQ,0BAA0B,GAAGH,sBAAsB,CAACN,MAA1D;AAGAR,EAAAA,IAAI,GAAG;AAACkB,IAAAA,KAAK,EAAEC,uBAAYC,eAApB;AAAqC,OAAGpB;AAAxC,GAAP;AAEA,QAAMqB,eAAe,GAAGnB,UAAxB;AAEAA,EAAAA,UAAU,GAAG,4CAAmBF,IAAnB,EAAyBC,QAAzB,EAAmC,CAAnC,CAAb;;AAEA,MAAIA,QAAJ,EAAc;AACZA,IAAAA,QAAQ,CAACqB,SAAT,CAAmB,EAAnB,EAAuBL,0BAAvB,EAAmD,IAAnD;AACAhB,IAAAA,QAAQ,CAACqB,SAAT,CAAmB,EAAnB,EAAuB,CAAvB,EAA0B,IAA1B;AACArB,IAAAA,QAAQ,CAACqB,SAAT,CAAmB,EAAnB,EAAuB,CAAvB,EAA0B,IAA1B;AACArB,IAAAA,QAAQ,CAACqB,SAAT,CAAmB,EAAnB,EAAuB,CAAvB,EAA0B,IAA1B;AACArB,IAAAA,QAAQ,CAACqB,SAAT,CAAmB,EAAnB,EAAuBjB,UAAvB,EAAmC,IAAnC;AACD;;AAEDH,EAAAA,UAAU,IAAI,EAAd;AAEAA,EAAAA,UAAU,IAAI,uCACZD,QADY,EAEZC,UAFY,EAGZY,sBAHY,EAIZG,0BAJY,CAAd;AAMAf,EAAAA,UAAU,IAAI,uCAAqBD,QAArB,EAA+BC,UAA/B,EAA2CI,OAA3C,EAAoDC,iBAApD,CAAd;AAGA,kDAAuBN,QAAvB,EAAiCoB,eAAjC,EAAkDnB,UAAU,GAAGmB,eAA/D;AAEA,SAAOnB,UAAP;AACD","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 {copyStringToDataView} 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 buffer for testing purposes\n// eslint-disable-next-line max-statements\nexport function encodeInstancedModel3DTile(tile, dataView, byteOffset, options) {\n const {featuresLength = 1, gltfFormat = 1, gltfUri = ''} = tile;\n\n const gltfUriByteLength = gltfUri.length;\n\n const featureTableJson = {\n INSTANCES_LENGTH: featuresLength,\n POSITION: new Array(featuresLength * 3).fill(0)\n };\n const featureTableJsonString = JSON.stringify(featureTableJson);\n const featureTableJsonByteLength = featureTableJsonString.length;\n\n // Add default magic for this tile type\n tile = {magic: MAGIC_ARRAY.INSTANCED_MODEL, ...tile};\n\n const byteOffsetStart = byteOffset;\n\n byteOffset = encode3DTileHeader(tile, dataView, 0);\n\n if (dataView) {\n dataView.setUint32(12, featureTableJsonByteLength, true); // featureTableJsonByteLength\n dataView.setUint32(16, 0, true); // featureTableBinaryByteLength\n dataView.setUint32(20, 0, true); // batchTableJsonByteLength\n dataView.setUint32(24, 0, true); // batchTableBinaryByteLength\n dataView.setUint32(28, gltfFormat, true); // gltfFormat\n }\n\n byteOffset += 20;\n\n byteOffset += copyStringToDataView(\n dataView,\n byteOffset,\n featureTableJsonString,\n featureTableJsonByteLength\n );\n byteOffset += copyStringToDataView(dataView, byteOffset, gltfUri, gltfUriByteLength);\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"],"file":"encode-3d-tile-instanced-model.js"}
|