bevy_asset::processor

Trait Process

Source
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 Writer,
    ) -> impl ConditionalSendFuture<Output = Result<<Self::OutputLoader as AssetLoader>::Settings, ProcessError>>;
}
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§

Source

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.

Source

type OutputLoader: AssetLoader

The AssetLoader that will be used to load the final processed asset.

Required Methods§

Source

fn process<'a>( &'a self, context: &'a mut ProcessContext<'_>, meta: AssetMeta<(), Self>, writer: &'a mut Writer, ) -> impl ConditionalSendFuture<Output = Result<<Self::OutputLoader as AssetLoader>::Settings, ProcessError>>

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.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl Process for ()

The () processor should never be called. This implementation exists to make the meta format nicer to work with.

Source§

type Settings = ()

Source§

type OutputLoader = ()

Source§

async fn process<'a>( &'a self, _context: &'a mut ProcessContext<'_>, _meta: AssetMeta<(), Self>, _writer: &'a mut Writer, ) -> Result<(), ProcessError>

Implementors§

Source§

impl<Loader, Transformer, Saver> Process for LoadTransformAndSave<Loader, Transformer, Saver>
where Loader: AssetLoader, Transformer: AssetTransformer<AssetInput = Loader::Asset>, Saver: AssetSaver<Asset = Transformer::AssetOutput>,

Source§

impl<Loader: AssetLoader, Saver: AssetSaver<Asset = Loader::Asset>> Process for LoadAndSave<Loader, Saver>