summaryrefslogtreecommitdiff
path: root/client/src
diff options
context:
space:
mode:
Diffstat (limited to 'client/src')
-rw-r--r--client/src/scene_prepare.rs18
-rw-r--r--client/src/scene_render.rs10
2 files changed, 17 insertions, 11 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 {}
}
}
diff --git a/client/src/scene_render.rs b/client/src/scene_render.rs
index cc15e3f..d19b083 100644
--- a/client/src/scene_render.rs
+++ b/client/src/scene_render.rs
@@ -10,20 +10,14 @@ use wgpu::{
include_wgsl,
};
+use crate::scene_prepare::RPrefab;
+
pub struct ScenePipeline {
pipeline: RenderPipeline,
bind_group: BindGroup,
prefabs: HashMap<Resource, RPrefab>,
}
-struct RPrefab(Vec<RPart>);
-struct RPart {
- index_count: u32,
- index: Buffer,
- positions: Buffer,
- normals: Buffer,
-}
-
impl ScenePipeline {
pub fn new(device: &Device, format: TextureFormat) -> Self {
let module = device.create_shader_module(include_wgsl!("shader.wgsl"));