Struct LoadOrGenLevelSource

Source
pub struct LoadOrGenLevelSource<L, G> { /* private fields */ }
Expand description

A load or generate LevelSource variant.

This can be used for exemple with an anvil region source as the loader and a super-flat generator as generator. In this case the generator will be called only for chunks that are not supported by the loader (returned UnsupportedChunkPosition error).

Implementations§

Source§

impl<L, G> LoadOrGenLevelSource<L, G>
where L: LevelSource, G: LevelSource,

Source

pub fn new(loader: L, generator: G) -> Self

Construct a new load or generate LevelSource. You should ensure that the given sources does not return UnsupportedOperation for request_chunk_load. If they does, this source will also return this type of error when requesting chunk load and then will be unusable.

Trait Implementations§

Source§

impl<L, G> LevelSource for LoadOrGenLevelSource<L, G>
where L: LevelSource, G: LevelSource,

Source§

fn request_chunk_load( &mut self, req: ChunkLoadRequest, ) -> Result<(), (LevelSourceError, ChunkLoadRequest)>

Request loading of the chunk at the given position. If you return an error, you must return back the given ChunkInfo together with the LevelSourceError. If you return Ok(()) you must give a result later when calling poll_chunk. This operation must be non-blocking.
Source§

fn poll_chunk( &mut self, ) -> Option<Result<ProtoChunk, (LevelSourceError, ChunkLoadRequest)>>

Poll the next loaded chunk that is ready to be inserted into the level’s chunk storage. Every requested load chunk request_chunk_load method that returned Ok(()) should return some some result here, even if it’s an error. This operation must be non-blocking.
Source§

fn request_chunk_save( &mut self, req: ChunkSaveRequest, ) -> Result<(), LevelSourceError>

Request saving of the chunk at the given position. This operation must be non-blocking.

Auto Trait Implementations§

§

impl<L, G> Freeze for LoadOrGenLevelSource<L, G>
where L: Freeze, G: Freeze,

§

impl<L, G> RefUnwindSafe for LoadOrGenLevelSource<L, G>

§

impl<L, G> Send for LoadOrGenLevelSource<L, G>
where L: Send, G: Send,

§

impl<L, G> Sync for LoadOrGenLevelSource<L, G>
where L: Sync, G: Sync,

§

impl<L, G> Unpin for LoadOrGenLevelSource<L, G>
where L: Unpin, G: Unpin,

§

impl<L, G> UnwindSafe for LoadOrGenLevelSource<L, G>
where L: UnwindSafe, G: UnwindSafe,

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

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