Struct building_blocks::prelude::OctreeChunkIndex [−][src]
pub struct OctreeChunkIndex {
pub superchunk_octrees: ChunkedOctreeSet,
// some fields omitted
}
Expand description
A ChunkedOctreeSet
that indexes the chunks of a ChunkMap
. Useful for representing a clipmap.
Fields
superchunk_octrees: ChunkedOctreeSet
An unbounded set of chunk keys, but scaled down to be contiguous. For example, if the chunk shape is 16^3
, then the
chunk key [16, 32, -64]
is represented as point [1, 2, -4]
in this set.
Implementations
The shape of the world extent convered by a single chunk (a leaf of an octree).
The shape of the world extent covered by a single octree, i.e. all of its chunks when full.
pub fn index_chunk_map<T, Ch, Store>(
superchunk_shape: PointN<[i32; 3]>,
chunk_map: &ChunkMap<[i32; 3], T, Ch, Store>
) -> OctreeChunkIndex where
Store: for<'r> IterChunkKeys<'r, [i32; 3]>,
pub fn index_chunk_map<T, Ch, Store>(
superchunk_shape: PointN<[i32; 3]>,
chunk_map: &ChunkMap<[i32; 3], T, Ch, Store>
) -> OctreeChunkIndex where
Store: for<'r> IterChunkKeys<'r, [i32; 3]>,
Same as index_lod0_chunks
, but using the chunk keys and chunk shape from chunk_map
.
Create a new OctreeChunkIndex
whose octrees contain exactly the set chunk_keys
. The number of levels in an octree
corresponds to the relative sizes of the chunks and superchunks. A superchunk is a chunk of the domain that contains a
single octree of many smaller chunks. Superchunk shape, like chunk shape, must have all dimensions be powers of 2.
Because of the static limitations on OctreeSet
size, you can only have up to 6 levels of detail. This means
superchunk_shape / chunk_shape
must be less than 2 ^ [6, 6, 6] = [64, 64, 64]
. For example, if your chunk shape is
[16, 16, 16]
, then your superchunk shape can be at most [512, 512, 512]
.
Traverses all octree nodes overlapping extent
to find the ChunkKey3
s that are “active” when the clipmap is
centered at lod0_center
.
pub fn find_clipmap_chunk_updates(
&self,
extent: &ExtentN<[i32; 3]>,
clip_box_radius: u16,
old_lod0_center: ChunkUnits<[i32; 3]>,
new_lod0_center: ChunkUnits<[i32; 3]>,
update_rx: impl FnMut(LodChunkUpdate<[i32; 3]>)
)
Trait Implementations
pub fn deserialize<__D>(
__deserializer: __D
) -> Result<OctreeChunkIndex, <__D as Deserializer<'de>>::Error> where
__D: Deserializer<'de>,
pub fn deserialize<__D>(
__deserializer: __D
) -> Result<OctreeChunkIndex, <__D as Deserializer<'de>>::Error> where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
pub fn serialize<__S>(
&self,
__serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error> where
__S: Serializer,
pub fn serialize<__S>(
&self,
__serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error> where
__S: Serializer,
Serialize this value into the given Serde serializer. Read more
Auto Trait Implementations
impl RefUnwindSafe for OctreeChunkIndex
impl Send for OctreeChunkIndex
impl Sync for OctreeChunkIndex
impl Unpin for OctreeChunkIndex
impl UnwindSafe for OctreeChunkIndex
Blanket Implementations
Mutably borrows from an owned value. Read more
impl<T> Downcast for T where
T: Any,
impl<T> Downcast for T where
T: Any,
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
pub fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
pub 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
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s. Read more
pub fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
pub 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
The inverse inclusion map: attempts to construct self
from the equivalent element of its
superset. Read more
pub fn is_in_subset(&self) -> bool
pub fn is_in_subset(&self) -> bool
Checks if self
is actually part of its subset T
(and can be converted to it).
pub fn to_subset_unchecked(&self) -> SS
pub fn to_subset_unchecked(&self) -> SS
Use with care! Same as self.to_subset
but without any property checks. Always succeeds.
pub fn from_subset(element: &SS) -> SP
pub fn from_subset(element: &SS) -> SP
The inclusion map: converts self
to the equivalent element of its superset.