@ifc-lite/geometry 1.19.0 → 2.1.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.
- package/dist/geometry-coordinate.d.ts +0 -5
- package/dist/geometry-coordinate.d.ts.map +1 -1
- package/dist/geometry-coordinate.js +0 -19
- package/dist/geometry-coordinate.js.map +1 -1
- package/dist/geometry-parallel.d.ts +4 -26
- package/dist/geometry-parallel.d.ts.map +1 -1
- package/dist/geometry-parallel.js +5 -23
- package/dist/geometry-parallel.js.map +1 -1
- package/dist/geometry.worker.d.ts +0 -1
- package/dist/geometry.worker.d.ts.map +1 -1
- package/dist/geometry.worker.js.map +1 -1
- package/dist/ifc-lite-bridge.d.ts +9 -58
- package/dist/ifc-lite-bridge.d.ts.map +1 -1
- package/dist/ifc-lite-bridge.js +22 -118
- package/dist/ifc-lite-bridge.js.map +1 -1
- package/dist/index.d.ts +26 -46
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +117 -293
- package/dist/index.js.map +1 -1
- package/dist/platform-bridge.d.ts +6 -3
- package/dist/platform-bridge.d.ts.map +1 -1
- package/dist/platform-bridge.js +7 -7
- package/dist/platform-bridge.js.map +1 -1
- package/dist/progressive-loader.d.ts +5 -56
- package/dist/progressive-loader.d.ts.map +1 -1
- package/dist/progressive-loader.js +7 -132
- package/dist/progressive-loader.js.map +1 -1
- package/dist/types.d.ts +0 -29
- package/dist/types.d.ts.map +1 -1
- package/package.json +5 -14
- package/dist/default-materials.d.ts +0 -22
- package/dist/default-materials.d.ts.map +0 -1
- package/dist/default-materials.js +0 -124
- package/dist/default-materials.js.map +0 -1
- package/dist/geometry-controller.worker.d.ts +0 -4
- package/dist/geometry-controller.worker.d.ts.map +0 -1
- package/dist/geometry-controller.worker.js +0 -402
- package/dist/geometry-controller.worker.js.map +0 -1
- package/dist/geometry-deduplicator.d.ts +0 -42
- package/dist/geometry-deduplicator.d.ts.map +0 -1
- package/dist/geometry-deduplicator.js +0 -80
- package/dist/geometry-deduplicator.js.map +0 -1
- package/dist/ifc-lite-mesh-collector.d.ts +0 -111
- package/dist/ifc-lite-mesh-collector.d.ts.map +0 -1
- package/dist/ifc-lite-mesh-collector.js +0 -455
- package/dist/ifc-lite-mesh-collector.js.map +0 -1
- package/dist/lod.d.ts +0 -60
- package/dist/lod.d.ts.map +0 -1
- package/dist/lod.js +0 -113
- package/dist/lod.js.map +0 -1
- package/dist/style-cache.d.ts +0 -36
- package/dist/style-cache.d.ts.map +0 -1
- package/dist/style-cache.js +0 -127
- package/dist/style-cache.js.map +0 -1
- package/dist/wasm-bridge.d.ts +0 -22
- package/dist/wasm-bridge.d.ts.map +0 -1
- package/dist/wasm-bridge.js +0 -120
- package/dist/wasm-bridge.js.map +0 -1
- package/dist/wasm-memory-manager.d.ts +0 -178
- package/dist/wasm-memory-manager.d.ts.map +0 -1
- package/dist/wasm-memory-manager.js +0 -86
- package/dist/wasm-memory-manager.js.map +0 -1
- package/dist/zero-copy-collector.d.ts +0 -158
- package/dist/zero-copy-collector.d.ts.map +0 -1
- package/dist/zero-copy-collector.js +0 -224
- package/dist/zero-copy-collector.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform-bridge.d.ts","sourceRoot":"","sources":["../src/platform-bridge.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"platform-bridge.d.ts","sourceRoot":"","sources":["../src/platform-bridge.ts"],"names":[],"mappings":"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"}
|
package/dist/platform-bridge.js
CHANGED
|
@@ -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
|
-
*
|
|
14
|
-
*
|
|
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
|
-
|
|
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
|
|
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
|
-
*
|
|
3
|
-
*
|
|
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
|
|
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":"AAAA;;+DAE+D;
|
|
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
|
@@ -28,35 +28,6 @@ export interface Vec3 {
|
|
|
28
28
|
y: number;
|
|
29
29
|
z: number;
|
|
30
30
|
}
|
|
31
|
-
/**
|
|
32
|
-
* Instance data for instanced rendering
|
|
33
|
-
*/
|
|
34
|
-
export interface InstanceData {
|
|
35
|
-
expressId: number;
|
|
36
|
-
transform: Float32Array;
|
|
37
|
-
color: [number, number, number, number];
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Instanced geometry - one geometry definition with multiple instances
|
|
41
|
-
* Reduces draw calls by grouping identical geometries with different transforms
|
|
42
|
-
*/
|
|
43
|
-
export interface InstancedGeometry {
|
|
44
|
-
geometryId: number;
|
|
45
|
-
positions: Float32Array;
|
|
46
|
-
normals: Float32Array;
|
|
47
|
-
indices: Uint32Array;
|
|
48
|
-
instance_count: number;
|
|
49
|
-
get_instance(index: number): InstanceData | null;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Collection of instanced geometries
|
|
53
|
-
*/
|
|
54
|
-
export interface InstancedMeshCollection {
|
|
55
|
-
length: number;
|
|
56
|
-
totalGeometries: number;
|
|
57
|
-
totalInstances: number;
|
|
58
|
-
get(index: number): InstancedGeometry | null;
|
|
59
|
-
}
|
|
60
31
|
export interface AABB {
|
|
61
32
|
min: Vec3;
|
|
62
33
|
max: Vec3;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,YAAY,CAAC;IACxB,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,WAAW,CAAC;IACrB;;qEAEiE;IACjE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC;;;uDAGmD;IACnD,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAChD;;;qEAGiE;IACjE,SAAS,CAAC,EAAE,WAAW,CAAC;CACzB;AAED,MAAM,WAAW,IAAI;IACnB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED
|
|
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.
|
|
3
|
+
"version": "2.1.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,8 +12,8 @@
|
|
|
12
12
|
}
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@ifc-lite/data": "^
|
|
16
|
-
"@ifc-lite/wasm": "^1.
|
|
15
|
+
"@ifc-lite/data": "^2.0.0",
|
|
16
|
+
"@ifc-lite/wasm": "^2.1.0"
|
|
17
17
|
},
|
|
18
18
|
"optionalDependencies": {
|
|
19
19
|
"@tauri-apps/api": "^2.11.0"
|
|
@@ -21,16 +21,7 @@
|
|
|
21
21
|
"devDependencies": {
|
|
22
22
|
"@tauri-apps/api": "^2.11.0",
|
|
23
23
|
"typescript": "^6.0.3",
|
|
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
|
-
}
|
|
24
|
+
"vitest": "^1.6.0"
|
|
34
25
|
},
|
|
35
26
|
"license": "MPL-2.0",
|
|
36
27
|
"author": "Louis True",
|
|
@@ -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')
|
|
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":"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"}
|
|
@@ -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"}
|