pub trait RenderAsset:
Send
+ Sync
+ 'static
+ Sized {
type SourceAsset: Asset + Clone;
type Param: SystemParam;
// Required method
fn prepare_asset(
source_asset: Self::SourceAsset,
asset_id: AssetId<Self::SourceAsset>,
param: &mut SystemParamItem<'_, '_, Self::Param>,
) -> Result<Self, PrepareAssetError<Self::SourceAsset>>;
// Provided methods
fn asset_usage(_source_asset: &Self::SourceAsset) -> RenderAssetUsages { ... }
fn byte_len(source_asset: &Self::SourceAsset) -> Option<usize> { ... }
fn unload_asset(
_source_asset: AssetId<Self::SourceAsset>,
_param: &mut SystemParamItem<'_, '_, Self::Param>,
) { ... }
}
Expand description
Describes how an asset gets extracted and prepared for rendering.
In the ExtractSchedule
step the RenderAsset::SourceAsset
is transferred
from the “main world” into the “render world”.
After that in the RenderSet::PrepareAssets
step the extracted asset
is transformed into its GPU-representation of type RenderAsset
.
Required Associated Types§
Sourcetype SourceAsset: Asset + Clone
type SourceAsset: Asset + Clone
The representation of the asset in the “main world”.
Sourcetype Param: SystemParam
type Param: SystemParam
Specifies all ECS data required by RenderAsset::prepare_asset
.
For convenience use the lifetimeless
SystemParam
.
Required Methods§
Sourcefn prepare_asset(
source_asset: Self::SourceAsset,
asset_id: AssetId<Self::SourceAsset>,
param: &mut SystemParamItem<'_, '_, Self::Param>,
) -> Result<Self, PrepareAssetError<Self::SourceAsset>>
fn prepare_asset( source_asset: Self::SourceAsset, asset_id: AssetId<Self::SourceAsset>, param: &mut SystemParamItem<'_, '_, Self::Param>, ) -> Result<Self, PrepareAssetError<Self::SourceAsset>>
Prepares the RenderAsset::SourceAsset
for the GPU by transforming it into a RenderAsset
.
ECS data may be accessed via param
.
Provided Methods§
Sourcefn asset_usage(_source_asset: &Self::SourceAsset) -> RenderAssetUsages
fn asset_usage(_source_asset: &Self::SourceAsset) -> RenderAssetUsages
Whether or not to unload the asset after extracting it to the render world.
Sourcefn byte_len(source_asset: &Self::SourceAsset) -> Option<usize>
fn byte_len(source_asset: &Self::SourceAsset) -> Option<usize>
Size of the data the asset will upload to the gpu. Specifying a return value
will allow the asset to be throttled via RenderAssetBytesPerFrame
.
Sourcefn unload_asset(
_source_asset: AssetId<Self::SourceAsset>,
_param: &mut SystemParamItem<'_, '_, Self::Param>,
)
fn unload_asset( _source_asset: AssetId<Self::SourceAsset>, _param: &mut SystemParamItem<'_, '_, Self::Param>, )
Called whenever the RenderAsset::SourceAsset
has been removed.
You can implement this method if you need to access ECS data (via
_param
) in order to perform cleanup tasks when the asset is removed.
The default implementation does nothing.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.