Pause the underlay animation instead of resetting it. (#9360)
Some checks are pending
autofix.ci / format_fix (push) Waiting to run
autofix.ci / lint_typecheck (push) Waiting to run
CI / python_test (windows-2022) (push) Blocked by required conditions
CI / wasm_demo (push) Blocked by required conditions
CI / tree-sitter (push) Blocked by required conditions
CI / files-changed (push) Waiting to run
CI / build_and_test (--exclude bevy-example, ubuntu-22.04, 1.85) (push) Blocked by required conditions
CI / build_and_test (--exclude ffmpeg --exclude gstreamer-player, --exclude bevy-example, windows-2022, 1.85) (push) Blocked by required conditions
CI / build_and_test (--exclude ffmpeg --exclude gstreamer-player, macos-14, stable) (push) Blocked by required conditions
CI / build_and_test (--exclude ffmpeg --exclude gstreamer-player, windows-2022, beta) (push) Blocked by required conditions
CI / build_and_test (--exclude ffmpeg --exclude gstreamer-player, windows-2022, stable) (push) Blocked by required conditions
CI / build_and_test (ubuntu-22.04, nightly) (push) Blocked by required conditions
CI / node_test (macos-14) (push) Blocked by required conditions
CI / node_test (ubuntu-22.04) (push) Blocked by required conditions
CI / node_test (windows-2022) (push) Blocked by required conditions
CI / python_test (macos-14) (push) Blocked by required conditions
CI / python_test (ubuntu-22.04) (push) Blocked by required conditions
CI / cpp_test_driver (macos-13) (push) Blocked by required conditions
CI / cpp_test_driver (ubuntu-22.04) (push) Blocked by required conditions
CI / cpp_test_driver (windows-2022) (push) Blocked by required conditions
CI / cpp_cmake (macos-14, 1.85) (push) Blocked by required conditions
CI / cpp_cmake (ubuntu-22.04, stable) (push) Blocked by required conditions
CI / cpp_cmake (windows-2022, nightly) (push) Blocked by required conditions
CI / cpp_package_test (push) Blocked by required conditions
CI / vsce_build_test (push) Blocked by required conditions
CI / mcu (pico-st7789, thumbv6m-none-eabi) (push) Blocked by required conditions
CI / mcu (pico2-st7789, thumbv8m.main-none-eabihf) (push) Blocked by required conditions
CI / mcu (stm32h735g, thumbv7em-none-eabihf) (push) Blocked by required conditions
CI / mcu-embassy (push) Blocked by required conditions
CI / ffi_32bit_build (push) Blocked by required conditions
CI / docs (push) Blocked by required conditions
CI / wasm (push) Blocked by required conditions
CI / updater_test (0.3.0) (push) Blocked by required conditions
CI / fmt_test (push) Blocked by required conditions
CI / esp-idf-quick (push) Blocked by required conditions
CI / android (push) Blocked by required conditions
CI / miri (push) Blocked by required conditions
CI / test-figma-inspector (push) Blocked by required conditions

This commit is contained in:
Nigel Breslaw 2025-09-08 14:18:36 +03:00 committed by GitHub
parent fb1a2964fc
commit 15afa8b09b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -16,6 +16,9 @@ struct EGLUnderlay {
vbo: glow::Buffer,
vao: glow::VertexArray,
start_time: web_time::Instant,
rotation_time: f32,
last_rotation_enabled: bool,
rotation_pause_offset: f32,
}
impl EGLUnderlay {
@ -134,6 +137,9 @@ impl EGLUnderlay {
vbo,
vao,
start_time: web_time::Instant::now(),
rotation_time: 0.0,
last_rotation_enabled: true,
rotation_pause_offset: 0.0,
}
}
}
@ -179,10 +185,18 @@ impl EGLUnderlay {
let elapsed = self.start_time.elapsed().as_millis() as f32;
gl.uniform_1_f32(Some(&self.effect_time_location), elapsed);
gl.uniform_1_f32(
Some(&self.rotation_time_location),
if rotation_enabled { elapsed } else { 0.0 },
);
// Handle the rotation and freezing of rotation via the UI toggle.
if rotation_enabled {
if !self.last_rotation_enabled {
self.rotation_pause_offset = elapsed - self.rotation_time;
}
self.rotation_time = elapsed - self.rotation_pause_offset;
}
gl.uniform_1_f32(Some(&self.rotation_time_location), self.rotation_time);
self.last_rotation_enabled = rotation_enabled;
gl.draw_arrays(glow::TRIANGLE_STRIP, 0, 4);