micro_games_macros

Crates.iomicro_games_macros
lib.rsmicro_games_macros
version0.4.0
sourcesrc
created_at2023-10-22 01:36:17.239841
updated_at2024-05-05 16:38:45.614596
descriptionUtility macros to make it easier to build complex systems with Bevy
homepage
repository
max_upload_size
id1010333
size61,872
Louis Capitanchik (Commander-lol)

documentation

README

Micro Game Macros

docs.rs Crates.io

A collection of utility macros for building games

Current Version Support: 0.2.x -> Bevy 0.12

Macros

For executable examples, visit the rustdoc and/or read the doctests in src/lib.rs

JSON Loader

Generate a Bevy asset loader for a given asset, supporting JSON files that define a single instance of that asset type, or a list of that asset type. Instances of an asset need to be identifiable, though the property that is used to identify a particular asset is customisable

#[derive(JsonLoader, TypePath, TypeUuid, Serialize, Deserialize, Asset)]
#[loader(
    extension = "asset.json", uuid = "00000000-0000-0000-0000-000000000000",
    storage = inner_module::SimpleAssetLocator,
    asset_name = some_asset_prop, index_name = set_of_assets
)]
#[uuid = "00000000-0000-0000-0000-000000000001"]
pub struct MyAsset {
  /// The asset identifier needs to implement [std::fmt::Display]
  #[asset_id]
  uniq_ident: usize,
}

Asset System

Generate a set of structs and systems for managed loading in a Bevy game

use bevy::prelude::{Image, Res, Resource};
use micro_games_macros::asset_system;

#[asset_system]
pub struct AssetHandles {
  my_asset: Image,
}

pub fn loading_system(mut loader: AssetHandlesLoader) {
  loader.load_my_asset("path/to/asset.png", "Asset");
}
pub fn use_asset_system(assets: Res<AssetHandles>) {
  let handle = assets.my_asset("Asset");
}

From Inner

Derive an impl of From<T> for structs that wrap a single inner type (Tuple and Named Property structs are supported)

use micro_game_macros::FromInner;

#[derive(FromInner)]
struct MyType(usize);

fn example() {
    let value = MyType::from(123usize);
}

Kayak Widget

A simple derive for Kayak UI's "Widget" trait

use micro_game_macros::Widget;

#[derive(Widget)]
struct MyComponent;

// ... Other Kayak Setup ...

Commit count: 0

cargo fmt