AEB-57: fix Babylon loader update

This commit is contained in:
iv_vuytsik
2025-09-25 08:31:31 +03:00
parent ac5d0d0b00
commit 214d9d80a9
3 changed files with 31 additions and 14 deletions

BIN
frontend/.gitignore vendored

Binary file not shown.

View File

@@ -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()
@@ -125,6 +126,9 @@ const ModelViewer: React.FC<ModelViewerProps> = ({
return
}
const oldMeshes = sceneRef.current.meshes.slice();
oldMeshes.forEach(m => m.dispose());
setIsLoading(true)
setLoadingProgress(0)
setShowModel(false)
@@ -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 (

View File

@@ -0,0 +1,17 @@
/** @type {import('tailwindcss').Config} */
module.exports = {
content: [
'./app/**/*.{js,ts,jsx,tsx}',
'./components/**/*.{js,ts,jsx,tsx}',
'./lib/**/*.{js,ts,jsx,tsx}',
'./services/**/*.{js,ts,jsx,tsx}',
],
safelist: [],
blocklist: [
'./public/**/*',
'./data/**/*',
'!./assets/big-models/**/*'
],
theme: { extend: {} },
plugins: [],
};