ES6 - Register GLTF Extension

Yo @bghgary / @sebavan / @Deltakosh

How do we register GLTF extensions in ES6 Versions ?

Here is how i was doing it in UMD Builds:

BABYLON.GLTF2.GLTFLoader.RegisterExtension(TOOLKIT.SceneManager.CVTOOLS_NAME, (loader) => new TOOLKIT.CVTOOLS_unity_metadata(loader));

I may have got it

import { GLTFLoader, ArrayItem, IGLTFLoaderExtension, IScene, INode, IMaterial, IAnimation, IMesh, IMeshPrimitive } from '@babylonjs/loaders/glTF/2.0';
import { registerGLTFExtension } from "@babylonjs/loaders/glTF/2.0/glTFLoaderExtensionRegistry";


if (registerGLTFExtension)
{
    if (!globalThis.CVTOOLS_NAME_REGISTERED) {
        registerGLTFExtension(TOOLKIT.SceneManager.CVTOOLS_NAME, true, (loader) => new TOOLKIT.CVTOOLS_unity_metadata(loader));
        globalThis.CVTOOLS_NAME_REGISTERED = true;
        console.log("Babylon Toolkit: CVTOOLS_NAME registered");
    }
    if (!globalThis.CVTOOLS_MESH_REGISTERED) {
        registerGLTFExtension(TOOLKIT.SceneManager.CVTOOLS_MESH, true, (loader) => new TOOLKIT.CVTOOLS_babylon_mesh(loader));
        globalThis.CVTOOLS_MESH_REGISTERED = true;
        console.log("Babylon Toolkit: CVTOOLS_MESH registered");
    }
    if (!globalThis.CVTOOLS_HAND_REGISTERED) {
        registerGLTFExtension(TOOLKIT.SceneManager.CVTOOLS_HAND, true, (loader) => new TOOLKIT.CVTOOLS_left_handed(loader));
        globalThis.CVTOOLS_HAND_REGISTERED = true;
        console.log("Babylon Toolkit: CVTOOLS_HAND registered");
    }
}
else
{
    console.warn("Babylon Toolkit: ES6 GLTF Parser not registered because RegisterGLTFExtension is not available.");
}

Yup, you got it.

It should say in the deprecated message what to use.

It does say the function, but not where to find it:

import { registerGLTFExtension } from "@babylonjs/loaders/glTF/2.0/glTFLoaderExtensionRegistry";

If you use vscode, typing the function name will show red squiggles. Then it will import it from the right place with quick fix.

Thanks @bghgary :slight_smile: