Skip to main content

StreamRadius

Struct StreamRadius 

Source
pub struct StreamRadius {
    pub r_active: f64,
    pub r_evict: f64,
}
Expand description

Per-grid streaming activity / eviction radii (S7.1).

Both values are in grid-local voxel units — the same scale as a GridLocalPos::voxel coordinate. The math falls out cleanly from there: chunks span fixed integer voxel extents and the camera’s grid-local position is also expressed in voxels.

Semantics inside crate::Scene::pump_streaming_sync:

  • A chunk whose AABB-to-camera distance is ≤ r_active MUST be loaded; if absent + a generator is attached, it gets streamed in via crate::Grid::ensure_chunk_generated.
  • A chunk whose AABB-to-camera distance is > r_evict is dropped from the chunk map.
  • Chunks in the hysteresis band (r_active, r_evict] are neither streamed in nor evicted — they’re left as-is. The gap prevents a camera oscillating near a boundary from thrashing generation + eviction.

The Default / Self::DISABLED value is r_active = 0, r_evict = ∞: crate::Scene::pump_streaming_sync is a no-op. Existing grids keep the pre-S7 “absent stays absent, present stays present” behaviour until a caller opts in.

Fields§

§r_active: f64

Chunks closer than this (grid-local voxels, AABB distance) are streamed in.

§r_evict: f64

Chunks farther than this (grid-local voxels, AABB distance) are evicted. Must be ≥ r_active.

Implementations§

Source§

impl StreamRadius

Source

pub const DISABLED: Self

r_active = 0, r_evict = ∞pump_streaming_sync never streams a chunk in or evicts one. The default for pre-S7.1 grids.

Source

pub fn new(r_active: f64, r_evict: f64) -> Self

New radius pair. Requires r_evict >= r_active so the hysteresis band is well-formed (or empty when ==).

§Panics

Panics if r_evict < r_active, if r_active is NaN or negative, or if r_evict is negative. NaN and negative radii are policy bugs — failing loud at construction beats silently degenerating chunk-AABB tests later.

Source

pub fn is_disabled(self) -> bool

true for the Self::DISABLED sentinel pair. Lets pump_streaming_sync skip the per-grid pass cheaply when streaming is off.

Trait Implementations§

Source§

impl Clone for StreamRadius

Source§

fn clone(&self) -> StreamRadius

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for StreamRadius

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for StreamRadius

Source§

fn default() -> Self

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

impl PartialEq for StreamRadius

Source§

fn eq(&self, other: &StreamRadius) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for StreamRadius

Source§

impl StructuralPartialEq for StreamRadius

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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 more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.