4.5.20#939
Conversation
…nimation for setTransform command
…tial runtime error caused by undefined parameters reported by review bot
- Use unique performName (baseName#animationName) for parallel performs - Add prefix matching in unmountPerform and removePerformByName - Fix force path splice ordering (before goNextWhenOver) - Use baseTransform as default in updateEffect else path - Remove isParallel dedup guard (unique IDs handle it naturally)
- 解决构建失败问题 - 兼容脚本变更可能导致的索引溢出问题
…related functions
…support feat: Decouple properties in timeline animations & support parallel animation
feat: 增加已读历史记录能力,并支持区分已读文本,允许设置跳过是仅已读文本还是全部文本
fix: fade ebg when bg is empty
Add default choice for fast preview
feat: add nobreak argument for wait
feat: on-demand rendering
fix: filter timeline segment
Optimize prefetch
fix: resume audio context
Deploying webgal-dev with
|
| Latest commit: |
bad3204
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://6455bc68.webgal-dev.pages.dev |
There was a problem hiding this comment.
Code Review
This pull request introduces several major features and optimizations to the WebGAL engine, including a bitset-based read history system, a "skip all" fast-forward mode, and support for parallel animations. Significant performance improvements were made to the PIXI rendering engine by implementing a reactive ticker that starts and stops based on activity, alongside a robust asset prefetching system utilizing a line-number gate and a task queue. The Service Worker logic was overhauled to use a cache-first strategy for hashed assets and to better handle local preview environments. Feedback was provided regarding a logic error in the vocal performance cleanup and potential performance gains by reducing the asset prefetch interval.
| const finishPerform = () => { | ||
| for (const e of WebGAL.gameplay.performController.performList) { | ||
| if (e.performName === performInitName) { | ||
| isOver = true; | ||
| e.stopFunction(); | ||
| WebGAL.gameplay.performController.unmountPerform(e.performName); | ||
| } | ||
| } | ||
| }; |
There was a problem hiding this comment.
The finishPerform function contains a logic error and is inefficient. It iterates over performList and calls unmountPerform inside the loop. Since unmountPerform modifies the same performList by splicing elements, this can lead to skipping elements or other unexpected behavior during iteration. Furthermore, unmountPerform already stops and removes all matching performances, making the manual loop and e.stopFunction() call redundant. You should simply call unmountPerform once.
const finishPerform = () => {
isOver = true;
WebGAL.gameplay.performController.unmountPerform(performInitName);
};| } | ||
|
|
||
| const INITIAL_PARSE_LINE_LOOKAHEAD = 24; | ||
| const ASSET_PREFETCH_INTERVAL_MS = 220; |
There was a problem hiding this comment.
The interval of 220ms between each asset prefetch seems excessively high. For a scene with many assets (e.g., 50), it would take over 10 seconds to complete prefetching. Modern browsers are capable of handling multiple concurrent prefetch requests efficiently. Consider reducing this interval significantly (e.g., to 50ms or 100ms) or allowing a small number of concurrent prefetches to improve loading performance.
No description provided.