use anyhow::Result; use std::{ collections::{HashMap, HashSet}, sync::Arc, }; use weareshared::{packets::Resource, resources::Part, tree::SceneTree}; use wgpu::Buffer; pub struct ScenePreparer { index_buffers: HashMap>, vertex_buffers_x3: HashMap<[Resource; 1], Arc>, vertex_buffers_x2: HashMap<[Resource; 2], Arc>, vertex_buffers_x1: HashMap<[Resource; 3], Arc>, parts: HashMap>, prefabs: HashMap, } pub struct RPrefab(pub Vec>); pub struct RPart { pub index_count: u32, pub index: Arc, pub positions: Arc, pub normals: Arc, } impl ScenePreparer { pub fn new() -> Self { Self { index_buffers: HashMap::new(), vertex_buffers_x3: HashMap::new(), vertex_buffers_x2: HashMap::new(), vertex_buffers_x1: HashMap::new(), parts: HashMap::new(), prefabs: HashMap::new(), } } fn update(&mut self, tree: &SceneTree) -> Result<()> { let need = tree.objects.values().map(|o| o.res).collect::>(); for n in need {} } }