pub struct Assets<A: Asset> { /* private fields */ }Expand description
Stores Asset values identified by their AssetId.
Assets identified by AssetId::Index will be stored in a “dense” vec-like storage. This is more efficient, but it means that
the assets can only be identified at runtime. This is the default behavior.
Assets identified by AssetId::Uuid will be stored in a hashmap. This is less efficient, but it means that the assets can be referenced
at compile time.
This tracks (and queues) AssetEvent events whenever changes to the collection occur.
To check whether the asset used by a given component has changed (due to a change in the handle or the underlying asset)
use the AssetChanged query filter.
Implementations§
Source§impl<A: Asset> Assets<A>
impl<A: Asset> Assets<A>
Sourcepub fn get_handle_provider(&self) -> AssetHandleProvider
pub fn get_handle_provider(&self) -> AssetHandleProvider
Retrieves an AssetHandleProvider capable of reserving new Handle values for assets that will be stored in this
collection.
Sourcepub fn reserve_handle(&self) -> Handle<A>
pub fn reserve_handle(&self) -> Handle<A>
Reserves a new Handle for an asset that will be stored in this collection.
Sourcepub fn insert(
&mut self,
id: impl Into<AssetId<A>>,
asset: A,
) -> Result<(), InvalidGenerationError>
pub fn insert( &mut self, id: impl Into<AssetId<A>>, asset: A, ) -> Result<(), InvalidGenerationError>
Inserts the given asset, identified by the given id. If an asset already exists for
id, it will be replaced.
Note: This will never return an error for UUID asset IDs.
Sourcepub fn get_or_insert_with(
&mut self,
id: impl Into<AssetId<A>>,
insert_fn: impl FnOnce() -> A,
) -> Result<&mut A, InvalidGenerationError>
pub fn get_or_insert_with( &mut self, id: impl Into<AssetId<A>>, insert_fn: impl FnOnce() -> A, ) -> Result<&mut A, InvalidGenerationError>
Retrieves an Asset stored for the given id if it exists. If it does not exist, it will
be inserted using insert_fn.
Note: This will never return an error for UUID asset IDs.
Sourcepub fn contains(&self, id: impl Into<AssetId<A>>) -> bool
pub fn contains(&self, id: impl Into<AssetId<A>>) -> bool
Returns true if the id exists in this collection. Otherwise it returns false.
Sourcepub fn add(&mut self, asset: impl Into<A>) -> Handle<A>
pub fn add(&mut self, asset: impl Into<A>) -> Handle<A>
Adds the given asset and allocates a new strong Handle for it.
Sourcepub fn get_strong_handle(&mut self, id: AssetId<A>) -> Option<Handle<A>>
pub fn get_strong_handle(&mut self, id: AssetId<A>) -> Option<Handle<A>>
Upgrade an AssetId into a strong Handle that will prevent asset drop.
Returns None if the provided id is not part of this Assets collection.
For example, it may have been dropped earlier.
Sourcepub fn get_mut_untracked(&mut self, id: impl Into<AssetId<A>>) -> Option<&mut A>
pub fn get_mut_untracked(&mut self, id: impl Into<AssetId<A>>) -> Option<&mut A>
Retrieves a mutable reference to the Asset with the given id, if it exists.
This is the same as Assets::get_mut except it doesn’t emit AssetEvent::Modified.
Sourcepub fn remove_untracked(&mut self, id: impl Into<AssetId<A>>) -> Option<A>
pub fn remove_untracked(&mut self, id: impl Into<AssetId<A>>) -> Option<A>
Removes (and returns) the Asset with the given id, if it exists. This skips emitting AssetEvent::Removed.
Note that this supports anything that implements Into<AssetId<A>>, which includes Handle and AssetId.
This is the same as Assets::remove except it doesn’t emit AssetEvent::Removed.
Sourcepub fn iter_mut(&mut self) -> AssetsMutIterator<'_, A> ⓘ
pub fn iter_mut(&mut self) -> AssetsMutIterator<'_, A> ⓘ
Sourcepub fn track_assets(
assets: ResMut<'_, Self>,
asset_server: Res<'_, AssetServer>,
)
pub fn track_assets( assets: ResMut<'_, Self>, asset_server: Res<'_, AssetServer>, )
A system that synchronizes the state of assets in this collection with the AssetServer. This manages
Handle drop events.
Trait Implementations§
Auto Trait Implementations§
impl<A> Freeze for Assets<A>
impl<A> RefUnwindSafe for Assets<A>where
A: RefUnwindSafe,
impl<A> Send for Assets<A>
impl<A> Sync for Assets<A>
impl<A> Unpin for Assets<A>where
A: Unpin,
impl<A> UnwindSafe for Assets<A>where
A: UnwindSafe,
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> 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>, which can then be
downcast into Box<dyn 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>, which 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> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere
T: Default,
Source§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Creates Self using default().
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