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