Skip to main content

HierarchyCache

Struct HierarchyCache 

Source
pub struct HierarchyCache { /* private fields */ }
Expand description

Incrementally-loaded hierarchy cache.

Implementations§

Source§

impl HierarchyCache

Source

pub fn new() -> Self

Create an empty hierarchy cache.

Source

pub async fn load_root( &mut self, source: &impl ByteSource, info: &CopcInfo, ) -> Result<(), CopcError>

Load the root hierarchy page.

Source

pub async fn load_pending_pages( &mut self, source: &impl ByteSource, ) -> Result<(), CopcError>

Load the next batch of pending hierarchy pages.

Source

pub async fn load_all( &mut self, source: &impl ByteSource, info: &CopcInfo, ) -> Result<(), CopcError>

Load all pending pages (breadth-first).

Each depth level is fetched in a single ByteSource::read_ranges call, so HTTP backends that override read_ranges with parallel fetches will issue one round-trip per depth level.

Source

pub async fn load_pages_for_bounds( &mut self, source: &impl ByteSource, bounds: &Aabb, root_bounds: &Aabb, ) -> Result<(), CopcError>

Load only pending pages whose subtree intersects bounds.

Pages whose voxel key falls outside the query region are left pending for future calls. New child pages discovered during loading are evaluated in subsequent iterations, so the full relevant subtree is loaded by the time this returns.

Source

pub async fn load_pages_for_bounds_to_level( &mut self, source: &impl ByteSource, bounds: &Aabb, root_bounds: &Aabb, max_level: i32, ) -> Result<(), CopcError>

Like load_pages_for_bounds but stops at max_level — pages whose key is deeper than max_level are left pending even if they intersect the bounds.

Source

pub fn has_pending_pages(&self) -> bool

Whether there are unloaded hierarchy pages.

Source

pub fn get(&self, key: &VoxelKey) -> Option<&HierarchyEntry>

Look up a hierarchy entry by key.

Source

pub fn iter(&self) -> impl Iterator<Item = (&VoxelKey, &HierarchyEntry)>

Iterate all loaded entries.

Source

pub fn len(&self) -> usize

Number of loaded entries.

Source

pub fn is_empty(&self) -> bool

Whether no entries have been loaded.

Trait Implementations§

Source§

impl Default for HierarchyCache

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.