From 5ba1641119e08760a36294cf796636c4a61fa43d Mon Sep 17 00:00:00 2001 From: StarToaster <6656977+StarArawn@users.noreply.github.com> Date: Fri, 1 Mar 2024 22:04:49 -0500 Subject: [PATCH 1/3] Added more serde support --- src/map/mod.rs | 1 + src/render/extract.rs | 4 +--- src/tiles/mod.rs | 18 +++++++++++++++++- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/map/mod.rs b/src/map/mod.rs index 3115fa1d..55711bfe 100644 --- a/src/map/mod.rs +++ b/src/map/mod.rs @@ -44,6 +44,7 @@ impl Default for TilemapRenderSettings { /// A component which stores a reference to the tilemap entity. #[derive(Component, Reflect, Clone, Copy, Debug, Hash)] #[reflect(Component, MapEntities)] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub struct TilemapId(pub Entity); impl MapEntities for TilemapId { diff --git a/src/render/extract.rs b/src/render/extract.rs index 6d0017b6..24166d47 100644 --- a/src/render/extract.rs +++ b/src/render/extract.rs @@ -1,10 +1,8 @@ use bevy::math::Affine3A; -use bevy::prelude::Res; -use bevy::prelude::Time; use bevy::render::primitives::{Aabb, Frustum}; use bevy::render::render_resource::FilterMode; use bevy::render::render_resource::TextureFormat; -use bevy::{math::Vec4, prelude::*, render::Extract, utils::HashMap}; +use bevy::{prelude::*, render::Extract, utils::HashMap}; use crate::prelude::TilemapGridSize; use crate::prelude::TilemapRenderSettings; diff --git a/src/tiles/mod.rs b/src/tiles/mod.rs index e329989a..28fbeaad 100644 --- a/src/tiles/mod.rs +++ b/src/tiles/mod.rs @@ -1,7 +1,7 @@ mod storage; use bevy::{ - math::{UVec2, Vec2}, + math::{IVec2, UVec2, Vec2}, prelude::{Bundle, Color, Component, Reflect, ReflectComponent}, }; pub use storage::*; @@ -53,6 +53,15 @@ impl From for TilePos { } } +impl From for TilePos { + fn from(v: IVec2) -> Self { + Self { + x: v.x as u32, + y: v.y as u32, + } + } +} + impl From for Vec2 { fn from(pos: TilePos) -> Self { Vec2::new(pos.x as f32, pos.y as f32) @@ -67,12 +76,14 @@ impl From<&TilePos> for Vec2 { /// A texture index into the atlas or texture array for a single tile. Indices in an atlas are horizontal based. #[derive(Component, Reflect, Default, Clone, Copy, Debug, Hash)] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] #[reflect(Component)] pub struct TileTextureIndex(pub u32); /// A custom color for the tile. #[derive(Component, Reflect, Default, Clone, Copy, Debug)] #[reflect(Component)] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub struct TileColor(pub Color); impl From for TileColor { @@ -84,6 +95,7 @@ impl From for TileColor { /// Hides or shows a tile based on the boolean. Default: True #[derive(Component, Reflect, Clone, Copy, Debug, Hash)] #[reflect(Component)] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub struct TileVisible(pub bool); impl Default for TileVisible { @@ -95,6 +107,7 @@ impl Default for TileVisible { /// Flips the tiles texture along the X, Y or diagonal axes #[derive(Component, Reflect, Default, Clone, Copy, Debug, Hash)] #[reflect(Component)] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub struct TileFlip { /// Flip tile along the x axis. pub x: bool, @@ -105,6 +118,7 @@ pub struct TileFlip { /// This an optional tile bundle with default components. #[derive(Bundle, Default, Clone, Copy, Debug)] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub struct TileBundle { pub position: TilePos, pub texture_index: TileTextureIndex, @@ -117,12 +131,14 @@ pub struct TileBundle { #[derive(Component, Reflect, Default, Clone, Copy, Debug)] #[reflect(Component)] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub struct TilePosOld(pub TilePos); /// A component that is attached to a Tile entity that /// tells the GPU how to animate the tile. /// Currently all frames must be aligned in your tilemap. #[derive(Component, Reflect, Clone, Copy, Debug)] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub struct AnimatedTile { /// The start frame index in the tilemap atlas/array (inclusive). pub start: u32, From 795094f133f4b2ba6f2dc5e2e3352179a31e8b5d Mon Sep 17 00:00:00 2001 From: StarToaster <6656977+StarArawn@users.noreply.github.com> Date: Fri, 1 Mar 2024 22:19:56 -0500 Subject: [PATCH 2/3] Removed test code. --- src/tiles/mod.rs | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/tiles/mod.rs b/src/tiles/mod.rs index 28fbeaad..77148c8e 100644 --- a/src/tiles/mod.rs +++ b/src/tiles/mod.rs @@ -53,15 +53,6 @@ impl From for TilePos { } } -impl From for TilePos { - fn from(v: IVec2) -> Self { - Self { - x: v.x as u32, - y: v.y as u32, - } - } -} - impl From for Vec2 { fn from(pos: TilePos) -> Self { Vec2::new(pos.x as f32, pos.y as f32) From 78aa6ccd9a28932052844554c5bb810ccb6db778 Mon Sep 17 00:00:00 2001 From: StarToaster <6656977+StarArawn@users.noreply.github.com> Date: Fri, 1 Mar 2024 22:20:30 -0500 Subject: [PATCH 3/3] Remove import. --- src/tiles/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tiles/mod.rs b/src/tiles/mod.rs index 77148c8e..89efb3c6 100644 --- a/src/tiles/mod.rs +++ b/src/tiles/mod.rs @@ -1,7 +1,7 @@ mod storage; use bevy::{ - math::{IVec2, UVec2, Vec2}, + math::{UVec2, Vec2}, prelude::{Bundle, Color, Component, Reflect, ReflectComponent}, }; pub use storage::*;