@ifc-lite/geometry 1.1.7 → 1.2.1

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 (46) hide show
  1. package/LICENSE +373 -0
  2. package/dist/default-materials.d.ts.map +1 -1
  3. package/dist/default-materials.js +12 -1
  4. package/dist/default-materials.js.map +1 -1
  5. package/dist/ifc-lite-bridge.d.ts +1 -0
  6. package/dist/ifc-lite-bridge.d.ts.map +1 -1
  7. package/dist/ifc-lite-bridge.js.map +1 -1
  8. package/dist/ifc-lite-mesh-collector.d.ts +12 -2
  9. package/dist/ifc-lite-mesh-collector.d.ts.map +1 -1
  10. package/dist/ifc-lite-mesh-collector.js +63 -7
  11. package/dist/ifc-lite-mesh-collector.js.map +1 -1
  12. package/dist/index.d.ts +40 -13
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +167 -85
  15. package/dist/index.js.map +1 -1
  16. package/dist/native-bridge.d.ts +24 -0
  17. package/dist/native-bridge.d.ts.map +1 -0
  18. package/dist/native-bridge.js +141 -0
  19. package/dist/native-bridge.js.map +1 -0
  20. package/dist/platform-bridge.d.ts +96 -0
  21. package/dist/platform-bridge.d.ts.map +1 -0
  22. package/dist/platform-bridge.js +26 -0
  23. package/dist/platform-bridge.js.map +1 -0
  24. package/dist/types.d.ts +1 -0
  25. package/dist/types.d.ts.map +1 -1
  26. package/dist/wasm-bridge.d.ts +21 -0
  27. package/dist/wasm-bridge.d.ts.map +1 -0
  28. package/dist/wasm-bridge.js +111 -0
  29. package/dist/wasm-bridge.js.map +1 -0
  30. package/dist/wasm-memory-manager.d.ts +178 -0
  31. package/dist/wasm-memory-manager.d.ts.map +1 -0
  32. package/dist/wasm-memory-manager.js +86 -0
  33. package/dist/wasm-memory-manager.js.map +1 -0
  34. package/dist/zero-copy-collector.d.ts +158 -0
  35. package/dist/zero-copy-collector.d.ts.map +1 -0
  36. package/dist/zero-copy-collector.js +224 -0
  37. package/dist/zero-copy-collector.js.map +1 -0
  38. package/package.json +12 -8
  39. package/dist/geometry.worker.d.ts +0 -2
  40. package/dist/geometry.worker.d.ts.map +0 -1
  41. package/dist/geometry.worker.js +0 -116
  42. package/dist/geometry.worker.js.map +0 -1
  43. package/dist/worker-pool.d.ts +0 -56
  44. package/dist/worker-pool.d.ts.map +0 -1
  45. package/dist/worker-pool.js +0 -160
  46. package/dist/worker-pool.js.map +0 -1
package/dist/index.d.ts CHANGED
@@ -3,22 +3,41 @@
3
3
  * Now powered by IFC-Lite native Rust WASM (1.9x faster than web-ifc)
4
4
  */
5
5
  export { IfcLiteBridge } from './ifc-lite-bridge.js';
6
- export { IfcLiteMeshCollector } from './ifc-lite-mesh-collector.js';
6
+ export { IfcLiteMeshCollector, type StreamingColorUpdateEvent } from './ifc-lite-mesh-collector.js';
7
+ export { createPlatformBridge, isTauri, type IPlatformBridge, type GeometryProcessingResult, type GeometryStats as PlatformGeometryStats, type StreamingOptions, type StreamingProgress, type GeometryBatch, } from './platform-bridge.js';
8
+ export { WasmBridge } from './wasm-bridge.js';
9
+ export { NativeBridge } from './native-bridge.js';
7
10
  export { BufferBuilder } from './buffer-builder.js';
8
11
  export { CoordinateHandler } from './coordinate-handler.js';
9
- export { WorkerPool } from './worker-pool.js';
10
12
  export { GeometryQuality } from './progressive-loader.js';
11
13
  export { LODGenerator, type LODConfig, type LODMesh } from './lod.js';
