UNPKG

prendy

Version:

Make games with prerendered backdrops using babylonjs and repond

35 lines (34 loc) 1.27 kB
import { SceneLoader, } from "@babylonjs/core"; import "@babylonjs/loaders/glTF"; import { keyBy } from "chootils/dist/arrays"; import { useEffect } from "react"; import usePromise from "react-promise-suspense"; import { getScene } from "./getSceneOrEngineUtils"; // const { getScene } = makeGetSceneOrEngineUtils(storeHelpers); export function useModelFile(modelFile) { const scene = getScene(); const container = usePromise(SceneLoader.LoadAssetContainerAsync, [modelFile, undefined, scene]); useEffect(() => { // trying to get this more declarative container.addAllToScene(); return () => container.removeAllFromScene(); // eslint-disable-next-line react-hooks/exhaustive-deps }, []); const meshes = keyBy(container.meshes); const materials = keyBy(container.materials); const textures = keyBy(container.textures); const transformNodes = keyBy(container.transformNodes); const animationGroups = keyBy(container.animationGroups); const skeletons = keyBy(container.skeletons); const cameras = keyBy(container.cameras); return { meshes, materials, textures, transformNodes, animationGroups, skeletons, cameras, container, }; }