@ifc-lite/geometry 1.18.5 → 2.0.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 (67) hide show
  1. package/README.md +1 -1
  2. package/dist/geometry-coordinate.d.ts +0 -5
  3. package/dist/geometry-coordinate.d.ts.map +1 -1
  4. package/dist/geometry-coordinate.js +8 -19
  5. package/dist/geometry-coordinate.js.map +1 -1
  6. package/dist/geometry-parallel.d.ts +4 -26
  7. package/dist/geometry-parallel.d.ts.map +1 -1
  8. package/dist/geometry-parallel.js +5 -23
  9. package/dist/geometry-parallel.js.map +1 -1
  10. package/dist/geometry.worker.d.ts +0 -1
  11. package/dist/geometry.worker.d.ts.map +1 -1
  12. package/dist/geometry.worker.js.map +1 -1
  13. package/dist/ifc-lite-bridge.d.ts +2 -58
  14. package/dist/ifc-lite-bridge.d.ts.map +1 -1
  15. package/dist/ifc-lite-bridge.js +5 -127
  16. package/dist/ifc-lite-bridge.js.map +1 -1
  17. package/dist/index.d.ts +17 -46
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +100 -293
  20. package/dist/index.js.map +1 -1
  21. package/dist/platform-bridge.d.ts +6 -3
  22. package/dist/platform-bridge.d.ts.map +1 -1
  23. package/dist/platform-bridge.js +7 -7
  24. package/dist/platform-bridge.js.map +1 -1
  25. package/dist/progressive-loader.d.ts +5 -56
  26. package/dist/progressive-loader.d.ts.map +1 -1
  27. package/dist/progressive-loader.js +7 -132
  28. package/dist/progressive-loader.js.map +1 -1
  29. package/dist/types.d.ts +8 -29
  30. package/dist/types.d.ts.map +1 -1
  31. package/package.json +11 -20
  32. package/dist/default-materials.d.ts +0 -22
  33. package/dist/default-materials.d.ts.map +0 -1
  34. package/dist/default-materials.js +0 -124
  35. package/dist/default-materials.js.map +0 -1
  36. package/dist/geometry-controller.worker.d.ts +0 -4
  37. package/dist/geometry-controller.worker.d.ts.map +0 -1
  38. package/dist/geometry-controller.worker.js +0 -402
  39. package/dist/geometry-controller.worker.js.map +0 -1
  40. package/dist/geometry-deduplicator.d.ts +0 -42
  41. package/dist/geometry-deduplicator.d.ts.map +0 -1
  42. package/dist/geometry-deduplicator.js +0 -80
  43. package/dist/geometry-deduplicator.js.map +0 -1
  44. package/dist/ifc-lite-mesh-collector.d.ts +0 -111
  45. package/dist/ifc-lite-mesh-collector.d.ts.map +0 -1
  46. package/dist/ifc-lite-mesh-collector.js +0 -447
  47. package/dist/ifc-lite-mesh-collector.js.map +0 -1
  48. package/dist/lod.d.ts +0 -60
  49. package/dist/lod.d.ts.map +0 -1
  50. package/dist/lod.js +0 -113
  51. package/dist/lod.js.map +0 -1
  52. package/dist/style-cache.d.ts +0 -36
  53. package/dist/style-cache.d.ts.map +0 -1
  54. package/dist/style-cache.js +0 -127
  55. package/dist/style-cache.js.map +0 -1
  56. package/dist/wasm-bridge.d.ts +0 -22
  57. package/dist/wasm-bridge.d.ts.map +0 -1
  58. package/dist/wasm-bridge.js +0 -120
  59. package/dist/wasm-bridge.js.map +0 -1
  60. package/dist/wasm-memory-manager.d.ts +0 -178
  61. package/dist/wasm-memory-manager.d.ts.map +0 -1
  62. package/dist/wasm-memory-manager.js +0 -86
  63. package/dist/wasm-memory-manager.js.map +0 -1
  64. package/dist/zero-copy-collector.d.ts +0 -158
  65. package/dist/zero-copy-collector.d.ts.map +0 -1
  66. package/dist/zero-copy-collector.js +0 -224
  67. package/dist/zero-copy-collector.js.map +0 -1
@@ -8,19 +8,19 @@ export function isTauri() {
8
8
  return typeof window !== 'undefined' && '__TAURI_INTERNALS__' in window;
9
9
  }
