aboutsummaryrefslogtreecommitdiff
path: root/client/src/renderer.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-03-04 18:10:48 +0100
committermetamuffin <metamuffin@disroot.org>2025-03-04 18:10:48 +0100
commit66d52612c5c86a849258ade16fb45bd2947956db (patch)
tree5665500e79236282da34fb42f9c33a057dc6750f /client/src/renderer.rs
parent57bb47ab1092dac7bffd707f35efa131b9bd99c3 (diff)
downloadtwclient-66d52612c5c86a849258ade16fb45bd2947956db.tar
twclient-66d52612c5c86a849258ade16fb45bd2947956db.tar.bz2
twclient-66d52612c5c86a849258ade16fb45bd2947956db.tar.zst
a
Diffstat (limited to 'client/src/renderer.rs')
-rw-r--r--client/src/renderer.rs26
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);
}