19 releases (8 breaking)
0.10.0 | Nov 14, 2022 |
---|---|
0.9.3 | Oct 12, 2022 |
0.7.0 | Jul 31, 2022 |
0.5.1 | Feb 27, 2022 |
#1247 in Game dev
35KB
105 lines
Bevy Heterogenous Texture Atlas Loader
Bevy Heterogenous Texture Atlas Loader allows you to load heterogenous texture atlases from a RON file manifest.
Bevy Compatibility
version | bevy |
---|---|
0.10 | 0.9 |
0.7 to 0.9 | 0.8 |
0.6 | 0.7 |
< 0.6 | 0.6 |
Basic usage
-
Add to your project's
Cargo.toml
[dependencies]
sectionbevy_heterogeneous_texture_atlas_loader = "0.10.0"
-
Add the
TextureAtlasLoaderPlugin
to your Bevy App.use bevy_heterogeneous_texture_atlas_loader::*; app.add_plugin(TextureAtlasLoaderPlugin);
-
Add the atlas source image and
.ron
manifest to your assets folder. -
Load the texture atlas manifest using the asset server:
let texture_atlas: Handle<TextureAtlas> = asset_server.load("<path>.ron");
The plugin will then load the atlas image and create the TextureAtlas asset automatically.
-
The
TextureAtlas
's sprite indices respect the order of the sprites in the manifest. Atlas index 0 will be the first sprite in the manifest, 1 the second, and so on. You can also use theTextureAtlas::get_texture_index
method to look up the index using an asset path:texture_atlas.get_texture_index(&Handle::weak("sprite_name".into()))
which you can see used in
\examples\example.rs
The Manifest
-
To create a manifest for a sprite sheet with irregular sized and positioned sprites like:
-
Create a .ron file in your assets folder.
The sprite indices in the output TextureAtlas are ordered implicitly according to the order of the input list sprite rects.
-
The
name
field is used to give a sprite a unique name that can be used to look up their TextureAtlas index using a weakHandle<Image>
with the asset_path"sprite_name"
.( // Path to the texture atlas source image file path: "example.png", // List of sprites sprites: [ ( // use a handle with the asset path "rothko" // to retrieve this sprite's index using TextureAtlas::get_texture_index. name: "rothko", // top left x coordinate of the sprite in pixels x: 18, // top left y coordinate of the sprite in pixels y: 19, // width of the sprite in pixels w: 46, // height of the sprite in pixels h: 48 ), ( name: "face", x: 93, y: 108, w: 32, h: 31 ), ( name: "patches", x: 176, y: 34, w: 20, h: 34 ), ] )
-
If you don't need names for the sprites, you can leave out the
name
field:( path: "example.png", sprites:[ ( // sprite at atlas index 0 x: 18, y: 19, w: 46, h: 48 ), ( // sprite at atlas index 1 x: 93, y: 108, w: 32, h: 31 ), // ... ] )
Examples
-
minimal.rs
Loads a texture atlas and cycles through its textures. Run with
cargo run --example minimal
-
example.rs
Example of loading and displaying a texture atlas. Run with
cargo run --example example
two.rs
Another example of loading and displaying texture atlases. Run with
```
cargo run --example example
```
-
bevy_asset_loader.rs
Example using
bevy_asset_loader
to manage loading. Run withcargo run --example bevy_asset_loader
Dependencies
~20–35MB
~591K SLoC