10
10
  /**
11
- * Create the appropriate platform bridge based on runtime environment
11
+ * Create the appropriate platform bridge based on runtime environment.
12
12
  *
13
- * In Tauri: Returns NativeBridge (native Rust processing)
14
- * In Browser: Returns WasmBridge (WASM processing)
13
+ * Only used on the native (Tauri) path — `GeometryProcessor` calls this
14
+ * exclusively when `isNative` (which requires `isTauri()`), so the browser
15
+ * never reaches here. In the browser, geometry runs through the WASM
16
+ * `GeometryProcessor.bridge` (`IfcLiteBridge`) + pre-pass/job-batch path
17
+ * directly, not through a platform bridge.
15
18
  */
16
19
  export async function createPlatformBridge() {
17
20
  if (isTauri()) {
18
21
  const { NativeBridge } = await import('./native-bridge.js');
19
22
  return new NativeBridge();
20
23
  }
21
- else {
22
- const { WasmBridge } = await import('./wasm-bridge.js');
23
- return new WasmBridge();
24
- }
24
+ throw new Error('createPlatformBridge() is native-only; the browser uses the WASM GeometryProcessor path directly.');
25
25
  }
26
26
  //# sourceMappingURL=platform-bridge.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"platform-bridge.js","sourceRoot":"","sources":["../src/platform-bridge.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAoK/D;;GAEG;AACH,MAAM,UAAU,OAAO;IACrB,OAAO,OAAO,MAAM,KAAK,WAAW,IAAI,qBAAqB,IAAI,MAAM,CAAC;AAC1E,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,IAAI,OAAO,EAAE,EAAE,CAAC;QACd,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAC5D,OAAO,IAAI,YAAY,EAAE,CAAC;IAC5B,CAAC;SAAM,CAAC;QACN,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACxD,OAAO,IAAI,UAAU,EAAE,CAAC;IAC1B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"platform-bridge.js","sourceRoot":"","sources":["../src/platform-bridge.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAoK/D;;GAEG;AACH,MAAM,UAAU,OAAO;IACrB,OAAO,OAAO,MAAM,KAAK,WAAW,IAAI,qBAAqB,IAAI,MAAM,CAAC;AAC1E,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,IAAI,OAAO,EAAE,EAAE,CAAC;QACd,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAC5D,OAAO,IAAI,YAAY,EAAE,CAAC;IAC5B,CAAC;IACD,MAAM,IAAI,KAAK,CACb,mGAAmG,CACpG,CAAC;AACJ,CAAC"}
@@ -1,64 +1,13 @@
1
1
  /**
2
- * Progressive Geometry Loader - Priority-based batch loading
3
- * Processes LoadAllGeometry results in priority order to show geometry faster
2
+ * Geometry quality mode, threaded through the loader options.
3
+ *
4
+ * (The former priority-based `ProgressiveMeshLoader` / web-ifc `FlatMesh`
5
+ * path that lived here was removed — geometry streams through the
6
+ * pre-pass + job-batch path now.)
4
7
  */
5
- import type { MeshData } from './types.js';
6
8
  export declare enum GeometryQuality {
7
9
  Fast = "fast",// Skip small objects, simplified geometry
8
10
  Balanced = "balanced",// Default - all geometry
9
11
  High = "high"
10
12
  }
