AssetRef Class
Definition
Namespace: Brine2D.Assets
A typed, lazy asset reference. Declare fields of this type on an AssetManifest subclass, then call PreloadAsync\(AssetManifest, IProgress<AssetLoadProgress>, CancellationToken\) to resolve them all in parallel.
Type parameters
T
Inheritance System.Object → AssetRef\<T>
Example
C#
public class GameAssets : AssetManifest
{
public readonly AssetRef<ITexture> Player = Texture("assets/images/player.png");
public readonly AssetRef<ISoundEffect> JumpSound = Sound("assets/audio/jump.wav");
public readonly AssetRef<IMusic> Theme = Music("assets/audio/theme.ogg");
public readonly AssetRef<Font> UIFont = Font("assets/fonts/ui.ttf", size: 16);
}
// In OnLoadAsync:
await _assets.PreloadAsync(_manifest, progress: loadingScreen.Progress, ct);
// After loading, implicit conversion; no .Value needed:
sprite.Texture = _manifest.Player;
| Properties | |
|---|---|
| IsLoaded | Whether this ref has been resolved by PreloadAsync\(AssetManifest, IProgress<AssetLoadProgress>, CancellationToken\). |
| Path | Path used to identify this asset \(display/logging only\). |
| Value | The loaded asset. Throws System.InvalidOperationException if accessed before loading. |
| Methods | |
|---|---|
| TryGetValue\(T\) | Atomically checks whether this ref has been resolved and retrieves the value. Use this instead of IsLoaded + Value when a concurrent Unload\(AssetManifest\) could reset the ref between the two reads. |
| Operators | |
|---|---|
| implicit operator T\(AssetRef<T>\) | Implicit conversion so the ref can be used directly wherever T is expected, without .Value. Throws System.InvalidOperationException if the asset has not been loaded; only use this in code paths that run after PreloadAsync\(AssetManifest, IProgress<AssetLoadProgress>, CancellationToken\) has completed. For safe access in code that may race with Unload\(AssetManifest\), prefer TryGetValue\(T\). |