pub trait Process: Send + Sync + Sized + 'static {
type Settings: Settings + Default + Serialize + for<'a> Deserialize<'a>;
type OutputLoader: AssetLoader;
// Required method
fn process<'a>(
&'a self,
context: &'a mut ProcessContext<'_>,
meta: AssetMeta<(), Self>,
writer: &'a mut (dyn AsyncWrite + Send + Sync + Unpin + 'static)
) -> Pin<Box<dyn Future<Output = Result<<Self::OutputLoader as AssetLoader>::Settings, ProcessError>> + Send + 'a>>;
}
Expand description
Asset “processor” logic that reads input asset bytes (stored on ProcessContext
), processes the value in some way,
and then writes the final processed bytes with Writer
. The resulting bytes must be loadable with the given Process::OutputLoader
.
This is a “low level”, maximally flexible interface. Most use cases are better served by the LoadTransformAndSave
implementation
of Process
.
Required Associated Types§
sourcetype Settings: Settings + Default + Serialize + for<'a> Deserialize<'a>
type Settings: Settings + Default + Serialize + for<'a> Deserialize<'a>
The configuration / settings used to process the asset. This will be stored in the AssetMeta
and is user-configurable per-asset.
sourcetype OutputLoader: AssetLoader
type OutputLoader: AssetLoader
The AssetLoader
that will be used to load the final processed asset.
Required Methods§
sourcefn process<'a>(
&'a self,
context: &'a mut ProcessContext<'_>,
meta: AssetMeta<(), Self>,
writer: &'a mut (dyn AsyncWrite + Send + Sync + Unpin + 'static)
) -> Pin<Box<dyn Future<Output = Result<<Self::OutputLoader as AssetLoader>::Settings, ProcessError>> + Send + 'a>>
fn process<'a>( &'a self, context: &'a mut ProcessContext<'_>, meta: AssetMeta<(), Self>, writer: &'a mut (dyn AsyncWrite + Send + Sync + Unpin + 'static) ) -> Pin<Box<dyn Future<Output = Result<<Self::OutputLoader as AssetLoader>::Settings, ProcessError>> + Send + 'a>>
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
.
Object Safety§
Implementations on Foreign Types§
source§impl Process for ()
impl Process for ()
The () processor should never be called. This implementation exists to make the meta format nicer to work with.