pub struct Chunk {
pub layer_masks: Vec<TextureResource>,
/* private fields */
}Expand description
Chunk is smaller block of a terrain. Terrain can have as many chunks as you need, which always arranged in a grid. You can add chunks from any side of a terrain. Chunks could be considered as a “sub-terrain”, which could use its own set of materials for layers. This could be useful for different biomes, to prevent high amount of layers which could harm the performance.
Fields§
§layer_masks: Vec<TextureResource>Layer blending masks of the chunk.
Implementations§
Source§impl Chunk
impl Chunk
Sourcepub fn height_data(&self) -> ChunkHeightData<'_>
pub fn height_data(&self) -> ChunkHeightData<'_>
Return a view of the height data as a 2D array of f32.
Sourcepub fn create_margin(&mut self)
pub fn create_margin(&mut self)
Modify the height texture of the chunk to give it a one pixel margin around all four edges.
The Chunk::height_map_size is increased to match. The margin is initialized to zero.
Sourcepub fn local_position(&self) -> Vector2<f32>
pub fn local_position(&self) -> Vector2<f32>
Returns position of the chunk in local 2D coordinates relative to origin of the terrain.
Sourcepub fn position(&self) -> Vector3<f32>
pub fn position(&self) -> Vector3<f32>
The position of the chunk within the terrain based on its grid_position and physical_size.
Sourcepub fn grid_position(&self) -> Vector2<i32>
pub fn grid_position(&self) -> Vector2<i32>
The 2D position of the chunk within the chunk array.
Sourcepub fn heightmap(&self) -> &TextureResource
pub fn heightmap(&self) -> &TextureResource
Returns a reference to height map.
Sourcepub fn set_height_map(
&mut self,
height_map: Option<TextureResource>,
) -> Option<TextureResource>
pub fn set_height_map( &mut self, height_map: Option<TextureResource>, ) -> Option<TextureResource>
Sets new height map to the chunk. Tries to create a copy of the given texture and convert the copy into R32F format. If the conversion is successful, the resulting texture becomes the source for height data of this chunk and the new texture is returned. If the conversion fails, the argument texture is returned in its original format and the chunk is not modified.
Failure can happen if:
- The given texture is None.
- The given texture is not in the Ok state.
- The given texture is not TextureKind::Rectangle.
- The width or height is incorrect due to not matching height_map_size.
- The texture’s format is not one of the many formats that this method is capable of converting as identified by its Texture::pixel_kind.
Sourcepub fn heightmap_owned(&self) -> Vec<f32>
pub fn heightmap_owned(&self) -> Vec<f32>
Returns the height map of the terrain as an array of f32s.
Sourcepub fn replace_height_map(
&mut self,
heightmap: TextureResource,
) -> Result<(), TextureResource>
pub fn replace_height_map( &mut self, heightmap: TextureResource, ) -> Result<(), TextureResource>
Replaces the current height map with a new one. New height map must be equal with size of current.
Sourcepub fn hole_mask(&self) -> Option<&TextureResource>
pub fn hole_mask(&self) -> Option<&TextureResource>
Returns a reference to hole mask texture, if one exists.
Sourcepub fn physical_size(&self) -> Vector2<f32>
pub fn physical_size(&self) -> Vector2<f32>
Returns the size of the chunk in meters.
Sourcepub fn height_map_size(&self) -> Vector2<u32>
pub fn height_map_size(&self) -> Vector2<u32>
Returns amount of pixels in the height map along each dimension.
Sourcepub fn hole_mask_size(&self) -> Vector2<u32>
pub fn hole_mask_size(&self) -> Vector2<u32>
Returns amount of pixels in the hole mask along each dimension.
Sourcepub fn debug_draw(
&self,
transform: &Matrix4<f32>,
ctx: &mut SceneDrawingContext,
)
pub fn debug_draw( &self, transform: &Matrix4<f32>, ctx: &mut SceneDrawingContext, )
Performs debug drawing of the chunk. It draws internal quad-tree structure for debugging purposes.
Sourcepub fn update_quad_tree(&self)
pub fn update_quad_tree(&self)
Recalculates the quad tree for this chunk.
Trait Implementations§
Source§impl Reflect for Chunk
impl Reflect for Chunk
fn source_path() -> &'static str
fn type_name(&self) -> &'static str
fn doc(&self) -> &'static str
Source§fn assembly_name(&self) -> &'static str
fn assembly_name(&self) -> &'static str
#[derive(Reflect)]) to ensure that this method will return correct assembly
name. In other words - there’s no guarantee, that any implementation other than proc-macro
will return a correct name of the assembly. Alternatively, you can use env!("CARGO_PKG_NAME")
as an implementation.Source§fn type_assembly_name() -> &'static str
fn type_assembly_name() -> &'static str
#[derive(Reflect)]) to ensure that this method will return correct assembly
name. In other words - there’s no guarantee, that any implementation other than proc-macro
will return a correct name of the assembly. Alternatively, you can use env!("CARGO_PKG_NAME")
as an implementation.fn fields_info(&self, func: &mut dyn FnMut(&[FieldInfo<'_, '_>]))
fn into_any(self: Box<Self>) -> Box<dyn Any>
fn set( &mut self, value: Box<dyn Reflect>, ) -> Result<Box<dyn Reflect>, Box<dyn Reflect>>
Source§fn set_field(
&mut self,
name: &str,
value: Box<dyn Reflect>,
func: &mut dyn FnMut(Result<Box<dyn Reflect>, Box<dyn Reflect>>),
)
fn set_field( &mut self, name: &str, value: Box<dyn Reflect>, func: &mut dyn FnMut(Result<Box<dyn Reflect>, Box<dyn Reflect>>), )
#[reflect(setter = ..)] or falls back to
Reflect::field_mutfn as_any(&self, func: &mut dyn FnMut(&dyn Any))
fn as_any_mut(&mut self, func: &mut dyn FnMut(&mut dyn Any))
fn as_reflect(&self, func: &mut dyn FnMut(&dyn Reflect))
fn as_reflect_mut(&mut self, func: &mut dyn FnMut(&mut dyn Reflect))
fn fields(&self, func: &mut dyn FnMut(&[&dyn Reflect]))
fn fields_mut(&mut self, func: &mut dyn FnMut(&mut [&mut dyn Reflect]))
fn field(&self, name: &str, func: &mut dyn FnMut(Option<&dyn Reflect>))
fn field_mut( &mut self, name: &str, func: &mut dyn FnMut(Option<&mut dyn Reflect>), )
fn as_array(&self, func: &mut dyn FnMut(Option<&(dyn ReflectArray + 'static)>))
fn as_array_mut( &mut self, func: &mut dyn FnMut(Option<&mut (dyn ReflectArray + 'static)>), )
fn as_list(&self, func: &mut dyn FnMut(Option<&(dyn ReflectList + 'static)>))
fn as_list_mut( &mut self, func: &mut dyn FnMut(Option<&mut (dyn ReflectList + 'static)>), )
fn as_inheritable_variable( &self, func: &mut dyn FnMut(Option<&(dyn ReflectInheritableVariable + 'static)>), )
fn as_inheritable_variable_mut( &mut self, func: &mut dyn FnMut(Option<&mut (dyn ReflectInheritableVariable + 'static)>), )
fn as_hash_map( &self, func: &mut dyn FnMut(Option<&(dyn ReflectHashMap + 'static)>), )
fn as_hash_map_mut( &mut self, func: &mut dyn FnMut(Option<&mut (dyn ReflectHashMap + 'static)>), )
Auto Trait Implementations§
impl !Freeze for Chunk
impl !RefUnwindSafe for Chunk
impl Send for Chunk
impl Sync for Chunk
impl Unpin for Chunk
impl !UnwindSafe for Chunk
Blanket Implementations§
Source§impl<T> AsyncTaskResult for T
impl<T> AsyncTaskResult for T
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Any. Could be used to downcast a trait object
to a particular type.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Any. Could be used to downcast a trait object
to a particular type.fn into_any(self: Box<T>) -> Box<dyn Any>
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> FieldValue for Twhere
T: 'static,
impl<T> FieldValue for Twhere
T: 'static,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> MessageData for T
impl<T> MessageData for T
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
ReadEndian::read_from_little_endian().Source§impl<T> ReflectBase for Twhere
T: Reflect,
impl<T> ReflectBase for Twhere
T: Reflect,
fn as_any_raw(&self) -> &(dyn Any + 'static)
fn as_any_raw_mut(&mut self) -> &mut (dyn Any + 'static)
Source§impl<T> ResolvePath for Twhere
T: Reflect,
impl<T> ResolvePath for Twhere
T: Reflect,
fn resolve_path<'p>( &self, path: &'p str, func: &mut dyn FnMut(Result<&(dyn Reflect + 'static), ReflectPathError<'p>>), )
fn resolve_path_mut<'p>( &mut self, path: &'p str, func: &mut dyn FnMut(Result<&mut (dyn Reflect + 'static), ReflectPathError<'p>>), )
fn get_resolve_path<'p, T>(
&self,
path: &'p str,
func: &mut dyn FnMut(Result<&T, ReflectPathError<'p>>),
)where
T: Reflect,
fn get_resolve_path_mut<'p, T>(
&mut self,
path: &'p str,
func: &mut dyn FnMut(Result<&mut T, ReflectPathError<'p>>),
)where
T: Reflect,
Source§impl<T> ScriptMessagePayload for T
impl<T> ScriptMessagePayload for T
Source§fn as_any_ref(&self) -> &(dyn Any + 'static)
fn as_any_ref(&self) -> &(dyn Any + 'static)
self as &dyn AnySource§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
self as &dyn AnySource§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.