Skip to main content

ChunkGenerator

Struct ChunkGenerator 

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

Deterministic terrain generator for one VoxelWorld.

Constructed once from the world’s seed and chunk dimensions; generate produces the block array for any chunk on demand.

Implementations§

Source§

impl ChunkGenerator

Source

pub fn new(seed: u64, chunk_blocks: [u32; 3], palette_len: u32) -> Self

A generator for a world with the given seed, chunk dimensions, and palette length.

By the VoxelWorld palette convention index 0 is air, 1 the surface block, and 2 (when the palette has it) the subsurface block; a shorter palette falls back to index 1 for subsurface.

Source

pub fn generate(&self, coord: ChunkCoord) -> Vec<u32>

Generate the dense block array for chunk coord.

The result has length dx*dy*dz with the layout index = x + y*dx + z*dx*dy, exactly what the voxel mesher expects. A column is solid up to its noise-derived surface height and air above.

Source

pub fn surface_height_world(&self, wx: i32, wz: i32) -> i32

Surface block height (topmost solid block index) of the column at world block coordinate (wx, wz), clamped to [0, chunk_height-1].

Public so the distant-chunk impostor mesher can sample the terrain surface on a coarse grid without paying for a full dense block array. Because it keys on world coordinates (like generate), two impostor chunks sample identical heights along their shared edge, so their coarse surfaces meet watertight.

Source

pub fn surface_palette_index(&self) -> u32

Palette index of the surface (topmost) block: 1 when the palette has a dedicated surface block, else 0. The impostor mesher uses it to pick the surface block’s atlas UVs so impostors texture like the full chunks.

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> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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 = !

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.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more