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