From 92f6da018c0f94bf408c43b0103ef3fa123554ba Mon Sep 17 00:00:00 2001 From: Brian Zinn Date: Thu, 6 Jun 2024 14:20:19 -0700 Subject: [PATCH] fix: AbstractMesh no longer newable add: return loading error in callback (instead of missing Model) #312 --- .../react-babylonjs/src/hooks/loaders/loadedModel.ts | 9 +++++---- .../react-babylonjs/src/hooks/loaders/useSceneLoader.tsx | 6 +++--- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/packages/react-babylonjs/src/hooks/loaders/loadedModel.ts b/packages/react-babylonjs/src/hooks/loaders/loadedModel.ts index d7661b8b..b1b1fd8e 100644 --- a/packages/react-babylonjs/src/hooks/loaders/loadedModel.ts +++ b/packages/react-babylonjs/src/hooks/loaders/loadedModel.ts @@ -3,6 +3,7 @@ import { Skeleton } from '@babylonjs/core/Bones/skeleton.js' import { BoundingInfo } from '@babylonjs/core/Culling/boundingInfo.js' import { Vector3 } from '@babylonjs/core/Maths/math.vector.js' import { AbstractMesh } from '@babylonjs/core/Meshes/abstractMesh.js' +import { Mesh } from '@babylonjs/core/Meshes/mesh.js' import { IParticleSystem } from '@babylonjs/core/Particles/IParticleSystem.js' import { Nullable } from '@babylonjs/core/types.js' @@ -18,15 +19,15 @@ export interface ILoadedModel { */ status: LoaderStatus /** - * Mesh created when successfully loaded and all non-parented meshes are parented to this mesh + * Mesh created when successfully loaded and all non-parented meshes are parented to this mesh. */ - rootMesh?: AbstractMesh + rootMesh?: Mesh /** * Error message when loader fails. */ errorMessage?: string /** - * Name of loader used - either as explicitly specified or inferred from extension + * Name of loader used - either as explicitly specified or inferred from extension. */ loaderName?: string @@ -44,7 +45,7 @@ export interface ILoadedModel { export class LoadedModel implements ILoadedModel { public status: LoaderStatus = LoaderStatus.Loading - public rootMesh?: AbstractMesh + public rootMesh?: Mesh public errorMessage?: string public loaderName?: string public meshes?: AbstractMesh[] diff --git a/packages/react-babylonjs/src/hooks/loaders/useSceneLoader.tsx b/packages/react-babylonjs/src/hooks/loaders/useSceneLoader.tsx index b9c18a21..642ff997 100644 --- a/packages/react-babylonjs/src/hooks/loaders/useSceneLoader.tsx +++ b/packages/react-babylonjs/src/hooks/loaders/useSceneLoader.tsx @@ -94,7 +94,7 @@ export type SceneLoaderOptions = { /** * Called if SceneLoader returns an error. */ - onModelError?: (model: ILoadedModel) => void + onModelError?: (message: string, exception?: any) => void } /** @@ -171,7 +171,7 @@ const useSceneLoaderWithCache = (): (( skeletons: Skeleton[], animationGroups: AnimationGroup[] ): void => { - loadedModel.rootMesh = new AbstractMesh(sceneFilename + '-root-model', scene) + loadedModel.rootMesh = new Mesh(sceneFilename + '-root-model', scene) if (opts.alwaysSelectAsActiveMesh === true) { loadedModel.rootMesh.alwaysSelectAsActiveMesh = true } @@ -244,7 +244,7 @@ const useSceneLoaderWithCache = (): (( }, (_: Scene, message: string, exception?: any): void => { if (opts.onModelError) { - opts.onModelError(loadedModel) + opts.onModelError(message, exception) } reject(exception ?? message) },