Struct bevy::asset::processor::AssetProcessor
source · pub struct AssetProcessor { /* private fields */ }
Expand description
A “background” asset processor that reads asset values from a source AssetSource
(which corresponds to an AssetReader
/ AssetWriter
pair),
processes them in some way, and writes them to a destination AssetSource
.
This will create .meta files (a human-editable serialized form of AssetMeta
) in the source AssetSource
for assets that
that can be loaded and/or processed. This enables developers to configure how each asset should be loaded and/or processed.
AssetProcessor
can be run in the background while a Bevy App is running. Changes to assets will be automatically detected and hot-reloaded.
Assets will only be re-processed if they have been changed. A hash of each asset source is stored in the metadata of the processed version of the asset, which is used to determine if the asset source has actually changed.
A ProcessorTransactionLog
is produced, which uses “write-ahead logging” to make the AssetProcessor
crash and failure resistant. If a failed/unfinished
transaction from a previous run is detected, the affected asset(s) will be re-processed.
AssetProcessor
can be cloned. It is backed by an Arc
so clones will share state. Clones can be freely used in parallel.
Implementations§
source§impl AssetProcessor
impl AssetProcessor
sourcepub fn new(source: &mut AssetSourceBuilders) -> AssetProcessor
pub fn new(source: &mut AssetSourceBuilders) -> AssetProcessor
Creates a new AssetProcessor
instance.
sourcepub fn server(&self) -> &AssetServer
pub fn server(&self) -> &AssetServer
The “internal” AssetServer
used by the AssetProcessor
. This is separate from the asset processor used by
the main App. It has different processor-specific configuration and a different ID space.
sourcepub async fn get_state(&self) -> ProcessorState
pub async fn get_state(&self) -> ProcessorState
Retrieves the current ProcessorState
sourcepub fn get_source<'b, 'a>(
&'a self,
id: impl Into<AssetSourceId<'b>>
) -> Result<&'a AssetSource, MissingAssetSourceError>
pub fn get_source<'b, 'a>( &'a self, id: impl Into<AssetSourceId<'b>> ) -> Result<&'a AssetSource, MissingAssetSourceError>
Retrieves the AssetSource
for this processor
pub fn sources(&self) -> &AssetSources
sourcepub fn start(_processor: Res<'_, AssetProcessor>)
pub fn start(_processor: Res<'_, AssetProcessor>)
Starts the processor in a background thread.
sourcepub fn process_assets(&self)
pub fn process_assets(&self)
Processes all assets. This will:
- For each “processed
AssetSource
: - Scan the
ProcessorTransactionLog
and recover from any failures detected - Scan the processed
AssetReader
to build the current view of already processed assets. - Scan the unprocessed
AssetReader
and remove any final processed assets that are invalid or no longer exist. - For each asset in the unprocessed
AssetReader
, kick off a new “process job”, which will process the asset (if the latest version of the asset has not been processed).
sourcepub async fn listen_for_source_change_events(&self)
pub async fn listen_for_source_change_events(&self)
Listens for changes to assets in the source AssetSource
and update state accordingly.
sourcepub fn register_processor<P>(&self, processor: P)where
P: Process,
pub fn register_processor<P>(&self, processor: P)where
P: Process,
Register a new asset processor.
sourcepub fn set_default_processor<P>(&self, extension: &str)where
P: Process,
pub fn set_default_processor<P>(&self, extension: &str)where
P: Process,
Set the default processor for the given extension
. Make sure P
is registered with AssetProcessor::register_processor
.
sourcepub fn get_default_processor(
&self,
extension: &str
) -> Option<Arc<dyn ErasedProcessor>>
pub fn get_default_processor( &self, extension: &str ) -> Option<Arc<dyn ErasedProcessor>>
Returns the default processor for the given extension
, if it exists.
sourcepub fn get_processor(
&self,
processor_type_name: &str
) -> Option<Arc<dyn ErasedProcessor>>
pub fn get_processor( &self, processor_type_name: &str ) -> Option<Arc<dyn ErasedProcessor>>
Returns the processor with the given processor_type_name
, if it exists.
Trait Implementations§
source§impl Clone for AssetProcessor
impl Clone for AssetProcessor
source§fn clone(&self) -> AssetProcessor
fn clone(&self) -> AssetProcessor
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreimpl Resource for AssetProcessor
Auto Trait Implementations§
impl !RefUnwindSafe for AssetProcessor
impl Send for AssetProcessor
impl Sync for AssetProcessor
impl Unpin for AssetProcessor
impl !UnwindSafe for AssetProcessor
Blanket Implementations§
source§impl<T, U> AsBindGroupShaderType<U> for T
impl<T, U> AsBindGroupShaderType<U> for T
source§fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> U
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
source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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
.source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.