|
|
@ -1,4 +1,7 @@ |
|
|
|
use std::ops::{self, Index, IndexMut}; |
|
|
|
use std::{ |
|
|
|
|
|
|
|
num::NonZeroU32, |
|
|
|
|
|
|
|
ops::{self, Index, IndexMut}, |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
use bevy::{ |
|
|
|
use bevy::{ |
|
|
|
ecs::component::Component, |
|
|
|
ecs::component::Component, |
|
|
@ -8,11 +11,15 @@ use bevy::{ |
|
|
|
use overload::overload; |
|
|
|
use overload::overload; |
|
|
|
|
|
|
|
|
|
|
|
use super::{BlockPos, BlockRegion, ChunkRegion}; |
|
|
|
use super::{BlockPos, BlockRegion, ChunkRegion}; |
|
|
|
|
|
|
|
use crate::bloxel::math::USize3; |
|
|
|
|
|
|
|
|
|
|
|
pub const CHUNK_SHIFT: i32 = 4; |
|
|
|
pub const CHUNK_SHIFT: i32 = 4; |
|
|
|
pub const CHUNK_MASK: i32 = !(!0 << CHUNK_SHIFT); // = 0b1111
|
|
|
|
pub const CHUNK_MASK: i32 = !(!0 << CHUNK_SHIFT); // = 0b1111
|
|
|
|
pub const CHUNK_LENGTH: usize = 1 << CHUNK_SHIFT; // = 16
|
|
|
|
pub const CHUNK_LENGTH: usize = 1 << CHUNK_SHIFT; // = 16
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pub const CHUNK_SIZE: USize3 = |
|
|
|
|
|
|
|
USize3::splat(unsafe { NonZeroU32::new_unchecked(CHUNK_LENGTH as u32) }); |
|
|
|
|
|
|
|
|
|
|
|
pub const CHUNK_MAX: IVec3 = IVec3::splat((CHUNK_LENGTH - 1) as i32); |
|
|
|
pub const CHUNK_MAX: IVec3 = IVec3::splat((CHUNK_LENGTH - 1) as i32); |
|
|
|
|
|
|
|
|
|
|
|
#[derive(Component, Clone, Copy, PartialEq, Eq, Hash, Debug)] |
|
|
|
#[derive(Component, Clone, Copy, PartialEq, Eq, Hash, Debug)] |
|
|
|