struct FuzzedBiomeColumn<'a> {Show 14 fields
biome_data: &'a [u16],
section_count: usize,
biome_zoom_seed: i64,
parent_x: i32,
parent_z: i32,
fract_x: f64,
fract_z: f64,
min_y: i32,
chunk_quart_x: i32,
chunk_quart_z: i32,
neighbor_biomes: &'a dyn Fn(IVec3) -> u16,
cached_parent_y: i32,
candidates: [(f64, f64); 8],
rval_after_cx: [i64; 2],
}Expand description
Column-local cache for fuzzed biome lookups (vanilla BiomeManager.getBiome()).
Within a column, parent_x, parent_z, fract_x, fract_z are constant.
The 8 Voronoi candidate fiddle values (computed via 8 serial LCG calls each)
only change when parent_y changes (every 4 blocks). This cache precomputes
the fiddle values and X/Z distance components per parent_y group, reducing
per-block work to 8 additions + 8 multiplies + 8 comparisons.
Fields§
§biome_data: &'a [u16]§section_count: usize§biome_zoom_seed: i64§parent_x: i32§parent_z: i32§fract_x: f64§fract_z: f64§min_y: i32§chunk_quart_x: i32§chunk_quart_z: i32§neighbor_biomes: &'a dyn Fn(IVec3) -> u16§cached_parent_y: i32§candidates: [(f64, f64); 8]Per-candidate cached values: (fy, xz_partial_distance).
rval_after_cx: [i64; 2]Precomputed lcg_next(seed, parent_x) and lcg_next(seed, parent_x + 1).
Implementations§
Source§impl<'a> FuzzedBiomeColumn<'a>
impl<'a> FuzzedBiomeColumn<'a>
fn new( biome_data: &'a [u16], section_count: usize, biome_zoom_seed: i64, block_x: i32, block_z: i32, min_y: i32, chunk_quart_x: i32, chunk_quart_z: i32, neighbor_biomes: &'a dyn Fn(IVec3) -> u16, ) -> Self
Sourcefn compute_cy_group(&mut self, cy: i32, high: bool)
fn compute_cy_group(&mut self, cy: i32, high: bool)
Compute candidates for a given cy, writing to either the low (bit1=0)
or high (bit1=1) slots. Shares the lcg_next(seed, cx) precomputation
and the lcg_next(_, cy) step within each cx group.
Sourcefn recompute_candidates(&mut self, parent_y: i32)
fn recompute_candidates(&mut self, parent_y: i32)
Recompute the 8 candidate fiddle values and X/Z distance for a new parent_y.
When scanning downward (parent_y decreases by 1), the old low-cy candidates
(cy=old_parent_y) match the new high-cy slots (cy=new_parent_y+1), so only
the 4 new low-cy candidates need fresh LCG computation.
Trait Implementations§
Source§impl SurfaceBiomeProvider for FuzzedBiomeColumn<'_>
impl SurfaceBiomeProvider for FuzzedBiomeColumn<'_>
Auto Trait Implementations§
impl<'a> !RefUnwindSafe for FuzzedBiomeColumn<'a>
impl<'a> !Send for FuzzedBiomeColumn<'a>
impl<'a> !Sync for FuzzedBiomeColumn<'a>
impl<'a> !UnwindSafe for FuzzedBiomeColumn<'a>
impl<'a> Freeze for FuzzedBiomeColumn<'a>
impl<'a> Unpin for FuzzedBiomeColumn<'a>
impl<'a> UnsafeUnpin for FuzzedBiomeColumn<'a>
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
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
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 moreArc<SyncMutex<>>