@ifc-lite/wasm 2.2.0 → 2.4.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/package.json +1 -1
- package/pkg/ifc-lite.d.ts +91 -3
- package/pkg/ifc-lite.js +180 -10
- package/pkg/ifc-lite_bg.wasm +0 -0
package/package.json
CHANGED
package/pkg/ifc-lite.d.ts
CHANGED
|
@@ -228,6 +228,17 @@ export class IfcAPI {
|
|
|
228
228
|
* fail fast.
|
|
229
229
|
*/
|
|
230
230
|
clearPrePassCache(): void;
|
|
231
|
+
/**
|
|
232
|
+
* Enable or disable per-entity geometry fingerprinting in
|
|
233
|
+
* `processGeometryBatch`, used by the viewer's revision-diff feature.
|
|
234
|
+
*
|
|
235
|
+
* Pass a positive `tolerance` (metres) to enable — it is the quantization
|
|
236
|
+
* grid the hash snaps positions to (larger = more tolerant of float noise,
|
|
237
|
+
* smaller = catches finer edits; the `f32` precision floor of model-local
|
|
238
|
+
* coordinates means values below ~1 mm mostly hash noise). Pass `null`/
|
|
239
|
+
* `undefined` (or a non-positive value) to disable. Default: disabled.
|
|
240
|
+
*/
|
|
241
|
+
setComputeGeometryHashes(tolerance?: number | null): void;
|
|
231
242
|
/**
|
|
232
243
|
* Create and initialize the IFC API
|
|
233
244
|
*/
|
|
@@ -350,6 +361,23 @@ export class MeshCollection {
|
|
|
350
361
|
* Returns None if no rotation was detected
|
|
351
362
|
*/
|
|
352
363
|
readonly buildingRotation: number | undefined;
|
|
364
|
+
/**
|
|
365
|
+
* Express ids for the per-entity geometry fingerprints, parallel to
|
|
366
|
+
* [`Self::geometry_hash_values`]. Empty unless geometry hashing was
|
|
367
|
+
* enabled via `IfcAPI.setComputeGeometryHashes`.
|
|
368
|
+
*/
|
|
369
|
+
readonly geometryHashIds: Uint32Array;
|
|
370
|
+
/**
|
|
371
|
+
* Number of per-entity geometry fingerprints recorded.
|
|
372
|
+
*/
|
|
373
|
+
readonly geometryHashCount: number;
|
|
374
|
+
/**
|
|
375
|
+
* Per-entity geometry fingerprints as a `BigUint64Array`, parallel to
|
|
376
|
+
* [`Self::geometry_hash_ids`]. `u64` is exposed (not hex strings) so JS
|
|
377
|
+
* can compare with `===` and key maps without allocation. Empty unless
|
|
378
|
+
* geometry hashing was enabled.
|
|
379
|
+
*/
|
|
380
|
+
readonly geometryHashValues: BigUint64Array;
|
|
353
381
|
/**
|
|
354
382
|
* Get number of meshes
|
|
355
383
|
*/
|
|
@@ -383,6 +411,12 @@ export class MeshDataJs {
|
|
|
383
411
|
*/
|
|
384
412
|
readonly shadingColor: Float32Array | undefined;
|
|
385
413
|
readonly textureWidth: number;
|
|
414
|
+
/**
|
|
415
|
+
* Geometry provenance for the viewer's Model/Types switch (#957 follow-up):
|
|
416
|
+
* 0 = occurrence, 1 = orphan type geometry (no occurrence), 2 = instanced
|
|
417
|
+
* type geometry (hidden in Model mode, shown in Types mode).
|
|
418
|
+
*/
|
|
419
|
+
readonly geometryClass: number;
|
|
386
420
|
readonly textureHeight: number;
|
|
387
421
|
/**
|
|
388
422
|
* Get triangle count
|
|
@@ -423,6 +457,30 @@ export class MeshDataJs {
|
|
|
423
457
|
readonly positions: Float32Array;
|
|
424
458
|
}
|
|
425
459
|
|
|
460
|
+
export class MeshOutlineJs {
|
|
461
|
+
private constructor();
|
|
462
|
+
free(): void;
|
|
463
|
+
[Symbol.dispose](): void;
|
|
464
|
+
/**
|
|
465
|
+
* Ring `i` as a flat `[u0, v0, u1, v1, …]` array, or `undefined` if out of
|
|
466
|
+
* range. The ring is closed implicitly (connect the last point to the
|
|
467
|
+
* first).
|
|
468
|
+
*/
|
|
469
|
+
contour(index: number): Float32Array | undefined;
|
|
470
|
+
/**
|
|
471
|
+
* Number of boundary rings (outer + holes).
|
|
472
|
+
*/
|
|
473
|
+
readonly contourCount: number;
|
|
474
|
+
/**
|
|
475
|
+
* Element extent (max) along the cut axis, world units.
|
|
476
|
+
*/
|
|
477
|
+
readonly axisMax: number;
|
|
478
|
+
/**
|
|
479
|
+
* Element extent (min) along the cut axis, world units.
|
|
480
|
+
*/
|
|
481
|
+
readonly axisMin: number;
|
|
482
|
+
}
|
|
483
|
+
|
|
426
484
|
export class ProfileCollection {
|
|
427
485
|
private constructor();
|
|
428
486
|
free(): void;
|
|
@@ -651,6 +709,25 @@ export function get_memory(): any;
|
|
|
651
709
|
*/
|
|
652
710
|
export function init(): void;
|
|
653
711
|
|
|
712
|
+
/**
|
|
713
|
+
* Compute the winding-robust 2D footprint outline of a triangle mesh.
|
|
714
|
+
*
|
|
715
|
+
* `positions` is flat XYZ; `indices` is flat triangle indices. `axis` is
|
|
716
|
+
* 0/1/2 = x/y/z (the cut axis, WebGL Y-up). Returns `undefined` when the mesh
|
|
717
|
+
* has no triangles or projects to nothing.
|
|
718
|
+
*
|
|
719
|
+
* ```javascript
|
|
720
|
+
* const outline = meshOutline2d(positions, indices, 1, false); // axis 1 = y
|
|
721
|
+
* if (outline) {
|
|
722
|
+
* for (let i = 0; i < outline.contourCount; i++) {
|
|
723
|
+
* const ring = outline.contour(i); // Float32Array of [u0, v0, u1, v1, ...]
|
|
724
|
+
* }
|
|
725
|
+
* outline.free();
|
|
726
|
+
* }
|
|
727
|
+
* ```
|
|
728
|
+
*/
|
|
729
|
+
export function meshOutline2d(positions: Float32Array, indices: Uint32Array, axis: number, flipped: boolean): MeshOutlineJs | undefined;
|
|
730
|
+
|
|
654
731
|
/**
|
|
655
732
|
* Get the version of IFC-Lite.
|
|
656
733
|
*
|
|
@@ -677,6 +754,7 @@ export interface InitOutput {
|
|
|
677
754
|
readonly __wbg_ifcapi_free: (a: number, b: number) => void;
|
|
678
755
|
readonly __wbg_meshcollection_free: (a: number, b: number) => void;
|
|
679
756
|
readonly __wbg_meshdatajs_free: (a: number, b: number) => void;
|
|
757
|
+
readonly __wbg_meshoutlinejs_free: (a: number, b: number) => void;
|
|
680
758
|
readonly __wbg_profilecollection_free: (a: number, b: number) => void;
|
|
681
759
|
readonly __wbg_profileentryjs_free: (a: number, b: number) => void;
|
|
682
760
|
readonly __wbg_symboliccircle_free: (a: number, b: number) => void;
|
|
@@ -720,10 +798,15 @@ export interface InitOutput {
|
|
|
720
798
|
readonly ifcapi_scanEntitiesFastBytes: (a: number, b: number, c: number) => number;
|
|
721
799
|
readonly ifcapi_scanGeometryEntitiesFast: (a: number, b: number, c: number) => number;
|
|
722
800
|
readonly ifcapi_scanRelevantEntitiesFastBytes: (a: number, b: number, c: number) => number;
|
|
801
|
+
readonly ifcapi_setComputeGeometryHashes: (a: number, b: number, c: number) => void;
|
|
723
802
|
readonly ifcapi_setEntityIndex: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
|
|
724
803
|
readonly ifcapi_setMergeLayers: (a: number, b: number) => void;
|
|
725
804
|
readonly ifcapi_version: (a: number, b: number) => void;
|
|
805
|
+
readonly meshOutline2d: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
|
|
726
806
|
readonly meshcollection_buildingRotation: (a: number, b: number) => void;
|
|
807
|
+
readonly meshcollection_geometryHashCount: (a: number) => number;
|
|
808
|
+
readonly meshcollection_geometryHashIds: (a: number) => number;
|
|
809
|
+
readonly meshcollection_geometryHashValues: (a: number) => number;
|
|
727
810
|
readonly meshcollection_get: (a: number, b: number) => number;
|
|
728
811
|
readonly meshcollection_hasRtcOffset: (a: number) => number;
|
|
729
812
|
readonly meshcollection_length: (a: number) => number;
|
|
@@ -735,6 +818,7 @@ export interface InitOutput {
|
|
|
735
818
|
readonly meshcollection_totalVertices: (a: number) => number;
|
|
736
819
|
readonly meshdatajs_color: (a: number, b: number) => void;
|
|
737
820
|
readonly meshdatajs_expressId: (a: number) => number;
|
|
821
|
+
readonly meshdatajs_geometryClass: (a: number) => number;
|
|
738
822
|
readonly meshdatajs_hasTexture: (a: number) => number;
|
|
739
823
|
readonly meshdatajs_ifcType: (a: number, b: number) => void;
|
|
740
824
|
readonly meshdatajs_indices: (a: number) => number;
|
|
@@ -749,6 +833,10 @@ export interface InitOutput {
|
|
|
749
833
|
readonly meshdatajs_triangleCount: (a: number) => number;
|
|
750
834
|
readonly meshdatajs_uvs: (a: number) => number;
|
|
751
835
|
readonly meshdatajs_vertexCount: (a: number) => number;
|
|
836
|
+
readonly meshoutlinejs_axisMax: (a: number) => number;
|
|
837
|
+
readonly meshoutlinejs_axisMin: (a: number) => number;
|
|
838
|
+
readonly meshoutlinejs_contour: (a: number, b: number) => number;
|
|
839
|
+
readonly meshoutlinejs_contourCount: (a: number) => number;
|
|
752
840
|
readonly profilecollection_get: (a: number, b: number) => number;
|
|
753
841
|
readonly profilecollection_length: (a: number) => number;
|
|
754
842
|
readonly profileentryjs_expressId: (a: number) => number;
|
|
@@ -824,9 +912,9 @@ export interface InitOutput {
|
|
|
824
912
|
readonly symbolictext_worldY: (a: number) => number;
|
|
825
913
|
readonly symbolictext_x: (a: number) => number;
|
|
826
914
|
readonly symbolictext_y: (a: number) => number;
|
|
827
|
-
readonly
|
|
828
|
-
readonly
|
|
829
|
-
readonly
|
|
915
|
+
readonly __wasm_bindgen_func_elem_675: (a: number, b: number, c: number) => void;
|
|
916
|
+
readonly __wasm_bindgen_func_elem_674: (a: number, b: number) => void;
|
|
917
|
+
readonly __wasm_bindgen_func_elem_709: (a: number, b: number, c: number, d: number) => void;
|
|
830
918
|
readonly __wbindgen_export: (a: number) => void;
|
|
831
919
|
readonly __wbindgen_export2: (a: number, b: number, c: number) => void;
|
|
832
920
|
readonly __wbindgen_export3: (a: number, b: number) => number;
|
package/pkg/ifc-lite.js
CHANGED
|
@@ -40,11 +40,24 @@ function getArrayU32FromWasm0(ptr, len) {
|
|
|
40
40
|
return getUint32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
+
function getArrayU64FromWasm0(ptr, len) {
|
|
44
|
+
ptr = ptr >>> 0;
|
|
45
|
+
return getBigUint64ArrayMemory0().subarray(ptr / 8, ptr / 8 + len);
|
|
46
|
+
}
|
|
47
|
+
|
|
43
48
|
function getArrayU8FromWasm0(ptr, len) {
|
|
44
49
|
ptr = ptr >>> 0;
|
|
45
50
|
return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);
|
|
46
51
|
}
|
|
47
52
|
|
|
53
|
+
let cachedBigUint64ArrayMemory0 = null;
|
|
54
|
+
function getBigUint64ArrayMemory0() {
|
|
55
|
+
if (cachedBigUint64ArrayMemory0 === null || cachedBigUint64ArrayMemory0.byteLength === 0) {
|
|
56
|
+
cachedBigUint64ArrayMemory0 = new BigUint64Array(wasm.memory.buffer);
|
|
57
|
+
}
|
|
58
|
+
return cachedBigUint64ArrayMemory0;
|
|
59
|
+
}
|
|
60
|
+
|
|
48
61
|
let cachedDataViewMemory0 = null;
|
|
49
62
|
function getDataViewMemory0() {
|
|
50
63
|
if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {
|
|
@@ -232,12 +245,12 @@ if (!('encodeInto' in cachedTextEncoder)) {
|
|
|
232
245
|
|
|
233
246
|
let WASM_VECTOR_LEN = 0;
|
|
234
247
|
|
|
235
|
-
function
|
|
236
|
-
wasm.
|
|
248
|
+
function __wasm_bindgen_func_elem_675(arg0, arg1, arg2) {
|
|
249
|
+
wasm.__wasm_bindgen_func_elem_675(arg0, arg1, addHeapObject(arg2));
|
|
237
250
|
}
|
|
238
251
|
|
|
239
|
-
function
|
|
240
|
-
wasm.
|
|
252
|
+
function __wasm_bindgen_func_elem_709(arg0, arg1, arg2, arg3) {
|
|
253
|
+
wasm.__wasm_bindgen_func_elem_709(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));
|
|
241
254
|
}
|
|
242
255
|
|
|
243
256
|
const ClashRunResultFinalization = (typeof FinalizationRegistry === 'undefined')
|
|
@@ -268,6 +281,10 @@ const MeshDataJsFinalization = (typeof FinalizationRegistry === 'undefined')
|
|
|
268
281
|
? { register: () => {}, unregister: () => {} }
|
|
269
282
|
: new FinalizationRegistry(ptr => wasm.__wbg_meshdatajs_free(ptr >>> 0, 1));
|
|
270
283
|
|
|
284
|
+
const MeshOutlineJsFinalization = (typeof FinalizationRegistry === 'undefined')
|
|
285
|
+
? { register: () => {}, unregister: () => {} }
|
|
286
|
+
: new FinalizationRegistry(ptr => wasm.__wbg_meshoutlinejs_free(ptr >>> 0, 1));
|
|
287
|
+
|
|
271
288
|
const ProfileCollectionFinalization = (typeof FinalizationRegistry === 'undefined')
|
|
272
289
|
? { register: () => {}, unregister: () => {} }
|
|
273
290
|
: new FinalizationRegistry(ptr => wasm.__wbg_profilecollection_free(ptr >>> 0, 1));
|
|
@@ -886,6 +903,20 @@ export class IfcAPI {
|
|
|
886
903
|
clearPrePassCache() {
|
|
887
904
|
wasm.ifcapi_clearPrePassCache(this.__wbg_ptr);
|
|
888
905
|
}
|
|
906
|
+
/**
|
|
907
|
+
* Enable or disable per-entity geometry fingerprinting in
|
|
908
|
+
* `processGeometryBatch`, used by the viewer's revision-diff feature.
|
|
909
|
+
*
|
|
910
|
+
* Pass a positive `tolerance` (metres) to enable — it is the quantization
|
|
911
|
+
* grid the hash snaps positions to (larger = more tolerant of float noise,
|
|
912
|
+
* smaller = catches finer edits; the `f32` precision floor of model-local
|
|
913
|
+
* coordinates means values below ~1 mm mostly hash noise). Pass `null`/
|
|
914
|
+
* `undefined` (or a non-positive value) to disable. Default: disabled.
|
|
915
|
+
* @param {number | null} [tolerance]
|
|
916
|
+
*/
|
|
917
|
+
setComputeGeometryHashes(tolerance) {
|
|
918
|
+
wasm.ifcapi_setComputeGeometryHashes(this.__wbg_ptr, !isLikeNone(tolerance), isLikeNone(tolerance) ? 0 : tolerance);
|
|
919
|
+
}
|
|
889
920
|
/**
|
|
890
921
|
* Create and initialize the IFC API
|
|
891
922
|
*/
|
|
@@ -1148,6 +1179,35 @@ export class MeshCollection {
|
|
|
1148
1179
|
wasm.__wbindgen_add_to_stack_pointer(16);
|
|
1149
1180
|
}
|
|
1150
1181
|
}
|
|
1182
|
+
/**
|
|
1183
|
+
* Express ids for the per-entity geometry fingerprints, parallel to
|
|
1184
|
+
* [`Self::geometry_hash_values`]. Empty unless geometry hashing was
|
|
1185
|
+
* enabled via `IfcAPI.setComputeGeometryHashes`.
|
|
1186
|
+
* @returns {Uint32Array}
|
|
1187
|
+
*/
|
|
1188
|
+
get geometryHashIds() {
|
|
1189
|
+
const ret = wasm.meshcollection_geometryHashIds(this.__wbg_ptr);
|
|
1190
|
+
return takeObject(ret);
|
|
1191
|
+
}
|
|
1192
|
+
/**
|
|
1193
|
+
* Number of per-entity geometry fingerprints recorded.
|
|
1194
|
+
* @returns {number}
|
|
1195
|
+
*/
|
|
1196
|
+
get geometryHashCount() {
|
|
1197
|
+
const ret = wasm.meshcollection_geometryHashCount(this.__wbg_ptr);
|
|
1198
|
+
return ret >>> 0;
|
|
1199
|
+
}
|
|
1200
|
+
/**
|
|
1201
|
+
* Per-entity geometry fingerprints as a `BigUint64Array`, parallel to
|
|
1202
|
+
* [`Self::geometry_hash_ids`]. `u64` is exposed (not hex strings) so JS
|
|
1203
|
+
* can compare with `===` and key maps without allocation. Empty unless
|
|
1204
|
+
* geometry hashing was enabled.
|
|
1205
|
+
* @returns {BigUint64Array}
|
|
1206
|
+
*/
|
|
1207
|
+
get geometryHashValues() {
|
|
1208
|
+
const ret = wasm.meshcollection_geometryHashValues(this.__wbg_ptr);
|
|
1209
|
+
return takeObject(ret);
|
|
1210
|
+
}
|
|
1151
1211
|
/**
|
|
1152
1212
|
* Get mesh at index
|
|
1153
1213
|
* @param {number} index
|
|
@@ -1250,6 +1310,16 @@ export class MeshDataJs {
|
|
|
1250
1310
|
const ret = wasm.meshdatajs_textureWidth(this.__wbg_ptr);
|
|
1251
1311
|
return ret >>> 0;
|
|
1252
1312
|
}
|
|
1313
|
+
/**
|
|
1314
|
+
* Geometry provenance for the viewer's Model/Types switch (#957 follow-up):
|
|
1315
|
+
* 0 = occurrence, 1 = orphan type geometry (no occurrence), 2 = instanced
|
|
1316
|
+
* type geometry (hidden in Model mode, shown in Types mode).
|
|
1317
|
+
* @returns {number}
|
|
1318
|
+
*/
|
|
1319
|
+
get geometryClass() {
|
|
1320
|
+
const ret = wasm.meshdatajs_geometryClass(this.__wbg_ptr);
|
|
1321
|
+
return ret;
|
|
1322
|
+
}
|
|
1253
1323
|
/**
|
|
1254
1324
|
* @returns {number}
|
|
1255
1325
|
*/
|
|
@@ -1354,6 +1424,70 @@ export class MeshDataJs {
|
|
|
1354
1424
|
}
|
|
1355
1425
|
if (Symbol.dispose) MeshDataJs.prototype[Symbol.dispose] = MeshDataJs.prototype.free;
|
|
1356
1426
|
|
|
1427
|
+
/**
|
|
1428
|
+
* A mesh's projected footprint outline.
|
|
1429
|
+
*
|
|
1430
|
+
* Contours are closed rings in drawing 2D space (same basis as `projectTo2D`
|
|
1431
|
+
* in `@ifc-lite/drawing-2d`), WITHOUT a duplicated closing vertex.
|
|
1432
|
+
* `axisMin`/`axisMax` are the element's extent along the cut axis (world
|
|
1433
|
+
* units, not flip-adjusted) for band classification on the TS side.
|
|
1434
|
+
*/
|
|
1435
|
+
export class MeshOutlineJs {
|
|
1436
|
+
static __wrap(ptr) {
|
|
1437
|
+
ptr = ptr >>> 0;
|
|
1438
|
+
const obj = Object.create(MeshOutlineJs.prototype);
|
|
1439
|
+
obj.__wbg_ptr = ptr;
|
|
1440
|
+
MeshOutlineJsFinalization.register(obj, obj.__wbg_ptr, obj);
|
|
1441
|
+
return obj;
|
|
1442
|
+
}
|
|
1443
|
+
__destroy_into_raw() {
|
|
1444
|
+
const ptr = this.__wbg_ptr;
|
|
1445
|
+
this.__wbg_ptr = 0;
|
|
1446
|
+
MeshOutlineJsFinalization.unregister(this);
|
|
1447
|
+
return ptr;
|
|
1448
|
+
}
|
|
1449
|
+
free() {
|
|
1450
|
+
const ptr = this.__destroy_into_raw();
|
|
1451
|
+
wasm.__wbg_meshoutlinejs_free(ptr, 0);
|
|
1452
|
+
}
|
|
1453
|
+
/**
|
|
1454
|
+
* Number of boundary rings (outer + holes).
|
|
1455
|
+
* @returns {number}
|
|
1456
|
+
*/
|
|
1457
|
+
get contourCount() {
|
|
1458
|
+
const ret = wasm.meshoutlinejs_contourCount(this.__wbg_ptr);
|
|
1459
|
+
return ret >>> 0;
|
|
1460
|
+
}
|
|
1461
|
+
/**
|
|
1462
|
+
* Ring `i` as a flat `[u0, v0, u1, v1, …]` array, or `undefined` if out of
|
|
1463
|
+
* range. The ring is closed implicitly (connect the last point to the
|
|
1464
|
+
* first).
|
|
1465
|
+
* @param {number} index
|
|
1466
|
+
* @returns {Float32Array | undefined}
|
|
1467
|
+
*/
|
|
1468
|
+
contour(index) {
|
|
1469
|
+
const ret = wasm.meshoutlinejs_contour(this.__wbg_ptr, index);
|
|
1470
|
+
return takeObject(ret);
|
|
1471
|
+
}
|
|
1472
|
+
/**
|
|
1473
|
+
* Element extent (max) along the cut axis, world units.
|
|
1474
|
+
* @returns {number}
|
|
1475
|
+
*/
|
|
1476
|
+
get axisMax() {
|
|
1477
|
+
const ret = wasm.meshoutlinejs_axisMax(this.__wbg_ptr);
|
|
1478
|
+
return ret;
|
|
1479
|
+
}
|
|
1480
|
+
/**
|
|
1481
|
+
* Element extent (min) along the cut axis, world units.
|
|
1482
|
+
* @returns {number}
|
|
1483
|
+
*/
|
|
1484
|
+
get axisMin() {
|
|
1485
|
+
const ret = wasm.meshoutlinejs_axisMin(this.__wbg_ptr);
|
|
1486
|
+
return ret;
|
|
1487
|
+
}
|
|
1488
|
+
}
|
|
1489
|
+
if (Symbol.dispose) MeshOutlineJs.prototype[Symbol.dispose] = MeshOutlineJs.prototype.free;
|
|
1490
|
+
|
|
1357
1491
|
/**
|
|
1358
1492
|
* A collection of extracted profiles.
|
|
1359
1493
|
*/
|
|
@@ -2250,6 +2384,37 @@ export function init() {
|
|
|
2250
2384
|
wasm.init();
|
|
2251
2385
|
}
|
|
2252
2386
|
|
|
2387
|
+
/**
|
|
2388
|
+
* Compute the winding-robust 2D footprint outline of a triangle mesh.
|
|
2389
|
+
*
|
|
2390
|
+
* `positions` is flat XYZ; `indices` is flat triangle indices. `axis` is
|
|
2391
|
+
* 0/1/2 = x/y/z (the cut axis, WebGL Y-up). Returns `undefined` when the mesh
|
|
2392
|
+
* has no triangles or projects to nothing.
|
|
2393
|
+
*
|
|
2394
|
+
* ```javascript
|
|
2395
|
+
* const outline = meshOutline2d(positions, indices, 1, false); // axis 1 = y
|
|
2396
|
+
* if (outline) {
|
|
2397
|
+
* for (let i = 0; i < outline.contourCount; i++) {
|
|
2398
|
+
* const ring = outline.contour(i); // Float32Array of [u0, v0, u1, v1, ...]
|
|
2399
|
+
* }
|
|
2400
|
+
* outline.free();
|
|
2401
|
+
* }
|
|
2402
|
+
* ```
|
|
2403
|
+
* @param {Float32Array} positions
|
|
2404
|
+
* @param {Uint32Array} indices
|
|
2405
|
+
* @param {number} axis
|
|
2406
|
+
* @param {boolean} flipped
|
|
2407
|
+
* @returns {MeshOutlineJs | undefined}
|
|
2408
|
+
*/
|
|
2409
|
+
export function meshOutline2d(positions, indices, axis, flipped) {
|
|
2410
|
+
const ptr0 = passArrayF32ToWasm0(positions, wasm.__wbindgen_export3);
|
|
2411
|
+
const len0 = WASM_VECTOR_LEN;
|
|
2412
|
+
const ptr1 = passArray32ToWasm0(indices, wasm.__wbindgen_export3);
|
|
2413
|
+
const len1 = WASM_VECTOR_LEN;
|
|
2414
|
+
const ret = wasm.meshOutline2d(ptr0, len0, ptr1, len1, axis, flipped);
|
|
2415
|
+
return ret === 0 ? undefined : MeshOutlineJs.__wrap(ret);
|
|
2416
|
+
}
|
|
2417
|
+
|
|
2253
2418
|
/**
|
|
2254
2419
|
* Get the version of IFC-Lite.
|
|
2255
2420
|
*
|
|
@@ -2379,7 +2544,7 @@ function __wbg_get_imports() {
|
|
|
2379
2544
|
const a = state0.a;
|
|
2380
2545
|
state0.a = 0;
|
|
2381
2546
|
try {
|
|
2382
|
-
return
|
|
2547
|
+
return __wasm_bindgen_func_elem_709(a, state0.b, arg0, arg1);
|
|
2383
2548
|
} finally {
|
|
2384
2549
|
state0.a = a;
|
|
2385
2550
|
}
|
|
@@ -2394,6 +2559,10 @@ function __wbg_get_imports() {
|
|
|
2394
2559
|
const ret = new Float32Array(getArrayF32FromWasm0(arg0, arg1));
|
|
2395
2560
|
return addHeapObject(ret);
|
|
2396
2561
|
};
|
|
2562
|
+
imports.wbg.__wbg_new_from_slice_883d10a76ca46292 = function(arg0, arg1) {
|
|
2563
|
+
const ret = new BigUint64Array(getArrayU64FromWasm0(arg0, arg1));
|
|
2564
|
+
return addHeapObject(ret);
|
|
2565
|
+
};
|
|
2397
2566
|
imports.wbg.__wbg_new_from_slice_db0691b69e9d3891 = function(arg0, arg1) {
|
|
2398
2567
|
const ret = new Uint32Array(getArrayU32FromWasm0(arg0, arg1));
|
|
2399
2568
|
return addHeapObject(ret);
|
|
@@ -2478,16 +2647,16 @@ function __wbg_get_imports() {
|
|
|
2478
2647
|
imports.wbg.__wbg_warn_6e567d0d926ff881 = function(arg0) {
|
|
2479
2648
|
console.warn(getObject(arg0));
|
|
2480
2649
|
};
|
|
2650
|
+
imports.wbg.__wbindgen_cast_0093e2d96a856a3b = function(arg0, arg1) {
|
|
2651
|
+
// Cast intrinsic for `Closure(Closure { dtor_idx: 61, function: Function { arguments: [Externref], shim_idx: 62, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
|
|
2652
|
+
const ret = makeMutClosure(arg0, arg1, wasm.__wasm_bindgen_func_elem_674, __wasm_bindgen_func_elem_675);
|
|
2653
|
+
return addHeapObject(ret);
|
|
2654
|
+
};
|
|
2481
2655
|
imports.wbg.__wbindgen_cast_2241b6af4c4b2941 = function(arg0, arg1) {
|
|
2482
2656
|
// Cast intrinsic for `Ref(String) -> Externref`.
|
|
2483
2657
|
const ret = getStringFromWasm0(arg0, arg1);
|
|
2484
2658
|
return addHeapObject(ret);
|
|
2485
2659
|
};
|
|
2486
|
-
imports.wbg.__wbindgen_cast_257c51b8abf9285e = function(arg0, arg1) {
|
|
2487
|
-
// Cast intrinsic for `Closure(Closure { dtor_idx: 57, function: Function { arguments: [Externref], shim_idx: 58, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
|
|
2488
|
-
const ret = makeMutClosure(arg0, arg1, wasm.__wasm_bindgen_func_elem_653, __wasm_bindgen_func_elem_654);
|
|
2489
|
-
return addHeapObject(ret);
|
|
2490
|
-
};
|
|
2491
2660
|
imports.wbg.__wbindgen_cast_4625c577ab2ec9ee = function(arg0) {
|
|
2492
2661
|
// Cast intrinsic for `U64 -> Externref`.
|
|
2493
2662
|
const ret = BigInt.asUintN(64, arg0);
|
|
@@ -2512,6 +2681,7 @@ function __wbg_get_imports() {
|
|
|
2512
2681
|
function __wbg_finalize_init(instance, module) {
|
|
2513
2682
|
wasm = instance.exports;
|
|
2514
2683
|
__wbg_init.__wbindgen_wasm_module = module;
|
|
2684
|
+
cachedBigUint64ArrayMemory0 = null;
|
|
2515
2685
|
cachedDataViewMemory0 = null;
|
|
2516
2686
|
cachedFloat32ArrayMemory0 = null;
|
|
2517
2687
|
cachedFloat64ArrayMemory0 = null;
|
package/pkg/ifc-lite_bg.wasm
CHANGED
|
Binary file
|