bevy_paperdoll/lib.rs
1//! [Bevy](https://github.com/bevyengine/bevy) plugin for [paperdoll](https://github.com/fralonra/paperdoll), a 2D pixel-based stationary paper doll model.
2//!
3//! ## Usage
4//!
5//! Add the plugin to your app first.
6//!
7//! ```no_run
8//! use bevy::prelude::*;
9//! use bevy_paperdoll::{PaperdollAsset, PaperdollPlugin};
10//!
11//! fn main() {
12//! App::new()
13//! .add_plugins(PaperdollPlugin);
14//!
15//! // Other logic
16//! // ...
17//! }
18//! ```
19//!
20//! Then load a paperdoll file and store the handle. You can use [ppd-editor](https://github.com/fralonra/ppd-editor) to create a valid paperdoll asset.
21//!
22//! ```no_run
23//! # use bevy::prelude::*;
24//! # use bevy_paperdoll::PaperdollAsset;
25//! #
26//! fn load_paperdoll(asset_server: Res<AssetServer>) {
27//! let handle: Handle<PaperdollAsset> = asset_server.load("your/paperdoll.ppd");
28//!
29//! // Store the handle.
30//! // ...
31//! }
32//! ```
33//!
34//! Create a paperdoll from the loaded asset and play with it.
35//!
36//! ```no_run
37//! # use bevy::prelude::*;
38//! # use bevy_paperdoll::PaperdollAsset;
39//! #
40//! # #[derive(Default, Resource)]
41//! # struct Resources(Handle<PaperdollAsset>);
42//! #
43//! fn create_paperdoll(
44//! mut paperdolls: ResMut<Assets<PaperdollAsset>>,
45//! # resources: Res<Resources>,
46//! ) {
47//! # let handle = resources.0.clone();
48//! #
49//! // Access the paperdoll asset using the handle stored previously.
50//! let paperdoll_asset = paperdolls.get_mut(&handle).unwrap();
51//!
52//! // Create a paperdoll based on doll 0.
53//! // The returned id will be used to refer to this paperdoll in the following process.
54//! let paperdoll_id = paperdoll_asset.create_paperdoll(0);
55//!
56//! // Do something with the paperdoll just created.
57//!
58//! // eg. Set slot 0 to fragment 1
59//! // paperdoll_asset.slot_use_fragment(paperdoll_id, 0, 1);
60//!
61//! // eg. Set slot 1 to empty
62//! // paperdoll_asset.slot_use_empty(paperdoll_id, 1);
63//!
64//! // Get the image to be drawn on the screen.
65//! let paperdoll_image = paperdoll_asset.take_texture(paperdoll_id).unwrap();
66//! }
67//! ```
68//!
69//! See [examples](https://github.com/fralonra/bevy-paperdoll/blob/master/examples/README.md) for more.
70
71mod asset;
72mod loader;
73mod plugin;
74
75pub use asset::{PaperdollAsset, PaperdollId};
76pub use plugin::PaperdollPlugin;