@ifc-lite/geometry 1.16.6 → 1.18.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.
- package/dist/geometry-controller.worker.d.ts +4 -0
- package/dist/geometry-controller.worker.d.ts.map +1 -0
- package/dist/geometry-controller.worker.js +349 -0
- package/dist/geometry-controller.worker.js.map +1 -0
- package/dist/geometry-parallel.d.ts +55 -13
- package/dist/geometry-parallel.d.ts.map +1 -1
- package/dist/geometry-parallel.js +507 -134
- package/dist/geometry-parallel.js.map +1 -1
- package/dist/geometry.worker.d.ts +89 -3
- package/dist/geometry.worker.d.ts.map +1 -1
- package/dist/geometry.worker.js +337 -72
- package/dist/geometry.worker.js.map +1 -1
- package/dist/ifc-lite-bridge.d.ts +25 -0
- package/dist/ifc-lite-bridge.d.ts.map +1 -1
- package/dist/ifc-lite-bridge.js +49 -0
- package/dist/ifc-lite-bridge.js.map +1 -1
- package/dist/ifc-lite-mesh-collector.d.ts +28 -1
- package/dist/ifc-lite-mesh-collector.d.ts.map +1 -1
- package/dist/ifc-lite-mesh-collector.js +48 -1
- package/dist/ifc-lite-mesh-collector.js.map +1 -1
- package/dist/index.d.ts +49 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +46 -21
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +40 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/watchdog.d.ts +27 -0
- package/dist/watchdog.d.ts.map +1 -0
- package/dist/watchdog.js +35 -0
- package/dist/watchdog.js.map +1 -0
- package/dist/worker-count.d.ts +52 -0
- package/dist/worker-count.d.ts.map +1 -0
- package/dist/worker-count.js +89 -0
- package/dist/worker-count.js.map +1 -0
- package/package.json +5 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geometry-parallel.js","sourceRoot":"","sources":["../src/geometry-parallel.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"geometry-parallel.js","sourceRoot":"","sources":["../src/geometry-parallel.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AA2B/D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAgDpD,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,eAAe,CACpC,MAAkB,EAClB,WAA8B,EAC9B,eAAqD;AACrD,gFAAgF;AAChF,WAA+B,EAC/B,OAAgC;IAEhC,WAAW,CAAC,KAAK,EAAE,CAAC;IAEpB,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;IAC7D,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IAEzC,2DAA2D;IAC3D,4BAA4B;IAC5B,2CAA2C;IAC3C,oCAAoC;IACpC,IAAI,YAA+B,CAAC;IACpC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;IAClC,IAAI,WAAW,IAAI,WAAW,CAAC,UAAU,KAAK,MAAM,CAAC,UAAU,EAAE,CAAC;QAChE,YAAY,GAAG,WAAW,CAAC;IAC7B,CAAC;SAAM,IACL,OAAO,iBAAiB,KAAK,WAAW;WACrC,WAAW,YAAY,iBAAiB;WACxC,MAAM,CAAC,UAAU,KAAK,CAAC;WACvB,MAAM,CAAC,UAAU,KAAK,WAAW,CAAC,UAAU,EAC/C,CAAC;QACD,YAAY,GAAG,WAAW,CAAC;IAC7B,CAAC;SAAM,CAAC;QACN,YAAY,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,UAAU,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,+DAA+D;IAC/D,mEAAmE;IACnE,qEAAqE;IACrE,gEAAgE;IAChE,EAAE;IACF,0DAA0D;IAC1D,iEAAiE;IACjE,6DAA6D;IAC7D,oEAAoE;IACpE,MAAM,aAAa,GAAG,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC5D,MAAM,kBAAkB,GAAG,GAAG,EAAE,CAAC,aAAa;QAC5C,CAAC,CAAC,IAAI,MAAM,CACR,IAAI,GAAG,CAAC,iCAAiC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAC3D,EAAE,IAAI,EAAE,QAAQ,EAAE,CACnB;QACH,CAAC,CAAC,IAAI,MAAM,CACR,IAAI,GAAG,CAAC,sBAAsB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAChD,EAAE,IAAI,EAAE,QAAQ,EAAE,CACnB,CAAC;IACN,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAAC,IAAI,MAAM,CACxC,IAAI,GAAG,CAAC,sBAAsB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAChD,EAAE,IAAI,EAAE,QAAQ,EAAE,CACnB,CAAC;IAEF,+DAA+D;IAC/D,MAAM,UAAU,GAA6B,EAAE,CAAC;IAChD,IAAI,cAAc,GAAwB,IAAI,CAAC;IAC/C,MAAM,IAAI,GAAG,GAAG,EAAE;QAChB,IAAI,cAAc,EAAE,CAAC;YACnB,cAAc,EAAE,CAAC;YACjB,cAAc,GAAG,IAAI,CAAC;QACxB,CAAC;IACH,CAAC,CAAC;IAEF,mEAAmE;IACnE,IAAI,WAAW,GAAuB,IAAI,CAAC;IAC3C,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,YAAY,GAAiB,IAAI,CAAC;IAEtC,uEAAuE;IACvE,qEAAqE;IACrE,mEAAmE;IACnE,uDAAuD;IACvD,IAAI,WAAW,GAAiB,IAAI,CAAC;IACrC,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,IAAI,wBAAwB,GAAG,KAAK,CAAC;IACrC;;;;;;;;OAQG;IACH,MAAM,YAAY,GAAkB,EAAE,CAAC;IACvC,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,IAAI,mBAAmB,GAAG,KAAK,CAAC;IAEhC,oEAAoE;IACpE,kEAAkE;IAClE,MAAM,kBAAkB,GAAa,EAAE,CAAC;IACxC,MAAM,qBAAqB,GAAG,CAAC,MAAc,EAAE,WAAmB,EAAE,EAAE;QACpE,MAAM,CAAC,SAAS,GAAG,CAAC,CAAe,EAAE,EAAE;YACrC,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,mBAAmB,WAAW,kBAAkB,OAAO,EAAE,IAAI,CAAC,CAAC;gBAC3E,OAAO;YACT,CAAC;YACD,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC1B,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,cAAc;oBACpB,WAAW;oBACX,aAAa,EAAE,GAAG,CAAC,aAAa;oBAChC,SAAS,EAAE,GAAG,CAAC,SAAS;iBACzB,CAAC,CAAC;gBACH,IAAI,EAAE,CAAC;gBACP,OAAO;YACT,CAAC;YACD,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBACzB,IAAI,kBAAkB,CAAC,WAAW,CAAC,KAAK,SAAS,EAAE,CAAC;oBAClD,kBAAkB,CAAC,WAAW,CAAC,GAAG,OAAO,EAAE,CAAC;oBAC5C,OAAO,CAAC,GAAG,CAAC,mBAAmB,WAAW,mBAAmB,OAAO,EAAE,OAAO,GAAG,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC;gBAClH,CAAC;gBACD,MAAM,MAAM,GAAe,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAO1C,EAAE,EAAE,CAAC,CAAC;oBACL,SAAS,EAAE,CAAC,CAAC,SAAS;oBACtB,OAAO,EAAE,CAAC,CAAC,OAAO;oBAClB,SAAS,EAAE,CAAC,CAAC,SAAS,YAAY,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;oBAC5F,OAAO,EAAE,CAAC,CAAC,OAAO,YAAY,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC;oBACpF,OAAO,EAAE,CAAC,CAAC,OAAO,YAAY,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC;oBAClF,KAAK,EAAE,CAAC,CAAC,KAAK;iBACf,CAAC,CAAC,CAAC;gBACJ,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACtB,uDAAuD;oBACvD,uDAAuD;oBACvD,sDAAsD;oBACtD,2DAA2D;oBAC3D,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC;oBAC7B,WAAW,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;oBAC7C,MAAM,cAAc,GAAG,WAAW,CAAC,wBAAwB,EAAE,CAAC;oBAC9D,UAAU,CAAC,IAAI,CAAC;wBACd,IAAI,EAAE,OAAO;wBACb,MAAM;wBACN,UAAU,EAAE,WAAW;wBACvB,cAAc,EAAE,cAAc,IAAI,SAAS;qBAC5C,CAAC,CAAC;oBACH,IAAI,EAAE,CAAC;gBACT,CAAC;gBACD,OAAO;YACT,CAAC;YACD,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC5B,yDAAyD;gBACzD,2DAA2D;gBAC3D,yDAAyD;gBACzD,2DAA2D;gBAC3D,2DAA2D;gBAC3D,yDAAyD;gBACzD,yCAAyC;gBACzC,gBAAgB,EAAE,CAAC;gBACnB,MAAM,CAAC,SAAS,EAAE,CAAC;gBACnB,IAAI,EAAE,CAAC;gBACP,OAAO;YACT,CAAC;YACD,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBACzB,WAAW,GAAG,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;gBACjE,gBAAgB,EAAE,CAAC;gBACnB,MAAM,CAAC,SAAS,EAAE,CAAC;gBACnB,IAAI,EAAE,CAAC;gBACP,OAAO;YACT,CAAC;QACH,CAAC,CAAC;QACF,MAAM,CAAC,OAAO,GAAG,CAAC,GAAG,EAAE,EAAE;YACvB,WAAW,GAAG,IAAI,KAAK,CAAC,2BAA2B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YAClE,gBAAgB,EAAE,CAAC;YACnB,MAAM,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,EAAE,CAAC;QACT,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,sEAAsE;IACtE,oEAAoE;IACpE,qDAAqD;IACrD,MAAM,KAAK,GAAG,OAAO,SAAS,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,mBAAmB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1F,MAAM,cAAc,GAAG,OAAO,SAAS,KAAK,WAAW;QACrD,CAAC,CAAC,CAAE,SAAkD,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChF,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IACrD,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC;IAC/D,qEAAqE;IACrE,oEAAoE;IACpE,8DAA8D;IAC9D,aAAa;IACb,MAAM,WAAW,GAAG,aAAa;QAC/B,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,eAAe,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC;IAErF,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrB,qBAAqB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACjC,iEAAiE;QACjE,oEAAoE;QACpE,4DAA4D;QAC5D,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACrC,iEAAiE;QACjE,kEAAkE;QAClE,kEAAkE;QAClE,gEAAgE;QAChE,oEAAoE;QACpE,iEAAiE;QACjE,oCAAoC;QACpC,MAAM,CAAC,WAAW,CAAC;YACjB,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAE,OAAO,EAAE,WAAW,KAAK,IAAI;SACvC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,IAAI,gBAAgB;YAAE,OAAO;QAC7B,gBAAgB,GAAG,IAAI,CAAC;QACxB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,CAAC,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;YACxC,CAAC;YAAC,MAAM,CAAC,CAAC,gDAAgD,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,sBAAsB,GAAG,GAAG,EAAE;QAClC,IAAI,wBAAwB,IAAI,CAAC,WAAW;YAAE,OAAO;QACrD,wBAAwB,GAAG,IAAI,CAAC;QAEhC,MAAM,YAAY,GAAG,eAAe,IAAI,IAAI,CAAC;QAC7C,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACzE,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACzE,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACzE,MAAM,mBAAmB,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC;QAEzE,UAAU,CAAC,IAAI,CAAC;YACd,IAAI,EAAE,WAAW;YACjB,SAAS,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE;YACxC,MAAM,EAAE,mBAAmB;SAC5B,CAAC,CAAC;QACH,IAAI,EAAE,CAAC;QAEP,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;QAClC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,CAAC,WAAW,CAAC;gBACjB,IAAI,EAAE,cAAuB;gBAC7B,YAAY;gBACZ,SAAS,EAAE,WAAW,CAAC,SAAS;gBAChC,IAAI,EAAE,IAAI,EAAE,IAAI;gBAChB,UAAU,EAAE,mBAAmB;gBAC/B,QAAQ,EAAE,QAAQ;gBAClB,UAAU,EAAE,QAAQ;gBACpB,UAAU,EAAE,QAAQ;gBACpB,QAAQ,EAAE,QAAQ;gBAClB,WAAW,EAAE,OAAO;aACrB,CAAC,CAAC;QACL,CAAC;QAED,kEAAkE;QAClE,+DAA+D;QAC/D,mDAAmD;IACrD,CAAC,CAAC;IAEF,SAAS,yBAAyB,CAAC,IAAiB;QAClD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACtD,gEAAgE;QAChE,qEAAqE;QACrE,mEAAmE;QACnE,oEAAoE;QACpE,oBAAoB;QACpB,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACjD,IAAI,YAAY,KAAK,CAAC;YAAE,OAAO;QAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9D,IAAI,CAAC;YACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACxC,MAAM,KAAK,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC,CAAC;gBACnC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,YAAY,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC5D,IAAI,KAAK,IAAI,GAAG;oBAAE,SAAS;gBAC3B,kEAAkE;gBAClE,uEAAuE;gBACvE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBACnC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CACpB,EAAE,IAAI,EAAE,cAAuB,EAAE,QAAQ,EAAE,GAAG,EAAE,EAChD,CAAC,GAAG,CAAC,MAAM,CAAC,CACb,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,GAAG,IAAI,KAAK,CAAC,kCAAkC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC9G,IAAI,EAAE,CAAC;QACT,CAAC;IACH,CAAC;IAED,MAAM,iBAAiB,GAAG,CAAC,IAAiB,EAAE,EAAE;QAC9C,IAAI,CAAC,wBAAwB,IAAI,CAAC,cAAc,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzE,+DAA+D;YAC/D,iEAAiE;YACjE,8DAA8D;YAC9D,6DAA6D;YAC7D,mDAAmD;YACnD,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,OAAO;QACT,CAAC;QACD,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC,CAAC;IAEF,8DAA8D;IAC9D,MAAM,wBAAwB,GAAG,GAAG,EAAE;QACpC,IAAI,CAAC,wBAAwB,IAAI,CAAC,cAAc,IAAI,CAAC,mBAAmB;YAAE,OAAO;QACjF,OAAO,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,yBAAyB,CAAC,YAAY,CAAC,KAAK,EAAG,CAAC,CAAC;QACnD,CAAC;IACH,CAAC,CAAC;IAEF,8DAA8D;IAC9D,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,8CAA8C,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,WAAW,EAAE,CAAC,CAAC;IAE9G,MAAM,aAAa,GAAG,iBAAiB,EAAE,CAAC;IAC1C,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,mBAAmB,GAAG,CAAC,CAAC;IAC5B,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC;IACtB,aAAa,CAAC,SAAS,GAAG,CAAC,CAAe,EAAE,EAAE;QAC5C,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;QACpB,IAAI,IAAI,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;YACrC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YACxD,IAAI,EAAE,CAAC;YACP,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;YACnC,MAAM,GAAG,GAAG,IAAI,CAAC,KAA+C,CAAC;YACjE,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACxB,WAAW,GAAG;oBACZ,SAAS,EAAE,GAAG,CAAC,SAAmB;oBAClC,SAAS,EAAE,GAAG,CAAC,SAAyB;oBACxC,UAAU,EAAE,GAAG,CAAC,UAAqB;oBACrC,gBAAgB,EAAG,GAAG,CAAC,gBAA8C,IAAI,IAAI;iBAC9E,CAAC;gBACF,OAAO,CAAC,GAAG,CAAC,mBAAmB,OAAO,EAAE,gBAAgB,WAAW,CAAC,SAAS,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBAClN,sBAAsB,EAAE,CAAC;gBACzB,IAAI,EAAE,CAAC;YACT,CAAC;iBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC/B,MAAM,OAAO,GAAG,GAAG,CAAC,IAAmB,CAAC;gBACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAChD,aAAa,EAAE,CAAC;gBAChB,mBAAmB,IAAI,QAAQ,CAAC;gBAChC,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;oBACrB,YAAY,GAAG,OAAO,EAAE,CAAC;oBACzB,OAAO,CAAC,GAAG,CAAC,+BAA+B,YAAY,OAAO,QAAQ,QAAQ,CAAC,CAAC;gBAClF,CAAC;gBACD,IAAI,aAAa,GAAG,EAAE,KAAK,CAAC,IAAI,QAAQ,GAAG,IAAI,EAAE,CAAC;oBAChD,OAAO,CAAC,GAAG,CAAC,mBAAmB,aAAa,MAAM,OAAO,EAAE,QAAQ,QAAQ,gBAAgB,mBAAmB,GAAG,CAAC,CAAC;gBACrH,CAAC;gBACD,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAC7B,CAAC;iBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACjC,kEAAkE;gBAClE,+DAA+D;gBAC/D,iEAAiE;gBACjE,6DAA6D;gBAC7D,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAuB,CAAC;gBAC7C,MAAM,WAAW,GAAG,GAAG,CAAC,WAAyB,CAAC;gBAClD,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAuB,CAAC;gBAC7C,MAAM,UAAU,GAAG,GAAG,CAAC,UAAyB,CAAC;gBACjD,MAAM,UAAU,GAAG,GAAG,CAAC,UAAyB,CAAC;gBACjD,OAAO,CAAC,GAAG,CAAC,qBAAqB,OAAO,EAAE,OAAO,QAAQ,CAAC,MAAM,YAAY,QAAQ,CAAC,MAAM,0BAA0B,YAAY,CAAC,MAAM,gBAAgB,CAAC,CAAC;gBAE1J,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;oBACxB,8DAA8D;oBAC9D,+DAA+D;oBAC/D,6DAA6D;oBAC7D,IAAI,CAAC;wBACH,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;wBAC9B,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC;wBACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;wBAC/B,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC;wBACnC,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC;wBACnC,CAAC,CAAC,WAAW,CACX;4BACE,IAAI,EAAE,YAAqB;4BAC3B,QAAQ,EAAE,IAAI;4BACd,WAAW,EAAE,OAAO;4BACpB,QAAQ,EAAE,KAAK;4BACf,UAAU,EAAE,OAAO;4BACnB,UAAU,EAAE,OAAO;yBACpB,EACD,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAC5E,CAAC;oBACJ,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,OAAO,CAAC,IAAI,CAAC,sCAAsC,EAAE,GAAG,CAAC,CAAC;oBAC5D,CAAC;gBACH,CAAC;gBAED,cAAc,GAAG,IAAI,CAAC;gBACtB,6DAA6D;gBAC7D,0DAA0D;gBAC1D,sCAAsC;gBACtC,wBAAwB,EAAE,CAAC;YAC7B,CAAC;iBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBACvC,6DAA6D;gBAC7D,2DAA2D;gBAC3D,0DAA0D;gBAC1D,+DAA+D;gBAC/D,MAAM,GAAG,GAAG,GAAG,CAAC,GAAkB,CAAC;gBACnC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAqB,CAAC;gBACzC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAsB,CAAC;gBAC3C,OAAO,CAAC,GAAG,CAAC,2BAA2B,OAAO,EAAE,OAAO,GAAG,CAAC,MAAM,WAAW,CAAC,CAAC;gBAE9E,IAAI,OAAO,iBAAiB,KAAK,WAAW,EAAE,CAAC;oBAC7C,4DAA4D;oBAC5D,0CAA0C;oBAC1C,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAC;oBAChC,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;oBACtC,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;oBACxC,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC,QAAQ,CAAC,CAAC;oBAC/C,MAAM,SAAS,GAAG,IAAI,iBAAiB,CAAC,WAAW,CAAC,CAAC;oBACrD,MAAM,UAAU,GAAG,IAAI,iBAAiB,CAAC,YAAY,CAAC,CAAC;oBACvD,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACjC,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBACvC,IAAI,WAAW,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;oBACzC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;wBACxB,IAAI,CAAC;4BACH,CAAC,CAAC,WAAW,CAAC;gCACZ,IAAI,EAAE,kBAA2B;gCACjC,GAAG,EAAE,IAAI,WAAW,CAAC,MAAM,CAAC;gCAC5B,MAAM,EAAE,IAAI,WAAW,CAAC,SAAS,CAAC;gCAClC,OAAO,EAAE,IAAI,WAAW,CAAC,UAAU,CAAC;6BACrC,CAAC,CAAC;wBACL,CAAC;wBAAC,OAAO,GAAG,EAAE,CAAC;4BACb,OAAO,CAAC,IAAI,CAAC,4CAA4C,EAAE,GAAG,CAAC,CAAC;wBAClE,CAAC;oBACH,CAAC;oBACD,8DAA8D;oBAC9D,iEAAiE;oBACjE,8DAA8D;oBAC9D,2BAA2B;oBAC3B,IAAI,OAAO,EAAE,aAAa,EAAE,CAAC;wBAC3B,IAAI,CAAC;4BACH,OAAO,CAAC,aAAa,CACnB,IAAI,WAAW,CAAC,MAAM,CAAC,EACvB,IAAI,WAAW,CAAC,SAAS,CAAC,EAC1B,IAAI,WAAW,CAAC,UAAU,CAAC,CAC5B,CAAC;wBACJ,CAAC;wBAAC,OAAO,GAAG,EAAE,CAAC;4BACb,OAAO,CAAC,IAAI,CAAC,yCAAyC,EAAE,GAAG,CAAC,CAAC;wBAC/D,CAAC;oBACH,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,2DAA2D;oBAC3D,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;wBACxB,IAAI,CAAC;4BACH,CAAC,CAAC,WAAW,CAAC;gCACZ,IAAI,EAAE,kBAA2B;gCACjC,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE;gCAChB,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE;gCACtB,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE;6BACzB,CAAC,CAAC;wBACL,CAAC;wBAAC,OAAO,GAAG,EAAE,CAAC;4BACb,OAAO,CAAC,IAAI,CAAC,4CAA4C,EAAE,GAAG,CAAC,CAAC;wBAClE,CAAC;oBACH,CAAC;oBACD,IAAI,OAAO,EAAE,aAAa,EAAE,CAAC;wBAC3B,IAAI,CAAC;4BACH,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;wBACtE,CAAC;wBAAC,OAAO,GAAG,EAAE,CAAC;4BACb,OAAO,CAAC,IAAI,CAAC,yCAAyC,EAAE,GAAG,CAAC,CAAC;wBAC/D,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,mBAAmB,GAAG,IAAI,CAAC;gBAC3B,wBAAwB,EAAE,CAAC;YAC7B,CAAC;iBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBACnC,gBAAgB,GAAG,GAAG,CAAC,SAAmB,CAAC;gBAC3C,OAAO,CAAC,GAAG,CAAC,+BAA+B,OAAO,EAAE,gBAAgB,gBAAgB,WAAW,aAAa,EAAE,CAAC,CAAC;gBAChH,2DAA2D;gBAC3D,0DAA0D;gBAC1D,0DAA0D;gBAC1D,sDAAsD;gBACtD,+CAA+C;gBAC/C,IAAI,CAAC,mBAAmB,EAAE,CAAC;oBACzB,mBAAmB,GAAG,IAAI,CAAC;oBAC3B,iBAAiB,EAAE,CAAC;gBACtB,CAAC;YACH,CAAC;YACD,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC1B,YAAY,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACvC,WAAW,GAAG,IAAI,CAAC;YACnB,aAAa,CAAC,SAAS,EAAE,CAAC;YAC1B,IAAI,EAAE,CAAC;YACP,OAAO;QACT,CAAC;QACD,sEAAsE;QACtE,4DAA4D;QAC5D,gEAAgE;IAClE,CAAC,CAAC;IACF,aAAa,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,EAAE;QAC5B,YAAY,GAAG,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACjE,WAAW,GAAG,IAAI,CAAC;QACnB,aAAa,CAAC,SAAS,EAAE,CAAC;QAC1B,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;IAEF,oEAAoE;IACpE,wEAAwE;IACxE,yEAAyE;IACzE,0EAA0E;IAC1E,+DAA+D;IAC/D,MAAM,iBAAiB,GAAG,GAAG,EAAE;QAC7B,WAAW,GAAG,IAAI,CAAC;QACnB,yDAAyD;QACzD,4DAA4D;QAC5D,2DAA2D;QAC3D,2DAA2D;QAC3D,0BAA0B;QAC1B,IAAI,wBAAwB,EAAE,CAAC;YAC7B,aAAa,EAAE,CAAC;QAClB,CAAC;QACD,aAAa,CAAC,SAAS,EAAE,CAAC;QAC1B,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;IAEF,mCAAmC;IACnC,+CAA+C;IAC/C,wEAAwE;IACxE,yEAAyE;IACzE,mCAAmC;IACnC,qEAAqE;IACrE,wEAAwE;IACxE,wEAAwE;IACxE,wEAAwE;IACxE,wEAAwE;IACxE,aAAa,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;IAE1F,6EAA6E;IAC7E,uEAAuE;IACvE,qEAAqE;IACrE,0DAA0D;IAC1D,6EAA6E;IAC7E,uCAAuC;IACvC,IAAI,mBAAmB,GAAG,KAAK,CAAC;IAEhC,OAAO,IAAI,EAAE,CAAC;QACZ,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,UAAU,CAAC,KAAK,EAAG,CAAC;QAC5B,CAAC;QACD,IAAI,WAAW,EAAE,CAAC;YAChB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,IAAI,CAAC;oBAAC,CAAC,CAAC,SAAS,EAAE,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,8BAA8B,CAAC,CAAC;YACjE,CAAC;YACD,IAAI,CAAC;gBAAC,aAAa,CAAC,SAAS,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,8BAA8B,CAAC,CAAC;YAC3E,MAAM,WAAW,CAAC;QACpB,CAAC;QACD,IAAI,YAAY,EAAE,CAAC;YACjB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,IAAI,CAAC;oBAAC,CAAC,CAAC,SAAS,EAAE,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,8BAA8B,CAAC,CAAC;YACjE,CAAC;YACD,MAAM,YAAY,CAAC;QACrB,CAAC;QAED,mEAAmE;QACnE,iEAAiE;QACjE,mEAAmE;QACnE,mEAAmE;QACnE,8BAA8B;QAC9B,IAAI,WAAW,IAAI,CAAC,wBAAwB,IAAI,gBAAgB,KAAK,CAAC,EAAE,CAAC;YACvE,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,IAAI,CAAC;oBAAC,CAAC,CAAC,SAAS,EAAE,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,8BAA8B,CAAC,CAAC;YACjE,CAAC;YACD,MAAM,cAAc,GAAG,WAAW,CAAC,sBAAsB,EAAE,CAAC;YAC5D,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC;YAC3D,OAAO;QACT,CAAC;QAED,IACE,WAAW;eACR,wBAAwB;eACxB,gBAAgB,IAAI,OAAO,CAAC,MAAM;eAClC,UAAU,CAAC,MAAM,KAAK,CAAC,EAC1B,CAAC;YACD,MAAM;QACR,CAAC;QAED,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,GAAG,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,cAAc,GAAG,WAAW,CAAC,sBAAsB,EAAE,CAAC;IAC5D,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC;AAC1D,CAAC"}
|
|
@@ -17,11 +17,84 @@ export interface GeometryWorkerProcessMessage {
|
|
|
17
17
|
styleIds: Uint32Array;
|
|
18
18
|
styleColors: Uint8Array;
|
|
19
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* Streaming-mode counterpart to `process`. The host sends `stream-start`
|
|
22
|
+
* once with the same metadata (minus jobs), then any number of
|
|
23
|
+
* `stream-chunk` messages with new job slices, and finally `stream-end`
|
|
24
|
+
* to trigger the worker's `complete` + `memory` emit.
|
|
25
|
+
*
|
|
26
|
+
* Used by the streaming pre-pass path so workers can begin processing
|
|
27
|
+
* jobs the moment the first chunk arrives from Rust, rather than waiting
|
|
28
|
+
* for the entire pre-pass to finish.
|
|
29
|
+
*/
|
|
30
|
+
export interface GeometryWorkerStreamStartMessage {
|
|
31
|
+
type: 'stream-start';
|
|
32
|
+
sharedBuffer: SharedArrayBuffer;
|
|
33
|
+
unitScale: number;
|
|
34
|
+
rtcX: number;
|
|
35
|
+
rtcY: number;
|
|
36
|
+
rtcZ: number;
|
|
37
|
+
needsShift: boolean;
|
|
38
|
+
voidKeys: Uint32Array;
|
|
39
|
+
voidCounts: Uint32Array;
|
|
40
|
+
voidValues: Uint32Array;
|
|
41
|
+
styleIds: Uint32Array;
|
|
42
|
+
styleColors: Uint8Array;
|
|
43
|
+
}
|
|
44
|
+
export interface GeometryWorkerStreamChunkMessage {
|
|
45
|
+
type: 'stream-chunk';
|
|
46
|
+
jobsFlat: Uint32Array;
|
|
47
|
+
}
|
|
48
|
+
export interface GeometryWorkerStreamEndMessage {
|
|
49
|
+
type: 'stream-end';
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Update the active session's style/void arrays mid-stream. Used when the
|
|
53
|
+
* streaming pre-pass emits its `styles` event AFTER processing has already
|
|
54
|
+
* begun: workers initially process with empty styles (default per-type
|
|
55
|
+
* colours) and switch to resolved styles for any subsequent batches.
|
|
56
|
+
*/
|
|
57
|
+
export interface GeometryWorkerSetStylesMessage {
|
|
58
|
+
type: 'set-styles';
|
|
59
|
+
voidKeys: Uint32Array;
|
|
60
|
+
voidCounts: Uint32Array;
|
|
61
|
+
voidValues: Uint32Array;
|
|
62
|
+
styleIds: Uint32Array;
|
|
63
|
+
styleColors: Uint8Array;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Install a pre-built entity index into the worker's IfcAPI. The streaming
|
|
67
|
+
* pre-pass exports its already-built entity_index after the scan; without
|
|
68
|
+
* this, every process worker would re-scan the entire file (~5 s on a 1 GB
|
|
69
|
+
* IFC) on its first `processGeometryBatch` call. With this, the worker
|
|
70
|
+
* pays ~1 s to build the FxHashMap from the input slices and skips the
|
|
71
|
+
* file scan entirely.
|
|
72
|
+
*/
|
|
73
|
+
export interface GeometryWorkerSetEntityIndexMessage {
|
|
74
|
+
type: 'set-entity-index';
|
|
75
|
+
ids: Uint32Array;
|
|
76
|
+
starts: Uint32Array;
|
|
77
|
+
lengths: Uint32Array;
|
|
78
|
+
}
|
|
20
79
|
export interface GeometryWorkerPrePassMessage {
|
|
21
|
-
type: 'prepass' | 'prepass-fast';
|
|
80
|
+
type: 'prepass' | 'prepass-fast' | 'prepass-streaming';
|
|
22
81
|
sharedBuffer: SharedArrayBuffer;
|
|
82
|
+
/** Jobs per chunk for `prepass-streaming` (defaults to 50_000). */
|
|
83
|
+
chunkSize?: number;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Forward the user-facing "Merge Multilayer Walls" toggle (issue #540)
|
|
87
|
+
* down to this worker's IfcAPI. Hosts should send this AFTER `init`
|
|
88
|
+
* and BEFORE the first `process` / `stream-start` so the flag is
|
|
89
|
+
* already in effect when geometry processing begins. Default in
|
|
90
|
+
* Rust is `false` — sending `enabled: false` (or never sending the
|
|
91
|
+
* message) keeps existing behaviour.
|
|
92
|
+
*/
|
|
93
|
+
export interface GeometryWorkerSetMergeLayersMessage {
|
|
94
|
+
type: 'set-merge-layers';
|
|
95
|
+
enabled: boolean;
|
|
23
96
|
}
|
|
24
|
-
export type GeometryWorkerRequest = GeometryWorkerInitMessage | GeometryWorkerProcessMessage | GeometryWorkerPrePassMessage;
|
|
97
|
+
export type GeometryWorkerRequest = GeometryWorkerInitMessage | GeometryWorkerProcessMessage | GeometryWorkerStreamStartMessage | GeometryWorkerStreamChunkMessage | GeometryWorkerStreamEndMessage | GeometryWorkerSetStylesMessage | GeometryWorkerSetEntityIndexMessage | GeometryWorkerSetMergeLayersMessage | GeometryWorkerPrePassMessage;
|
|
25
98
|
export interface GeometryWorkerBatchMessage {
|
|
26
99
|
type: 'batch';
|
|
27
100
|
meshes: {
|
|
@@ -41,5 +114,18 @@ export interface GeometryWorkerErrorMessage {
|
|
|
41
114
|
type: 'error';
|
|
42
115
|
message: string;
|
|
43
116
|
}
|
|
44
|
-
|
|
117
|
+
/**
|
|
118
|
+
* Optional memory snapshot emitted right after `complete`. Lets the main
|
|
119
|
+
* thread aggregate per-worker WASM heap usage (which it cannot read
|
|
120
|
+
* directly across the worker realm boundary) and total mesh bytes
|
|
121
|
+
* pushed back via the transfer list.
|
|
122
|
+
*/
|
|
123
|
+
export interface GeometryWorkerMemoryMessage {
|
|
124
|
+
type: 'memory';
|
|
125
|
+
/** Total bytes of all positions+normals+indices typed arrays this worker emitted. */
|
|
126
|
+
meshBytes: number;
|
|
127
|
+
/** WebAssembly.Memory.buffer.byteLength inside this worker's WASM instance. */
|
|
128
|
+
wasmHeapBytes: number;
|
|
129
|
+
}
|
|
130
|
+
export type GeometryWorkerResponse = GeometryWorkerBatchMessage | GeometryWorkerCompleteMessage | GeometryWorkerErrorMessage | GeometryWorkerMemoryMessage;
|
|
45
131
|
//# sourceMappingURL=geometry.worker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geometry.worker.d.ts","sourceRoot":"","sources":["../src/geometry.worker.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,SAAS,CAAC;IAChB,YAAY,EAAE,iBAAiB,CAAC;IAChC,QAAQ,EAAE,WAAW,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IACzC,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,EAAE,WAAW,CAAC;IACxB,UAAU,EAAE,WAAW,CAAC;IACxB,QAAQ,EAAE,WAAW,CAAC;IACtB,WAAW,EAAE,UAAU,CAAC;CACzB;AAED,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,SAAS,GAAG,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"geometry.worker.d.ts","sourceRoot":"","sources":["../src/geometry.worker.ts"],"names":[],"mappings":"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"}
|
package/dist/geometry.worker.js
CHANGED
|
@@ -3,20 +3,261 @@
|
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
4
|
import init, { initSync, IfcAPI } from '@ifc-lite/wasm';
|
|
5
5
|
let api = null;
|
|
6
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Cached merge-layers flag for this worker. The host may post
|
|
8
|
+
* `set-merge-layers` BEFORE `init` (the controller pattern) so we
|
|
9
|
+
* remember the latest value and re-apply once the IfcAPI is built.
|
|
10
|
+
* The Rust agent's contract is: state lives on the IfcAPI instance,
|
|
11
|
+
* so we only need to push it once per API construction.
|
|
12
|
+
*/
|
|
13
|
+
let mergeLayersFlag = false;
|
|
14
|
+
let mergeLayersApplied = false;
|
|
15
|
+
/**
|
|
16
|
+
* Push the cached `mergeLayersFlag` onto the IfcAPI. Idempotent — only
|
|
17
|
+
* fires once per API instance unless `markMergeLayersDirty` is called
|
|
18
|
+
* (used when the host updates the flag mid-session).
|
|
19
|
+
*/
|
|
20
|
+
function applyMergeLayersToApi() {
|
|
21
|
+
if (!api || mergeLayersApplied)
|
|
22
|
+
return;
|
|
23
|
+
const merging = api;
|
|
24
|
+
if (typeof merging.setMergeLayers === 'function') {
|
|
25
|
+
merging.setMergeLayers(mergeLayersFlag);
|
|
26
|
+
}
|
|
27
|
+
mergeLayersApplied = true;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Build a Uint8Array view over the shared buffer. Modern wasm-bindgen accepts
|
|
31
|
+
* SAB-backed views directly and copies them into linear memory itself, so an
|
|
32
|
+
* extra JS-side `.set()` copy is wasted memory (was N × file_size in the old
|
|
33
|
+
* code path). If the WASM call rejects the SAB view on a given runtime, the
|
|
34
|
+
* caller catches the error and retries with `materialiseSharedBytes`.
|
|
35
|
+
*/
|
|
36
|
+
function viewSharedBytes(sharedBuffer) {
|
|
37
|
+
return new Uint8Array(sharedBuffer);
|
|
38
|
+
}
|
|
39
|
+
/** Fallback path: copy SAB into a fresh ArrayBuffer-backed Uint8Array. */
|
|
40
|
+
function materialiseSharedBytes(sharedBuffer) {
|
|
41
|
+
const local = new Uint8Array(sharedBuffer.byteLength);
|
|
42
|
+
local.set(new Uint8Array(sharedBuffer));
|
|
43
|
+
return local;
|
|
44
|
+
}
|
|
45
|
+
let activeSession = null;
|
|
46
|
+
/**
|
|
47
|
+
* Jobs per inner WASM call inside `processSliceStreaming`.
|
|
48
|
+
*
|
|
49
|
+
* IMPORTANT: this is NOT just about batch size for the host post — every
|
|
50
|
+
* `processGeometryBatch` call allocates a fresh `EntityDecoder.cache`
|
|
51
|
+
* (FxHashMap) in Rust. Splitting one streaming chunk into many small
|
|
52
|
+
* WASM calls forces the decoder to re-decode the same shared sub-entities
|
|
53
|
+
* (`IfcCartesianPoint`, placements, etc.) per call. Main does one big
|
|
54
|
+
* call per worker and reaps the cache locality.
|
|
55
|
+
*
|
|
56
|
+
* Setting this to a very large value means each fanned-out streaming
|
|
57
|
+
* chunk maps to exactly one WASM call per worker — main-equivalent
|
|
58
|
+
* cache behaviour while preserving streaming's early-job dispatch.
|
|
59
|
+
* Per-flush mesh count is then bounded by the chunk size (≤ 25K-ish on
|
|
60
|
+
* the 986 MB test file with 50K Rust chunk + 2-way fan-out).
|
|
61
|
+
*/
|
|
62
|
+
const STREAM_BATCH_SIZE = 1_000_000;
|
|
63
|
+
function startSession(input) {
|
|
64
|
+
return {
|
|
65
|
+
sharedBuffer: input.sharedBuffer,
|
|
66
|
+
localBytes: viewSharedBytes(input.sharedBuffer),
|
|
67
|
+
sabFallbackTaken: false,
|
|
68
|
+
unitScale: input.unitScale,
|
|
69
|
+
rtcX: input.rtcX, rtcY: input.rtcY, rtcZ: input.rtcZ,
|
|
70
|
+
needsShift: input.needsShift,
|
|
71
|
+
voidKeys: input.voidKeys,
|
|
72
|
+
voidCounts: input.voidCounts,
|
|
73
|
+
voidValues: input.voidValues,
|
|
74
|
+
styleIds: input.styleIds,
|
|
75
|
+
styleColors: input.styleColors,
|
|
76
|
+
pendingMeshes: [],
|
|
77
|
+
pendingTransfers: [],
|
|
78
|
+
totalMeshesEmitted: 0,
|
|
79
|
+
cumulativeMeshBytes: 0,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
function flushPending(session) {
|
|
83
|
+
if (session.pendingMeshes.length === 0)
|
|
84
|
+
return;
|
|
85
|
+
const meshes = session.pendingMeshes;
|
|
86
|
+
const transfers = session.pendingTransfers;
|
|
87
|
+
session.pendingMeshes = [];
|
|
88
|
+
session.pendingTransfers = [];
|
|
89
|
+
session.totalMeshesEmitted += meshes.length;
|
|
90
|
+
self.postMessage({ type: 'batch', meshes }, transfers);
|
|
91
|
+
}
|
|
92
|
+
function collectMeshes(session, collection) {
|
|
93
|
+
for (let i = 0; i < collection.length; i++) {
|
|
94
|
+
const mesh = collection.get(i);
|
|
95
|
+
if (!mesh)
|
|
96
|
+
continue;
|
|
97
|
+
const positions = new Float32Array(mesh.positions);
|
|
98
|
+
const normals = new Float32Array(mesh.normals);
|
|
99
|
+
const indices = new Uint32Array(mesh.indices);
|
|
100
|
+
session.pendingMeshes.push({
|
|
101
|
+
expressId: mesh.expressId,
|
|
102
|
+
ifcType: mesh.ifcType,
|
|
103
|
+
positions, normals, indices,
|
|
104
|
+
color: [mesh.color[0], mesh.color[1], mesh.color[2], mesh.color[3]],
|
|
105
|
+
});
|
|
106
|
+
session.pendingTransfers.push(positions.buffer, normals.buffer, indices.buffer);
|
|
107
|
+
session.cumulativeMeshBytes += positions.byteLength + normals.byteLength + indices.byteLength;
|
|
108
|
+
mesh.free();
|
|
109
|
+
}
|
|
110
|
+
collection.free();
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Process a slice of jobsFlat with binary-split recovery. Mirrors the
|
|
114
|
+
* pre-streaming behaviour: if WASM throws on the whole slice, split in
|
|
115
|
+
* half and retry. Single-entity failures are skipped after one re-init
|
|
116
|
+
* attempt because a stack overflow can corrupt the WASM heap.
|
|
117
|
+
*/
|
|
118
|
+
async function processBatch(session, jobs) {
|
|
119
|
+
const numJobs = Math.floor(jobs.length / 3);
|
|
120
|
+
if (numJobs === 0)
|
|
121
|
+
return;
|
|
122
|
+
try {
|
|
123
|
+
if (!api) {
|
|
124
|
+
await init();
|
|
125
|
+
api = new IfcAPI();
|
|
126
|
+
mergeLayersApplied = false;
|
|
127
|
+
applyMergeLayersToApi();
|
|
128
|
+
}
|
|
129
|
+
const collection = api.processGeometryBatch(session.localBytes, jobs, session.unitScale, session.rtcX, session.rtcY, session.rtcZ, session.needsShift, session.voidKeys, session.voidCounts, session.voidValues, session.styleIds, session.styleColors);
|
|
130
|
+
collectMeshes(session, collection);
|
|
131
|
+
}
|
|
132
|
+
catch (err) {
|
|
133
|
+
const msg = err.message;
|
|
134
|
+
if (!session.sabFallbackTaken && session.localBytes.buffer instanceof SharedArrayBuffer) {
|
|
135
|
+
session.sabFallbackTaken = true;
|
|
136
|
+
console.warn(`[Worker] processGeometryBatch rejected SAB view (${msg}), falling back to copy`);
|
|
137
|
+
session.localBytes = materialiseSharedBytes(session.sharedBuffer);
|
|
138
|
+
await processBatch(session, jobs);
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
if (numJobs === 1) {
|
|
142
|
+
console.warn(`[Worker] Skipping entity #${jobs[0]}: ${msg}`);
|
|
143
|
+
api = null;
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
console.warn(`[Worker] Batch of ${numJobs} entities failed (${msg}), splitting…`);
|
|
147
|
+
api = null;
|
|
148
|
+
const mid = Math.floor(numJobs / 2) * 3;
|
|
149
|
+
await processBatch(session, jobs.slice(0, mid));
|
|
150
|
+
await processBatch(session, jobs.slice(mid));
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
/** Run a slice in STREAM_BATCH_SIZE chunks, flushing after each chunk. */
|
|
154
|
+
async function processSliceStreaming(session, jobsFlat) {
|
|
155
|
+
const totalJobs = Math.floor(jobsFlat.length / 3);
|
|
156
|
+
for (let jobOffset = 0; jobOffset < totalJobs; jobOffset += STREAM_BATCH_SIZE) {
|
|
157
|
+
const start = jobOffset * 3;
|
|
158
|
+
const end = Math.min(start + STREAM_BATCH_SIZE * 3, jobsFlat.length);
|
|
159
|
+
await processBatch(session, jobsFlat.subarray(start, end));
|
|
160
|
+
flushPending(session);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
function emitSessionEnd(session) {
|
|
164
|
+
flushPending(session); // safety net for tail meshes
|
|
165
|
+
let wasmHeapBytes = 0;
|
|
166
|
+
try {
|
|
167
|
+
const wasmMemory = api?.getMemory();
|
|
168
|
+
wasmHeapBytes = wasmMemory?.buffer?.byteLength ?? 0;
|
|
169
|
+
}
|
|
170
|
+
catch {
|
|
171
|
+
/* memory accounting only — safe to ignore */
|
|
172
|
+
}
|
|
173
|
+
self.postMessage({ type: 'memory', meshBytes: session.cumulativeMeshBytes, wasmHeapBytes });
|
|
174
|
+
self.postMessage({ type: 'complete', totalMeshes: session.totalMeshesEmitted });
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Serialise message handlers via a tail promise. Web Worker `onmessage` is
|
|
178
|
+
* async and the runtime dispatches the next message as soon as the
|
|
179
|
+
* handler hits its first `await`. Without this serialisation a
|
|
180
|
+
* `stream-start` that awaits `init()` can be overtaken by a
|
|
181
|
+
* `stream-chunk` arriving on the next tick — and the chunk handler runs
|
|
182
|
+
* before `activeSession` is set, throwing `stream-chunk received before
|
|
183
|
+
* stream-start`. The tail-promise pattern queues every handler behind
|
|
184
|
+
* its predecessor, restoring the FIFO contract callers expect.
|
|
185
|
+
*/
|
|
186
|
+
let messageTail = Promise.resolve();
|
|
187
|
+
self.onmessage = (rawEvent) => {
|
|
188
|
+
messageTail = messageTail.then(() => handleMessage(rawEvent)).catch((err) => {
|
|
189
|
+
self.postMessage({ type: 'error', message: err instanceof Error ? err.message : String(err) });
|
|
190
|
+
});
|
|
191
|
+
};
|
|
192
|
+
async function handleMessage(e) {
|
|
7
193
|
try {
|
|
194
|
+
if (e.data.type === 'prepass-streaming') {
|
|
195
|
+
if (!api) {
|
|
196
|
+
await init();
|
|
197
|
+
api = new IfcAPI();
|
|
198
|
+
mergeLayersApplied = false;
|
|
199
|
+
applyMergeLayersToApi();
|
|
200
|
+
}
|
|
201
|
+
// Heartbeat: lets the host watchdog know the worker is alive even
|
|
202
|
+
// before the first chunk lands.
|
|
203
|
+
self.postMessage({ type: 'prepass-progress', phase: 'parsing' });
|
|
204
|
+
const sharedBuffer = e.data.sharedBuffer;
|
|
205
|
+
const chunkSize = e.data.chunkSize ?? 50_000;
|
|
206
|
+
// Forward Rust events 1:1 — the host (`geometry-parallel.ts`) treats
|
|
207
|
+
// them as the streaming-prepass protocol. SAB-decode fallback mirrors
|
|
208
|
+
// the existing `buildPrePassFast` path: try zero-copy view first, fall
|
|
209
|
+
// back to a materialised copy only if wasm-bindgen rejects the view.
|
|
210
|
+
let view = viewSharedBytes(sharedBuffer);
|
|
211
|
+
let triedFallback = false;
|
|
212
|
+
const onEvent = (event) => {
|
|
213
|
+
self.postMessage({ type: 'prepass-stream', event });
|
|
214
|
+
};
|
|
215
|
+
try {
|
|
216
|
+
api.buildPrePassStreaming(view, onEvent, chunkSize);
|
|
217
|
+
}
|
|
218
|
+
catch (err) {
|
|
219
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
220
|
+
if (!triedFallback) {
|
|
221
|
+
triedFallback = true;
|
|
222
|
+
console.warn(`[Worker] Streaming prepass with SAB view failed (${msg}), retrying with copy`);
|
|
223
|
+
view = materialiseSharedBytes(sharedBuffer);
|
|
224
|
+
api.buildPrePassStreaming(view, onEvent, chunkSize);
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
throw err;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
8
232
|
if (e.data.type === 'prepass' || e.data.type === 'prepass-fast') {
|
|
9
233
|
if (!api) {
|
|
10
234
|
await init();
|
|
11
235
|
api = new IfcAPI();
|
|
236
|
+
mergeLayersApplied = false;
|
|
237
|
+
applyMergeLayersToApi();
|
|
12
238
|
}
|
|
13
|
-
|
|
14
|
-
|
|
239
|
+
// Heartbeat: signals "worker alive, parser running" so the host watchdog
|
|
240
|
+
// can distinguish a stuck pre-pass from one that's still working on a
|
|
241
|
+
// multi-GB file.
|
|
242
|
+
self.postMessage({ type: 'prepass-progress', phase: 'parsing' });
|
|
243
|
+
const sharedBuffer = e.data.sharedBuffer;
|
|
244
|
+
const isFast = e.data.type === 'prepass-fast';
|
|
15
245
|
// Fast pre-pass: only scan for entity locations (~1-2s)
|
|
16
246
|
// Full pre-pass: also resolves styles + voids (~6s)
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
247
|
+
let result;
|
|
248
|
+
try {
|
|
249
|
+
const view = viewSharedBytes(sharedBuffer);
|
|
250
|
+
result = isFast ? api.buildPrePassFast(view) : api.buildPrePassOnce(view);
|
|
251
|
+
}
|
|
252
|
+
catch (err) {
|
|
253
|
+
// wasm-bindgen on some runtimes rejects SAB-backed views with a
|
|
254
|
+
// TypeError. Retry once with a materialised copy so we never regress
|
|
255
|
+
// versus the previous behaviour.
|
|
256
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
257
|
+
console.warn(`[Worker] Prepass with SAB view failed (${msg}), retrying with copy`);
|
|
258
|
+
const copy = materialiseSharedBytes(sharedBuffer);
|
|
259
|
+
result = isFast ? api.buildPrePassFast(copy) : api.buildPrePassOnce(copy);
|
|
260
|
+
}
|
|
20
261
|
self.postMessage({ type: 'prepass-result', result });
|
|
21
262
|
return;
|
|
22
263
|
}
|
|
@@ -28,6 +269,8 @@ self.onmessage = async (e) => {
|
|
|
28
269
|
await init();
|
|
29
270
|
}
|
|
30
271
|
api = new IfcAPI();
|
|
272
|
+
mergeLayersApplied = false;
|
|
273
|
+
applyMergeLayersToApi();
|
|
31
274
|
self.postMessage({ type: 'ready' });
|
|
32
275
|
return;
|
|
33
276
|
}
|
|
@@ -35,77 +278,99 @@ self.onmessage = async (e) => {
|
|
|
35
278
|
if (!api) {
|
|
36
279
|
await init();
|
|
37
280
|
api = new IfcAPI();
|
|
281
|
+
mergeLayersApplied = false;
|
|
282
|
+
applyMergeLayersToApi();
|
|
38
283
|
}
|
|
39
284
|
const { sharedBuffer, jobsFlat, unitScale, rtcX, rtcY, rtcZ, needsShift, voidKeys, voidCounts, voidValues, styleIds, styleColors } = e.data;
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
285
|
+
const session = startSession({
|
|
286
|
+
sharedBuffer, unitScale, rtcX, rtcY, rtcZ, needsShift,
|
|
287
|
+
voidKeys, voidCounts, voidValues, styleIds, styleColors,
|
|
288
|
+
});
|
|
289
|
+
activeSession = session;
|
|
290
|
+
await processSliceStreaming(session, jobsFlat);
|
|
291
|
+
emitSessionEnd(session);
|
|
292
|
+
activeSession = null;
|
|
293
|
+
return;
|
|
294
|
+
}
|
|
295
|
+
if (e.data.type === 'stream-start') {
|
|
296
|
+
if (!api) {
|
|
297
|
+
await init();
|
|
298
|
+
api = new IfcAPI();
|
|
299
|
+
mergeLayersApplied = false;
|
|
300
|
+
applyMergeLayersToApi();
|
|
301
|
+
}
|
|
302
|
+
activeSession = startSession({
|
|
303
|
+
sharedBuffer: e.data.sharedBuffer,
|
|
304
|
+
unitScale: e.data.unitScale,
|
|
305
|
+
rtcX: e.data.rtcX, rtcY: e.data.rtcY, rtcZ: e.data.rtcZ,
|
|
306
|
+
needsShift: e.data.needsShift,
|
|
307
|
+
voidKeys: e.data.voidKeys,
|
|
308
|
+
voidCounts: e.data.voidCounts,
|
|
309
|
+
voidValues: e.data.voidValues,
|
|
310
|
+
styleIds: e.data.styleIds,
|
|
311
|
+
styleColors: e.data.styleColors,
|
|
312
|
+
});
|
|
313
|
+
return;
|
|
314
|
+
}
|
|
315
|
+
if (e.data.type === 'stream-chunk') {
|
|
316
|
+
if (!activeSession) {
|
|
317
|
+
throw new Error('stream-chunk received before stream-start');
|
|
318
|
+
}
|
|
319
|
+
await processSliceStreaming(activeSession, e.data.jobsFlat);
|
|
320
|
+
return;
|
|
321
|
+
}
|
|
322
|
+
if (e.data.type === 'set-styles') {
|
|
323
|
+
// Update the active session in place. The streaming pre-pass posts
|
|
324
|
+
// this AFTER its main scan completes, so workers may have already
|
|
325
|
+
// processed several chunks with empty styles (default per-type
|
|
326
|
+
// colors). The host emits a `colorUpdate` event on the receive side
|
|
327
|
+
// to retroactively fix already-emitted meshes.
|
|
328
|
+
if (!activeSession)
|
|
329
|
+
return;
|
|
330
|
+
activeSession.styleIds = e.data.styleIds;
|
|
331
|
+
activeSession.styleColors = e.data.styleColors;
|
|
332
|
+
activeSession.voidKeys = e.data.voidKeys;
|
|
333
|
+
activeSession.voidCounts = e.data.voidCounts;
|
|
334
|
+
activeSession.voidValues = e.data.voidValues;
|
|
335
|
+
return;
|
|
336
|
+
}
|
|
337
|
+
if (e.data.type === 'set-entity-index') {
|
|
338
|
+
// Hand the pre-built entity index from the pre-pass worker into
|
|
339
|
+
// this worker's IfcAPI. Without this, processGeometryBatch's lazy
|
|
340
|
+
// build path fires on the first call and re-scans the entire file
|
|
341
|
+
// (~5 s on a 1 GB IFC) — the dominant TTFG bottleneck before this
|
|
342
|
+
// change. Now the only cost is FxHashMap construction from the
|
|
343
|
+
// input slices (~1 s for 14 M entries).
|
|
344
|
+
if (!api) {
|
|
345
|
+
await init();
|
|
346
|
+
api = new IfcAPI();
|
|
347
|
+
mergeLayersApplied = false;
|
|
348
|
+
applyMergeLayersToApi();
|
|
349
|
+
}
|
|
350
|
+
api.setEntityIndex(e.data.ids, e.data.starts, e.data.lengths);
|
|
351
|
+
return;
|
|
352
|
+
}
|
|
353
|
+
if (e.data.type === 'set-merge-layers') {
|
|
354
|
+
// Cache the requested flag — if the API already exists, push it
|
|
355
|
+
// through immediately; otherwise the next `new IfcAPI()` path
|
|
356
|
+
// will pick it up via `applyMergeLayersToApi`. Default is false
|
|
357
|
+
// so omitting this message keeps existing behaviour intact.
|
|
358
|
+
mergeLayersFlag = e.data.enabled === true;
|
|
359
|
+
mergeLayersApplied = false;
|
|
360
|
+
applyMergeLayersToApi();
|
|
361
|
+
return;
|
|
362
|
+
}
|
|
363
|
+
if (e.data.type === 'stream-end') {
|
|
364
|
+
if (!activeSession) {
|
|
365
|
+
throw new Error('stream-end received before stream-start');
|
|
366
|
+
}
|
|
367
|
+
emitSessionEnd(activeSession);
|
|
368
|
+
activeSession = null;
|
|
369
|
+
return;
|
|
105
370
|
}
|
|
106
371
|
}
|
|
107
372
|
catch (err) {
|
|
108
373
|
self.postMessage({ type: 'error', message: err instanceof Error ? err.message : String(err) });
|
|
109
374
|
}
|
|
110
|
-
}
|
|
375
|
+
}
|
|
111
376
|
//# sourceMappingURL=geometry.worker.js.map
|