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.

52 lines (50 loc) 1.45 kB
const feature = { id: "ExtrasAsMetadata", async applyMaterial(mat) { const extras = mat._rawMatDef?.extras; return hasExtras(extras) ? { metadata: { gltf: { extras } } } : null; }, async applyMesh(meshData, mesh, ctx) { const json = ctx._json; const node = json.nodes?.[meshData._nodeIndex]; const gltfMesh = json.meshes?.[node?.mesh]; assignFirstExtras(mesh, meshData._primitive?.extras, gltfMesh?.extras, node?.extras); }, async applyAsset(_meshes, root, ctx) { const json = ctx._json; assignExtras(root, json.asset?.extras); const nodeMap = ctx._nodeMap; if (nodeMap) { for (let nodeIndex = 0; nodeIndex < nodeMap.length; nodeIndex++) { const node = nodeMap[nodeIndex]; if (node) { assignExtras(node, json.nodes?.[nodeIndex]?.extras); } } } return {}; } }; function assignFirstExtras(target, ...extrasList) { for (const extras of extrasList) { if (hasExtras(extras)) { assignExtras(target, extras); return; } } } function assignExtras(target, extras) { if (!hasExtras(extras)) { return; } ensureGltfMetadata(target).extras = extras; } function ensureGltfMetadata(target) { const metadata = target.metadata ??= {}; return metadata.gltf ??= {}; } function hasExtras(extras) { return extras !== void 0; } export { feature as default }; //# sourceMappingURL=gltf-feature-extras-DWMyMqbH.esm.js.map