Struct veloren_world::sim::WorldSim

source ·
pub struct WorldSim {
    pub seed: u32,
    map_size_lg: MapSizeLg,
    pub max_height: f32,
    pub(crate) chunks: Vec<SimChunk>,
    pub(crate) _locations: Vec<Location>,
    pub(crate) gen_ctx: GenCtx,
    pub rng: ChaChaRng,
    pub(crate) calendar: Option<Calendar>,
}

Fields§

§seed: u32§map_size_lg: MapSizeLg

Base 2 logarithm of the map size.

§max_height: f32

Maximum height above sea level of any chunk in the map (not including post-erosion warping, cliffs, and other things like that).

§chunks: Vec<SimChunk>§_locations: Vec<Location>§gen_ctx: GenCtx§rng: ChaChaRng§calendar: Option<Calendar>

Implementations§

source§

impl WorldSim

source

pub fn generate( seed: u32, opts: WorldOpts, threadpool: &ThreadPool, stage_report: &dyn Fn(WorldSimStage) ) -> Self

source

pub const fn map_size_lg(&self) -> MapSizeLg

source

pub fn get_size(&self) -> Vec2<u32>

source

pub fn get_aabr(&self) -> Aabr<i32>

source

pub fn generate_oob_chunk(&self) -> TerrainChunk

source

pub fn approx_chunk_terrain_normal( &self, chunk_pos: Vec2<i32> ) -> Option<Vec3<f32>>

source

pub fn get_map( &self, index: IndexRef<'_>, calendar: Option<&Calendar> ) -> WorldMapMsg

Draw a map of the world based on chunk information. Returns a buffer of u32s.

source

pub fn generate_cliffs(&mut self)

source

pub fn seed_elements(&mut self)

Prepare the world for simulation

source

pub fn get(&self, chunk_pos: Vec2<i32>) -> Option<&SimChunk>

source

pub fn get_gradient_approx(&self, chunk_pos: Vec2<i32>) -> Option<f32>

source

pub fn get_surface_alt_approx(&self, wpos: Vec2<i32>) -> f32

Get the altitude of the surface, could be water or ground.

source

pub fn get_alt_approx(&self, wpos: Vec2<i32>) -> Option<f32>

source

pub fn get_wpos(&self, wpos: Vec2<i32>) -> Option<&SimChunk>

source

pub fn get_mut(&mut self, chunk_pos: Vec2<i32>) -> Option<&mut SimChunk>

source

pub fn get_base_z(&self, chunk_pos: Vec2<i32>) -> Option<f32>

source

pub fn get_interpolated<T, F>(&self, pos: Vec2<i32>, f: F) -> Option<T>
where T: Copy + Default + Add<Output = T> + Mul<f32, Output = T>, F: FnMut(&SimChunk) -> T,

source

pub fn get_interpolated_monotone<T, F>(&self, pos: Vec2<i32>, f: F) -> Option<T>
where T: Copy + Default + Signed + Float + Add<Output = T> + Mul<f32, Output = T>, F: FnMut(&SimChunk) -> T,

M. Steffen splines.

A more expensive cubic interpolation function that can preserve monotonicity between points. This is useful if you rely on relative differences between endpoints being preserved at all interior points. For example, we use this with riverbeds (and water height on along rivers) to maintain the invariant that the rivers always flow downhill at interior points (not just endpoints), without needing to flatten out the river.

source

pub fn get_interpolated_bilinear<T, F>(&self, pos: Vec2<i32>, f: F) -> Option<T>
where T: Copy + Default + Signed + Float + Add<Output = T> + Mul<f32, Output = T>, F: FnMut(&SimChunk) -> T,

Bilinear interpolation.

Linear interpolation in both directions (i.e. quadratic interpolation).

source

pub fn get_nearest_ways<'a, M: Clone + Lerp<Output = M>>( &'a self, wpos: Vec2<i32>, get_way: &'a impl Fn(&SimChunk) -> Option<(Way, M)> ) -> impl Iterator<Item = NearestWaysData<M, impl FnOnce() -> Vec2<f32>>> + 'a

source

pub fn get_nearest_way<M: Clone + Lerp<Output = M>>( &self, wpos: Vec2<i32>, get_way: impl Fn(&SimChunk) -> Option<(Way, M)> ) -> Option<(f32, Vec2<f32>, M, Vec2<f32>)>

Return the distance to the nearest way in blocks, along with the closest point on the way, the way metadata, and the tangent vector of that way.

source

pub fn get_nearest_path( &self, wpos: Vec2<i32> ) -> Option<(f32, Vec2<f32>, Path, Vec2<f32>)>

source

pub fn get_nearest_cave( &self, wpos: Vec2<i32> ) -> Option<(f32, Vec2<f32>, Cave, Vec2<f32>)>

source

pub fn make_forest_lottery( &self, wpos: Vec2<i32> ) -> Lottery<Option<ForestKind>>

Create a [Lottery<Option<ForestKind>>] that generates ForestKinds according to the conditions at the given position. If no or fewer trees are appropriate for the conditions, None may be generated.

source

pub fn get_near_trees( &self, wpos: Vec2<i32> ) -> impl Iterator<Item = TreeAttr> + '_

WARNING: Not currently used by the tree layer. Needs to be reworked. Return an iterator over candidate tree positions (note that only some of these will become trees since environmental parameters may forbid them spawning).

source

pub fn get_area_trees( &self, wpos_min: Vec2<i32>, wpos_max: Vec2<i32> ) -> impl Iterator<Item = TreeAttr> + '_

source§

impl WorldSim

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
§

impl<T, U> Cast<U> for T
where U: FromCast<T>,

§

fn cast(self) -> U

Numeric cast from self to T.
§

impl<T> Conv for T

§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
§

impl<T> FmtForward for T

§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> FromCast<T> for T

§

fn from_cast(t: T) -> T

Numeric cast from T to Self.
§

impl<T> Instrument for T

§

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

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

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.

§

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

§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

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

Initializes a with the given initializer. Read more
§

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

Dereferences the given pointer. Read more
§

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

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

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

impl<T> Same for T

§

type Output = T

Should always be Self
§

impl<Context> SubContext<Context> for Context

§

fn sub_context(self) -> Context

§

impl<T> Tap for T

§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
source§

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

§

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>,

§

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

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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

impl<T> Event for T
where T: Send + Sync + 'static,

§

impl<T> Resource for T
where T: Any + Send + Sync,