11
- /**
12
- * web-ifc FlatMesh type (from LoadAllGeometry result)
13
- * Using interface since web-ifc doesn't provide TypeScript definitions
14
- */
15
- export interface WebIfcFlatMesh {
16
- geometries: {
17
- size: () => number;
18
- };
19
- expressID: number;
20
- }
21
- /**
22
- * web-ifc LoadAllGeometry result type
23
- */
24
- export interface WebIfcGeometryResult {
25
- size: () => number;
26
- get: (index: number) => WebIfcFlatMesh;
27
- }
28
- export interface PriorityMesh {
29
- index: number;
30
- expressId: number;
31
- priority: number;
32
- flatMesh: WebIfcFlatMesh;
33
- }
34
- /**
35
- * Calculate priority score for a mesh
36
- * Higher score = load sooner
37
- */
38
- export declare function calculateMeshPriority(flatMesh: WebIfcFlatMesh, expressId: number, entityIndex?: Map<number, any>): number;
39
- /**
40
- * Progressive mesh loader - processes meshes in priority batches
41
- */
42
- export declare class ProgressiveMeshLoader {
43
- private quality;
44
- private batchSize;
45
- private yieldInterval;
46
- constructor(quality?: GeometryQuality, batchSize?: number, yieldInterval?: number);
47
- /**
48
- * Sort meshes by priority and return sorted array
49
- */
50
- prioritizeMeshes(geometries: WebIfcGeometryResult, entityIndex?: Map<number, unknown>): PriorityMesh[];
51
- /**
52
- * Check if mesh should be skipped based on quality mode
53
- */
54
- shouldSkipMesh(priorityMesh: PriorityMesh, flatMesh: WebIfcFlatMesh): boolean;
55
- /**
56
- * Yield control to main thread
57
- */
58
- private yieldToMainThread;
59
- /**
60
- * Process meshes in batches with yielding
61
- */
62
- processBatches(priorityMeshes: PriorityMesh[], processMesh: (priorityMesh: PriorityMesh) => MeshData | null): AsyncGenerator<MeshData[], void, unknown>;
63
- }
64
13
  //# sourceMappingURL=progressive-loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"progressive-loader.d.ts","sourceRoot":"","sources":["../src/progressive-loader.ts"],"names":[],"mappings":"AAIA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,oBAAY,eAAe;IACzB,IAAI,SAAS,CAAQ,0CAA0C;IAC/D,QAAQ,aAAa,CAAE,yBAAyB;IAChD,IAAI,SAAS;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,MAAM,CAAA;KAAE,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,MAAM,CAAC;IACnB,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,cAAc,CAAC;CACxC;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,cAAc,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,MAAM,CAwBR;AAED;;GAEG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,aAAa,CAAS;gBAG5B,OAAO,GAAE,eAA0C,EACnD,SAAS,GAAE,MAAW,EACtB,aAAa,GAAE,MAAW;IAO5B;;OAEG;IACH,gBAAgB,CACd,UAAU,EAAE,oBAAoB,EAChC,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,YAAY,EAAE;IAuBjB;;OAEG;IACH,cAAc,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO;IAmB7E;;OAEG;YACW,iBAAiB;IAU/B;;OAEG;IACI,cAAc,CACnB,cAAc,EAAE,YAAY,EAAE,EAC9B,WAAW,EAAE,CAAC,YAAY,EAAE,YAAY,KAAK,QAAQ,GAAG,IAAI,GAC3D,cAAc,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC;CAmC7C"}
