Move DirtyRect to utility module
This commit is contained in:
parent
8cc95cce02
commit
a3e8b1387b
|
@ -13,6 +13,8 @@ use bevy::{
|
||||||
};
|
};
|
||||||
use rand::Rng;
|
use rand::Rng;
|
||||||
|
|
||||||
|
use crate::util::DirtyRect;
|
||||||
|
|
||||||
pub struct FallingSandPlugin;
|
pub struct FallingSandPlugin;
|
||||||
|
|
||||||
impl Plugin for FallingSandPlugin {
|
impl Plugin for FallingSandPlugin {
|
||||||
|
@ -58,57 +60,6 @@ fn setup(mut commands: Commands, mut images: ResMut<Assets<Image>>) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Default)]
|
|
||||||
struct DirtyRect {
|
|
||||||
dirty: bool,
|
|
||||||
rect: (usize, usize, usize, usize),
|
|
||||||
}
|
|
||||||
|
|
||||||
impl DirtyRect {
|
|
||||||
fn new() -> Self {
|
|
||||||
Self {
|
|
||||||
dirty: false,
|
|
||||||
rect: (usize::MAX, usize::MAX, usize::MIN, usize::MIN),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn range_x(&self) -> std::ops::RangeInclusive<usize> {
|
|
||||||
self.rect.0..=self.rect.2
|
|
||||||
}
|
|
||||||
|
|
||||||
fn range_y(&self) -> std::ops::RangeInclusive<usize> {
|
|
||||||
self.rect.1..=self.rect.3
|
|
||||||
}
|
|
||||||
|
|
||||||
fn reset(&mut self) {
|
|
||||||
self.dirty = false;
|
|
||||||
self.rect = (usize::MAX, usize::MAX, usize::MIN, usize::MIN);
|
|
||||||
}
|
|
||||||
|
|
||||||
fn add_point(&mut self, x: usize, y: usize) {
|
|
||||||
if x < self.rect.0 {
|
|
||||||
self.rect.0 = x;
|
|
||||||
self.dirty = true;
|
|
||||||
}
|
|
||||||
if x > self.rect.2 {
|
|
||||||
self.rect.2 = x;
|
|
||||||
self.dirty = true;
|
|
||||||
}
|
|
||||||
if y < self.rect.1 {
|
|
||||||
self.rect.1 = y;
|
|
||||||
self.dirty = true;
|
|
||||||
}
|
|
||||||
if y > self.rect.3 {
|
|
||||||
self.rect.3 = y;
|
|
||||||
self.dirty = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn is_dirty(&self) -> bool {
|
|
||||||
self.dirty
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Component)]
|
#[derive(Component)]
|
||||||
pub struct Chunk {
|
pub struct Chunk {
|
||||||
width: usize,
|
width: usize,
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
mod falling_sand;
|
mod falling_sand;
|
||||||
|
mod util;
|
||||||
|
|
||||||
use bevy::{
|
use bevy::{
|
||||||
diagnostic::{FrameTimeDiagnosticsPlugin, LogDiagnosticsPlugin},
|
diagnostic::{FrameTimeDiagnosticsPlugin, LogDiagnosticsPlugin},
|
||||||
|
|
|
@ -0,0 +1,50 @@
|
||||||
|
#[derive(Debug, Default)]
|
||||||
|
pub struct DirtyRect {
|
||||||
|
dirty: bool,
|
||||||
|
rect: (usize, usize, usize, usize),
|
||||||
|
}
|
||||||
|
|
||||||
|
impl DirtyRect {
|
||||||
|
pub fn new() -> Self {
|
||||||
|
Self {
|
||||||
|
dirty: false,
|
||||||
|
rect: (usize::MAX, usize::MAX, usize::MIN, usize::MIN),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn range_x(&self) -> std::ops::RangeInclusive<usize> {
|
||||||
|
self.rect.0..=self.rect.2
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn range_y(&self) -> std::ops::RangeInclusive<usize> {
|
||||||
|
self.rect.1..=self.rect.3
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn reset(&mut self) {
|
||||||
|
self.dirty = false;
|
||||||
|
self.rect = (usize::MAX, usize::MAX, usize::MIN, usize::MIN);
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn add_point(&mut self, x: usize, y: usize) {
|
||||||
|
if x < self.rect.0 {
|
||||||
|
self.rect.0 = x;
|
||||||
|
self.dirty = true;
|
||||||
|
}
|
||||||
|
if x > self.rect.2 {
|
||||||
|
self.rect.2 = x;
|
||||||
|
self.dirty = true;
|
||||||
|
}
|
||||||
|
if y < self.rect.1 {
|
||||||
|
self.rect.1 = y;
|
||||||
|
self.dirty = true;
|
||||||
|
}
|
||||||
|
if y > self.rect.3 {
|
||||||
|
self.rect.3 = y;
|
||||||
|
self.dirty = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn is_dirty(&self) -> bool {
|
||||||
|
self.dirty
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue