diff options
author | metamuffin <metamuffin@disroot.org> | 2025-01-06 14:58:42 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-01-06 14:58:42 +0100 |
commit | 48a0fb31737362c9bae0ff8f6fcf1e4e10600f94 (patch) | |
tree | b7b6940d476ce78081d99b1e9c028c86115bd8ed /client | |
parent | 814cc1cb01692aa934a40636c9226ff7bb911266 (diff) | |
download | weareserver-48a0fb31737362c9bae0ff8f6fcf1e4e10600f94.tar weareserver-48a0fb31737362c9bae0ff8f6fcf1e4e10600f94.tar.bz2 weareserver-48a0fb31737362c9bae0ff8f6fcf1e4e10600f94.tar.zst |
prefab offsets
Diffstat (limited to 'client')
-rw-r--r-- | client/src/scene_prepare.rs | 18 | ||||
-rw-r--r-- | client/src/scene_render.rs | 10 |
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")); |