1
+ {"version":3,"file":"progressive-loader.d.ts","sourceRoot":"","sources":["../src/progressive-loader.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,oBAAY,eAAe;IACzB,IAAI,SAAS,CAAQ,0CAA0C;IAC/D,QAAQ,aAAa,CAAE,yBAAyB;IAChD,IAAI,SAAS;CACd"}
@@ -1,142 +1,17 @@
1
1
  /* This Source Code Form is subject to the terms of the Mozilla Public
2
2
  * License, v. 2.0. If a copy of the MPL was not distributed with this
3
3
  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ /**
5
+ * Geometry quality mode, threaded through the loader options.
6
+ *
7
+ * (The former priority-based `ProgressiveMeshLoader` / web-ifc `FlatMesh`
8
+ * path that lived here was removed — geometry streams through the
9
+ * pre-pass + job-batch path now.)
10
+ */
4
11
  export var GeometryQuality;
5
12
  (function (GeometryQuality) {
6
13
  GeometryQuality["Fast"] = "fast";
7
14
  GeometryQuality["Balanced"] = "balanced";
8
15
  GeometryQuality["High"] = "high"; // Full quality + mesh repair
9
16
  })(GeometryQuality || (GeometryQuality = {}));
10
- /**
11
- * Calculate priority score for a mesh
12
- * Higher score = load sooner
13
- */
14
- export function calculateMeshPriority(flatMesh, expressId, entityIndex) {
15
- let priority = 0;
16
- // Priority based on geometry count (more geometry = more important)
17
- const geomCount = flatMesh.geometries ? flatMesh.geometries.size() : 0;
18
- priority += geomCount * 10;
19
- // Priority based on entity type (structural elements first)
20
- if (entityIndex) {
21
- const entity = entityIndex.get(expressId);
22
- if (entity) {
23
- const type = entity.type?.toUpperCase() || '';
24
- if (type.includes('WALL'))
25
- priority += 100;
26
- if (type.includes('SLAB'))
27
- priority += 90;
28
- if (type.includes('BEAM'))
29
- priority += 80;
30
- if (type.includes('COLUMN'))
31
- priority += 85;
32
- if (type.includes('DOOR'))
33
- priority += 40;
34
- if (type.includes('WINDOW'))
35
- priority += 40;
36
- if (type.includes('FURNITURE'))
37
- priority += 20;
38
- if (type.includes('FASTENER'))
39
- priority += 5;
40
- }
41
- }
42
- return priority;
43
- }
44
- /**
45
- * Progressive mesh loader - processes meshes in priority batches
46
- */
47
- export class ProgressiveMeshLoader {
48
- quality;
49
- batchSize;
50
- yieldInterval; // ms between yields
51
- constructor(quality = GeometryQuality.Balanced, batchSize = 50, yieldInterval = 16 // ~60fps
52
- ) {
53
- this.quality = quality;
54
- this.batchSize = batchSize;
55
- this.yieldInterval = yieldInterval;
56
- }
57
- /**
58
- * Sort meshes by priority and return sorted array
59
- */
60
- prioritizeMeshes(geometries, entityIndex) {
61
- const geomCount = geometries.size();
62
- const priorityMeshes = [];
63
- for (let i = 0; i < geomCount; i++) {
64
- const flatMesh = geometries.get(i);
65
- const expressId = flatMesh.expressID;
66
- const priority = calculateMeshPriority(flatMesh, expressId, entityIndex);
67
- priorityMeshes.push({
68
- index: i,
69
- expressId,
70
- priority,
71
- flatMesh,
72
- });
73
- }
74
- // Sort by priority (highest first)
75
- priorityMeshes.sort((a, b) => b.priority - a.priority);
76
- return priorityMeshes;
77
- }
78
- /**
79
- * Check if mesh should be skipped based on quality mode
80
- */
81
- shouldSkipMesh(priorityMesh, flatMesh) {
82
- if (this.quality === GeometryQuality.Balanced || this.quality === GeometryQuality.High) {
83
- return false; // Don't skip anything
84
- }
85
- // Fast mode: skip low-priority meshes
86
- if (priorityMesh.priority < 10) {
87
- return true;
88
- }
89
- // Fast mode: skip meshes with very few geometries
90
- const geomCount = flatMesh.geometries ? flatMesh.geometries.size() : 0;
91
- if (geomCount === 0) {
92
- return true;
93
- }
94
- return false;
95
- }
96
- /**
97
- * Yield control to main thread
98
- */
99
- async yieldToMainThread() {
100
- return new Promise((resolve) => {
101
- if (typeof requestIdleCallback !== 'undefined') {
102
- requestIdleCallback(() => resolve(), { timeout: this.yieldInterval });
103
- }
104
- else {
105
- setTimeout(() => resolve(), this.yieldInterval);
106
- }
107
- });
108
- }
109
- /**
110
- * Process meshes in batches with yielding
111
- */
112
- async *processBatches(priorityMeshes, processMesh) {
113
- let batch = [];
114
- let lastYieldTime = performance.now();
115
- for (const priorityMesh of priorityMeshes) {
116
- // Skip mesh if quality mode requires it
117
- if (this.shouldSkipMesh(priorityMesh, priorityMesh.flatMesh)) {
118
- continue;
119
- }
120
- const mesh = processMesh(priorityMesh);
121
- if (mesh) {
122
- batch.push(mesh);
123
- }
124
- // Yield batch if full or time elapsed
125
- const now = performance.now();
126
- if (batch.length >= this.batchSize ||
127
- (now - lastYieldTime) >= this.yieldInterval) {
128
- if (batch.length > 0) {
129
- yield batch;
130
- batch = [];
131
- }
132
- lastYieldTime = now;
133
- await this.yieldToMainThread();
134
- }
135
- }
136
- // Yield remaining batch
137
- if (batch.length > 0) {
138
- yield batch;
139
- }
140
- }
141
- }
142
17
  //# sourceMappingURL=progressive-loader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"progressive-loader.js","sourceRoot":"","sources":["../src/progressive-loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"progressive-loader.js","sourceRoot":"","sources":["../src/progressive-loader.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;GAMG;AACH,MAAM,CAAN,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,gCAAa,CAAA;IACb,wCAAqB,CAAA;IACrB,gCAAa,CAAA,CAAQ,6BAA6B;AACpD,CAAC,EAJW,eAAe,KAAf,eAAe,QAI1B"}
package/dist/types.d.ts CHANGED
@@ -8,7 +8,15 @@ export interface MeshData {
8
8
  positions: Float32Array;
9
9
  normals: Float32Array;
10
10
  indices: Uint32Array;
11
+ /** Apparent rendering colour: IfcSurfaceStyleRendering.DiffuseColour
12
+ * when authored, otherwise the SurfaceColour. Matches what most IFC
13
+ * viewers display and what the GLB exporter uses by default. */
11
14
  color: [number, number, number, number];
15
+ /** SurfaceColour, populated by the WASM extractor only when the file
16
+ * authored a distinct DiffuseColour (so `shadingColor !== color`).
17
+ * Consumed by the GLB exporter's "Shading" colour-source option;
18
+ * renderers and other exporters can ignore it. */
19
+ shadingColor?: [number, number, number, number];
12
20
  /** Per-vertex entity IDs for color-merged batches (desktop fast path).
13
21
  * When present the renderer writes these instead of repeating `expressId`
14
22
  * for every vertex, so picking/selection resolves to the correct individual
@@ -20,35 +28,6 @@ export interface Vec3 {
20
28
  y: number;
21
29
  z: number;
22
30
  }
23
- /**
24
- * Instance data for instanced rendering
25
- */
26
- export interface InstanceData {
27
- expressId: number;
28
- transform: Float32Array;
29
- color: [number, number, number, number];
30
- }
31
- /**
32
- * Instanced geometry - one geometry definition with multiple instances
33
- * Reduces draw calls by grouping identical geometries with different transforms
34
- */
35
- export interface InstancedGeometry {
36
- geometryId: number;
37
- positions: Float32Array;
38
- normals: Float32Array;
39
- indices: Uint32Array;
40
- instance_count: number;
41
- get_instance(index: number): InstanceData | null;
42
- }
43
- /**
44
- * Collection of instanced geometries
45
- */
46
- export interface InstancedMeshCollection {
47
- length: number;
48
- totalGeometries: number;
49
- totalInstances: number;
50
- get(index: number): InstancedGeometry | null;
51
- }
52
31
  export interface AABB {
53
32
  min: Vec3;
54
33
  max: Vec3;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ifc-lite/geometry",
3
- "version": "1.18.5",
3
+ "version": "2.0.0",
4
4
  "description": "Geometry processing bridge for IFC-Lite - 1.9x faster than web-ifc",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -12,35 +12,26 @@
12
12
  }
13
13
  },
14
14
  "dependencies": {
15
- "@ifc-lite/wasm": "^1.16.10",
16
- "@ifc-lite/data": "^1.17.0"
15
+ "@ifc-lite/wasm": "^2.0.0",
16
+ "@ifc-lite/data": "^2.0.0"
17
17
  },
18
18
  "optionalDependencies": {
19
- "@tauri-apps/api": "^2.0.0"
19
+ "@tauri-apps/api": "^2.11.0"
20
20
  },
21
21
  "devDependencies": {
22
- "@tauri-apps/api": "^2.0.0",
23
- "typescript": "^5.3.0",
24
- "vitest": "^1.6.0",
25
- "@ifc-lite/wasm-threaded": "0.1.0"
26
- },
27
- "peerDependencies": {
28
- "@ifc-lite/wasm-threaded": "*"
29
- },
30
- "peerDependenciesMeta": {
31
- "@ifc-lite/wasm-threaded": {
32
- "optional": true
33
- }
22
+ "@tauri-apps/api": "^2.11.0",
23
+ "typescript": "^6.0.3",
24
+ "vitest": "^1.6.0"
34
25
  },
35
26
  "license": "MPL-2.0",
36
27
  "author": "Louis True",
37
28
  "repository": {
38
29
  "type": "git",
39
- "url": "https://github.com/louistrue/ifc-lite.git",
30
+ "url": "https://github.com/LTplus-AG/ifc-lite.git",
40
31
  "directory": "packages/geometry"
41
32
  },
42
- "homepage": "https://louistrue.github.io/ifc-lite/",
43
- "bugs": "https://github.com/louistrue/ifc-lite/issues",
33
+ "homepage": "https://ltplus-ag.github.io/ifc-lite/",
34
+ "bugs": "https://github.com/LTplus-AG/ifc-lite/issues",
44
35
  "keywords": [
45
36
  "ifc",
46
37
  "bim",
@@ -56,7 +47,7 @@
56
47
  "README.md"
57
48
  ],
58
49
  "scripts": {
59
- "build": "pnpm exec tsc && node -e \"const fs=require('fs');for(const f of ['dist/index.js','dist/geometry-parallel.js']){if(!fs.existsSync(f))continue;fs.writeFileSync(f,fs.readFileSync(f,'utf8').replace(/geometry\\.worker\\.ts/g,'geometry.worker.js').replace(/geometry-controller\\.worker\\.ts/g,'geometry-controller.worker.js'))}\" && node scripts/transform-controller-worker-dist.mjs",
50
+ "build": "pnpm exec tsc && node -e \"const fs=require('fs');for(const f of ['dist/index.js','dist/geometry-parallel.js']){if(!fs.existsSync(f))continue;fs.writeFileSync(f,fs.readFileSync(f,'utf8').replace(/geometry\\.worker\\.ts/g,'geometry.worker.js'))}\"",
60
51
  "dev": "pnpm exec tsc --watch",
61
52
  "test": "vitest run"
62
53
  }
@@ -1,22 +0,0 @@
1
- /**
2
- * Default material colors for IFC entity types
3
- * Provides beautiful architectural colors when IFC surface styles are not available
4
- */
5
- export interface MaterialColor {
6
- baseColor: [number, number, number, number];
7
- metallic: number;
8
- roughness: number;
9
- }
10
- /**
11
- * Default material palette inspired by architectural visualization
12
- */
13
- export declare const DEFAULT_MATERIALS: Record<string, MaterialColor>;
14
- /**
15
- * Get default material color for an IFC entity type
16
- */
17
- export declare function getDefaultMaterialColor(entityType: string | null | undefined): MaterialColor;
18
- /**
19
- * Get default color array for an IFC entity type (for backward compatibility)
20
- */
21
- export declare function getDefaultColor(entityType: string | null | undefined): [number, number, number, number];
22
- //# sourceMappingURL=default-materials.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"default-materials.d.ts","sourceRoot":"","sources":["../src/default-materials.ts"],"names":[],"mappings":"AAIA;;;GAGG;AAEH,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAwG3D,CAAC;AAEF;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,aAAa,CAU5F;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAEvG"}
@@ -1,124 +0,0 @@
1
- /* This Source Code Form is subject to the terms of the Mozilla Public
2
- * License, v. 2.0. If a copy of the MPL was not distributed with this
3
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
- /**
5
- * Default material palette inspired by architectural visualization
6
- */
7
- export const DEFAULT_MATERIALS = {
8
- // Structural elements
9
- 'IfcWall': {
10
- baseColor: [0.95, 0.93, 0.88, 1.0], // Warm white (matte plaster)
11
- metallic: 0.0,
12
- roughness: 0.8,
13
- },
14
- 'IfcSlab': {
15
- baseColor: [0.75, 0.75, 0.78, 1.0], // Cool gray (concrete)
16
- metallic: 0.0,
17
- roughness: 0.9,
18
- },
19
- 'IfcColumn': {
20
- baseColor: [0.7, 0.7, 0.7, 1.0], // Light gray (concrete/steel)
21
- metallic: 0.0,
22
- roughness: 0.5,
23
- },
24
- 'IfcBeam': {
25
- baseColor: [0.55, 0.55, 0.6, 1.0], // Steel blue
26
- metallic: 0.8,
27
- roughness: 0.4,
28
- },
29
- // Openings
30
- 'IfcWindow': {
31
- baseColor: [0.6, 0.8, 0.95, 0.3], // Sky blue (glass, transparent)
32
- metallic: 0.0,
33
- roughness: 0.1,
34
- },
35
- 'IfcDoor': {
36
- baseColor: [0.6, 0.45, 0.3, 1.0], // Warm wood
37
- metallic: 0.0,
38
- roughness: 0.6,
39
- },
40
- 'IfcOpeningElement': {
41
- baseColor: [1.0, 0.4, 0.3, 0.3], // Coral, 30% opacity
42
- metallic: 0.0,
43
- roughness: 0.5,
44
- },
45
- // Spatial elements
46
- 'IfcSpace': {
47
- baseColor: [0.2, 0.8, 0.9, 0.25], // Cyan, 25% opacity
48
- metallic: 0.0,
49
- roughness: 0.6,
50
- },
51
- 'IfcSite': {
52
- baseColor: [0.4, 0.6, 0.3, 1.0], // Muted green, solid
53
- metallic: 0.0,
54
- roughness: 0.8,
55
- },
56
- // Roof and stairs
57
- 'IfcRoof': {
58
- baseColor: [0.7, 0.5, 0.4, 1.0], // Terra cotta (tiles)
59
- metallic: 0.0,
60
- roughness: 0.7,
61
- },
62
- 'IfcStair': {
63
- baseColor: [0.8, 0.75, 0.65, 1.0], // Sandstone
64
- metallic: 0.0,
65
- roughness: 0.6,
66
- },
67
- 'IfcRailing': {
68
- baseColor: [0.3, 0.3, 0.35, 1.0], // Dark metal
69
- metallic: 0.9,
70
- roughness: 0.3,
71
- },
72
- // Furniture and fixtures
73
- 'IfcFurniture': {
74
- baseColor: [0.7, 0.6, 0.5, 1.0], // Natural wood
75
- metallic: 0.0,
76
- roughness: 0.5,
77
- },
78
- 'IfcSanitaryTerminal': {
79
- baseColor: [0.9, 0.9, 0.95, 1.0], // White porcelain
80
- metallic: 0.0,
81
- roughness: 0.3,
82
- },
83
- // MEP elements
84
- 'IfcPipeSegment': {
85
- baseColor: [0.4, 0.5, 0.6, 1.0], // Blue-gray (pipe)
86
- metallic: 0.7,
87
- roughness: 0.4,
88
- },
89
- 'IfcDuctSegment': {
90
- baseColor: [0.6, 0.6, 0.65, 1.0], // Light gray (duct)
91
- metallic: 0.3,
92
- roughness: 0.5,
93
- },
94
- 'IfcCableSegment': {
95
- baseColor: [0.3, 0.3, 0.3, 1.0], // Dark gray (cable)
96
- metallic: 0.0,
97
- roughness: 0.8,
98
- },
99
- // Default fallback
100
- 'default': {
101
- baseColor: [0.8, 0.8, 0.8, 1.0], // Neutral gray
102
- metallic: 0.0,
103
- roughness: 0.6,
104
- },
105
- };
106
- /**
107
- * Get default material color for an IFC entity type
108
- */
109
- export function getDefaultMaterialColor(entityType) {
110
- if (!entityType) {
111
- return DEFAULT_MATERIALS['default'];
112
- }
113
- // Normalize type name (remove 'IFC' prefix, handle case)
114
- const normalizedType = entityType.replace(/^IFC/, '').replace(/^Ifc/, '');
115
- const ifcType = `Ifc${normalizedType}`;
116
- return DEFAULT_MATERIALS[ifcType] || DEFAULT_MATERIALS[entityType] || DEFAULT_MATERIALS['default'];
117
- }
118
- /**
119
- * Get default color array for an IFC entity type (for backward compatibility)
120
- */
121
- export function getDefaultColor(entityType) {
122
- return getDefaultMaterialColor(entityType).baseColor;
123
- }
124
- //# sourceMappingURL=default-materials.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"default-materials.js","sourceRoot":"","sources":["../src/default-materials.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAa/D;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAkC;IAC9D,sBAAsB;IACtB,SAAS,EAAE;QACT,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,6BAA6B;QACjE,QAAQ,EAAE,GAAG;QACb,SAAS,EAAE,GAAG;KACf;IACD,SAAS,EAAE;QACT,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,uBAAuB;QAC3D,QAAQ,EAAE,GAAG;QACb,SAAS,EAAE,GAAG;KACf;IACD,WAAW,EAAE;QACX,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,8BAA8B;QAC/D,QAAQ,EAAE,GAAG;QACb,SAAS,EAAE,GAAG;KACf;IACD,SAAS,EAAE;QACT,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,aAAa;QAChD,QAAQ,EAAE,GAAG;QACb,SAAS,EAAE,GAAG;KACf;IAED,WAAW;IACX,WAAW,EAAE;QACX,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,gCAAgC;QAClE,QAAQ,EAAE,GAAG;QACb,SAAS,EAAE,GAAG;KACf;IACD,SAAS,EAAE;QACT,SAAS,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,YAAY;QAC9C,QAAQ,EAAE,GAAG;QACb,SAAS,EAAE,GAAG;KACf;IACD,mBAAmB,EAAE;QACnB,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,qBAAqB;QACtD,QAAQ,EAAE,GAAG;QACb,SAAS,EAAE,GAAG;KACf;IAED,mBAAmB;IACnB,UAAU,EAAE;QACV,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,oBAAoB;QACtD,QAAQ,EAAE,GAAG;QACb,SAAS,EAAE,GAAG;KACf;IACD,SAAS,EAAE;QACT,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,qBAAqB;QACtD,QAAQ,EAAE,GAAG;QACb,SAAS,EAAE,GAAG;KACf;IAED,kBAAkB;IAClB,SAAS,EAAE;QACT,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,sBAAsB;QACvD,QAAQ,EAAE,GAAG;QACb,SAAS,EAAE,GAAG;KACf;IACD,UAAU,EAAE;QACV,SAAS,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,YAAY;QAC/C,QAAQ,EAAE,GAAG;QACb,SAAS,EAAE,GAAG;KACf;IACD,YAAY,EAAE;QACZ,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,aAAa;QAC/C,QAAQ,EAAE,GAAG;QACb,SAAS,EAAE,GAAG;KACf;IAED,yBAAyB;IACzB,cAAc,EAAE;QACd,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,eAAe;QAChD,QAAQ,EAAE,GAAG;QACb,SAAS,EAAE,GAAG;KACf;IACD,qBAAqB,EAAE;QACrB,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,kBAAkB;QACpD,QAAQ,EAAE,GAAG;QACb,SAAS,EAAE,GAAG;KACf;IAED,eAAe;IACf,gBAAgB,EAAE;QAChB,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,mBAAmB;QACpD,QAAQ,EAAE,GAAG;QACb,SAAS,EAAE,GAAG;KACf;IACD,gBAAgB,EAAE;QAChB,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,oBAAoB;QACtD,QAAQ,EAAE,GAAG;QACb,SAAS,EAAE,GAAG;KACf;IACD,iBAAiB,EAAE;QACjB,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,oBAAoB;QACrD,QAAQ,EAAE,GAAG;QACb,SAAS,EAAE,GAAG;KACf;IAED,mBAAmB;IACnB,SAAS,EAAE;QACT,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,eAAe;QAChD,QAAQ,EAAE,GAAG;QACb,SAAS,EAAE,GAAG;KACf;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,UAAqC;IAC3E,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,iBAAiB,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED,yDAAyD;IACzD,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC1E,MAAM,OAAO,GAAG,MAAM,cAAc,EAAE,CAAC;IAEvC,OAAO,iBAAiB,CAAC,OAAO,CAAC,IAAI,iBAAiB,CAAC,UAAU,CAAC,IAAI,iBAAiB,CAAC,SAAS,CAAC,CAAC;AACrG,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,UAAqC;IACnE,OAAO,uBAAuB,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC"}
@@ -1,4 +0,0 @@
1
- import type { GeometryWorkerInitMessage, GeometryWorkerProcessMessage, GeometryWorkerStreamStartMessage, GeometryWorkerStreamChunkMessage, GeometryWorkerStreamEndMessage, GeometryWorkerSetStylesMessage, GeometryWorkerSetEntityIndexMessage, GeometryWorkerSetMergeLayersMessage, GeometryWorkerPrePassMessage, GeometryWorkerBatchMessage, GeometryWorkerCompleteMessage, GeometryWorkerErrorMessage, GeometryWorkerMemoryMessage } from './geometry.worker.js';
2
- export type GeometryControllerRequest = GeometryWorkerInitMessage | GeometryWorkerProcessMessage | GeometryWorkerStreamStartMessage | GeometryWorkerStreamChunkMessage | GeometryWorkerStreamEndMessage | GeometryWorkerSetStylesMessage | GeometryWorkerSetEntityIndexMessage | GeometryWorkerSetMergeLayersMessage | GeometryWorkerPrePassMessage;
3
- export type GeometryControllerResponse = GeometryWorkerBatchMessage | GeometryWorkerCompleteMessage | GeometryWorkerErrorMessage | GeometryWorkerMemoryMessage;
4
- //# sourceMappingURL=geometry-controller.worker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"geometry-controller.worker.d.ts","sourceRoot":"","sources":["../src/geometry-controller.worker.ts"],"names":[],"mappings":"AA+CA,OAAO,KAAK,EACV,yBAAyB,EACzB,4BAA4B,EAC5B,gCAAgC,EAChC,gCAAgC,EAChC,8BAA8B,EAC9B,8BAA8B,EAC9B,mCAAmC,EACnC,mCAAmC,EACnC,4BAA4B,EAC5B,0BAA0B,EAC1B,6BAA6B,EAC7B,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,sBAAsB,CAAC;AAG9B,MAAM,MAAM,yBAAyB,GACjC,yBAAyB,GACzB,4BAA4B,GAC5B,gCAAgC,GAChC,gCAAgC,GAChC,8BAA8B,GAC9B,8BAA8B,GAC9B,mCAAmC,GACnC,mCAAmC,GACnC,4BAA4B,CAAC;AAEjC,MAAM,MAAM,0BAA0B,GAClC,0BAA0B,GAC1B,6BAA6B,GAC7B,0BAA0B,GAC1B,2BAA2B,CAAC"}