Struct bevy::asset::processor::AssetProcessor
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§
§impl AssetProcessor
impl AssetProcessor
pub fn new(source: &mut AssetSourceBuilders) -> AssetProcessor
pub fn new(source: &mut AssetSourceBuilders) -> AssetProcessor
Creates a new AssetProcessor
instance.
pub 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.
pub async fn get_state(&self) -> ProcessorState
pub async fn get_state(&self) -> ProcessorState
Retrieves the current ProcessorState
pub 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
pub fn start(_processor: Res<'_, AssetProcessor>)
pub fn start(_processor: Res<'_, AssetProcessor>)
Starts the processor in a background thread.
pub 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).
pub 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.
pub 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.
pub 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
.
pub fn get_default_processor(
&self,
extension: &str
) -> Option<Arc<dyn ErasedProcessor, Global>>
pub fn get_default_processor( &self, extension: &str ) -> Option<Arc<dyn ErasedProcessor, Global>>
Returns the default processor for the given extension
, if it exists.
pub fn get_processor(
&self,
processor_type_name: &str
) -> Option<Arc<dyn ErasedProcessor, Global>>
pub fn get_processor( &self, processor_type_name: &str ) -> Option<Arc<dyn ErasedProcessor, Global>>
Returns the processor with the given processor_type_name
, if it exists.
Trait Implementations§
§impl Clone for AssetProcessor
impl Clone for AssetProcessor
§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 AssetProcessorwhere AssetProcessor: Send + Sync + 'static,
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§
§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
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
§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>
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>
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)
&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)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.