diff options
author | metamuffin <metamuffin@disroot.org> | 2025-01-06 15:34:40 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-01-06 15:34:40 +0100 |
commit | 14d348febd549b944d03030bf748f7817a2bedac (patch) | |
tree | 96fb79928296a9b6e6b50e0c805fcafaaf32e16a /client/src/scene_prepare.rs | |
parent | 48a0fb31737362c9bae0ff8f6fcf1e4e10600f94 (diff) | |
download | weareserver-14d348febd549b944d03030bf748f7817a2bedac.tar weareserver-14d348febd549b944d03030bf748f7817a2bedac.tar.bz2 weareserver-14d348febd549b944d03030bf748f7817a2bedac.tar.zst |
a
Diffstat (limited to 'client/src/scene_prepare.rs')
-rw-r--r-- | client/src/scene_prepare.rs | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/client/src/scene_prepare.rs b/client/src/scene_prepare.rs index f069b5d..30c1742 100644 --- a/client/src/scene_prepare.rs +++ b/client/src/scene_prepare.rs @@ -3,16 +3,23 @@ use std::{ collections::{HashMap, HashSet}, sync::Arc, }; -use weareshared::{packets::Resource, resources::Part, tree::SceneTree}; +use weareshared::{ + packets::{ReadWrite, Resource}, + resources::Prefab, + tree::SceneTree, +}; use wgpu::Buffer; +use crate::download::Downloader; + pub struct ScenePreparer { index_buffers: HashMap<Resource, Arc<Buffer>>, vertex_buffers_x3: HashMap<[Resource; 1], Arc<Buffer>>, vertex_buffers_x2: HashMap<[Resource; 2], Arc<Buffer>>, vertex_buffers_x1: HashMap<[Resource; 3], Arc<Buffer>>, - parts: HashMap<Resource, Arc<Part>>, + parts: HashMap<Resource, Arc<RPart>>, prefabs: HashMap<Resource, RPrefab>, + prefabs_needed: HashSet<Resource>, } pub struct RPrefab(pub Vec<Arc<RPart>>); @@ -32,11 +39,16 @@ impl ScenePreparer { vertex_buffers_x1: HashMap::new(), parts: HashMap::new(), prefabs: HashMap::new(), + prefabs_needed: HashSet::new(), } } - fn update(&mut self, tree: &SceneTree) -> Result<()> { - let need = tree.objects.values().map(|o| o.res).collect::<HashSet<_>>(); - - for n in need {} + fn update(&mut self, dls: &mut Downloader) -> Result<()> { + for pres in &self.prefabs_needed { + if let Some(buf) = dls.try_get(*pres)? { + let prefab = Prefab::read(&mut buf.as_slice())?; + + } + } + Ok(()) } } |