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 contains(&self, vx: i32, vy: i32, vz: i32) -> bool
fn contains(&self, vx: i32, vy: i32, vz: i32) -> bool
Checks to see if the voxel is contained within the voxel acces.
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.
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