Hide the view until the scene is initially built (#2894)
* Hide the view until the scene is initially built * fmt * Remove log
This commit is contained in:
@ -175,7 +175,11 @@ const FileTreeItem = ({
|
|||||||
codeManager.code
|
codeManager.code
|
||||||
)
|
)
|
||||||
codeManager.writeToFile()
|
codeManager.writeToFile()
|
||||||
kclManager.executeCode(true, true)
|
|
||||||
|
kclManager.isFirstRender = true
|
||||||
|
kclManager.executeCode(true, true).then(() => {
|
||||||
|
kclManager.isFirstRender = false
|
||||||
|
})
|
||||||
} else {
|
} else {
|
||||||
// Let the lsp servers know we closed a file.
|
// Let the lsp servers know we closed a file.
|
||||||
onFileClose(currentFile?.path || null, project?.path || null)
|
onFileClose(currentFile?.path || null, project?.path || null)
|
||||||
|
@ -175,7 +175,12 @@ export const SettingsAuthProviderBase = ({
|
|||||||
id: `${event.type}.success`,
|
id: `${event.type}.success`,
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
'Execute AST': () => kclManager.executeCode(true, true),
|
'Execute AST': () => {
|
||||||
|
kclManager.isFirstRender = true
|
||||||
|
kclManager.executeCode(true, true).then(() => {
|
||||||
|
kclManager.isFirstRender = false
|
||||||
|
})
|
||||||
|
},
|
||||||
},
|
},
|
||||||
services: {
|
services: {
|
||||||
'Persist settings': (context) =>
|
'Persist settings': (context) =>
|
||||||
|
@ -8,9 +8,11 @@ import { NetworkHealthState } from 'hooks/useNetworkStatus'
|
|||||||
import { ClientSideScene } from 'clientSideScene/ClientSideSceneComp'
|
import { ClientSideScene } from 'clientSideScene/ClientSideSceneComp'
|
||||||
import { butName } from 'lib/cameraControls'
|
import { butName } from 'lib/cameraControls'
|
||||||
import { sendSelectEventToEngine } from 'lib/selections'
|
import { sendSelectEventToEngine } from 'lib/selections'
|
||||||
|
import { kclManager } from 'lib/singletons'
|
||||||
|
|
||||||
export const Stream = () => {
|
export const Stream = () => {
|
||||||
const [isLoading, setIsLoading] = useState(true)
|
const [isLoading, setIsLoading] = useState(true)
|
||||||
|
const [isFirstRender, setIsFirstRender] = useState(kclManager.isFirstRender)
|
||||||
const [clickCoords, setClickCoords] = useState<{ x: number; y: number }>()
|
const [clickCoords, setClickCoords] = useState<{ x: number; y: number }>()
|
||||||
const videoRef = useRef<HTMLVideoElement>(null)
|
const videoRef = useRef<HTMLVideoElement>(null)
|
||||||
const { settings } = useSettingsAuthContext()
|
const { settings } = useSettingsAuthContext()
|
||||||
@ -53,6 +55,10 @@ export const Stream = () => {
|
|||||||
})
|
})
|
||||||
}, [])
|
}, [])
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
setIsFirstRender(kclManager.isFirstRender)
|
||||||
|
}, [kclManager.isFirstRender])
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (
|
if (
|
||||||
typeof window === 'undefined' ||
|
typeof window === 'undefined' ||
|
||||||
@ -166,10 +172,14 @@ export const Stream = () => {
|
|||||||
</Loading>
|
</Loading>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
{isLoading && (
|
{(isLoading || isFirstRender) && (
|
||||||
<div className="text-center absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2">
|
<div className="text-center absolute inset-0">
|
||||||
<Loading>
|
<Loading>
|
||||||
<span data-testid="loading-stream">Loading stream...</span>
|
{!isLoading && isFirstRender ? (
|
||||||
|
<span data-testid="loading-stream">Building scene...</span>
|
||||||
|
) : (
|
||||||
|
<span data-testid="loading-stream">Loading stream...</span>
|
||||||
|
)}
|
||||||
</Loading>
|
</Loading>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
@ -65,7 +65,10 @@ export function useSetupEngineManager(
|
|||||||
executeCode: () => {
|
executeCode: () => {
|
||||||
// We only want to execute the code here that we already have set.
|
// We only want to execute the code here that we already have set.
|
||||||
// Nothing else.
|
// Nothing else.
|
||||||
return kclManager.executeCode(true, true)
|
kclManager.isFirstRender = true
|
||||||
|
return kclManager.executeCode(true, true).then(() => {
|
||||||
|
kclManager.isFirstRender = false
|
||||||
|
})
|
||||||
},
|
},
|
||||||
token,
|
token,
|
||||||
settings,
|
settings,
|
||||||
|
@ -66,6 +66,8 @@ export class KclManager {
|
|||||||
private _wasmInitFailedCallback: (arg: boolean) => void = () => {}
|
private _wasmInitFailedCallback: (arg: boolean) => void = () => {}
|
||||||
private _executeCallback: () => void = () => {}
|
private _executeCallback: () => void = () => {}
|
||||||
|
|
||||||
|
isFirstRender = true
|
||||||
|
|
||||||
get ast() {
|
get ast() {
|
||||||
return this._ast
|
return this._ast
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,8 @@ export const engineCommandManager = new EngineCommandManager()
|
|||||||
|
|
||||||
// This needs to be after codeManager is created.
|
// This needs to be after codeManager is created.
|
||||||
export const kclManager = new KclManager(engineCommandManager)
|
export const kclManager = new KclManager(engineCommandManager)
|
||||||
|
kclManager.isFirstRender = true
|
||||||
|
|
||||||
engineCommandManager.getAstCb = () => kclManager.ast
|
engineCommandManager.getAstCb = () => kclManager.ast
|
||||||
|
|
||||||
export const sceneInfra = new SceneInfra(engineCommandManager)
|
export const sceneInfra = new SceneInfra(engineCommandManager)
|
||||||
|
Reference in New Issue
Block a user