diff options
Diffstat (limited to 'client/src/scene_prepare.rs')
-rw-r--r-- | client/src/scene_prepare.rs | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/client/src/scene_prepare.rs b/client/src/scene_prepare.rs index 8d52f49..f069b5d 100644 --- a/client/src/scene_prepare.rs +++ b/client/src/scene_prepare.rs @@ -7,11 +7,20 @@ use weareshared::{packets::Resource, resources::Part, tree::SceneTree}; use wgpu::Buffer; pub struct ScenePreparer { - index_buffers: HashMap<Resource, Buffer>, + 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, Part>, + parts: HashMap<Resource, Arc<Part>>, + prefabs: HashMap<Resource, RPrefab>, +} + +pub struct RPrefab(pub Vec<Arc<RPart>>); +pub struct RPart { + pub index_count: u32, + pub index: Arc<Buffer>, + pub positions: Arc<Buffer>, + pub normals: Arc<Buffer>, } impl ScenePreparer { @@ -22,9 +31,12 @@ impl ScenePreparer { vertex_buffers_x2: HashMap::new(), vertex_buffers_x1: HashMap::new(), parts: HashMap::new(), + prefabs: HashMap::new(), } } fn update(&mut self, tree: &SceneTree) -> Result<()> { - let x = tree.objects.values().map(|o| o.res).collect::<HashSet<_>>(); + let need = tree.objects.values().map(|o| o.res).collect::<HashSet<_>>(); + + for n in need {} } } |