UNPKG

@babylonjs/viewer

Version:

The Babylon Viewer aims to simplify a specific but common Babylon.js use case: loading, viewing, and interacting with a 3D model.

3 lines (2 loc) 1.37 kB
import{ap as e}from"./index-DFZFpUG-.esm.min.js";async function n(n,i,o,r,a){const{_engine:s,_json:d}=a,c=function(e){const n=new Set,t=[...e.scenes?.[e.scene??0]?.nodes??[]];for(;t.length>0;){const i=t.pop();n.has(i)||(n.add(i),t.push(...e.nodes[i]?.children??[]))}return n}(d);!function(e,n){const t=new Map;for(const i of e){if(!n.has(i._nodeIndex))continue;const e=t.get(i._primitive);if(!e){t.set(i._primitive,i);continue}const o=i._worldMatrix,r=i._nodeIndex,a=i._material;Object.assign(i,e),i._worldMatrix=o,i._nodeIndex=r,i._material=a}}(n,c);const _=await Promise.all(n.map(e=>i(e._material))),m=n.some(e=>e._vb)?await import("./gltf-interleave-CHQwKY56.esm.min.js"):void 0,p=new Map,l=n.map((n,i)=>{const r=_[i],a=d.meshes[d.nodes[n._nodeIndex].mesh].name||`gltf_mesh_${i}`,l=c.has(n._nodeIndex),h=l?p.get(n._primitive):void 0,u=n._vb?m.buildInterleavedMesh(s,n,i,r,a,h):o(s,n,r,a,h);return h?(t(h._gpu),e(u._gpu)):l&&p.set(n._primitive,u),u});return r.length>0&&await Promise.all(l.flatMap((e,t)=>r.map(i=>i.applyMesh(n[t],e,a)))),l}function t(n){if(n._recoverShared)return;let t,i,o;const r=(n,a,s)=>{if(t===n._device)return o.has(a)||(o.add(a),e(i)),i;const d=s(n,a);return t=n._device,i=d,o=new WeakSet([a]),d._recoverShared=r,d};n._recoverShared=r}export{t as _installSharedRecovery,n as share}; //# sourceMappingURL=gltf-share-CZhJL4wC.esm.min.js.map