1
1
mod storage;
2
2
3
3
use bevy:: {
4
- math:: { UVec2 , Vec2 } ,
4
+ math:: { IVec2 , UVec2 , Vec2 } ,
5
5
prelude:: { Bundle , Color , Component , Reflect , ReflectComponent } ,
6
6
} ;
7
7
pub use storage:: * ;
@@ -53,6 +53,15 @@ impl From<UVec2> for TilePos {
53
53
}
54
54
}
55
55
56
+ impl From < IVec2 > for TilePos {
57
+ fn from ( v : IVec2 ) -> Self {
58
+ Self {
59
+ x : v. x as u32 ,
60
+ y : v. y as u32 ,
61
+ }
62
+ }
63
+ }
64
+
56
65
impl From < TilePos > for Vec2 {
57
66
fn from ( pos : TilePos ) -> Self {
58
67
Vec2 :: new ( pos. x as f32 , pos. y as f32 )
@@ -67,12 +76,14 @@ impl From<&TilePos> for Vec2 {
67
76
68
77
/// A texture index into the atlas or texture array for a single tile. Indices in an atlas are horizontal based.
69
78
#[ derive( Component , Reflect , Default , Clone , Copy , Debug , Hash ) ]
79
+ #[ cfg_attr( feature = "serde" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
70
80
#[ reflect( Component ) ]
71
81
pub struct TileTextureIndex ( pub u32 ) ;
72
82
73
83
/// A custom color for the tile.
74
84
#[ derive( Component , Reflect , Default , Clone , Copy , Debug ) ]
75
85
#[ reflect( Component ) ]
86
+ #[ cfg_attr( feature = "serde" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
76
87
pub struct TileColor ( pub Color ) ;
77
88
78
89
impl From < Color > for TileColor {
@@ -84,6 +95,7 @@ impl From<Color> for TileColor {
84
95
/// Hides or shows a tile based on the boolean. Default: True
85
96
#[ derive( Component , Reflect , Clone , Copy , Debug , Hash ) ]
86
97
#[ reflect( Component ) ]
98
+ #[ cfg_attr( feature = "serde" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
87
99
pub struct TileVisible ( pub bool ) ;
88
100
89
101
impl Default for TileVisible {
@@ -95,6 +107,7 @@ impl Default for TileVisible {
95
107
/// Flips the tiles texture along the X, Y or diagonal axes
96
108
#[ derive( Component , Reflect , Default , Clone , Copy , Debug , Hash ) ]
97
109
#[ reflect( Component ) ]
110
+ #[ cfg_attr( feature = "serde" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
98
111
pub struct TileFlip {
99
112
/// Flip tile along the x axis.
100
113
pub x : bool ,
@@ -105,6 +118,7 @@ pub struct TileFlip {
105
118
106
119
/// This an optional tile bundle with default components.
107
120
#[ derive( Bundle , Default , Clone , Copy , Debug ) ]
121
+ #[ cfg_attr( feature = "serde" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
108
122
pub struct TileBundle {
109
123
pub position : TilePos ,
110
124
pub texture_index : TileTextureIndex ,
@@ -117,12 +131,14 @@ pub struct TileBundle {
117
131
118
132
#[ derive( Component , Reflect , Default , Clone , Copy , Debug ) ]
119
133
#[ reflect( Component ) ]
134
+ #[ cfg_attr( feature = "serde" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
120
135
pub struct TilePosOld ( pub TilePos ) ;
121
136
122
137
/// A component that is attached to a Tile entity that
123
138
/// tells the GPU how to animate the tile.
124
139
/// Currently all frames must be aligned in your tilemap.
125
140
#[ derive( Component , Reflect , Clone , Copy , Debug ) ]
141
+ #[ cfg_attr( feature = "serde" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
126
142
pub struct AnimatedTile {
127
143
/// The start frame index in the tilemap atlas/array (inclusive).
128
144
pub start : u32 ,
0 commit comments