client local time

This commit is contained in:
Isse 2023-10-12 01:46:12 +02:00
parent 472b996c8e
commit 72db9b61b3
4 changed files with 11 additions and 3 deletions

View File

@ -16,7 +16,7 @@ layout(std140, set = 0, binding = 0) uniform u_globals {
vec4 moon_dir;
// .x = The `Time` resource, repeated every `tick_overflow`
// .y = a floored (`Time` / `tick_overflow`)
// .z = `Time`, not recommended to be used as it might have low precision
// .z = Client time, not synced between clients.
vec4 tick;
vec4 screen_res;
uvec4 light_shadow_count;

View File

@ -106,6 +106,7 @@ impl Globals {
map_bounds: Vec2<f32>,
time_of_day: f64,
tick: f64,
client_tick: f64,
screen_res: Vec2<u16>,
shadow_planes: Vec2<f32>,
light_count: usize,
@ -147,7 +148,7 @@ impl Globals {
tick: [
(tick % TIME_OVERFLOW) as f32,
(tick / TIME_OVERFLOW).floor() as f32,
tick as f32,
client_tick as f32,
0.0,
],
// Provide the shadow map far plane as well.
@ -224,6 +225,7 @@ impl Default for Globals {
Vec2::new(140.0, 2048.0),
0.0,
0.0,
0.0,
Vec2::new(800, 500),
Vec2::new(1.0, 25.0),
0,

View File

@ -33,7 +33,7 @@ use common::{
calendar::Calendar,
comp::{self, ship::figuredata::VOXEL_COLLIDER_MANIFEST},
outcome::Outcome,
resources::DeltaTime,
resources::{DeltaTime, TimeScale},
terrain::{BlockKind, TerrainChunk, TerrainGrid},
vol::ReadVol,
};
@ -113,6 +113,7 @@ pub struct Scene {
wind_vel: Vec2<f32>,
pub interpolated_time_of_day: Option<f64>,
last_lightning: Option<(Vec3<f32>, f64)>,
client_time: f64,
}
pub struct SceneData<'a> {
@ -348,6 +349,7 @@ impl Scene {
wind_vel: Vec2::zero(),
interpolated_time_of_day: None,
last_lightning: None,
client_time: 0.0,
}
}
@ -523,6 +525,8 @@ impl Scene {
let dt = ecs.fetch::<DeltaTime>().0;
self.client_time += dt as f64 * ecs.fetch::<TimeScale>().0;
let positions = ecs.read_storage::<comp::Pos>();
let viewpoint_pos = if let Some(viewpoint_pos) =
@ -846,6 +850,7 @@ impl Scene {
self.map_bounds,
time_of_day,
scene_data.state.get_time(),
self.client_time,
renderer.resolution().as_(),
Vec2::new(SHADOW_NEAR, SHADOW_FAR),
lights.len(),

View File

@ -272,6 +272,7 @@ impl Scene {
self.map_bounds,
TIME,
scene_data.time,
0.0,
renderer.resolution().as_(),
Vec2::new(SHADOW_NEAR, SHADOW_FAR),
0,