From 5b1ca38d75fd06e19071f00646781d0bdbc50712 Mon Sep 17 00:00:00 2001 From: Piotrek Date: Thu, 6 May 2021 14:49:15 +0200 Subject: [PATCH] ready for testing --- src/app/mod.rs | 8 +++++--- src/main.rs | 2 +- src/renderer/content_view.rs | 14 ++++++++++++++ src/renderer/mod.rs | 1 + 4 files changed, 21 insertions(+), 4 deletions(-) create mode 100644 src/renderer/content_view.rs diff --git a/src/app/mod.rs b/src/app/mod.rs index 22cb35e..6a61dab 100644 --- a/src/app/mod.rs +++ b/src/app/mod.rs @@ -1,5 +1,6 @@ mod camera_controller; pub mod world; +use crate::renderer::content_view::ContentView; use cgmath::{SquareMatrix, Point3, InnerSpace}; use winit::event::Event; use crate::renderer::{camera::CameraTransform}; @@ -17,14 +18,15 @@ pub struct App { } impl App { - pub fn new() -> Self { + pub fn new(content: &mut dyn ContentView) -> Self { let mut app = Self { camera_controller: CameraController::new(), world: World::new("default".to_string()) }; - let block = app.world.gen_block(&Point3{x:0,y:0,z:0}); - + let pos = &Point3{x:0,y:0,z:0}; + let block = app.world.gen_block(pos); + content.write(pos, block); app } diff --git a/src/main.rs b/src/main.rs index 6fe901f..7093130 100644 --- a/src/main.rs +++ b/src/main.rs @@ -24,7 +24,7 @@ fn main() { .expect("Failed to create window"); let mut renderer = futures::executor::block_on(Renderer::new(&window)); - let mut app = App::new(); + let mut app = App::new(&mut renderer); // Stats let mut fps_timer = std::time::Instant::now(); diff --git a/src/renderer/content_view.rs b/src/renderer/content_view.rs new file mode 100644 index 0000000..322fbd4 --- /dev/null +++ b/src/renderer/content_view.rs @@ -0,0 +1,14 @@ +use crate::Renderer; +use crate::app::world::block::WorldBlock; +use cgmath::Point3; + +pub trait ContentView { + fn write(&mut self, block_pos: &Point3, block: &WorldBlock); +} + +impl ContentView for Renderer { + + fn write(&mut self, block_pos: &Point3, block: &WorldBlock) { + self.buffers.content.write(&self.queue, block_pos, block) + } +} \ No newline at end of file diff --git a/src/renderer/mod.rs b/src/renderer/mod.rs index d0c4e3a..e49b3f0 100644 --- a/src/renderer/mod.rs +++ b/src/renderer/mod.rs @@ -5,6 +5,7 @@ mod passes; use passes::{RaytracePass, PostprocessPass}; pub mod camera; use camera::Camera; +pub mod content_view; pub struct Renderer { surface: wgpu::Surface,