Skip to content

Commit bf6c457

Browse files
committed
add serialize feature to bevy_transform (#6379)
# Objective Fixes #6378 `bevy_transform` is missing a feature corresponding to the `serialize` feature on the `bevy` crate. ## Solution Adds a `serialize` feature to `bevy_transform`. Derives `serde::Serialize` and `Deserialize` when feature is enabled.
1 parent 599ca78 commit bf6c457

File tree

8 files changed

+15
-8
lines changed

8 files changed

+15
-8
lines changed

crates/bevy_internal/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ wav = ["bevy_audio/wav"]
4545
# Enable watching file system for asset hot reload
4646
filesystem_watcher = ["bevy_asset/filesystem_watcher"]
4747

48-
serialize = ["bevy_input/serialize", "bevy_time/serialize", "bevy_window/serialize"]
48+
serialize = ["bevy_input/serialize", "bevy_time/serialize", "bevy_window/serialize", "bevy_transform/serialize", "bevy_math/serialize"]
4949

5050
# Display server protocol support (X11 is enabled by default)
5151
wayland = ["bevy_winit/wayland"]

crates/bevy_math/Cargo.toml

+3-2
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,10 @@ license = "MIT OR Apache-2.0"
99
keywords = ["bevy"]
1010

1111
[dependencies]
12-
glam = { version = "0.21", features = ["serde", "bytemuck"] }
13-
serde = "1"
12+
glam = { version = "0.21", features = ["bytemuck"] }
13+
serde = { version = "1", features = ["derive"], optional = true }
1414

1515
[features]
1616
# Enable interoperation of glam types with mint-compatible libraries
1717
mint = ["glam/mint"]
18+
serialize = ["dep:serde", "glam/serde"]

crates/bevy_math/src/ray.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
use crate::Vec3;
2-
use serde::{Deserialize, Serialize};
32

43
/// A ray is an infinite line starting at `origin`, going in `direction`.
5-
#[derive(Default, Clone, Copy, Debug, Serialize, Deserialize, PartialEq)]
4+
#[derive(Default, Clone, Copy, Debug, PartialEq)]
5+
#[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))]
66
pub struct Ray {
77
/// The origin of the ray.
88
pub origin: Vec3,

crates/bevy_math/src/rect.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
use crate::Vec2;
2-
use serde::{Deserialize, Serialize};
32

43
/// A rectangle defined by two opposite corners.
54
///
@@ -10,7 +9,8 @@ use serde::{Deserialize, Serialize};
109
/// methods instead, which will ensure this invariant is met, unless you already have
1110
/// the minimum and maximum corners.
1211
#[repr(C)]
13-
#[derive(Default, Clone, Copy, Debug, Serialize, Deserialize, PartialEq)]
12+
#[derive(Default, Clone, Copy, Debug, PartialEq)]
13+
#[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))]
1414
pub struct Rect {
1515
/// The minimum corner point of the rect.
1616
pub min: Vec2,

crates/bevy_reflect/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ documentation = ["bevy_reflect_derive/documentation"]
1818

1919
[dependencies]
2020
# bevy
21-
bevy_math = { path = "../bevy_math", version = "0.9.0-dev", optional = true }
21+
bevy_math = { path = "../bevy_math", version = "0.9.0-dev", features = ["serialize"], optional = true }
2222
bevy_reflect_derive = { path = "bevy_reflect_derive", version = "0.9.0-dev" }
2323
bevy_utils = { path = "../bevy_utils", version = "0.9.0-dev" }
2424
bevy_ptr = { path = "../bevy_ptr", version = "0.9.0-dev" }

crates/bevy_transform/Cargo.toml

+4
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,7 @@ bevy_ecs = { path = "../bevy_ecs", version = "0.9.0-dev", features = ["bevy_refl
1515
bevy_hierarchy = { path = "../bevy_hierarchy", version = "0.9.0-dev" }
1616
bevy_math = { path = "../bevy_math", version = "0.9.0-dev" }
1717
bevy_reflect = { path = "../bevy_reflect", version = "0.9.0-dev", features = ["bevy"] }
18+
serde = { version = "1", features = ["derive"], optional = true }
19+
20+
[features]
21+
serialize = ["dep:serde", "bevy_math/serialize"]

crates/bevy_transform/src/components/global_transform.rs

+1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ use bevy_reflect::{std_traits::ReflectDefault, FromReflect, Reflect};
3232
///
3333
/// [`global_vs_local_translation`]: https://github.com/bevyengine/bevy/blob/latest/examples/transforms/global_vs_local_translation.rs
3434
#[derive(Component, Debug, PartialEq, Clone, Copy, Reflect, FromReflect)]
35+
#[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))]
3536
#[reflect(Component, Default, PartialEq)]
3637
pub struct GlobalTransform(Affine3A);
3738

crates/bevy_transform/src/components/transform.rs

+1
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ use std::ops::Mul;
3535
/// [`global_vs_local_translation`]: https://github.com/bevyengine/bevy/blob/latest/examples/transforms/global_vs_local_translation.rs
3636
/// [`transform`]: https://github.com/bevyengine/bevy/blob/latest/examples/transforms/transform.rs
3737
#[derive(Component, Debug, PartialEq, Clone, Copy, Reflect, FromReflect)]
38+
#[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))]
3839
#[reflect(Component, Default, PartialEq)]
3940
pub struct Transform {
4041
/// Position of the entity. In 2d, the last value of the `Vec3` is used for z-ordering.

0 commit comments

Comments
 (0)