AEB-57: fix Babylon loader update
This commit is contained in:
@@ -11,9 +11,10 @@ import {
|
||||
Color4,
|
||||
AbstractMesh,
|
||||
Nullable,
|
||||
SceneLoader
|
||||
ImportMeshAsync
|
||||
} from '@babylonjs/core'
|
||||
import '@babylonjs/loaders'
|
||||
|
||||
import LoadingSpinner from '../ui/LoadingSpinner'
|
||||
|
||||
|
||||
@@ -59,6 +60,12 @@ const ModelViewer: React.FC<ModelViewerProps> = ({
|
||||
const engine = new Engine(canvas, true)
|
||||
engineRef.current = engine
|
||||
|
||||
engine.runRenderLoop(() => {
|
||||
if (!isDisposedRef.current && sceneRef.current) {
|
||||
sceneRef.current.render()
|
||||
}
|
||||
})
|
||||
|
||||
const scene = new Scene(engine)
|
||||
sceneRef.current = scene
|
||||
|
||||
@@ -88,12 +95,6 @@ const ModelViewer: React.FC<ModelViewerProps> = ({
|
||||
fillLight.intensity = 0.3
|
||||
fillLight.diffuse = new Color3(0.8, 0.8, 1)
|
||||
|
||||
engine.runRenderLoop(() => {
|
||||
if (!isDisposedRef.current) {
|
||||
scene.render()
|
||||
}
|
||||
})
|
||||
|
||||
const handleResize = () => {
|
||||
if (!isDisposedRef.current) {
|
||||
engine.resize()
|
||||
@@ -124,6 +125,9 @@ const ModelViewer: React.FC<ModelViewerProps> = ({
|
||||
if (!sceneRef.current || isDisposedRef.current) {
|
||||
return
|
||||
}
|
||||
|
||||
const oldMeshes = sceneRef.current.meshes.slice();
|
||||
oldMeshes.forEach(m => m.dispose());
|
||||
|
||||
setIsLoading(true)
|
||||
setLoadingProgress(0)
|
||||
@@ -142,12 +146,7 @@ const ModelViewer: React.FC<ModelViewerProps> = ({
|
||||
}, 100)
|
||||
|
||||
try {
|
||||
const result = await SceneLoader.ImportMeshAsync(
|
||||
'',
|
||||
modelPath,
|
||||
'',
|
||||
sceneRef.current
|
||||
)
|
||||
const result = await ImportMeshAsync(modelPath, sceneRef.current)
|
||||
|
||||
clearInterval(progressInterval)
|
||||
setLoadingProgress(100)
|
||||
@@ -196,7 +195,8 @@ const ModelViewer: React.FC<ModelViewerProps> = ({
|
||||
}
|
||||
}
|
||||
|
||||
loadModel()
|
||||
// Загрузка модлеи начинается после появления спиннера
|
||||
requestIdleCallback(() => loadModel(), { timeout: 50 })
|
||||
}, [modelPath, onError, onModelLoaded])
|
||||
|
||||
return (
|
||||
|
||||
Reference in New Issue
Block a user