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.

90 lines (86 loc) 3.01 kB
import { bo as unregisterGLTFExtension, bp as registerGLTFExtension } from './index-MZPybX0H.esm.js'; import { A as AddObjectAccessorToKey } from './objectModelMapping-De5EKNEZ.esm.js'; import './spotLight.pure-CRdZC6Ci.esm.js'; const NAME = "KHR_node_visibility"; // object model extension for visibility /** * Loader extension for KHR_node_visibility */ // eslint-disable-next-line @typescript-eslint/naming-convention class KHR_node_visibility { /** * @internal */ constructor(loader) { /** * The name of this extension. */ this.name = NAME; this._loader = loader; this.enabled = loader.isExtensionUsed(NAME); } onReady() { if (!this._loader) { return; } const nodes = this._loader.gltf.nodes; if (nodes) { for (const node of nodes) { const babylonTransformNode = node._babylonTransformNode; if (babylonTransformNode) { babylonTransformNode.inheritVisibility = true; if (node.extensions && node.extensions.KHR_node_visibility && node.extensions.KHR_node_visibility.visible === false) { babylonTransformNode.isVisible = false; } } } } } dispose() { delete this._loader; } } let _Registered = false; /** * Registers the KHR_node_visibility glTF loader extension. * Safe to call multiple times; only the first call has an effect. */ // eslint-disable-next-line @typescript-eslint/naming-convention function RegisterKHR_node_visibility() { if (_Registered) { return; } _Registered = true; AddObjectAccessorToKey("/nodes/{}/extensions/KHR_node_visibility/visible", { get: (node) => { const tn = node._babylonTransformNode; if (tn && tn.isVisible !== undefined) { return tn.isVisible; } return true; }, set: (value, node) => { node._primitiveBabylonMeshes?.forEach((mesh) => { mesh.inheritVisibility = true; }); if (node._babylonTransformNode) { node._babylonTransformNode.isVisible = value; } node._primitiveBabylonMeshes?.forEach((mesh) => { mesh.isVisible = value; }); }, getTarget: (node) => node._babylonTransformNode, getPropertyName: [() => "isVisible"], type: "boolean", }); unregisterGLTFExtension(NAME); registerGLTFExtension(NAME, true, (loader) => new KHR_node_visibility(loader)); } /** * Re-exports the pure implementation and applies the runtime registration side effect. * Import "./KHR_node_visibility.pure" for tree-shakeable, side-effect-free usage. */ RegisterKHR_node_visibility(); export { KHR_node_visibility, RegisterKHR_node_visibility }; //# sourceMappingURL=KHR_node_visibility-B1kCWATG.esm.js.map