12
14
  export { deduplicateMeshes, getDeduplicationStats, type InstancedMeshData, type DeduplicationStats } from './geometry-deduplicator.js';
13
15
  export * from './types.js';
14
16
  export * from './default-materials.js';
17
+ export { WasmMemoryManager, type GpuGeometryHandle, type GpuMeshMetadataHandle, type GpuInstancedGeometryHandle, type GpuInstancedGeometryCollectionHandle, type GpuInstancedGeometryRefHandle } from './wasm-memory-manager.js';
18
+ export { ZeroCopyMeshCollector, ZeroCopyInstancedCollector, type ZeroCopyStreamingProgress, type ZeroCopyBatchResult, type ZeroCopyCompleteStats, type ZeroCopyMeshMetadata, type ZeroCopyBatch, type ZeroCopyInstancedBatch, } from './zero-copy-collector.js';
15
19
  export { IfcLiteBridge as WebIfcBridge } from './ifc-lite-bridge.js';
16
20
  import { GeometryQuality } from './progressive-loader.js';
17
21
  import type { GeometryResult, MeshData } from './types.js';
18
22
  export interface GeometryProcessorOptions {
19
- useWorkers?: boolean;
20
23
  quality?: GeometryQuality;
21
24
  }
25
+ /**
26
+ * Dynamic batch configuration for ramp-up streaming
27
+ * Starts with small batches for fast first frame, ramps up for throughput
28
+ */
29
+ export interface DynamicBatchConfig {
30
+ /** Initial batch size for first 3 batches (default: 50) */
31
+ initialBatchSize?: number;
32
+ /** Maximum batch size for batches 11+ (default: 500) */
33
+ maxBatchSize?: number;
34
+ /** File size in MB for adaptive sizing (optional) */
35
+ fileSizeMB?: number;
36
+ }
37
+ /**
38
+ * Calculate dynamic batch size based on batch number
39
+ */
40
+ export declare function calculateDynamicBatchSize(batchNumber: number, initialBatchSize?: number, maxBatchSize?: number): number;
22
41
  export type StreamingGeometryEvent = {
23
42
  type: 'start';
24
43
  totalEstimate: number;
@@ -30,6 +49,9 @@ export type StreamingGeometryEvent = {
30
49
  meshes: MeshData[];
31
50
  totalSoFar: number;
32
51
  coordinateInfo?: import('./types.js').CoordinateInfo;
52
+ } | {
53
+ type: 'colorUpdate';
54
+ updates: Map<number, [number, number, number, number]>;
33
55
  } | {
34
56
  type: 'complete';
35
57
  totalMeshes: number;
@@ -54,34 +76,35 @@ export type StreamingInstancedGeometryEvent = {
54
76
  };
55
77
  export declare class GeometryProcessor {
56
78
  private bridge;
79
+ private platformBridge;
57
80
  private bufferBuilder;
58
81
  private coordinateHandler;
59
- private workerPool;
60
- private useWorkers;
82
+ private isNative;
61
83
  constructor(options?: GeometryProcessorOptions);
62
84
  /**
63
- * Initialize IFC-Lite WASM and worker pool
64
- * WASM is automatically resolved from the package location - no path needed
85
+ * Initialize the geometry processor
86
+ * In Tauri: Creates platform bridge for native Rust processing
87
+ * In browser: Loads WASM
65
88
  */
66
89
  init(_wasmPath?: string): Promise<void>;
67
90
  /**
68
- * Process IFC file and extract geometry
91
+ * Process IFC file and extract geometry (synchronous, use processStreaming for large files)
69
92
  * @param buffer IFC file buffer
70
93
  * @param entityIndex Optional entity index for priority-based loading
71
94
  */
72
95
  process(buffer: Uint8Array, entityIndex?: Map<number, any>): Promise<GeometryResult>;
73
96
  /**
74
- * Collect meshes on main thread using IFC-Lite
97
+ * Collect meshes on main thread using IFC-Lite WASM
75
98
  */
76
99
  private collectMeshesMainThread;
77
100
  /**
78
101
  * Process IFC file with streaming output for progressive rendering
79
- * Uses IFC-Lite for native Rust geometry processing (1.9x faster)
102
+ * Uses native Rust in Tauri, WASM in browser
80
103
  * @param buffer IFC file buffer
81
104
  * @param entityIndex Optional entity index for priority-based loading
82
- * @param batchSize Number of meshes per batch (default: 100)
105
+ * @param batchConfig Dynamic batch configuration or fixed batch size
83
106
  */
84
- processStreaming(buffer: Uint8Array, _entityIndex?: Map<number, any>, batchSize?: number): AsyncGenerator<StreamingGeometryEvent>;
107
+ processStreaming(buffer: Uint8Array, _entityIndex?: Map<number, any>, batchConfig?: number | DynamicBatchConfig): AsyncGenerator<StreamingGeometryEvent>;
85
108
  /**
86
109
  * Process IFC file with streaming instanced geometry output for progressive rendering
87
110
  * Groups identical geometries by hash (before transformation) for GPU instancing
@@ -101,9 +124,13 @@ export declare class GeometryProcessor {
101
124
  */
102
125
  processAdaptive(buffer: Uint8Array, options?: {
103
126
  sizeThreshold?: number;
104
- batchSize?: number;
127
+ batchSize?: number | DynamicBatchConfig;
105
128
  entityIndex?: Map<number, any>;
106
129
  }): AsyncGenerator<StreamingGeometryEvent>;
130
+ /**
131
+ * Get the WASM API instance for advanced operations (e.g., entity scanning)
132
+ */
133
+ getApi(): import("@ifc-lite/wasm").IfcAPI | null;
107
134
  /**
108
135
  * Cleanup resources
109
136
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -8,100 +8,106 @@
8
8
  // IFC-Lite components (recommended - faster)
9
9
  export { IfcLiteBridge } from './ifc-lite-bridge.js';
10
10
  export { IfcLiteMeshCollector } from './ifc-lite-mesh-collector.js';
11
+ // Platform bridge abstraction (auto-selects WASM or native based on environment)
12
+ export { createPlatformBridge, isTauri, } from './platform-bridge.js';
13
+ export { WasmBridge } from './wasm-bridge.js';
14
+ export { NativeBridge } from './native-bridge.js';
11
15
  // Support components
12
16
  export { BufferBuilder } from './buffer-builder.js';
13
17
  export { CoordinateHandler } from './coordinate-handler.js';
14
- export { WorkerPool } from './worker-pool.js';
15
18
  export { GeometryQuality } from './progressive-loader.js';
16
19
  export { LODGenerator } from './lod.js';
17
20
  export { deduplicateMeshes, getDeduplicationStats } from './geometry-deduplicator.js';
18
21
  export * from './types.js';
19
22
  export * from './default-materials.js';
23
+ // Zero-copy GPU upload (new - faster, less memory)
24
+ export { WasmMemoryManager } from './wasm-memory-manager.js';
25
+ export { ZeroCopyMeshCollector, ZeroCopyInstancedCollector, } from './zero-copy-collector.js';
20
26
  // Legacy exports for compatibility (deprecated)
21
27
  export { IfcLiteBridge as WebIfcBridge } from './ifc-lite-bridge.js';
22
28
  import { IfcLiteBridge } from './ifc-lite-bridge.js';
23
29
  import { IfcLiteMeshCollector } from './ifc-lite-mesh-collector.js';
24
30
  import { BufferBuilder } from './buffer-builder.js';
25
31
  import { CoordinateHandler } from './coordinate-handler.js';
26
- import { WorkerPool } from './worker-pool.js';
32
+ import { createPlatformBridge, isTauri } from './platform-bridge.js';
33
+ /**
34
+ * Calculate dynamic batch size based on batch number
35
+ */
36
+ export function calculateDynamicBatchSize(batchNumber, initialBatchSize = 50, maxBatchSize = 500) {
37
+ if (batchNumber <= 3) {
38
+ return initialBatchSize; // Fast first frame
39
+ }
40
+ else if (batchNumber <= 6) {
41
+ return Math.floor((initialBatchSize + maxBatchSize) / 2); // Quick ramp
42
+ }
43
+ else {
44
+ return maxBatchSize; // Full throughput earlier
45
+ }
46
+ }
27
47
  export class GeometryProcessor {
28
- bridge;
48
+ bridge = null;
49
+ platformBridge = null;
29
50
  bufferBuilder;
30
51
  coordinateHandler;
31
- workerPool = null;
32
- useWorkers = false;
52
+ isNative = false;
33
53
  constructor(options = {}) {
34
- this.bridge = new IfcLiteBridge();
35
54
  this.bufferBuilder = new BufferBuilder();
36
55
  this.coordinateHandler = new CoordinateHandler();
37
- this.useWorkers = options.useWorkers ?? false;
38
- // Note: quality option is accepted for API compatibility but IFC-Lite always processes at full quality
56
+ this.isNative = isTauri();
57
+ // Note: options accepted for API compatibility
39
58
  void options.quality;
59
+ if (this.isNative) {
60
+ console.log('[GeometryProcessor] Running in Tauri - using NATIVE Rust processing');
61
+ }
62
+ else {
63
+ console.log('[GeometryProcessor] Running in browser - using WASM processing');
64
+ this.bridge = new IfcLiteBridge();
65
+ }
40
66
  }
41
67
  /**
42
- * Initialize IFC-Lite WASM and worker pool
43
- * WASM is automatically resolved from the package location - no path needed
68
+ * Initialize the geometry processor
69
+ * In Tauri: Creates platform bridge for native Rust processing
70
+ * In browser: Loads WASM
44
71
  */
45
72
  async init(_wasmPath) {
46
- await this.bridge.init();
47
- // Initialize worker pool if available (lazy - only when needed)
48
- // Don't initialize workers upfront to avoid overhead
49
- // Workers will be initialized on first use if needed
73
+ if (this.isNative) {
74
+ // Create platform bridge for native processing
75
+ this.platformBridge = await createPlatformBridge();
76
+ await this.platformBridge.init();
77
+ console.log('[GeometryProcessor] Native bridge initialized');
78
+ }
79
+ else {
80
+ // WASM path
81
+ if (this.bridge) {
82
+ await this.bridge.init();
83
+ }
84
+ }
50
85
  }
51
86
  /**
52
- * Process IFC file and extract geometry
87
+ * Process IFC file and extract geometry (synchronous, use processStreaming for large files)
53
88
  * @param buffer IFC file buffer
54
89
  * @param entityIndex Optional entity index for priority-based loading
55
90
  */
56
91
  async process(buffer, entityIndex) {
57
- if (!this.bridge.isInitialized()) {
58
- await this.init();
59
- }
60
- // entityIndex is used in collectMeshesMainThread for priority-based loading
61
92
  void entityIndex;
62
93
  let meshes;
63
- // const meshCollectionStart = performance.now();
64
- // Use workers only if explicitly enabled (they add overhead)
65
- if (this.useWorkers) {
66
- // Try to use worker pool if available (lazy init)
67
- if (!this.workerPool) {
68
- try {
69
- let workerUrl;
70
- try {
71
- workerUrl = new URL('./geometry.worker.ts', import.meta.url);
72
- }
73
- catch (e) {
74
- workerUrl = './geometry.worker.ts';
75
- }
76
- this.workerPool = new WorkerPool(workerUrl, 1); // Use single worker for now
77
- await this.workerPool.init();
78
- }
79
- catch (error) {
80
- console.warn('[GeometryProcessor] Worker pool initialization failed, will use main thread:', error);
81
- this.workerPool = null;
82
- }
83
- }
84
- if (this.workerPool?.isAvailable()) {
85
- try {
86
- meshes = await this.workerPool.submit('mesh-collection', {
87
- buffer: buffer.buffer,
88
- });
89
- }
90
- catch (error) {
91
- console.warn('[Geometry] Worker pool failed, falling back to main thread:', error);
92
- meshes = await this.collectMeshesMainThread(buffer);
93
- }
94
- }
95
- else {
96
- // Fallback to main thread
97
- meshes = await this.collectMeshesMainThread(buffer);
98
- }
94
+ if (this.isNative && this.platformBridge) {
95
+ // NATIVE PATH - Use Tauri commands
96
+ console.time('[GeometryProcessor] native-processing');
97
+ const decoder = new TextDecoder();
98
+ const content = decoder.decode(buffer);
99
+ const result = await this.platformBridge.processGeometry(content);
100
+ meshes = result.meshes;
101
+ console.timeEnd('[GeometryProcessor] native-processing');
99
102
  }
100
103
  else {
101
- // Use main thread (faster for total time, but blocks UI)
104
+ // WASM PATH - Synchronous processing on main thread
105
+ // For large files, use processStreaming() instead
106
+ if (!this.bridge?.isInitialized()) {
107
+ await this.init();
108
+ }
102
109
  meshes = await this.collectMeshesMainThread(buffer);
103
110
  }
104
- // const meshCollectionTime = performance.now() - meshCollectionStart;
105
111
  // Handle large coordinates by shifting to origin
106
112
  const coordinateInfo = this.coordinateHandler.processMeshes(meshes);
107
113
  // Build GPU-ready buffers
@@ -116,9 +122,12 @@ export class GeometryProcessor {
116
122
  return result;
117
123
  }
118
124
  /**
119
- * Collect meshes on main thread using IFC-Lite
125
+ * Collect meshes on main thread using IFC-Lite WASM
120
126
  */
121
127
  async collectMeshesMainThread(buffer, _entityIndex) {
128
+ if (!this.bridge) {
129
+ throw new Error('WASM bridge not initialized');
130
+ }
122
131
  // Convert buffer to string (IFC files are text)
123
132
  const decoder = new TextDecoder();
124
133
  const content = decoder.decode(buffer);
@@ -128,36 +137,77 @@ export class GeometryProcessor {
128
137
  }
129
138
  /**
130
139
  * Process IFC file with streaming output for progressive rendering
131
- * Uses IFC-Lite for native Rust geometry processing (1.9x faster)
140
+ * Uses native Rust in Tauri, WASM in browser
132
141
  * @param buffer IFC file buffer
133
142
  * @param entityIndex Optional entity index for priority-based loading
134
- * @param batchSize Number of meshes per batch (default: 100)
143
+ * @param batchConfig Dynamic batch configuration or fixed batch size
135
144
  */
136
- async *processStreaming(buffer, _entityIndex, batchSize = 25 // Reduced from 100 for faster first frame
137
- ) {
138
- if (!this.bridge.isInitialized()) {
145
+ async *processStreaming(buffer, _entityIndex, batchConfig = 25) {
146
+ // Initialize if needed
147
+ if (this.isNative) {
148
+ if (!this.platformBridge) {
149
+ await this.init();
150
+ }
151
+ }
152
+ else if (!this.bridge?.isInitialized()) {
139
153
  await this.init();
140
154
  }
141
155
  // Reset coordinate handler for new file
142
156
  this.coordinateHandler.reset();
157
+ // Yield start event FIRST so UI can update before heavy processing
143
158
  yield { type: 'start', totalEstimate: buffer.length / 1000 };
159
+ // Yield to main thread before heavy decode operation
160
+ await new Promise(resolve => setTimeout(resolve, 0));
144
161
  // Convert buffer to string (IFC files are text)
145
162
  const decoder = new TextDecoder();
146
163
  const content = decoder.decode(buffer);
147
- // Use a placeholder model ID (IFC-Lite doesn't use model IDs)
148
164
  yield { type: 'model-open', modelID: 0 };
149
- const collector = new IfcLiteMeshCollector(this.bridge.getApi(), content);
150
- let totalMeshes = 0;
151
- for await (const batch of collector.collectMeshesStreaming(batchSize)) {
152
- // Process coordinate shifts incrementally (will accumulate bounds)
153
- this.coordinateHandler.processMeshesIncremental(batch);
154
- totalMeshes += batch.length;
155
- // Get current coordinate info for this batch (may be null if bounds not yet valid)
156
- const coordinateInfo = this.coordinateHandler.getCurrentCoordinateInfo();
157
- yield { type: 'batch', meshes: batch, totalSoFar: totalMeshes, coordinateInfo: coordinateInfo || undefined };
165
+ if (this.isNative && this.platformBridge) {
166
+ // NATIVE PATH - Use Tauri streaming
167
+ console.time('[GeometryProcessor] native-streaming');
168
+ // For native, we do a single batch for now (streaming via events is complex)
169
+ // TODO: Implement proper streaming with Tauri events
170
+ const result = await this.platformBridge.processGeometry(content);
171
+ const totalMeshes = result.meshes.length;
172
+ this.coordinateHandler.processMeshesIncremental(result.meshes);
173
+ const coordinateInfo = this.coordinateHandler.getFinalCoordinateInfo();
174
+ yield { type: 'batch', meshes: result.meshes, totalSoFar: totalMeshes, coordinateInfo: coordinateInfo || undefined };
175
+ yield { type: 'complete', totalMeshes, coordinateInfo };
176
+ console.timeEnd('[GeometryProcessor] native-streaming');
177
+ }
178
+ else {
179
+ // WASM PATH
180
+ if (!this.bridge) {
181
+ throw new Error('WASM bridge not initialized');
182
+ }
183
+ const collector = new IfcLiteMeshCollector(this.bridge.getApi(), content);
184
+ let totalMeshes = 0;
185
+ // Determine optimal WASM batch size based on file size
186
+ // Larger batches = fewer callbacks = faster processing
187
+ const fileSizeMB = typeof batchConfig !== 'number' && batchConfig.fileSizeMB
188
+ ? batchConfig.fileSizeMB
189
+ : buffer.length / (1024 * 1024);
190
+ // Use WASM batches directly - no JS accumulation layer
191
+ // WASM already prioritizes simple geometry (walls, slabs) for fast first frame
192
+ const wasmBatchSize = fileSizeMB < 10 ? 100 : fileSizeMB < 50 ? 200 : fileSizeMB < 100 ? 300 : 500;
193
+ // Use WASM batches directly for maximum throughput
194
+ for await (const item of collector.collectMeshesStreaming(wasmBatchSize)) {
195
+ // Handle color update events
196
+ if (item && typeof item === 'object' && 'type' in item && item.type === 'colorUpdate') {
197
+ yield { type: 'colorUpdate', updates: item.updates };
198
+ continue;
199
+ }
200
+ // Handle mesh batches
201
+ const batch = item;
202
+ // Process coordinate shifts incrementally (will accumulate bounds)
203
+ this.coordinateHandler.processMeshesIncremental(batch);
204
+ totalMeshes += batch.length;
205
+ const coordinateInfo = this.coordinateHandler.getCurrentCoordinateInfo();
206
+ yield { type: 'batch', meshes: batch, totalSoFar: totalMeshes, coordinateInfo: coordinateInfo || undefined };
207
+ }
208
+ const coordinateInfo = this.coordinateHandler.getFinalCoordinateInfo();
209
+ yield { type: 'complete', totalMeshes, coordinateInfo };
158
210
  }
159
- const coordinateInfo = this.coordinateHandler.getFinalCoordinateInfo();
160
- yield { type: 'complete', totalMeshes, coordinateInfo };
161
211
  }
162
212
  /**
163
213
  * Process IFC file with streaming instanced geometry output for progressive rendering
@@ -166,7 +216,16 @@ export class GeometryProcessor {
166
216
  * @param batchSize Number of unique geometries per batch (default: 25)
167
217
  */
168
218
  async *processInstancedStreaming(buffer, batchSize = 25) {
169
- if (!this.bridge.isInitialized()) {
219
+ // Initialize if needed
220
+ if (this.isNative) {
221
+ if (!this.platformBridge) {
222
+ await this.init();
223
+ }
224
+ // Note: Native instanced streaming not yet implemented - fall through to WASM
225
+ // For now, throw an error to make it clear
226
+ console.warn('[GeometryProcessor] Native instanced streaming not yet implemented, using WASM');
227
+ }
228
+ if (!this.bridge?.isInitialized()) {
170
229
  await this.init();
171
230
  }
172
231
  // Reset coordinate handler for new file
@@ -234,8 +293,14 @@ export class GeometryProcessor {
234
293
  */
235
294
  async *processAdaptive(buffer, options = {}) {
236
295
  const sizeThreshold = options.sizeThreshold ?? 2 * 1024 * 1024; // Default 2MB
237
- const batchSize = options.batchSize ?? 25;
238
- if (!this.bridge.isInitialized()) {
296
+ const batchConfig = options.batchSize ?? 25;
297
+ // Initialize if needed
298
+ if (this.isNative) {
299
+ if (!this.platformBridge) {
300
+ await this.init();
301
+ }
302
+ }
303
+ else if (!this.bridge?.isInitialized()) {
239
304
  await this.init();
240
305
  }
241
306
  // Reset coordinate handler for new file
@@ -247,8 +312,19 @@ export class GeometryProcessor {
247
312
  const decoder = new TextDecoder();
248
313
  const content = decoder.decode(buffer);
249
314
  yield { type: 'model-open', modelID: 0 };
250
- const collector = new IfcLiteMeshCollector(this.bridge.getApi(), content);
251
- const allMeshes = collector.collectMeshes();
315
+ let allMeshes;
316
+ if (this.isNative && this.platformBridge) {
317
+ // NATIVE PATH - single batch processing
318
+ console.time('[GeometryProcessor] native-adaptive-sync');
319
+ const result = await this.platformBridge.processGeometry(content);
320
+ allMeshes = result.meshes;
321
+ console.timeEnd('[GeometryProcessor] native-adaptive-sync');
322
+ }
323
+ else {
324
+ // WASM PATH
325
+ const collector = new IfcLiteMeshCollector(this.bridge.getApi(), content);
326
+ allMeshes = collector.collectMeshes();
327
+ }
252
328
  // Process coordinate shifts
253
329
  this.coordinateHandler.processMeshesIncremental(allMeshes);
254
330
  const coordinateInfo = this.coordinateHandler.getFinalCoordinateInfo();
@@ -264,17 +340,23 @@ export class GeometryProcessor {
264
340
  else {
265
341
  // Large files: Stream for fast first frame
266
342
  // processStreaming will emit its own start and model-open events
267
- yield* this.processStreaming(buffer, options.entityIndex, batchSize);
343
+ yield* this.processStreaming(buffer, options.entityIndex, batchConfig);
268
344
  }
269
345
  }
346
+ /**
347
+ * Get the WASM API instance for advanced operations (e.g., entity scanning)
348
+ */
349
+ getApi() {
350
+ if (!this.bridge || !this.bridge.isInitialized()) {
351
+ return null;
352
+ }
353
+ return this.bridge.getApi();
354
+ }
270
355
  /**
271
356
  * Cleanup resources
272
357
  */
273
358
  dispose() {
274
- if (this.workerPool) {
275
- this.workerPool.terminate();
276
- this.workerPool = null;
277
- }
359
+ // No cleanup needed
278
360
  }
279
361
  }
280
362
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Native Bridge Implementation
3
+ *
4
+ * Uses Tauri commands for geometry processing in desktop apps.
5
+ * Provides native Rust performance with multi-threading support.
6
+ */
7
+ import type { IPlatformBridge, GeometryProcessingResult, GeometryStats, StreamingOptions } from './platform-bridge.js';
8
+ /**
9
+ * Native Tauri bridge for desktop apps
10
+ *
11
+ * This uses Tauri's invoke() to call native Rust commands that use
12
+ * ifc-lite-core and ifc-lite-geometry directly (no WASM overhead).
13
+ */
14
+ export declare class NativeBridge implements IPlatformBridge {
15
+ private initialized;
16
+ private invoke;
17
+ private listen;
18
+ init(): Promise<void>;
19
+ isInitialized(): boolean;
20
+ processGeometry(content: string): Promise<GeometryProcessingResult>;
21
+ processGeometryStreaming(content: string, options: StreamingOptions): Promise<GeometryStats>;
22
+ getApi(): null;
23
+ }
24
+ //# sourceMappingURL=native-bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-bridge.d.ts","sourceRoot":"","sources":["../src/native-bridge.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,wBAAwB,EACxB,aAAa,EACb,gBAAgB,EAEjB,MAAM,sBAAsB,CAAC;AAY9B;;;;;GAKG;AACH,qBAAa,YAAa,YAAW,eAAe;IAClD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,MAAM,CAAyB;IAEjC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAyB3B,aAAa,IAAI,OAAO;IAIlB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC;IA6BnE,wBAAwB,CAC5B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,aAAa,CAAC;IA0EzB,MAAM,IAAI,IAAI;CAIf"}