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.

50 lines (46 loc) 1.7 kB
import { aj as collectPbrBoundTextures, ak as acquireTexture, al as releaseTexture } from './index-DMbDahsc.esm.js'; function _registerAssetContainerSceneCleanup(container, scene, cleanup) { const cleanups = container._sceneCleanups ??= /* @__PURE__ */ new WeakMap(); const previous = cleanups.get(scene); const combined = previous ? () => { previous(); cleanup(); } : cleanup; if (previous) { scene._disposables[scene._disposables.indexOf(previous)] = combined; } else { scene._disposables.push(combined); } cleanups.set(scene, combined); } function createVariantTextureSetup(data) { const textures = [data.originals, ...Object.values(data.variants)].flat().flatMap(({ material }) => collectPbrBoundTextures(material)); return (scene, container) => { textures.forEach(acquireTexture); _registerAssetContainerSceneCleanup(container, scene, () => textures.forEach(releaseTexture)); }; } const feature = { id: "KHR_materials_variants", async applyAsset(meshes, _root, ctx) { const variantNames = ctx._json.extensions?.KHR_materials_variants?.variants?.map((v) => v.name); if (!variantNames?.length) { return {}; } const { loadVariantMaterials } = await import('./gltf-variants-CG9DXKZb.esm.js'); const materialVariants = await loadVariantMaterials( ctx._json, ctx._binChunk, ctx._baseUrl, variantNames, meshes, ctx._engine, ctx._matExts, ctx._runMatExts, ctx._wrapTex ); return { materialVariants, _sceneSetup: createVariantTextureSetup(materialVariants) }; } }; export { feature as default }; //# sourceMappingURL=gltf-feature-variants-Dtx2N51L.esm.js.map