@pilotdev/pilot-bim-dataprovider 26.1.0 → 26.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/lib/__tests__/test_utils/BinaryCloudTestUtils.d.ts +21 -0
  2. package/lib/__tests__/test_utils/BinaryCloudTestUtils.js +231 -0
  3. package/lib/__tests__/test_utils/BinaryCloudTestUtils.js.map +1 -0
  4. package/lib/src/BimDataProviderApi.d.ts +1 -1
  5. package/lib/src/model/BimDataClasses.d.ts +22 -10
  6. package/lib/src/model/BimDataClasses.js +18 -1
  7. package/lib/src/model/BimDataClasses.js.map +1 -1
  8. package/lib/src/model/BimDataCloudPart.d.ts +1 -1
  9. package/lib/src/model/BimDataCloudPart.js +2 -2
  10. package/lib/src/model/BimDataCloudPart.js.map +1 -1
  11. package/lib/src/utils/Consts.d.ts +7 -0
  12. package/lib/src/utils/Consts.js +8 -1
  13. package/lib/src/utils/Consts.js.map +1 -1
  14. package/lib/src/utils/ViewerTools.d.ts +14 -7
  15. package/lib/src/utils/ViewerTools.js +67 -20
  16. package/lib/src/utils/ViewerTools.js.map +1 -1
  17. package/lib/src/wasm/WorkerApi.d.ts +1 -1
  18. package/lib/src/wasm/cloud_readers/BinaryCloudReader.d.ts +18 -5
  19. package/lib/src/wasm/cloud_readers/BinaryCloudReader.js +219 -202
  20. package/lib/src/wasm/cloud_readers/BinaryCloudReader.js.map +1 -1
  21. package/lib/src/wasm/cloud_readers/ICacheableBinaryCloud.d.ts +42 -0
  22. package/lib/src/wasm/cloud_readers/ICacheableBinaryCloud.js +229 -0
  23. package/lib/src/wasm/cloud_readers/ICacheableBinaryCloud.js.map +1 -0
  24. package/lib/src/wasm/cloud_readers/ICloudReader.d.ts +1 -1
  25. package/lib/src/wasm/cloud_readers/WasmCloudReader.d.ts +1 -1
  26. package/lib/src/wasm/cloud_readers/WasmCloudReader.js +4 -5
  27. package/lib/src/wasm/cloud_readers/WasmCloudReader.js.map +1 -1
  28. package/lib/src/wasm/data_accessors/CloudPartAccessor.d.ts +1 -1
  29. package/lib/src/wasm/data_accessors/CloudPartAccessor.js +6 -6
  30. package/lib/src/wasm/data_accessors/CloudPartAccessor.js.map +1 -1
  31. package/lib/src/wasm/data_accessors/FileAccessor.d.ts +1 -1
  32. package/lib/src/wasm/data_accessors/FileAccessor.js +50 -35
  33. package/lib/src/wasm/data_accessors/FileAccessor.js.map +1 -1
  34. package/lib/src/wasm/file-system/ChunkCacheFile.d.ts +34 -0
  35. package/lib/src/wasm/file-system/ChunkCacheFile.js +254 -0
  36. package/lib/src/wasm/file-system/ChunkCacheFile.js.map +1 -0
  37. package/lib/src/wasm/file-system/File.d.ts +4 -1
  38. package/lib/src/wasm/file-system/File.js +11 -3
  39. package/lib/src/wasm/file-system/File.js.map +1 -1
  40. package/lib/src/wasm/file-system/PartialFile.d.ts +3 -2
  41. package/lib/src/wasm/file-system/PartialFile.js +26 -32
  42. package/lib/src/wasm/file-system/PartialFile.js.map +1 -1
  43. package/lib/src/wasm/file-system/RemoteFile.d.ts +24 -0
  44. package/lib/src/wasm/file-system/RemoteFile.js +106 -0
  45. package/lib/src/wasm/file-system/RemoteFile.js.map +1 -0
  46. package/lib/src/wasm/wasm.worker-node.cjs +1 -1
  47. package/lib/src/wasm/wasm.worker-web.cjs +1 -1
  48. package/package.json +1 -1
