diff options
author | metamuffin <metamuffin@disroot.org> | 2025-01-05 22:27:53 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-01-05 22:27:53 +0100 |
commit | e15b39b2a9cf028b12cbe98f56674e58c5a6bd4c (patch) | |
tree | 92484ce572dff978fc289eb54d19bbb692c01c12 /client/src/state.rs | |
parent | c427fed04f89147bcdcb2b4b1be9198a063d89cd (diff) | |
download | weareserver-e15b39b2a9cf028b12cbe98f56674e58c5a6bd4c.tar weareserver-e15b39b2a9cf028b12cbe98f56674e58c5a6bd4c.tar.bz2 weareserver-e15b39b2a9cf028b12cbe98f56674e58c5a6bd4c.tar.zst |
a
Diffstat (limited to 'client/src/state.rs')
-rw-r--r-- | client/src/state.rs | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/client/src/state.rs b/client/src/state.rs new file mode 100644 index 0000000..ef68b85 --- /dev/null +++ b/client/src/state.rs @@ -0,0 +1,33 @@ +use crate::{download::Downloader, network::Network, renderer::Renderer}; +use anyhow::Result; +use log::info; +use std::net::TcpStream; +use weareshared::{store::ResourceStore, tree::SceneTree}; +use winit::window::Window; + +pub struct State<'a> { + pub network: Network, + pub downloader: Downloader, + pub renderer: Renderer<'a>, + pub tree: SceneTree, +} +impl<'a> State<'a> { + pub fn new(conn: TcpStream, window: &'a Window) -> Result<State<'a>> { + info!("new state"); + Ok(Self { + network: Network::new(conn), + tree: SceneTree::default(), + renderer: Renderer::new(window)?, + downloader: Downloader::new(ResourceStore::new_memory()), + }) + } + + pub fn update(&mut self) -> Result<()> { + for p in self.network.packet_recv.try_iter() { + self.downloader.packet(&p)?; + } + self.downloader.update(&mut self.network); + + Ok(()) + } +} |