pub struct Chunks {
pub map: HashMap<Vec2<i32>, Chunk>,
pub to_update: VecDeque<BlockChange>,
pub to_remesh: VecDeque<Vec2<i32>>,
pub to_send: VecDeque<(Vec2<i32>, MessageType)>,
pub to_save: VecDeque<Vec2<i32>>,
pub cache: HashSet<Vec2<i32>>,
/* private fields */
}
Expand description
A manager for all chunks in the Voxelize world.
Fields
map: HashMap<Vec2<i32>, Chunk>
A map of all the chunks, coords -> Chunk.
to_update: VecDeque<BlockChange>
Voxel updates waiting to be processed.
to_remesh: VecDeque<Vec2<i32>>
A list of chunks that are to be remeshed (light + mesh).
to_send: VecDeque<(Vec2<i32>, MessageType)>
A list of chunks that are done meshing and ready to be sent.
to_save: VecDeque<Vec2<i32>>
A list of chunks that are done meshing and ready to be saved, if config.save
is true.
cache: HashSet<Vec2<i32>>
A cache of what chunks has been borrowed mutable.
Implementations
sourceimpl Chunks
impl Chunks
sourcepub fn new(config: &WorldConfig) -> Self
pub fn new(config: &WorldConfig) -> Self
Create a new instance of a chunk manager.
pub fn try_load(&mut self, coords: &Vec2<i32>) -> Option<Chunk>
pub fn save(&self, coords: &Vec2<i32>) -> bool
sourcepub fn renew(&mut self, chunk: Chunk)
pub fn renew(&mut self, chunk: Chunk)
Update a chunk, removing the old chunk instance and updating with a new one.
sourcepub fn raw_mut(&mut self, coords: &Vec2<i32>) -> Option<&mut Chunk>
pub fn raw_mut(&mut self, coords: &Vec2<i32>) -> Option<&mut Chunk>
Get raw mutable chunk data.
sourcepub fn get(&self, coords: &Vec2<i32>) -> Option<&Chunk>
pub fn get(&self, coords: &Vec2<i32>) -> Option<&Chunk>
Get a chunk at a chunk coordinate. Keep in mind that this function only returns a chunk if the chunk has been fully instantiated and meshed. None is returned if not.
sourcepub fn get_mut(&mut self, coords: &Vec2<i32>) -> Option<&mut Chunk>
pub fn get_mut(&mut self, coords: &Vec2<i32>) -> Option<&mut Chunk>
Get a mutable chunk reference at a chunk coordinate. Keep in mind that this function only returns a chunk if the chunk has been fully instantiated and meshed. None is returned if not.
pub fn raw_chunk_by_voxel(&self, vx: i32, vy: i32, vz: i32) -> Option<&Chunk>
sourcepub fn raw_chunk_by_voxel_mut(
&mut self,
vx: i32,
vy: i32,
vz: i32
) -> Option<&mut Chunk>
pub fn raw_chunk_by_voxel_mut(
&mut self,
vx: i32,
vy: i32,
vz: i32
) -> Option<&mut Chunk>
Get a mutable chunk by voxel coordinates. Returns a chunk even if chunk isn’t fully instantiated.
sourcepub fn voxel_affected_chunks(&self, vx: i32, vy: i32, vz: i32) -> Vec<Vec2<i32>>ⓘNotable traits for Vec<u8, A>impl<A> Write for Vec<u8, A> where
A: Allocator,
pub fn voxel_affected_chunks(&self, vx: i32, vy: i32, vz: i32) -> Vec<Vec2<i32>>ⓘNotable traits for Vec<u8, A>impl<A> Write for Vec<u8, A> where
A: Allocator,
A: Allocator,
Get neighboring coords of a voxel coordinate.
sourcepub fn light_traversed_chunks(&self, coords: &Vec2<i32>) -> Vec<Vec2<i32>>ⓘNotable traits for Vec<u8, A>impl<A> Write for Vec<u8, A> where
A: Allocator,
pub fn light_traversed_chunks(&self, coords: &Vec2<i32>) -> Vec<Vec2<i32>>ⓘNotable traits for Vec<u8, A>impl<A> Write for Vec<u8, A> where
A: Allocator,
A: Allocator,
Get a list of chunks that light could traverse within.
sourcepub fn make_space<'a>(
&'a self,
coords: &Vec2<i32>,
margin: usize
) -> SpaceBuilder<'a>
pub fn make_space<'a>(
&'a self,
coords: &Vec2<i32>,
margin: usize
) -> SpaceBuilder<'a>
Create a voxel querying space around a chunk coordinate.
Example
// Create a space that has all voxel/light/height_map data.
let space = Chunks::make_space(0, 0, 15).needs_all().build();
sourcepub fn is_within_world(&self, coords: &Vec2<i32>) -> bool
pub fn is_within_world(&self, coords: &Vec2<i32>) -> bool
Check to see if chunk is within the world’s min/max chunk.
sourcepub fn is_chunk_ready(&self, coords: &Vec2<i32>) -> bool
pub fn is_chunk_ready(&self, coords: &Vec2<i32>) -> bool
Guard to getting a chunk, only allowing chunks to be accessed when they’re ready.
sourcepub fn clear_cache(&mut self)
pub fn clear_cache(&mut self)
Clear the mutable chunk borrowing list.
Trait Implementations
sourceimpl VoxelAccess for Chunks
impl VoxelAccess for Chunks
sourcefn get_raw_voxel(&self, vx: i32, vy: i32, vz: i32) -> u32
fn get_raw_voxel(&self, vx: i32, vy: i32, vz: i32) -> u32
Get the raw voxel value at a voxel coordinate. If chunk not found, 0 is returned.
sourcefn set_raw_voxel(&mut self, vx: i32, vy: i32, vz: i32, id: u32) -> bool
fn set_raw_voxel(&mut self, vx: i32, vy: i32, vz: i32, id: u32) -> bool
Set the raw voxel value at a voxel coordinate. Returns false couldn’t set.
sourcefn get_raw_light(&self, vx: i32, vy: i32, vz: i32) -> u32
fn get_raw_light(&self, vx: i32, vy: i32, vz: i32) -> u32
Get the raw light value at a voxel coordinate. If chunk not found, 0 is returned.
sourcefn set_raw_light(&mut self, vx: i32, vy: i32, vz: i32, level: u32) -> bool
fn set_raw_light(&mut self, vx: i32, vy: i32, vz: i32, level: u32) -> bool
Set the raw light level at a voxel coordinate. Returns false couldn’t set.
sourcefn get_sunlight(&self, vx: i32, vy: i32, vz: i32) -> u32
fn get_sunlight(&self, vx: i32, vy: i32, vz: i32) -> u32
Get the sunlight level at a voxel position. Returns 0 if chunk does not exist.
sourcefn get_max_height(&self, vx: i32, vz: i32) -> u32
fn get_max_height(&self, vx: i32, vz: i32) -> u32
Get the max height at a voxel column. Returns 0 if column does not exist.
sourcefn set_max_height(&mut self, vx: i32, vz: i32, height: u32) -> bool
fn set_max_height(&mut self, vx: i32, vz: i32, height: u32) -> bool
Set the max height at a voxel column. Does nothing if column does not exist.
sourcefn get_voxel(&self, vx: i32, vy: i32, vz: i32) -> u32
fn get_voxel(&self, vx: i32, vy: i32, vz: i32) -> u32
Get the voxel ID at a voxel coordinate. If chunk not found, 0 is returned.
sourcefn set_voxel(&mut self, vx: i32, vy: i32, vz: i32, id: u32) -> bool
fn set_voxel(&mut self, vx: i32, vy: i32, vz: i32, id: u32) -> bool
Set the voxel type at a voxel coordinate. Returns false couldn’t set.
sourcefn get_voxel_rotation(&self, vx: i32, vy: i32, vz: i32) -> BlockRotation
fn get_voxel_rotation(&self, vx: i32, vy: i32, vz: i32) -> BlockRotation
Get the voxel rotation at a voxel coordinate. Panics if chunk isn’t found.
sourcefn set_voxel_rotation(
&mut self,
vx: i32,
vy: i32,
vz: i32,
rotation: &BlockRotation
) -> bool
fn set_voxel_rotation(
&mut self,
vx: i32,
vy: i32,
vz: i32,
rotation: &BlockRotation
) -> bool
Set the voxel rotation at a voxel coordinate. Does nothing if chunk isn’t found.
sourcefn get_voxel_stage(&self, vx: i32, vy: i32, vz: i32) -> u32
fn get_voxel_stage(&self, vx: i32, vy: i32, vz: i32) -> u32
Get the voxel stage at a voxel coordinate. Panics if chunk isn’t found.
sourcefn set_voxel_stage(&mut self, vx: i32, vy: i32, vz: i32, stage: u32) -> bool
fn set_voxel_stage(&mut self, vx: i32, vy: i32, vz: i32, stage: u32) -> bool
Set the voxel stage at a voxel coordinate. Does nothing if chunk isn’t found.
sourcefn set_sunlight(&mut self, vx: i32, vy: i32, vz: i32, level: u32) -> bool
fn set_sunlight(&mut self, vx: i32, vy: i32, vz: i32, level: u32) -> bool
Set the sunlight level at a voxel coordinate. Returns false if could not set.
sourcefn get_red_light(&self, vx: i32, vy: i32, vz: i32) -> u32
fn get_red_light(&self, vx: i32, vy: i32, vz: i32) -> u32
Get the red light level at the voxel position. Zero is returned if chunk doesn’t exist.
sourcefn set_red_light(&mut self, vx: i32, vy: i32, vz: i32, level: u32) -> bool
fn set_red_light(&mut self, vx: i32, vy: i32, vz: i32, level: u32) -> bool
Set the red light level at the voxel position. Returns false if could not set.
sourcefn get_green_light(&self, vx: i32, vy: i32, vz: i32) -> u32
fn get_green_light(&self, vx: i32, vy: i32, vz: i32) -> u32
Get the green light level at the voxel position. Zero is returned if chunk doesn’t exist.
sourcefn set_green_light(&mut self, vx: i32, vy: i32, vz: i32, level: u32) -> bool
fn set_green_light(&mut self, vx: i32, vy: i32, vz: i32, level: u32) -> bool
Set the green light level at the voxel position. Returns false if could not set.
sourcefn get_blue_light(&self, vx: i32, vy: i32, vz: i32) -> u32
fn get_blue_light(&self, vx: i32, vy: i32, vz: i32) -> u32
Get the blue light level at the voxel position. Zero is returned if chunk doesn’t exist.
sourcefn set_blue_light(&mut self, vx: i32, vy: i32, vz: i32, level: u32) -> bool
fn set_blue_light(&mut self, vx: i32, vy: i32, vz: i32, level: u32) -> bool
Set the blue light level at the voxel position. Returns false if could not set.
sourcefn get_torch_light(&self, vx: i32, vy: i32, vz: i32, color: &LightColor) -> u32
fn get_torch_light(&self, vx: i32, vy: i32, vz: i32, color: &LightColor) -> u32
Get the torch light level by color at a voxel coordinate. Returns 0 if chunk does not exist.
sourcefn set_torch_light(
&mut self,
vx: i32,
vy: i32,
vz: i32,
level: u32,
color: &LightColor
) -> bool
fn set_torch_light(
&mut self,
vx: i32,
vy: i32,
vz: i32,
level: u32,
color: &LightColor
) -> bool
Set the torch light level by color at a voxel coordinate. Returns false if could not set.
sourcefn get_voxels(&self, cx: i32, cz: i32) -> Option<&Ndarray<u32>>
fn get_voxels(&self, cx: i32, cz: i32) -> Option<&Ndarray<u32>>
Get a reference of voxel n-dimensional array.
Auto Trait Implementations
impl RefUnwindSafe for Chunks
impl Send for Chunks
impl Sync for Chunks
impl Unpin for Chunks
impl UnwindSafe for Chunks
Blanket Implementations
impl<T> Any for T where
T: Any,
impl<T> Any for T where
T: Any,
fn get_type_id(&self) -> TypeId
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<T> Downcast for T where
T: Any,
impl<T> Downcast for T where
T: Any,
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
. Read more
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
. Read more
fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s. Read more
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s. Read more
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
impl<T> Pointable for T
impl<T> Pointable for T
impl<SS, SP> SupersetOf<SS> for SP where
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SP where
SS: SubsetOf<SP>,
fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct self
from the equivalent element of its
superset. Read more
fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if self
is actually part of its subset T
(and can be converted to it).
fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as self.to_subset
but without any property checks. Always succeeds.
fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts self
to the equivalent element of its superset.
sourceimpl<T> TryDefault for T where
T: Default,
impl<T> TryDefault for T where
T: Default,
sourcefn try_default() -> Result<T, String>
fn try_default() -> Result<T, String>
Tries to create the default.
sourcefn unwrap_default() -> Self
fn unwrap_default() -> Self
Calls try_default
and panics on an error case.
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more