@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.
73 lines (70 loc) • 2.56 kB
JavaScript
import { bJ as unregisterGLTFExtension, bI as registerGLTFExtension } from './index-FzOfPXLV.esm.js';
import { A as AddObjectAccessorToKey } from './objectModelMapping-CJnQ6at_.esm.js';
const NAME = "KHR_node_visibility";
// object model extension for visibility
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",
});
/**
* 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);
}
// eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-misused-promises
async onReady() {
this._loader.gltf.nodes?.forEach((node) => {
node._primitiveBabylonMeshes?.forEach((mesh) => {
mesh.inheritVisibility = true;
});
// When the JSON Pointer is used we need to change both the transform node and the primitive meshes to the new value.
if (node.extensions?.KHR_node_visibility) {
if (node.extensions?.KHR_node_visibility.visible === false) {
if (node._babylonTransformNode) {
node._babylonTransformNode.isVisible = false;
}
node._primitiveBabylonMeshes?.forEach((mesh) => {
mesh.isVisible = false;
});
}
}
});
}
dispose() {
this._loader = null;
}
}
unregisterGLTFExtension(NAME);
registerGLTFExtension(NAME, true, (loader) => new KHR_node_visibility(loader));
export { KHR_node_visibility };
//# sourceMappingURL=KHR_node_visibility-UkfcXGH3.esm.js.map