Fix WebGL reveal timing and flip texture readiness

This commit is contained in:
2026-06-10 13:54:54 +02:00
parent e3d66686b9
commit 97eab216b7
7 changed files with 210 additions and 36 deletions
+10 -2
View File
@@ -208,9 +208,17 @@ class BookPlaybackTimelineModule extends BaseModule {
}
ensureAnimationTimings(sentence = {}) {
if (Array.isArray(sentence.animation?.wordTimings) && sentence.animation.wordTimings.length > 0) return;
const existingTimings = Array.isArray(sentence.animation?.wordTimings)
? sentence.animation.wordTimings
: [];
const existingDuration = existingTimings.reduce((max, timing) => Math.max(
max,
Number(timing?.delay || 0) + Number(timing?.duration || 0)
), Number(sentence.animation?.totalDuration || 0));
const ttsDuration = Number(sentence.tts?.duration || 0);
if (existingTimings.length > 0 && (existingDuration > 0 || ttsDuration <= 0)) return;
const words = String(sentence.layoutText || sentence.text || '').match(/\S+/g) || [];
sentence.animation = this.calculateAnimationTiming(words, sentence.tts?.duration || 0, sentence.cueMarkers || []);
sentence.animation = this.calculateAnimationTiming(words, ttsDuration, sentence.cueMarkers || []);
}
calculateAnimationTiming(words = [], totalDuration = 0, cueMarkers = []) {