Files
MapLibreParticleLab/docs/50_Step记录/STEP-047_Runtime_Timeline与Playback_v1.md
OpenAI Codex 49b2e8aebd
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled
feat: add runtime particle timeline playback
2026-09-03 21:23:29 +08:00

1.8 KiB
Raw Permalink Blame History

STEP-047 Runtime Timeline 与 Playback

状态:IMPLEMENTED / WAITING FOR ANDROID VALIDATION

目标与边界

40-06 在已冻结的 40-04 Runtime Field Window 与 40-05 正式 streak 渲染之上增加 Core-owned Timeline/Playback。它不接入网络、GRIB、provider、HTTP 或 Android 定时器;Android 只通过 JNI 发送低频命令。

RasterArraySource 持有有界(最多 8 个)不可变 Field 快照、严格递增的逻辑时间、当前 T0/T1、cursor、播放状态、速度和 gap/invalid/recover 状态。渲染层每帧只取得 Core 给出的 T0/T1/mix;不会获知文件、provider 或网络。

实现

  • Validation timeline 使用 6 个 fixture snapshot:east、north、vortex、nodata、east、north;逻辑间隔为 4 秒。
  • PLAY/PAUSE、0.5x/1x/2x、STEP PREV/NEXT、SEEK START/MID/END、GAP、INVALID、RECOVER 均为 Source Core 命令,经薄 JNI bridge 调用。
  • 自动边界维持 OLD_T1 → NEW_T0 资源重用语义;只在窗口 revision 改变时交给既有 Renderer Field reuse/upload 路径处理。正常 MIX 是 Core clock 的 scalar 更新,不会触发 Style reload。
  • Gap/invalid 到达边界时 fail-closed 保持当前有效 T0/T1;recover 后可继续操作;末尾进入 END。
  • Validation UI 改为状态栏与 TIME | VIS | COUNT | MAP | MORE 五个菜单入口,原动作仍可由菜单触达。

不变契约

  • U=east-positive、V=north-positive、Mercator dy=-v 不变。
  • 40-02 MIX property-only、40-03 full particle draw、40-04 runtime window reuse/noop/fail-closed 不变。
  • 无未来 GPU 纹理预上传;仅 Source 内有界 CPU snapshot cache。

验证状态

已执行 Linux/OpenGL Core 精确编译与 Source 单元测试构建;未运行 Android Gradle、ADB、Jest 或实体机。Android x86_64 手工验收仍待执行。