@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) • 2.11 kB
JavaScript
import{an as e,p as t,T as n,ar as s}from"./index-B8IgtevW.esm.min.js";const r=5121,c=5123,o=5125,f={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4};function a(e){return e+3&-4}function u(e){const t=f[e];return t||n(98,e),t}function i(e,t,s){switch(s){case r:return e.getUint8(t);case c:return e.getUint16(t,!0);case o:return e.getUint32(t,!0);default:n(99,s)}}function b(e,t,s){switch(s){case 5120:return e.getInt8(t);case r:return e.getUint8(t);case 5122:return e.getInt16(t,!0);case c:return e.getUint16(t,!0);case o:return e.getUint32(t,!0);case 5126:return e.getFloat32(t,!0);default:n(100,s)}}function p(e,t,n,s){switch(n){case 5120:e.setInt8(t,s);break;case r:e.setUint8(t,s);break;case 5122:e.setInt16(t,s,!0);break;case c:e.setUint16(t,s,!0);break;case o:e.setUint32(t,s,!0);break;case 5126:e.setFloat32(t,s,!0)}}const y={id:"_sparse",async preParse(r,c){const o=r.accessors??[],f=r.bufferViews??[],y=[];let l=0;for(let t=0;t<o.length;t++){const n=o[t];if(n.sparse){y.push(t);const s=e[n.type]??1;l=a(l+n.count*s*u(n.componentType))}}if(0===y.length)return;const g=a(c.byteLength),w=new ArrayBuffer(g+l);new t(w).set(new t(c.buffer,c.byteOffset,c.byteLength));const d=new s(w);let h=g;for(const t of y){const s=o[t],r=s.sparse,y=e[s.type]??1,l=u(s.componentType),g=y*l,w=h;if(void 0!==s.bufferView){const e=f[s.bufferView],t=e.byteStride??g,n=(e.byteOffset??0)+(s.byteOffset??0);for(let e=0;e<s.count;e++)for(let r=0;r<y;r++){const o=b(c,n+e*t+r*l,s.componentType);p(d,w+(e*y+r)*l,s.componentType,o)}}const m=r.indices.componentType;void 0===m&&n(101);const O=(f[r.indices.bufferView].byteOffset??0)+(r.indices.byteOffset??0),U=u(m),T=(f[r.values.bufferView].byteOffset??0)+(r.values.byteOffset??0);for(let e=0;e<r.count;e++){const t=i(c,O+e*U,m);(t<0||t>=s.count)&&n(102,t,s.count);for(let n=0;n<y;n++){const r=b(c,T+(e*y+n)*l,s.componentType);p(d,w+(t*y+n)*l,s.componentType,r)}}const V=g*s.count;s.bufferView=f.length,s.byteOffset=0,f.push({buffer:0,byteOffset:w,byteLength:V}),delete s.sparse,h=a(h+V)}return d}};export{y as default};
//# sourceMappingURL=gltf-feature-sparse-BQMr9qVv.esm.min.js.map