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,
impl<L, G> LoadOrGenLevelSource<L, G>where
L: LevelSource,
G: LevelSource,
Sourcepub fn new(loader: L, generator: G) -> Self
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,
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)>
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)>>
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>
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>
impl<L, G> RefUnwindSafe for LoadOrGenLevelSource<L, G>where
L: RefUnwindSafe,
G: RefUnwindSafe,
impl<L, G> Send for LoadOrGenLevelSource<L, G>
impl<L, G> Sync for LoadOrGenLevelSource<L, G>
impl<L, G> Unpin for LoadOrGenLevelSource<L, G>
impl<L, G> UnwindSafe for LoadOrGenLevelSource<L, G>where
L: UnwindSafe,
G: UnwindSafe,
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
Mutably borrows from an owned value. Read more