diff --git a/engine/core/Engine.ts b/engine/core/Engine.ts index eed9cec..89151f8 100644 --- a/engine/core/Engine.ts +++ b/engine/core/Engine.ts @@ -107,10 +107,14 @@ export class Engine { this.emit('sceneChange', scene) this.checkHotspotTime(scene, 0) - const preloadUrls = this.sceneManager.getCandidateUrls( + const candidateIds = this.sceneManager.getCandidateSceneIds( scene, (conds) => conds ? this.stateManager.evaluate(conds) : true ) + const preloadUrls = candidateIds + .map(id => this.sceneManager.getScene(id)) + .filter((s) => !!s && s.type !== 'image') + .map(s => this.videoManager.resolveVideoUrl(s!, this.videoManager.streamingQuality)) this.videoManager.onEnd(() => { if (!this.qteTriggered || this.qteResolved) { diff --git a/engine/core/SceneManager.ts b/engine/core/SceneManager.ts index 1e20cd4..a982443 100644 --- a/engine/core/SceneManager.ts +++ b/engine/core/SceneManager.ts @@ -57,9 +57,7 @@ export class SceneManager { return targets } - getCandidateUrls(scene: SceneNode, evaluateCondition: (conds?: Condition[]) => boolean): string[] { + getCandidateSceneIds(scene: SceneNode, evaluateCondition: (conds?: Condition[]) => boolean): string[] { return this.getCandidateTargetIds(scene, evaluateCondition) - .map(id => this.scenes[id]?.videoUrl) - .filter((url): url is string => !!url) } }