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

View file

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