Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/ethereumdegen/turbo_atlas_icons

A bevy plugin for rendering texture atlas icons
https://github.com/ethereumdegen/turbo_atlas_icons

Last synced: 21 days ago
JSON representation

A bevy plugin for rendering texture atlas icons

Awesome Lists containing this project

README

        

## Turbo Atlas Icons

A crate for bevy to help you more easily render ui icons from an atlas.

Simply add a UiIconComponent to your Ui Node (AtlasImageBundle), set its source to a pre-registered source, and it will work!

0. Install the plugin

```

app.insert_plugins( TurboAtlasIconsPlugin )

```

1. Register an icon source type (maps the source type -> how to access the texture atlas data )

```

pub struct GuiPixelIconSource(String) ; // This is your own source type that you invent !! Can invent many.

impl UiIconSource for GuiPixelIconSource {

//describe how to get the Icon Handle Name

fn get_icon_name(&self, _world: &World) -> Option {
Some(self.0.clone())
}

//describe how to get the HashMap< IconHandleName -> ImageHandle for this source

fn get_icons_handles_map<'a>(&'a self, world: &'a World) -> &'a TextureHandlesMap{
let images = world.resource::();
&images.gui_pixel_icons
}

//describe how to get the texture atlas layout and overall image handle for this source

fn get_texture_atlas<'a>(&'a self, world: &'a World) -> &'a Option {
let texture_atlas_assets = world.resource::();

&texture_atlas_assets.gui_pixel_icons_atlas
}


}

```

2. Attach the icon source type information as a component to your AtlasImageBundle node

```

commands.entity(icon_node).insert(
UiIconComponent{
icon_source : Some(Box::new( GuiPixelIconSource("heart_full.tga".into() ) )

}
);

```

3. Your icon will render !

(This is all assuming the TextureAtlasCombined provided to the IconSource lookup has already been loaded into memory --- see sample/texture_atlas_assets for examples of how this could be done -- For example using bevy_asset_loader )

![image](https://github.com/ethereumdegen/turbo_atlas_icons/assets/6249263/db7ab117-4d99-4ca9-8362-89c273fce108)