diff options
author | metamuffin <metamuffin@disroot.org> | 2025-03-04 18:10:48 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-03-04 18:10:48 +0100 |
commit | 66d52612c5c86a849258ade16fb45bd2947956db (patch) | |
tree | 5665500e79236282da34fb42f9c33a057dc6750f | |
parent | 57bb47ab1092dac7bffd707f35efa131b9bd99c3 (diff) | |
download | twclient-66d52612c5c86a849258ade16fb45bd2947956db.tar twclient-66d52612c5c86a849258ade16fb45bd2947956db.tar.bz2 twclient-66d52612c5c86a849258ade16fb45bd2947956db.tar.zst |
a
-rw-r--r-- | client/src/renderer.rs | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/client/src/renderer.rs b/client/src/renderer.rs index 57e0fc4..d213a41 100644 --- a/client/src/renderer.rs +++ b/client/src/renderer.rs @@ -5,8 +5,14 @@ use crate::{ use anyhow::{Result, anyhow}; use log::warn; use pollster::FutureExt; -use std::{mem::swap, random::random, sync::Arc, time::Instant}; -use twgame::Map; +use std::{ + mem::swap, + random::random, + rc::Rc, + sync::{Arc, mpsc::channel}, + time::Instant, +}; +use twgame::{DdnetWorld, Map}; use twgpu::{ Camera, GpuCamera, TwRenderPass, blit::Blit, @@ -52,12 +58,14 @@ pub struct Renderer<'a> { rng: Rng, need_reconfigure: bool, clock: Clock, - map: Map, + map: Rc<Map>, from_snap: Snap, to_snap: Snap, tees: TeeStorage, clock_set: bool, local_time_offset: i64, + + simulation: DdnetWorld, } impl<'a> Renderer<'a> { @@ -128,7 +136,12 @@ impl<'a> Renderer<'a> { surface.configure(&device, &surface_configuration); - let map = Map::try_from(&mut twmap).map_err(|e| anyhow!("{e}"))?; + let map = Rc::new(Map::try_from(&mut twmap).map_err(|e| anyhow!("{e}"))?); + + let (sender, _) = channel(); + let (_, receiver) = channel(); + let simulation = + DdnetWorld::new_with_map(map.clone(), sender, receiver).map_err(|e| anyhow!("{e}"))?; Ok(Self { start: Instant::now(), @@ -147,6 +160,7 @@ impl<'a> Renderer<'a> { skin_manager, sprites_data, sprite_textures, + simulation, clock: Clock::default(), from_snap: Snap::default(), to_snap: Snap::default(), @@ -183,12 +197,14 @@ impl<'a> Renderer<'a> { } let time = self.start.elapsed().as_micros() as i64; - let local_tick = (time + self.local_time_offset) as f64 / 1_000_000. * 50. + 1.; + let local_tick = (time + self.local_time_offset) as f64 / 1_000_000. * 50.; let size = Vec2::new( self.surface_configuration.width, self.surface_configuration.height, ); + // self.simulation.sn + if self.clock_set { self.clock.update(local_tick); } |