1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
pub use crate;
pub use crateAsepriteInfo;
pub use crate;
pub use crate;
/// Generates static tags and slices descriptions of an Aserpite animation.
///
/// Calling it as follows:
///
/// ```rust
/// # use bevy_mod_aseprite::aseprite;
/// #[allow(non_snake_case)]
/// #[aseprite(file = "player.ase")]
/// pub mod Player {}
/// ```
///
/// Will generate:
///
/// ```rust
/// #[allow(non_snake_case)]
/// pub mod Player {
/// pub const PATH: &'static str = "player.ase";
/// pub mod tags {
/// pub const WOUND: ::bevy_mod_aseprite::AsepriteTag = ::bevy_mod_aseprite::AsepriteTag::new("wound");
/// pub const STAND: ::bevy_mod_aseprite::AsepriteTag = ::bevy_mod_aseprite::AsepriteTag::new("stand");
/// pub const MOVE: ::bevy_mod_aseprite::AsepriteTag = ::bevy_mod_aseprite::AsepriteTag::new("move");
/// pub const ATTACK: ::bevy_mod_aseprite::AsepriteTag = ::bevy_mod_aseprite::AsepriteTag::new("attack");
/// pub const DIE: ::bevy_mod_aseprite::AsepriteTag = ::bevy_mod_aseprite::AsepriteTag::new("die");
/// pub const JUMP: ::bevy_mod_aseprite::AsepriteTag = ::bevy_mod_aseprite::AsepriteTag::new("jump");
/// pub const FALL: ::bevy_mod_aseprite::AsepriteTag = ::bevy_mod_aseprite::AsepriteTag::new("fall");
/// pub const DASH: ::bevy_mod_aseprite::AsepriteTag = ::bevy_mod_aseprite::AsepriteTag::new("dash");
/// }
/// pub mod slices {}
/// }
/// ```
///
/// In bevy code it helps ensuring tags are up to date, as in this example:
///
/// ```rust
/// # use bevy::prelude::*;
/// # use bevy_mod_aseprite::prelude::*;
/// pub mod sprites {
/// use bevy_mod_aseprite::aseprite;
///
/// #[allow(non_snake_case)]
/// #[aseprite(file = "player.ase")]
/// pub mod Player {}
/// }
///
/// fn load_assets(asset_server: Res<AssetServer>, mut ase_handles: ResMut<AsepriteHandles>) {
/// let player = asset_server.load(sprites::Player::PATH);
/// ase_handles.push(player);
/// }
///
/// fn setup(
/// mut commands: Commands,
/// ase_handles: Res<AsepriteHandles>,
/// ase_assets: Res<Assets<AsepriteAsset>>,
/// ) {
/// let ase_handle = &ase_handles[0];
/// let ase_asset = ase_assets.get(ase_handle).unwrap();
/// let anim = AsepriteAnimation::new(&ase_asset.info, sprites::Player::tags::STAND);
///
/// // commands.spawn(...);
/// }
///
/// #[derive(Resource, Deref, DerefMut, Default)]
/// struct AsepriteHandles(Vec<Handle<AsepriteAsset>>);
/// ```
pub use aseprite;