Struct bevy::asset::processor::LoadAndSave
pub struct LoadAndSave<L, S>where
L: AssetLoader,
S: AssetSaver<Asset = <L as AssetLoader>::Asset>,{ /* private fields */ }
Expand description
A flexible Process
implementation that loads the source Asset
using the L
AssetLoader
, then
saves that L
asset using the S
AssetSaver
.
When creating custom processors, it is generally recommended to use the LoadAndSave
Process
implementation,
as it encourages you to write both an AssetLoader
capable of loading assets without processing enabled and
an AssetSaver
that allows you to efficiently process that asset type when that is desirable by users. However you can
also implement Process
directly if LoadAndSave
feels limiting or unnecessary.
This uses LoadAndSaveSettings
to configure the processor.
Trait Implementations§
§impl<L, S> From<S> for LoadAndSave<L, S>where
L: AssetLoader,
S: AssetSaver<Asset = <L as AssetLoader>::Asset>,
impl<L, S> From<S> for LoadAndSave<L, S>where L: AssetLoader, S: AssetSaver<Asset = <L as AssetLoader>::Asset>,
§fn from(value: S) -> LoadAndSave<L, S>
fn from(value: S) -> LoadAndSave<L, S>
Converts to this type from the input type.
§impl<Loader, Saver> Process for LoadAndSave<Loader, Saver>where
Loader: AssetLoader,
Saver: AssetSaver<Asset = <Loader as AssetLoader>::Asset>,
impl<Loader, Saver> Process for LoadAndSave<Loader, Saver>where Loader: AssetLoader, Saver: AssetSaver<Asset = <Loader as AssetLoader>::Asset>,
§type Settings = LoadAndSaveSettings<<Loader as AssetLoader>::Settings, <Saver as AssetSaver>::Settings>
type Settings = LoadAndSaveSettings<<Loader as AssetLoader>::Settings, <Saver as AssetSaver>::Settings>
The configuration / settings used to process the asset. This will be stored in the
AssetMeta
and is user-configurable per-asset.§type OutputLoader = <Saver as AssetSaver>::OutputLoader
type OutputLoader = <Saver as AssetSaver>::OutputLoader
The
AssetLoader
that will be used to load the final processed asset.§fn process<'a>(
&'a self,
context: &'a mut ProcessContext<'_>,
meta: AssetMeta<(), LoadAndSave<Loader, Saver>>,
writer: &'a mut (dyn AsyncWrite + Sync + Unpin + Send + 'static)
) -> Pin<Box<dyn Future<Output = Result<<<LoadAndSave<Loader, Saver> as Process>::OutputLoader as AssetLoader>::Settings, ProcessError>> + Send + 'a, Global>>
fn process<'a>( &'a self, context: &'a mut ProcessContext<'_>, meta: AssetMeta<(), LoadAndSave<Loader, Saver>>, writer: &'a mut (dyn AsyncWrite + Sync + Unpin + Send + 'static) ) -> Pin<Box<dyn Future<Output = Result<<<LoadAndSave<Loader, Saver> as Process>::OutputLoader as AssetLoader>::Settings, ProcessError>> + Send + 'a, Global>>
Processes the asset stored on
context
in some way using the settings stored on meta
. The results are written to writer
. The
final written processed asset is loadable using Process::OutputLoader
. This load will use the returned AssetLoader::Settings
.Auto Trait Implementations§
impl<L, S> RefUnwindSafe for LoadAndSave<L, S>where S: RefUnwindSafe,
impl<L, S> Send for LoadAndSave<L, S>
impl<L, S> Sync for LoadAndSave<L, S>
impl<L, S> Unpin for LoadAndSave<L, S>where S: Unpin,
impl<L, S> UnwindSafe for LoadAndSave<L, S>where S: UnwindSafe,
Blanket Implementations§
§impl<T, U> AsBindGroupShaderType<U> for Twhere
U: ShaderType,
&'a T: for<'a> Into<U>,
impl<T, U> AsBindGroupShaderType<U> for Twhere U: ShaderType, &'a T: for<'a> Into<U>,
§fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> U
Return the
T
ShaderType
for self
. When used in AsBindGroup
derives, it is safe to assume that all images in self
exist.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
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere T: Any,
§fn into_any(self: Box<T, Global>) -> Box<dyn Any, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any, Global>
Convert
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T, Global>) -> Rc<dyn Any, Global>
fn into_any_rc(self: Rc<T, Global>) -> Rc<dyn Any, Global>
Convert
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.§impl<P> ErasedProcessor for Pwhere
P: Process,
impl<P> ErasedProcessor for Pwhere P: Process,
§fn process<'a>(
&'a self,
context: &'a mut ProcessContext<'_>,
meta: Box<dyn AssetMetaDyn, Global>,
writer: &'a mut (dyn AsyncWrite + Sync + Unpin + Send + 'static)
) -> Pin<Box<dyn Future<Output = Result<Box<dyn AssetMetaDyn, Global>, ProcessError>> + Send + 'a, Global>>
fn process<'a>( &'a self, context: &'a mut ProcessContext<'_>, meta: Box<dyn AssetMetaDyn, Global>, writer: &'a mut (dyn AsyncWrite + Sync + Unpin + Send + 'static) ) -> Pin<Box<dyn Future<Output = Result<Box<dyn AssetMetaDyn, Global>, ProcessError>> + Send + 'a, Global>>
Type-erased variant of
Process::process
.§fn deserialize_meta(
&self,
meta: &[u8]
) -> Result<Box<dyn AssetMetaDyn, Global>, DeserializeMetaError>
fn deserialize_meta( &self, meta: &[u8] ) -> Result<Box<dyn AssetMetaDyn, Global>, DeserializeMetaError>
§fn default_meta(&self) -> Box<dyn AssetMetaDyn, Global>
fn default_meta(&self) -> Box<dyn AssetMetaDyn, Global>
§impl<T> FromFd for Twhere
T: From<OwnedFd>,
impl<T> FromFd for Twhere T: From<OwnedFd>,
§impl<T> FromFilelike for Twhere
T: From<OwnedFd>,
impl<T> FromFilelike for Twhere T: From<OwnedFd>,
§fn from_filelike(owned: OwnedFd) -> T
fn from_filelike(owned: OwnedFd) -> T
Constructs a new instance of
Self
from the given filelike object. Read more§fn from_into_filelike<Owned>(owned: Owned) -> Twhere
Owned: IntoFilelike,
fn from_into_filelike<Owned>(owned: Owned) -> Twhere Owned: IntoFilelike,
Constructs a new instance of
Self
from the given filelike object
converted from into_owned
. Read more§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
§impl<T> FromSocketlike for Twhere
T: From<OwnedFd>,
impl<T> FromSocketlike for Twhere T: From<OwnedFd>,
§fn from_socketlike(owned: OwnedFd) -> T
fn from_socketlike(owned: OwnedFd) -> T
Constructs a new instance of
Self
from the given socketlike object.§fn from_into_socketlike<Owned>(owned: Owned) -> Twhere
Owned: IntoSocketlike,
fn from_into_socketlike<Owned>(owned: Owned) -> Twhere Owned: IntoSocketlike,
Constructs a new instance of
Self
from the given socketlike object
converted from into_owned
.