pub struct DlcPackLoader {
pub registrars: Vec<Box<dyn ErasedSubAssetRegistrar>>,
/* private fields */
}Expand description
AssetLoader for .dlcpack bundles (contains multiple encrypted entries).
When the encrypt key is available in the registry at load time (i.e. the
DLC is already unlocked), each entry is immediately decrypted and registered
as a typed labeled sub-asset so asset_server.load("pack.dlcpack#entry.png")
returns the correct Handle<T> for the extension’s loader (e.g. Handle<Image>
for .png). No asset type is hardcoded here — the correct type is determined
purely by extension dispatch via Bevy’s immediate() loader, and the result
is downcast + registered using the list of ErasedSubAssetRegistrars that
DlcPlugin::build populates.
When the encrypt key is not yet available the pack is still loaded
successfully (entries list is populated from the manifest) but the labeled
sub-assets are not added — reload_assets_on_unlock_system will reload the
pack once the key arrives, and the second load will succeed.
Fields§
§registrars: Vec<Box<dyn ErasedSubAssetRegistrar>>Ordered list of per-type registrars. DlcPlugin::build pushes one
TypedSubAssetRegistrar<A> for every A it also registers via
init_asset_loader::<DlcLoader<A>>(). The loader tries each in turn
and uses the first successful downcast.
Trait Implementations§
Source§impl AssetLoader for DlcPackLoader
impl AssetLoader for DlcPackLoader
Source§type Settings = ()
type Settings = ()
AssetLoader.Source§fn extensions(&self) -> &[&str]
fn extensions(&self) -> &[&str]
AssetLoader, without the preceding dot.
Note that users of this AssetLoader may choose to load files with a non-matching extension.Source§impl Default for DlcPackLoader
impl Default for DlcPackLoader
Source§fn default() -> DlcPackLoader
fn default() -> DlcPackLoader
Source§impl TypePath for DlcPackLoader
impl TypePath for DlcPackLoader
Source§fn type_path() -> &'static str
fn type_path() -> &'static str
Source§fn short_type_path() -> &'static str
fn short_type_path() -> &'static str
Source§fn type_ident() -> Option<&'static str>
fn type_ident() -> Option<&'static str>
Source§fn crate_name() -> Option<&'static str>
fn crate_name() -> Option<&'static str>
Auto Trait Implementations§
impl Freeze for DlcPackLoader
impl !RefUnwindSafe for DlcPackLoader
impl Send for DlcPackLoader
impl Sync for DlcPackLoader
impl Unpin for DlcPackLoader
impl UnsafeUnpin for DlcPackLoader
impl !UnwindSafe for DlcPackLoader
Blanket Implementations§
Source§impl<T, U> AsBindGroupShaderType<U> for T
impl<T, U> AsBindGroupShaderType<U> for T
Source§fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> 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
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> 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> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> DynamicTypePath for Twhere
T: TypePath,
impl<T> DynamicTypePath for Twhere
T: TypePath,
Source§fn reflect_type_path(&self) -> &str
fn reflect_type_path(&self) -> &str
TypePath::type_path.Source§fn reflect_short_type_path(&self) -> &str
fn reflect_short_type_path(&self) -> &str
Source§fn reflect_type_ident(&self) -> Option<&str>
fn reflect_type_ident(&self) -> Option<&str>
TypePath::type_ident.Source§fn reflect_crate_name(&self) -> Option<&str>
fn reflect_crate_name(&self) -> Option<&str>
TypePath::crate_name.Source§fn reflect_module_path(&self) -> Option<&str>
fn reflect_module_path(&self) -> Option<&str>
Source§impl<L> ErasedAssetLoader for L
impl<L> ErasedAssetLoader for L
Source§fn load<'a>(
&'a self,
reader: &'a mut dyn Reader,
settings: &'a (dyn Settings + 'static),
load_context: LoadContext<'a>,
) -> Pin<Box<dyn ConditionalSendFuture<Output = Result<ErasedLoadedAsset, BevyError>> + 'a>>
fn load<'a>( &'a self, reader: &'a mut dyn Reader, settings: &'a (dyn Settings + 'static), load_context: LoadContext<'a>, ) -> Pin<Box<dyn ConditionalSendFuture<Output = Result<ErasedLoadedAsset, BevyError>> + 'a>>
Processes the asset in an asynchronous closure.
Source§fn extensions(&self) -> &[&str]
fn extensions(&self) -> &[&str]
Source§fn deserialize_meta(
&self,
meta: &[u8],
) -> Result<Box<dyn AssetMetaDyn>, DeserializeMetaError>
fn deserialize_meta( &self, meta: &[u8], ) -> Result<Box<dyn AssetMetaDyn>, DeserializeMetaError>
meta bytes into the appropriate type (erased as Box<dyn AssetMetaDyn>).Source§fn default_meta(&self) -> Box<dyn AssetMetaDyn>
fn default_meta(&self) -> Box<dyn AssetMetaDyn>
AssetLoader (erased as Box<dyn AssetMetaDyn>).Source§fn type_path(&self) -> &'static str
fn type_path(&self) -> &'static str
AssetLoader.Source§fn asset_type_name(&self) -> &'static str
fn asset_type_name(&self) -> &'static str
Asset loaded by the AssetLoader.Source§fn asset_type_id(&self) -> TypeId
fn asset_type_id(&self) -> TypeId
Source§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
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, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
Source§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
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