| Crates.io | seldom_singleton |
| lib.rs | seldom_singleton |
| version | 0.3.0 |
| created_at | 2024-04-16 03:13:33.516849+00 |
| updated_at | 2024-12-08 20:07:34.945275+00 |
| description | Helper `SystemParam` for when you have a resource containing a handle |
| homepage | |
| repository | https://github.com/Seldom-SE/seldom_singleton |
| max_upload_size | |
| id | 1209903 |
| size | 8,454 |
seldom_singletonseldom_singleton adds a helper SystemParam for when you have a resource containing a handle. If
you're using Bevy's asset system to, for example, load a list of items in the game and their
properties, you'd end up with a handle in a resource, and you'd need to get Res<Assets<MyItems>>
to get the asset you need. This crate adds a helper that lets you avoid the additional system param.
This is a very small crate. You can just copy the source code into your project to avoid adding a dependency.
Before:
#[derive(Asset, TypePath)]
struct MyAsset;
#[derive(Resource, Deref)]
struct MySingleton(Handle<MyAsset>);
fn my_system(my_assets: Res<Assets<MyAsset>>, my_singleton: Res<MySingleton>) {
// Return if the asset doesn't exist
let Some(my_asset) = my_assets.get(&**my_singleton) else {
return;
};
// or panic
let my_asset = my_assets.get(&**my_singleton).unwrap();
}
After:
#[derive(Asset, TypePath)]
struct MyAsset;
// Your resource. Add it to the world yourself.
#[derive(Resource, Deref)]
struct MySingleton(Handle<MyAsset>);
// `AssetSingleton` is this crate's `SystemParam`. This type definition can help reduce boilerplate
// a bit, but it's optional. There's also `AssetSingletonMut`.
type MySingletonParam<'w> = AssetSingleton<'w, MySingleton>;
fn my_system(my_singleton: MySingletonParam) {
// Return if the asset doesn't exist
let Some(my_asset) = my_singleton.get() else {
return;
};
// or panic
let my_asset = my_singleton.unwrap();
// `AssetSingletonMut` has `get_mut` and `unwrap_mut`
}
Add to your Cargo.toml
# Replace * with your desired version
[dependencies]
seldom_singleton = "*"
| Bevy | seldom_singleton |
|---|---|
| 0.15 | 0.3 |
| 0.14 | 0.2 |
| 0.13 | 0.1 |
seldom_singleton is dual-licensed under MIT and Apache 2.0 at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.