pub struct AssetServer { /* private fields */ }Expand description
The central asset server: coordinates loading, caching, hot-reload, and streaming.
§Lifecycle
- Register loaders with
register_loader. - Request assets with
loadorload_manifest. - Call
updateeach frame to process the streaming queue and hot-reload. - Retrieve loaded data via
get.
Implementations§
Source§impl AssetServer
impl AssetServer
Sourcepub fn new_with_config(config: AssetServerConfig) -> Self
pub fn new_with_config(config: AssetServerConfig) -> Self
Create a new asset server with the given configuration.
Sourcepub fn set_root_dir(&mut self, dir: impl Into<PathBuf>)
pub fn set_root_dir(&mut self, dir: impl Into<PathBuf>)
Change the root asset directory.
Sourcepub fn register_loader<A: Asset, L: AssetLoader<A>>(&mut self, loader: L)
pub fn register_loader<A: Asset, L: AssetLoader<A>>(&mut self, loader: L)
Register a loader for asset type A.
The loader’s extensions() are used to match file paths.
If multiple loaders claim the same extension, the most recently
registered one takes precedence.
Sourcepub fn mount_pack(&mut self, pack: AssetPack)
pub fn mount_pack(&mut self, pack: AssetPack)
Mount an AssetPack. Files in packs are resolved before the file-system.
Sourcepub fn load<A: Asset>(&mut self, path: impl Into<AssetPath>) -> AssetHandle<A>
pub fn load<A: Asset>(&mut self, path: impl Into<AssetPath>) -> AssetHandle<A>
Request that path be loaded as asset type A.
Returns an AssetHandle<A> immediately. The handle will become
populated after update processes the request.
If the asset is already loaded, a handle to the existing data is returned.
Sourcepub fn load_with_priority<A: Asset>(
&mut self,
path: impl Into<AssetPath>,
priority: StreamPriority,
) -> AssetHandle<A>
pub fn load_with_priority<A: Asset>( &mut self, path: impl Into<AssetPath>, priority: StreamPriority, ) -> AssetHandle<A>
Like load but with an explicit priority.
Sourcepub fn load_manifest(&mut self, manifest: &AssetManifest)
pub fn load_manifest(&mut self, manifest: &AssetManifest)
Queue all assets declared in manifest for loading.
Callers should subsequently call typed load::<T>() for each entry to
obtain typed handles; this method ensures the paths are pre-registered
at the declared priorities.
Sourcepub fn update(&mut self)
pub fn update(&mut self)
Drive the asset server for one frame.
This processes pending streaming requests (up to stream_batch_size per
call) and polls the hot-reload watcher. Call once per frame.
Sourcepub fn get<A: Asset>(&mut self, handle: &AssetHandle<A>) -> Option<Arc<A>>
pub fn get<A: Asset>(&mut self, handle: &AssetHandle<A>) -> Option<Arc<A>>
Try to get the data for handle.
Returns None if the asset is not yet loaded or has been evicted.
Sourcepub fn load_state<A: Asset>(&self, handle: &AssetHandle<A>) -> LoadState
pub fn load_state<A: Asset>(&self, handle: &AssetHandle<A>) -> LoadState
Get the LoadState of handle.
Sourcepub fn reload<A: Asset>(&mut self, handle: &AssetHandle<A>)
pub fn reload<A: Asset>(&mut self, handle: &AssetHandle<A>)
Force an immediate synchronous reload of an asset by handle.
Sourcepub fn insert<A: Asset>(
&mut self,
path: impl Into<AssetPath>,
asset: A,
) -> AssetHandle<A>
pub fn insert<A: Asset>( &mut self, path: impl Into<AssetPath>, asset: A, ) -> AssetHandle<A>
Insert an already-constructed asset directly into the registry.
Returns a handle to the inserted asset. Useful for procedurally generated assets that have no backing file.
Sourcepub fn stats(&self) -> &AssetServerStats
pub fn stats(&self) -> &AssetServerStats
Return a snapshot of the current server statistics.
Sourcepub fn asset_count(&self) -> usize
pub fn asset_count(&self) -> usize
Number of assets currently tracked by the registry.
Sourcepub fn read_bytes(
&mut self,
path: &AssetPath,
) -> Result<(Vec<u8>, Option<SystemTime>), String>
pub fn read_bytes( &mut self, path: &AssetPath, ) -> Result<(Vec<u8>, Option<SystemTime>), String>
Read bytes for a given path, checking packs first then the file-system.
Exposed as pub for testing and pack inspection utilities.
Trait Implementations§
Source§impl Debug for AssetServer
impl Debug for AssetServer
Auto Trait Implementations§
impl Freeze for AssetServer
impl !RefUnwindSafe for AssetServer
impl Send for AssetServer
impl Sync for AssetServer
impl Unpin for AssetServer
impl UnsafeUnpin for AssetServer
impl !UnwindSafe for AssetServer
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>. 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.