From 915df1ade3456b0ca1eef1642c40170bcf86308e Mon Sep 17 00:00:00 2001 From: Akirami <66513481+A-kirami@users.noreply.github.com> Date: Thu, 25 Jun 2026 10:15:31 +0800 Subject: [PATCH 1/2] fix: resolve the transform calculation order of the -next chain in fast preview --- .../src/Core/controller/gamePlay/scriptExecutor.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/packages/webgal/src/Core/controller/gamePlay/scriptExecutor.ts b/packages/webgal/src/Core/controller/gamePlay/scriptExecutor.ts index 8bfbb5cd8..9dd4ab7c2 100644 --- a/packages/webgal/src/Core/controller/gamePlay/scriptExecutor.ts +++ b/packages/webgal/src/Core/controller/gamePlay/scriptExecutor.ts @@ -35,6 +35,16 @@ export const whenChecker = (whenValue: string | undefined): boolean => { return !!strIf(valExp); }; +function settleFastPreviewPendingStateBeforeNext() { + if (!WebGAL.gameplay.isFastPreview) { + return; + } + + // fast preview 的 -next 链不会在语句之间 commit,需要先结算当前句会影响后续演算的 pending 终态。 + WebGAL.gameplay.performController.discardUncommittedNonHoldPerforms(true); + WebGAL.gameplay.performController.clearNonHoldPerformsFromStageState(); +} + /** * 语句执行器 * 执行语句,同步场景状态,并根据情况立即执行下一句或者加入backlog @@ -148,6 +158,7 @@ export const scriptExecutor = (depth = 0) => { if (isNext && !hasPendingBlockingStateCalculationPerform && !WebGAL.sceneManager.lockSceneWrite) { WebGAL.sceneManager.sceneData.currentSentenceId++; saveBacklogIfNeeded(); + settleFastPreviewPendingStateBeforeNext(); scriptExecutor(depth + 1); return; } From 71c5639ec18d002807c4a04a705ecd4fbf037a68 Mon Sep 17 00:00:00 2001 From: Akirami <66513481+A-kirami@users.noreply.github.com> Date: Thu, 25 Jun 2026 11:04:20 +0800 Subject: [PATCH 2/2] fix: resolve the settlement order of the `-next` chain when using fast preview --- packages/webgal/src/Core/controller/gamePlay/scriptExecutor.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/webgal/src/Core/controller/gamePlay/scriptExecutor.ts b/packages/webgal/src/Core/controller/gamePlay/scriptExecutor.ts index 9dd4ab7c2..6333987a1 100644 --- a/packages/webgal/src/Core/controller/gamePlay/scriptExecutor.ts +++ b/packages/webgal/src/Core/controller/gamePlay/scriptExecutor.ts @@ -157,8 +157,8 @@ export const scriptExecutor = (depth = 0) => { // 执行“下一句”。只有需要外部输入才能确定后续状态的演出,才会阻塞状态演算。 if (isNext && !hasPendingBlockingStateCalculationPerform && !WebGAL.sceneManager.lockSceneWrite) { WebGAL.sceneManager.sceneData.currentSentenceId++; - saveBacklogIfNeeded(); settleFastPreviewPendingStateBeforeNext(); + saveBacklogIfNeeded(); scriptExecutor(depth + 1); return; }