pub struct Assets<T>where
T: Asset,{ /* private fields */ }
Expand description
Stores Assets of a given type and tracks changes to them.
Each asset is mapped by a unique HandleId
, allowing any Handle
with the same
HandleId
to access it. These assets remain loaded for as long as a Strong handle to that
asset exists.
To store a reference to an asset without forcing it to stay loaded, you can use a Weak handle.
To make a Weak handle a Strong one, use Assets::get_handle
or pass the Assets
collection
into the handle’s make_strong
method.
Remember, if there are no Strong handles for an asset (i.e. they have all been dropped), the asset will unload. Make sure you always have a Strong handle when you want to keep an asset loaded!
Implementations§
§impl<T> Assets<T>where
T: Asset,
impl<T> Assets<T>where
T: Asset,
pub fn add(&mut self, asset: T) -> Handle<T>
pub fn add(&mut self, asset: T) -> Handle<T>
Adds an asset to the collection, returning a Strong handle to that asset.
Events
pub fn set<H>(&mut self, handle: H, asset: T) -> Handle<T>where
H: Into<HandleId>,
pub fn set<H>(&mut self, handle: H, asset: T) -> Handle<T>where
H: Into<HandleId>,
Add/modify the asset pointed to by the given handle.
Unless there exists another Strong handle for this asset, it’s advised to use the returned Strong handle. Not doing so may result in the unexpected release of the asset.
See set_untracked
for more info.
pub fn set_untracked<H>(&mut self, handle: H, asset: T)where
H: Into<HandleId>,
pub fn set_untracked<H>(&mut self, handle: H, asset: T)where
H: Into<HandleId>,
Add/modify the asset pointed to by the given handle.
If an asset already exists with the given HandleId
, it will be modified. Otherwise the
new asset will be inserted.
Events
AssetEvent::Created
: Sent if the asset did not yet exist with the given handle.AssetEvent::Modified
: Sent if the asset with given handle already existed.
pub fn get_handle<H>(&self, handle: H) -> Handle<T>where
H: Into<HandleId>,
pub fn get_handle<H>(&self, handle: H) -> Handle<T>where
H: Into<HandleId>,
Gets a Strong handle pointing to the same asset as the given one.
pub fn get_or_insert_with<H>(
&mut self,
handle: H,
insert_fn: impl FnOnce() -> T
) -> &mut Twhere
H: Into<HandleId>,
pub fn get_or_insert_with<H>(
&mut self,
handle: H,
insert_fn: impl FnOnce() -> T
) -> &mut Twhere
H: Into<HandleId>,
Gets mutable access to an asset for the given handle, inserting a new value if none exists.
Events
AssetEvent::Created
: Sent if the asset did not yet exist with the given handle.
pub fn iter(&self) -> impl Iterator<Item = (HandleId, &T)>
pub fn iter(&self) -> impl Iterator<Item = (HandleId, &T)>
Gets an iterator over all assets in the collection.
pub fn iter_mut(&mut self) -> impl Iterator<Item = (HandleId, &mut T)>
pub fn iter_mut(&mut self) -> impl Iterator<Item = (HandleId, &mut T)>
Gets a mutable iterator over all assets in the collection.
pub fn ids(&self) -> impl Iterator<Item = HandleId>
pub fn ids(&self) -> impl Iterator<Item = HandleId>
Gets an iterator over all HandleId
’s in the collection.
pub fn remove<H>(&mut self, handle: H) -> Option<T>where
H: Into<HandleId>,
pub fn remove<H>(&mut self, handle: H) -> Option<T>where
H: Into<HandleId>,
Removes an asset for the given handle.
The asset is returned if it existed in the collection, otherwise None
.
Events
pub fn clear(&mut self)
pub fn clear(&mut self)
Clears the inner asset map, removing all key-value pairs.
Keeps the allocated memory for reuse.
pub fn reserve(&mut self, additional: usize)
pub fn reserve(&mut self, additional: usize)
Reserves capacity for at least additional more elements to be inserted into the assets.
The collection may reserve more space to avoid frequent reallocations.
pub fn shrink_to_fit(&mut self)
pub fn shrink_to_fit(&mut self)
Shrinks the capacity of the asset map as much as possible.
It will drop down as much as possible while maintaining the internal rules and possibly leaving some space in accordance with the resize policy.
pub fn asset_event_system(
events: EventWriter<'_, '_, AssetEvent<T>>,
assets: ResMut<'_, Assets<T>>
)
pub fn asset_event_system(
events: EventWriter<'_, '_, AssetEvent<T>>,
assets: ResMut<'_, Assets<T>>
)
A system that creates AssetEvent
s at the end of the frame based on changes in the
asset storage.
Trait Implementations§
impl<T> Resource for Assets<T>where
T: Asset,
Assets<T>: 'static + Send + Sync,
Auto Trait Implementations§
impl<T> RefUnwindSafe for Assets<T>where
T: RefUnwindSafe,
impl<T> Send for Assets<T>
impl<T> Sync for Assets<T>
impl<T> Unpin for Assets<T>where
T: Unpin,
impl<T> UnwindSafe for Assets<T>where
T: UnwindSafe,
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. Read more§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, 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
. Read more§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
. Read more§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. Read more§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. Read more