From 8fab4b44b8241ffc6450780c6590908f4406f4da Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Sun, 1 Nov 2026 00:26:45 +0400 Subject: fix(render): animate sky layers on the native UV clock --- apps/fparkan-game/src/camera_capture.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'apps/fparkan-game/src/camera_capture.rs') diff --git a/apps/fparkan-game/src/camera_capture.rs b/apps/fparkan-game/src/camera_capture.rs index 9862546..bc16807 100644 --- a/apps/fparkan-game/src/camera_capture.rs +++ b/apps/fparkan-game/src/camera_capture.rs @@ -15,9 +15,16 @@ pub(super) struct LegacyCameraCapture { pub(super) far_plane: f32, pub(super) field_of_view_radians: f32, pub(super) atmosphere_seconds: Option, + pub(super) sky_uv_clock: Option, pub(super) geometry_projection: Option, } +#[derive(Clone, Debug, Deserialize, PartialEq)] +pub(super) struct SkyUvClock { + pub(super) verified: bool, + pub(super) elapsed_milliseconds: u32, +} + #[derive(Clone, Debug, Deserialize, PartialEq)] pub(super) struct GeometryProjection { verified: bool, @@ -118,6 +125,9 @@ pub(super) fn load_legacy_camera_capture( if capture.geometry_projection.is_none() { eprintln!("render_coverage captured_projection_unverified=1 (capture has no geometry_projection; using the recorded camera boundary, which can clip nearby surfaces)"); } + if capture.sky_uv_clock.is_none() { + eprintln!("render_coverage captured_sky_phase_unverified=1 (capture has no sky UV clock; using replay elapsed time)"); + } Ok(capture) } @@ -143,6 +153,13 @@ pub(super) fn parse_legacy_camera_capture(bytes: &[u8]) -> Result