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) -> Self
pub fn new(source: &mut AssetSourceBuilders) -> Self
Creates a new AssetProcessor
instance.
Sourcepub fn data(&self) -> &Arc<AssetProcessorData>
pub fn data(&self) -> &Arc<AssetProcessorData>
Gets a reference to the Arc
containing the AssetProcessorData
.
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<'a>(
&self,
id: impl Into<AssetSourceId<'a>>,
) -> Result<&AssetSource, MissingAssetSourceError>
pub fn get_source<'a>( &self, id: impl Into<AssetSourceId<'a>>, ) -> Result<&AssetSource, MissingAssetSourceError>
Retrieves the AssetSource
for this processor
pub fn sources(&self) -> &AssetSources
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: Process>(&self, processor: P)
pub fn register_processor<P: Process>(&self, processor: P)
Register a new asset processor.
Sourcepub fn set_default_processor<P: Process>(&self, extension: &str)
pub fn set_default_processor<P: Process>(&self, extension: &str)
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 Freeze for AssetProcessor
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> 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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more