pub struct OctreeChunkIndex {
pub superchunk_octrees: ChunkedOctreeSet,
/* private fields */
}Expand description
A ChunkedOctreeSet that indexes the chunks of a ChunkMap. Useful for representing a clipmap.
Fields§
§superchunk_octrees: ChunkedOctreeSetAn 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§
Source§impl OctreeChunkIndex
impl OctreeChunkIndex
Sourcepub fn chunk_shape(&self) -> PointN<[i32; 3]>
pub fn chunk_shape(&self) -> PointN<[i32; 3]>
The shape of the world extent convered by a single chunk (a leaf of an octree).
Sourcepub fn superchunk_shape(&self) -> PointN<[i32; 3]>
pub fn superchunk_shape(&self) -> PointN<[i32; 3]>
The shape of the world extent covered by a single octree, i.e. all of its chunks when full.
Sourcepub fn index_chunk_map<T, Ch, Store>(
superchunk_shape: PointN<[i32; 3]>,
chunk_map: &ChunkMap<[i32; 3], T, Ch, Store>,
) -> OctreeChunkIndex
pub fn index_chunk_map<T, Ch, Store>( superchunk_shape: PointN<[i32; 3]>, chunk_map: &ChunkMap<[i32; 3], T, Ch, Store>, ) -> OctreeChunkIndex
Same as index_lod0_chunks, but using the chunk keys and chunk shape from chunk_map.
Sourcepub fn index_lod0_chunks<'a>(
superchunk_shape: PointN<[i32; 3]>,
chunk_shape: PointN<[i32; 3]>,
chunk_keys: impl Iterator<Item = &'a ChunkKey<[i32; 3]>>,
) -> OctreeChunkIndex
pub fn index_lod0_chunks<'a>( superchunk_shape: PointN<[i32; 3]>, chunk_shape: PointN<[i32; 3]>, chunk_keys: impl Iterator<Item = &'a ChunkKey<[i32; 3]>>, ) -> OctreeChunkIndex
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].
pub fn clipmap_config(&self, clip_box_radius: u16) -> ClipMapConfig3
Sourcepub fn active_clipmap_lod_chunks(
&self,
extent: &ExtentN<[i32; 3]>,
clip_box_radius: u16,
lod0_center: ChunkUnits<[i32; 3]>,
init_rx: impl FnMut(ChunkKey<[i32; 3]>),
)
pub fn active_clipmap_lod_chunks( &self, extent: &ExtentN<[i32; 3]>, clip_box_radius: u16, lod0_center: ChunkUnits<[i32; 3]>, init_rx: impl FnMut(ChunkKey<[i32; 3]>), )
Traverses all octree nodes overlapping extent to find the ChunkKey3s 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§
Source§impl Clone for OctreeChunkIndex
impl Clone for OctreeChunkIndex
Source§fn clone(&self) -> OctreeChunkIndex
fn clone(&self) -> OctreeChunkIndex
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<'de> Deserialize<'de> for OctreeChunkIndex
impl<'de> Deserialize<'de> for OctreeChunkIndex
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<OctreeChunkIndex, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<OctreeChunkIndex, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl Serialize for OctreeChunkIndex
impl Serialize for OctreeChunkIndex
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Auto Trait Implementations§
impl Freeze for OctreeChunkIndex
impl RefUnwindSafe for OctreeChunkIndex
impl Send for OctreeChunkIndex
impl Sync for OctreeChunkIndex
impl Unpin for OctreeChunkIndex
impl UnwindSafe for OctreeChunkIndex
Blanket Implementations§
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> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§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.