diff options
author | metamuffin <metamuffin@disroot.org> | 2025-01-07 15:15:19 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-01-07 15:15:19 +0100 |
commit | e32de26dcb5e1498f2b2fa19cacb593bec518ef4 (patch) | |
tree | 8a5d3d0e4629d04527e1f8203adbfcbe9d03838a /client/src/ui.rs | |
parent | d81eebe423fd3e00df5ff035ec24fe7fb37f2c62 (diff) | |
download | weareserver-e32de26dcb5e1498f2b2fa19cacb593bec518ef4.tar weareserver-e32de26dcb5e1498f2b2fa19cacb593bec518ef4.tar.bz2 weareserver-e32de26dcb5e1498f2b2fa19cacb593bec518ef4.tar.zst |
camera controller broken
Diffstat (limited to 'client/src/ui.rs')
-rw-r--r-- | client/src/ui.rs | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/client/src/ui.rs b/client/src/ui.rs new file mode 100644 index 0000000..2fc5dd7 --- /dev/null +++ b/client/src/ui.rs @@ -0,0 +1,54 @@ +use egui::{Context, epaint::Primitive}; +use wgpu::{Buffer, BufferDescriptor, BufferUsages, Device, Queue}; + +pub struct UiRenderer { + ctx: Context, +} + +impl UiRenderer { + pub fn new(device: &Device) -> Self { + let index = device.create_buffer(&BufferDescriptor { + label: None, + size: 1, + usage: BufferUsages::INDEX | BufferUsages::COPY_DST, + mapped_at_creation: false, + }); + let vertex = device.create_buffer(&BufferDescriptor { + label: None, + size: 1, + usage: BufferUsages::VERTEX | BufferUsages::COPY_DST, + mapped_at_creation: false, + }); + Self { + ctx: Context::default(), + index, + vertex, + } + } + + pub fn draw(&self, queue: &Queue) { + let raw_input = egui::RawInput::default(); + let full_output = self.ctx.run(raw_input, |ctx| { + egui::CentralPanel::default().show(&ctx, |ui| { + ui.label("Hello world!"); + if ui.button("Click me").clicked() { + // take some action here + } + }); + }); + + + // handle_platform_output(full_output.platform_output); + let clipped_primitives = self + .ctx + .tessellate(full_output.shapes, full_output.pixels_per_point); + + for p in clipped_primitives { + match p.primitive { + Primitive::Mesh(mesh) => {} + _ => unreachable!(), + } + } + // paint(full_output.textures_delta, clipped_primitives); + } +} |