@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.33 kB
JavaScript
import{bo as e,bp as o}from"./index-BPURObVq.esm.min.js";import{c as n}from"./declarationMapper-D_filC93.esm.min.js";import{A as t}from"./objectModelMapping-ClgDmo5Q.esm.min.js";import"./spotLight.pure-5s2DDDIt.esm.min.js";const i="KHR_node_selectability";class a{constructor(e){this.name=i,this._loader=e,this.enabled=e.isExtensionUsed(i)}async onReady(){this._loader.gltf.nodes?.forEach(e=>{e.extensions?.KHR_node_selectability&&!1===e.extensions?.KHR_node_selectability.selectable&&e._babylonTransformNode?.getChildMeshes().forEach(e=>{e.isPickable=!1})})}dispose(){this._loader=null}}let s=!1;function r(){s||(s=!0,n("event/onSelect",i,{blocks:["FlowGraphMeshPickEventBlock","FlowGraphGetVariableBlock","FlowGraphIndexOfBlock","KHR_interactivity/FlowGraphGLTFDataProvider"],configuration:{stopPropagation:{name:"stopPropagation"},nodeIndex:{name:"variable",toBlock:"FlowGraphGetVariableBlock",dataTransformer:e=>"pickedMesh_"+e}},outputs:{values:{selectedNodeIndex:{name:"index",toBlock:"FlowGraphIndexOfBlock"},controllerIndex:{name:"pointerId"},selectionPoint:{name:"pickedPoint"},selectionRayOrigin:{name:"pickOrigin"}},flows:{out:{name:"done"}}},interBlockConnectors:[{input:"asset",output:"value",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0},{input:"array",output:"nodes",inputBlockIndex:2,outputBlockIndex:3,isVariable:!0},{input:"object",output:"pickedMesh",inputBlockIndex:2,outputBlockIndex:0,isVariable:!0}],extraProcessor(e,o,n,t,i,a,s){const r=i[i.length-1];r.config=r.config||{},r.config.glTF=s;const l=e.configuration?.nodeIndex?.value?.[0];if(void 0===l||"number"!=typeof l)throw new Error("nodeIndex not found in configuration");const c="pickedMesh_"+l;return i[1].config.variable=c,a._userVariables[c]={className:"Mesh",id:s?.nodes?.[l]._babylonTransformNode?.id,uniqueId:s?.nodes?.[l]._babylonTransformNode?.uniqueId},i}}),t("/nodes/{}/extensions/KHR_node_selectability/selectable",{get:e=>{const o=e._babylonTransformNode;return!o||void 0===o.isPickable||o.isPickable},set:(e,o)=>{o._primitiveBabylonMeshes?.forEach(o=>{o.isPickable=e})},getTarget:e=>e._babylonTransformNode,getPropertyName:[()=>"isPickable"],type:"boolean"}),e(i),o(i,!0,e=>new a(e)))}r();export{a as KHR_node_selectability,r as RegisterKHR_node_selectability};
//# sourceMappingURL=KHR_node_selectability-C38qi45D.esm.min.js.map