kitgit

tirbofish/dropbear · commit

a75bf7707079ec6c32154552c01b1fde793aa163

feature: debug drawing, such as rays and objects and lines and stuff like that todo: change colliderwireframe to use DebugDraw instead.

Unverified

Thribhu K <4tkbytes@pm.me> · 2026-03-26 13:59

view full diff

diff --git a/crates/dropbear-engine/src/buffer.rs b/crates/dropbear-engine/src/buffer.rs
index 8640d4b..cc76cad 100644
--- a/crates/dropbear-engine/src/buffer.rs
+++ b/crates/dropbear-engine/src/buffer.rs
@@ -11,66 +11,87 @@ pub struct ResizableBuffer<T> {
     _marker: PhantomData<T>,
 }
 
-#[derive(Debug, Clone)]
-pub struct UniformBuffer<T> {
-    buffer: wgpu::Buffer,
-    label: String,
-    _marker: PhantomData<T>,
-}
-
-impl<T: bytemuck::Pod> UniformBuffer<T> {
-    pub fn new(device: &wgpu::Device, label: &str) -> Self {
-        let size = (std::mem::size_of::<T>() as wgpu::BufferAddress).max(16);
+impl<T: bytemuck::Pod> ResizableBuffer<T> {
+    pub fn new(
+        device: &wgpu::Device,
+        initial_capacity: usize,
+        usage: wgpu::BufferUsages,
+        label: &str,
+    ) -> Self {
+        let size = (initial_capacity * std::mem::size_of::<T>()) as wgpu::BufferAddress;
         let buffer = device.create_buffer(&wgpu::BufferDescriptor {
             label: Some(label),
-            size,
-            usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST,
+            size: size.max(16),
+            usage,
             mapped_at_creation: false,
         });
 
+        log::debug!("Registered new resizable buffer: {:?} (usage={:?})", label, usage);
         Self {
             buffer,
+            capacity: initial_capacity,
+            usage,
             label: label.to_string(),
             _marker: PhantomData,
         }
     }
 
-    pub fn write(&self, queue: &wgpu::Queue, value: &T) {
+    pub fn write(&mut self, device: &wgpu::Device, queue: &wgpu::Queue, data: &[T]) {
         puffin::profile_function!(&self.label);
-        queue.write_buffer(&self.buffer, 0, bytemuck::bytes_of(value));
+        if data.is_empty() {

Large diffs are not rendered by default. Showing the first 50 of 1531 lines. Show full diff