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;