Rename cubes to scene in custom_shader example

This commit is contained in:
Héctor Ramón Jiménez 2023-11-14 14:41:48 +01:00
parent 78a06384b1
commit 9ddfaf3ee7
No known key found for this signature in database
GPG key ID: 7CC46565708259A7
2 changed files with 31 additions and 31 deletions

View file

@ -1,11 +1,11 @@
mod camera; mod camera;
mod cubes;
mod pipeline; mod pipeline;
mod primitive; mod primitive;
mod scene;
use crate::camera::Camera; use crate::camera::Camera;
use crate::cubes::Cubes;
use crate::pipeline::Pipeline; use crate::pipeline::Pipeline;
use crate::scene::Scene;
use iced::executor; use iced::executor;
use iced::time::Instant; use iced::time::Instant;
@ -25,14 +25,14 @@ fn main() -> iced::Result {
struct IcedCubes { struct IcedCubes {
start: Instant, start: Instant,
cubes: Cubes, scene: Scene,
} }
impl Default for IcedCubes { impl Default for IcedCubes {
fn default() -> Self { fn default() -> Self {
Self { Self {
start: Instant::now(), start: Instant::now(),
cubes: Cubes::new(), scene: Scene::new(),
} }
} }
} }
@ -62,20 +62,20 @@ impl Application for IcedCubes {
fn update(&mut self, message: Self::Message) -> Command<Self::Message> { fn update(&mut self, message: Self::Message) -> Command<Self::Message> {
match message { match message {
Message::CubeAmountChanged(num) => { Message::CubeAmountChanged(amount) => {
self.cubes.adjust_num_cubes(num); self.scene.change_amount(amount);
} }
Message::CubeSizeChanged(size) => { Message::CubeSizeChanged(size) => {
self.cubes.size = size; self.scene.size = size;
} }
Message::Tick(time) => { Message::Tick(time) => {
self.cubes.update(time - self.start); self.scene.update(time - self.start);
} }
Message::ShowDepthBuffer(show) => { Message::ShowDepthBuffer(show) => {
self.cubes.show_depth_buffer = show; self.scene.show_depth_buffer = show;
} }
Message::LightColorChanged(color) => { Message::LightColorChanged(color) => {
self.cubes.light_color = color; self.scene.light_color = color;
} }
} }
@ -87,21 +87,21 @@ impl Application for IcedCubes {
control( control(
"Amount", "Amount",
slider( slider(
1..=cubes::MAX, 1..=scene::MAX,
self.cubes.cubes.len() as u32, self.scene.cubes.len() as u32,
Message::CubeAmountChanged Message::CubeAmountChanged
) )
.width(100) .width(100)
), ),
control( control(
"Size", "Size",
slider(0.1..=0.25, self.cubes.size, Message::CubeSizeChanged) slider(0.1..=0.25, self.scene.size, Message::CubeSizeChanged)
.step(0.01) .step(0.01)
.width(100), .width(100),
), ),
checkbox( checkbox(
"Show Depth Buffer", "Show Depth Buffer",
self.cubes.show_depth_buffer, self.scene.show_depth_buffer,
Message::ShowDepthBuffer Message::ShowDepthBuffer
), ),
] ]
@ -110,10 +110,10 @@ impl Application for IcedCubes {
let bottom_controls = row![ let bottom_controls = row![
control( control(
"R", "R",
slider(0.0..=1.0, self.cubes.light_color.r, move |r| { slider(0.0..=1.0, self.scene.light_color.r, move |r| {
Message::LightColorChanged(Color { Message::LightColorChanged(Color {
r, r,
..self.cubes.light_color ..self.scene.light_color
}) })
}) })
.step(0.01) .step(0.01)
@ -121,10 +121,10 @@ impl Application for IcedCubes {
), ),
control( control(
"G", "G",
slider(0.0..=1.0, self.cubes.light_color.g, move |g| { slider(0.0..=1.0, self.scene.light_color.g, move |g| {
Message::LightColorChanged(Color { Message::LightColorChanged(Color {
g, g,
..self.cubes.light_color ..self.scene.light_color
}) })
}) })
.step(0.01) .step(0.01)
@ -132,10 +132,10 @@ impl Application for IcedCubes {
), ),
control( control(
"B", "B",
slider(0.0..=1.0, self.cubes.light_color.b, move |b| { slider(0.0..=1.0, self.scene.light_color.b, move |b| {
Message::LightColorChanged(Color { Message::LightColorChanged(Color {
b, b,
..self.cubes.light_color ..self.scene.light_color
}) })
}) })
.step(0.01) .step(0.01)
@ -149,7 +149,7 @@ impl Application for IcedCubes {
.align_items(Alignment::Center); .align_items(Alignment::Center);
let shader = let shader =
shader(&self.cubes).width(Length::Fill).height(Length::Fill); shader(&self.scene).width(Length::Fill).height(Length::Fill);
container( container(
column![shader, controls, vertical_space(20),] column![shader, controls, vertical_space(20),]

View file

@ -12,7 +12,7 @@ use std::time::Duration;
pub const MAX: u32 = 500; pub const MAX: u32 = 500;
#[derive(Clone)] #[derive(Clone)]
pub struct Cubes { pub struct Scene {
pub size: f32, pub size: f32,
pub cubes: Vec<Cube>, pub cubes: Vec<Cube>,
pub camera: Camera, pub camera: Camera,
@ -20,9 +20,9 @@ pub struct Cubes {
pub light_color: Color, pub light_color: Color,
} }
impl Cubes { impl Scene {
pub fn new() -> Self { pub fn new() -> Self {
let mut cubes = Self { let mut scene = Self {
size: 0.2, size: 0.2,
cubes: vec![], cubes: vec![],
camera: Camera::default(), camera: Camera::default(),
@ -30,9 +30,9 @@ impl Cubes {
light_color: Color::WHITE, light_color: Color::WHITE,
}; };
cubes.adjust_num_cubes(MAX); scene.change_amount(MAX);
cubes scene
} }
pub fn update(&mut self, time: Duration) { pub fn update(&mut self, time: Duration) {
@ -41,13 +41,13 @@ impl Cubes {
} }
} }
pub fn adjust_num_cubes(&mut self, num_cubes: u32) { pub fn change_amount(&mut self, amount: u32) {
let curr_cubes = self.cubes.len() as u32; let curr_cubes = self.cubes.len() as u32;
match num_cubes.cmp(&curr_cubes) { match amount.cmp(&curr_cubes) {
Ordering::Greater => { Ordering::Greater => {
// spawn // spawn
let cubes_2_spawn = (num_cubes - curr_cubes) as usize; let cubes_2_spawn = (amount - curr_cubes) as usize;
let mut cubes = 0; let mut cubes = 0;
self.cubes.extend(iter::from_fn(|| { self.cubes.extend(iter::from_fn(|| {
@ -61,7 +61,7 @@ impl Cubes {
} }
Ordering::Less => { Ordering::Less => {
// chop // chop
let cubes_2_cut = curr_cubes - num_cubes; let cubes_2_cut = curr_cubes - amount;
let new_len = self.cubes.len() - cubes_2_cut as usize; let new_len = self.cubes.len() - cubes_2_cut as usize;
self.cubes.truncate(new_len); self.cubes.truncate(new_len);
} }
@ -70,7 +70,7 @@ impl Cubes {
} }
} }
impl<Message> shader::Program<Message> for Cubes { impl<Message> shader::Program<Message> for Scene {
type State = (); type State = ();
type Primitive = primitive::Primitive; type Primitive = primitive::Primitive;