@@ -1,225 +1,242 @@
1
- import { BimCloudMetadata, BimCloudHierarchyItem } from "../../model/BimDataClasses.js";
2
- import { BinaryConverter, transmitBimData } from "../../utils/ViewerTools.js";
1
+ import { BinaryConverter, isOPFSEnabled, transmitBimData } from "../../utils/ViewerTools.js";
2
+ import { ChunkCacheFile } from "../file-system/ChunkCacheFile.js";
3
+ import { OPFS_BIM_CACHE_CHUNK_EXT, OPFS_BIM_CLOUD_CACHE_FILE_POSTFIX } from "../../utils/Consts.js";
4
+ import { BinaryCloudChunks, BinaryCloudHeader, BinaryCloudNodes } from "./ICacheableBinaryCloud.js";
5
+ const QUANTIZED_POINT_SIZE = 9;
6
+ const DEQUANTIZED_POINT_SIZE = 16;
3
7
  export class BinaryCloudReader {
4
8
  fileAccessor;
5
9
  modelPartId;
6
- metadata;
7
- _file;
10
+ _header;
11
+ _chunks;
12
+ _nodes;
13
+ _sourceFile;
14
+ _cache;
15
+ _loadingOps;
8
16
  constructor(fileAccessor, modelPartId) {
9
17
  this.fileAccessor = fileAccessor;
10
18
  this.modelPartId = modelPartId;
19
+ this._loadingOps = new Map();
11
20
  }
12
21
  async open() {
13
- this.metadata = await this.getCloudMetadata();
14
- this._file = await this.fileAccessor.getFile(this.modelPartId);
15
- await this._file.openSyncFileAccess();
22
+ // get "raw" source file
23
+ this._sourceFile = await this.fileAccessor.getFile(this.modelPartId);
24
+ await this._sourceFile.openSyncFileAccess();
25
+ // get cached cloud data file
26
+ if (isOPFSEnabled) {
27
+ const cachedFileId = await this.fileAccessor.lockFile(this.modelPartId + OPFS_BIM_CLOUD_CACHE_FILE_POSTFIX);
28
+ const cacheFile = await this.fileAccessor.getFile(cachedFileId, { create: true });
29
+ this._cache = (cacheFile instanceof ChunkCacheFile) ? cacheFile : await ChunkCacheFile.fromFile(cacheFile);
30
+ if (!await this.isValidCloudCache()) {
31
+ await this._cache.removeCache();
32
+ await this._cache.initCache();
33
+ }
34
+ await this._cache.openSyncFileAccess();
35
+ }
16
36
  }
17
37
  async close() {
18
- this.metadata = undefined;
19
- await this._file?.closeSyncFileAccess();
20
- this._file = undefined;
38
+ this._header = undefined;
39
+ this._chunks = undefined;
40
+ this._nodes = undefined;
41
+ if (this._sourceFile) {
42
+ await this._sourceFile.close();
43
+ this._sourceFile = undefined;
44
+ }
45
+ if (this._cache) {
46
+ await this._cache.close();
47
+ await this.fileAccessor.unlockFile(this._cache.id);
48
+ this._cache = undefined;
49
+ }
50
+ }
51
+ async getCloudMetadata() {
52
+ const header = await this.getCloudHeader();
53
+ return header.getData();
54
+ }
55
+ async getCloudHierarchy() {
56
+ const nodes = await this.getCloudNodes();
57
+ return nodes.getData();
21
58
  }
22
- async getCloudPoints(index, offset, count) {
23
- const bufferView = await (this._file ? this._file.read(offset, count) : this.fileAccessor.read(this.modelPartId, offset, count));
24
- return new Float32Array(bufferView.buffer);
59
+ async getCloudPoints(index) {
60
+ const nodes = await this.getCloudNodes();
61
+ const chunks = await this.getChunkTable();
62
+ return this.getPoints(index, nodes, chunks);
25
63
  }
26
64
  async getCloudPointsArray(indicies, transmit, step) {
27
- const count = indicies.length / 3;
28
- const resultPromise = new Array(count);
29
- for (let i = 0, j = 0; i < count; i++) {
30
- j++; //const dataIndex = indicies[j++];
31
- const offset = indicies[j++];
32
- const size = indicies[j++];
33
- resultPromise[i] = (this._file ? this._file.read(offset, size) : this.fileAccessor.read(this.modelPartId, offset, size))
34
- .then(array => new Float32Array(array.buffer));
35
- }
65
+ const nodes = await this.getCloudNodes();
66
+ const chunks = await this.getChunkTable();
67
+ const resultPromise = indicies.map(dataIndex => this.getPoints(dataIndex, nodes, chunks));
36
68
  const result = await Promise.all(resultPromise);
37
69
  return transmitBimData(result, transmit, BinaryCloudReader.transferPoints, step);
38
70
  }
39
- async getCloudHierarchy() {
40
- if (!this.metadata)
41
- this.metadata = await this.getCloudMetadata();
42
- const metadata = this.metadata;
43
- const count = metadata.nodesCount ?? 0;
44
- const nodesOffset = metadata.nodesOffset ?? 0;
45
- const pointsOffset = metadata.pointsOffset ?? 0;
46
- const byteSize = pointsOffset - nodesOffset;
47
- const result = new Array(count);
48
- const bufferView = await (this._file ? this._file.read(nodesOffset, byteSize) : this.fileAccessor.read(this.modelPartId, nodesOffset, byteSize));
49
- const buffer = bufferView.buffer;
50
- const byteArray = new Uint8Array(buffer);
51
- let offset = 0;
52
- for (let i = 0; i < count; i++) {
53
- // offset: 0
54
- const index = BinaryConverter.toI32(byteArray, offset);
55
- offset += 4;
56
- // offset: 4
57
- const dataIndex = BinaryConverter.toI32(byteArray, offset);
58
- offset += 4;
59
- // offset: 8
60
- const pointOffset = BinaryConverter.toI64(byteArray, offset);
61
- offset += 8;
62
- // offset: 16
63
- const pointSize = BinaryConverter.toI64(byteArray, offset);
64
- offset += 8;
65
- // offset: 24
66
- const numPoints = BinaryConverter.toU32(byteArray, offset);
67
- offset += 4;
68
- // offset: 28
69
- const min = { x: 0.0, y: 0.0, z: 0.0 };
70
- min.x = BinaryConverter.toF32(byteArray, offset);
71
- offset += 4;
72
- min.y = BinaryConverter.toF32(byteArray, offset);
73
- offset += 4;
74
- min.z = BinaryConverter.toF32(byteArray, offset);
75
- offset += 4;
76
- // offset: 40
77
- const max = { x: 0.0, y: 0.0, z: 0.0 };
78
- max.x = BinaryConverter.toF32(byteArray, offset);
79
- offset += 4;
80
- max.y = BinaryConverter.toF32(byteArray, offset);
81
- offset += 4;
82
- max.z = BinaryConverter.toF32(byteArray, offset);
83
- offset += 4;
84
- // offset: 52
85
- const type = byteArray[offset];
86
- offset++;
87
- // offset: 53
88
- const mask = byteArray[offset];
89
- offset++;
90
- // offset: 54
91
- const childNodesCount = BinaryConverter.toU32(byteArray, offset);
92
- offset += 4;
93
- // offset: 58
94
- offset += 2;
95
- // offset: 60
96
- offset += 4;
97
- // offset: 64
98
- const node = new BimCloudHierarchyItem();
99
- node.index = index;
100
- node.dataIndex = dataIndex;
101
- node.type = type;
102
- node.mask = mask;
103
- node.numPoints = numPoints;
104
- node.min = min;
105
- node.max = max;
106
- node.offset = Number(pointOffset);
107
- node.size = Number(pointSize);
108
- node.childNodesCount = childNodesCount;
109
- result[i] = node;
71
+ async getCloudHeader() {
72
+ if (!this._header) {
73
+ const header = new BinaryCloudHeader();
74
+ await this.readCacheable(header, 0);
75
+ this._header = header;
110
76
  }
111
- return result;
77
+ return this._header;
112
78
  }
113
- async getCloudMetadata() {
114
- if (this.metadata)
115
- return this.metadata;
116
- const result = new BimCloudMetadata();
117
- const headerSize = 124;
118
- const bufferView = await (this._file ? this._file.read(0, headerSize) : this.fileAccessor.read(this.modelPartId, 0, headerSize));
119
- const buffer = bufferView.buffer;
120
- const byteArray = new Uint8Array(buffer);
121
- let offset = 0;
122
- // offset: 0
123
- //const signature = [byteArray[0], byteArray[1], byteArray[2], byteArray[3]];
124
- offset += 4;
125
- // offset: 4
126
- const version = BinaryConverter.toU32(byteArray, offset);
127
- offset += 4;
128
- // offset: 8
129
- const fileSize = BinaryConverter.toI64(byteArray, offset);
130
- offset += 8;
131
- // offset: 16
132
- const nodesOffset = BinaryConverter.toI64(byteArray, offset);
133
- offset += 8;
134
- // offset: 24
135
- const pointsOffset = BinaryConverter.toI64(byteArray, offset);
136
- offset += 8;
137
- // offset: 32
138
- const numPoints = BinaryConverter.toU64(byteArray, offset);
139
- offset += 8;
140
- // offset: 40
141
- const nodesCount = BinaryConverter.toU32(byteArray, offset);
142
- offset += 4;
143
- // offset: 44
144
- const depth = BinaryConverter.toU32(byteArray, offset);
145
- offset += 4;
146
- // offset: 48
147
- const baseSpacing = BinaryConverter.toF32(byteArray, offset);
148
- offset += 4;
149
- // offset: 52
150
- const scale = BinaryConverter.toF64(byteArray, offset);
151
- offset += 8;
152
- // offset: 60
153
- const min = { x: 0.0, y: 0.0, z: 0.0 };
154
- min.x = BinaryConverter.toF32(byteArray, offset);
155
- offset += 4;
156
- min.y = BinaryConverter.toF32(byteArray, offset);
157
- offset += 4;
158
- min.z = BinaryConverter.toF32(byteArray, offset);
159
- offset += 4;
160
- // offset: 72
161
- const max = { x: 0.0, y: 0.0, z: 0.0 };
162
- max.x = BinaryConverter.toF32(byteArray, offset);
163
- offset += 4;
164
- max.y = BinaryConverter.toF32(byteArray, offset);
165
- offset += 4;
166
- max.z = BinaryConverter.toF32(byteArray, offset);
167
- offset += 4;
168
- // offset: 84
169
- const rootBoxMin = { x: 0.0, y: 0.0, z: 0.0 };
170
- rootBoxMin.x = BinaryConverter.toF32(byteArray, offset);
171
- offset += 4;
172
- rootBoxMin.y = BinaryConverter.toF32(byteArray, offset);
173
- offset += 4;
174
- rootBoxMin.z = BinaryConverter.toF32(byteArray, offset);
175
- offset += 4;
176
- // offset: 96
177
- const rootBoxMax = { x: 0.0, y: 0.0, z: 0.0 };
178
- rootBoxMax.x = BinaryConverter.toF32(byteArray, offset);
179
- offset += 4;
180
- rootBoxMax.y = BinaryConverter.toF32(byteArray, offset);
181
- offset += 4;
182
- rootBoxMax.z = BinaryConverter.toF32(byteArray, offset);
183
- offset += 4;
184
- // offset: 108
185
- const centerPosition = { x: 0.0, y: 0.0, z: 0.0 };
186
- centerPosition.x = BinaryConverter.toF32(byteArray, offset);
187
- offset += 4;
188
- centerPosition.y = BinaryConverter.toF32(byteArray, offset);
189
- offset += 4;
190
- centerPosition.z = BinaryConverter.toF32(byteArray, offset);
191
- offset += 4;
192
- // offset: 120
193
- const pointFormat = byteArray[offset];
194
- offset++;
195
- // offset: 121
196
- const bytesPerPoint = byteArray[offset];
197
- offset++;
198
- // offset: 122
199
- offset += 2;
200
- // offset: 124
201
- result.depth = depth;
202
- result.min = min;
203
- result.max = max;
204
- result.baseSpacing = baseSpacing;
205
- result.version = version;
206
- result.nodesCount = nodesCount;
207
- result.posOffset = centerPosition;
208
- result.posScale = { x: scale, y: scale, z: scale };
209
- result.root_min = rootBoxMin;
210
- result.root_max = rootBoxMax;
211
- result.fileSize = Number(fileSize);
212
- result.pointFormat = pointFormat;
213
- result.bytesPerPoint = bytesPerPoint;
214
- result.numPoints = Number(numPoints);
215
- result.nodesOffset = Number(nodesOffset);
216
- result.pointsOffset = Number(pointsOffset);
217
- return result;
79
+ async getCloudNodes() {
80
+ if (!this._nodes) {
81
+ const metadata = await this.getCloudMetadata();
82
+ const nodes = new BinaryCloudNodes();
83
+ nodes.count = metadata.nodesCount;
84
+ await this.readCacheable(nodes, metadata.nodesOffset);
85
+ this._nodes = nodes;
86
+ }
87
+ return this._nodes;
88
+ }
89
+ async getChunkTable() {
90
+ if (!this._chunks) {
91
+ const metadata = await this.getCloudMetadata();
92
+ const chunks = new BinaryCloudChunks();
93
+ chunks.countToRead = metadata.chunkCount;
94
+ await this.readCacheable(chunks, metadata.chunkTableOffset);
95
+ this._chunks = chunks;
96
+ }
97
+ return this._chunks;
98
+ }
99
+ async getPoints(dataIndex, nodes, chunks) {
100
+ const node = nodes.getNodeByDataIndex(dataIndex);
101
+ if (!node)
102
+ throw new Error("Node is not found");
103
+ const chunk = chunks.get(node.chunkId);
104
+ if (!this._cache) {
105
+ const position = chunk.offset + node.offsetInChunk;
106
+ const size = node.numPoints * QUANTIZED_POINT_SIZE;
107
+ const array = await (this._sourceFile?.read(position, size) ?? this.fileAccessor.read(this.modelPartId, position, size));
108
+ return BinaryCloudReader.dequantizePoints(array, node);
109
+ }
110
+ else {
111
+ const chunkPath = node.chunkId.toString() + OPFS_BIM_CACHE_CHUNK_EXT;
112
+ const dequantizedChunkSize = chunk.size * DEQUANTIZED_POINT_SIZE / QUANTIZED_POINT_SIZE;
113
+ const chunkOffset = node.offsetInChunk * DEQUANTIZED_POINT_SIZE / QUANTIZED_POINT_SIZE;
114
+ const resultSize = node.numPoints * DEQUANTIZED_POINT_SIZE;
115
+ if (!await this._cache.isValidChunk(chunkPath, dequantizedChunkSize)) {
116
+ const chunkBuffer = await this.loadPointsDataChunk(node.chunkId, nodes, chunks);
117
+ const sourceBuffer = new Uint8Array(chunkBuffer.buffer, chunkOffset, resultSize);
118
+ const resultBuffer = new Uint8Array(resultSize);
119
+ resultBuffer.set(sourceBuffer);
120
+ return new Float32Array(resultBuffer.buffer);
121
+ }
122
+ else {
123
+ const array = await this._cache.readChunk(chunkPath, chunkOffset, resultSize);
124
+ return new Float32Array(array.buffer);
125
+ }
126
+ }
218
127
  }
219
128
  async isValid() {
220
- const metadata = await this.getCloudMetadata();
221
- const fileSize = (await this.fileAccessor.getFileInfo(this.modelPartId)).size;
222
- return fileSize == metadata.fileSize;
129
+ try {
130
+ const header = await this.getCloudHeader();
131
+ return header.getData().fileSize == (await this.fileAccessor.getFileInfo(this.modelPartId)).size;
132
+ }
133
+ catch {
134
+ return false;
135
+ }
136
+ }
137
+ async isValidCloudCache() {
138
+ if (!this._cache)
139
+ return false;
140
+ try {
141
+ // read header from cache and compare source and header fileSize
142
+ const header = new BinaryCloudHeader();
143
+ if (!await this._cache.isValidChunk(header.name, header.itemSize))
144
+ return false;
145
+ const cachedHeaderData = await this._cache.readChunk(header.name);
146
+ header.readFromBuffer(cachedHeaderData);
147
+ const fileInfo = this._sourceFile?.getFileInfo();
148
+ if (header.getData().fileSize != fileInfo?.size)
149
+ return false;
150
+ if (!this._header)
151
+ this._header = header;
152
+ return true;
153
+ }
154
+ catch {
155
+ return false;
156
+ }
157
+ }
158
+ async readCacheable(target, rawOffset) {
159
+ const size = target.bytesToRead();
160
+ if (this._cache && await this._cache.isValidChunk(target.name, size)) {
161
+ const buffer = await this._cache.readChunk(target.name);
162
+ target.readFromBuffer(buffer);
163
+ }
164
+ else {
165
+ const buffer = await (this._sourceFile?.read(rawOffset, size) ?? this.fileAccessor.read(this.modelPartId, rawOffset, size));
166
+ target.readFromBuffer(buffer);
167
+ await this._cache?.writeChunk(target.name, buffer);
168
+ }
169
+ }
170
+ async loadPointsDataChunk(chunkId, nodes, chunks) {
171
+ if (this._loadingOps.has(chunkId))
172
+ return this._loadingOps.get(chunkId);
173
+ const chunk = chunks.get(chunkId);
174
+ const chunkPath = chunkId.toString() + OPFS_BIM_CACHE_CHUNK_EXT;
175
+ const chunkBufferPromise = (this._sourceFile?.read(chunk.offset, chunk.size) ?? this.fileAccessor.read(this.modelPartId, chunk.offset, chunk.size));
176
+ const loadPromise = async () => {
177
+ const nodesInChunk = nodes.getNodesByChunkId(chunkId);
178
+ const byteArray = BinaryCloudReader.dequantizeChunk(await chunkBufferPromise, nodesInChunk);
179
+ this._cache?.writeChunk(chunkPath, byteArray).finally(() => this._loadingOps.delete(chunkId));
180
+ return byteArray;
181
+ };
182
+ loadPromise.bind(this);
183
+ const promise = loadPromise();
184
+ this._loadingOps.set(chunkId, promise);
185
+ return promise;
186
+ }
187
+ static dequantizePoints(buffer, node) {
188
+ const quant = (1.0 / 65535.0);
189
+ const sx = (node.max.x - node.min.x) * quant;
190
+ const sy = (node.max.y - node.min.y) * quant;
191
+ const sz = (node.max.z - node.min.z) * quant;
192
+ const numPoints = buffer.byteLength / QUANTIZED_POINT_SIZE;
193
+ const resultByteView = new Uint8Array(numPoints * DEQUANTIZED_POINT_SIZE);
194
+ const result = new Float32Array(resultByteView.buffer);
195
+ let sourceOffset = 0, targetFloatOffset = 0, targetByteOffset = 0;
196
+ for (let i = 0; i < numPoints; i++) {
197
+ result[targetFloatOffset] = node.min.x + sx * BinaryConverter.fromU16(buffer, sourceOffset);
198
+ result[targetFloatOffset + 1] = node.min.y + sy * BinaryConverter.fromU16(buffer, sourceOffset + 2);
199
+ result[targetFloatOffset + 2] = node.min.z + sz * BinaryConverter.fromU16(buffer, sourceOffset + 4);
200
+ resultByteView[targetByteOffset + 12] = buffer[sourceOffset + 6];
201
+ resultByteView[targetByteOffset + 13] = buffer[sourceOffset + 7];
202
+ resultByteView[targetByteOffset + 14] = buffer[sourceOffset + 8];
203
+ resultByteView[targetByteOffset + 15] = 255;
204
+ sourceOffset += QUANTIZED_POINT_SIZE;
205
+ targetByteOffset += DEQUANTIZED_POINT_SIZE;
206
+ targetFloatOffset += 4;
207
+ }
208
+ return result;
209
+ }
210
+ static dequantizeChunk(buffer, nodes) {
211
+ const sortedNodes = nodes.sort((a, b) => a.offsetInChunk - b.offsetInChunk);
212
+ let sourceOffset = 0, targetFloatOffset = 0, targetByteOffset = 0;
213
+ const resultBufferSize = buffer.byteLength * DEQUANTIZED_POINT_SIZE / QUANTIZED_POINT_SIZE;
214
+ const resultByteView = new Uint8Array(resultBufferSize);
215
+ const resultFloatView = new Float32Array(resultByteView.buffer);
216
+ const quant = (1.0 / 65535.0);
217
+ for (const node of sortedNodes) {
218
+ if (node.offsetInChunk != sourceOffset)
219
+ throw new Error("Invalid node points offset.");
220
+ const numPoints = node.numPoints;
221
+ const sx = (node.max.x - node.min.x) * quant;
222
+ const sy = (node.max.y - node.min.y) * quant;
223
+ const sz = (node.max.z - node.min.z) * quant;
224
+ for (let i = 0; i < numPoints; i++) {
225
+ resultFloatView[targetFloatOffset] = node.min.x + sx * BinaryConverter.fromU16(buffer, sourceOffset);
226
+ resultFloatView[targetFloatOffset + 1] = node.min.y + sy * BinaryConverter.fromU16(buffer, sourceOffset + 2);
227
+ resultFloatView[targetFloatOffset + 2] = node.min.z + sz * BinaryConverter.fromU16(buffer, sourceOffset + 4);
228
+ resultByteView[targetByteOffset + 12] = buffer[sourceOffset + 6];
229
+ resultByteView[targetByteOffset + 13] = buffer[sourceOffset + 7];
230
+ resultByteView[targetByteOffset + 14] = buffer[sourceOffset + 8];
231
+ resultByteView[targetByteOffset + 15] = 255;
232
+ sourceOffset += QUANTIZED_POINT_SIZE;
233
+ targetByteOffset += DEQUANTIZED_POINT_SIZE;
234
+ targetFloatOffset += 4;
235
+ }
236
+ }
237
+ if (sourceOffset != buffer.byteLength || targetByteOffset != resultBufferSize)
238
+ throw new Error("Failed to dequantize points chunk.");
239
+ return resultByteView;
223
240
  }
224
241
  static transferPoints(data) {
225
242
  return data.buffer;
@@ -1 +1 @@
1
- {"version":3,"file":"BinaryCloudReader.js","sourceRoot":"","sources":["../../../../src/wasm/cloud_readers/BinaryCloudReader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BinaryCloudReader.js","sourceRoot":"","sources":["../../../../src/wasm/cloud_readers/BinaryCloudReader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import { BimCloudMetadata, BimCloudHierarchyItem } from "../../model/BimDataClasses.js";
2
+ export interface ICacheable {
3
+ readonly name: string;
4
+ readFromBuffer(buffer: Uint8Array): void;
5
+ bytesToRead(): number;
6
+ }
7
+ type ChunkEntry = {
8
+ offset: number;
9
+ size: number;
10
+ };
11
+ export declare class BinaryCloudChunks implements ICacheable {
12
+ private _chunkTable;
13
+ readonly itemSize = 12;
14
+ readonly name: string;
15
+ countToRead: number;
16
+ get(index: number): ChunkEntry;
17
+ getData(): ChunkEntry[];
18
+ readFromBuffer(buffer: Uint8Array): void;
19
+ bytesToRead(): number;
20
+ }
21
+ export declare class BinaryCloudNodes implements ICacheable {
22
+ private _hierarchy;
23
+ private _nodeMap;
24
+ readonly itemSize = 56;
25
+ readonly name: string;
26
+ count: number;
27
+ getData(): BimCloudHierarchyItem[];
28
+ getNodeByDataIndex(dataIndex: number): BimCloudHierarchyItem | undefined;
29
+ getNodesByChunkId(chunkId: number): BimCloudHierarchyItem[];
30
+ readFromBuffer(buffer: Uint8Array): void;
31
+ bytesToRead(): number;
32
+ }
33
+ export declare class BinaryCloudHeader implements ICacheable {
34
+ static readonly size = 136;
35
+ private _header;
36
+ readonly itemSize = 136;
37
+ readonly name: string;
38
+ getData(): BimCloudMetadata;
39
+ readFromBuffer(buffer: Uint8Array): void;
40
+ bytesToRead(): number;
41
+ }
42
+ export {};