Skip to content

Commit

Permalink
Add default implementation of Serialize and Deserialize to Timer and …
Browse files Browse the repository at this point in the history
…Stopwatch (#6248)

# Objective

Fixes #6244

## Solution

Uses derive to implement `Serialize` and `Deserialize` for `Timer` and `Stopwatch`

### Things to consider
- Should fields such as `finished` and `times_finished_this_tick` in `Timer` be serialized?
- Does `Countdown` and `PrintOnCompletionTimer` need to be serialized and deserialized?

## Changelog

Added `Serialize` and `Deserialize` implementations to `Timer` and `Stopwatch`, `Countdown`.
  • Loading branch information
SleepySwords committed Oct 17, 2022
1 parent 132e8fb commit bfbcd47
Show file tree
Hide file tree
Showing 4 changed files with 8 additions and 1 deletion.
2 changes: 1 addition & 1 deletion crates/bevy_internal/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ wav = ["bevy_audio/wav"]
# Enable watching file system for asset hot reload
filesystem_watcher = ["bevy_asset/filesystem_watcher"]

serialize = ["bevy_input/serialize", "bevy_window/serialize"]
serialize = ["bevy_input/serialize", "bevy_time/serialize", "bevy_window/serialize"]

# Display server protocol support (X11 is enabled by default)
wayland = ["bevy_winit/wayland"]
Expand Down
4 changes: 4 additions & 0 deletions crates/bevy_time/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ repository = "https://github.com/bevyengine/bevy"
license = "MIT OR Apache-2.0"
keywords = ["bevy"]

[features]
default = []
serialize = ["serde"]

[dependencies]
# bevy
Expand All @@ -18,3 +21,4 @@ bevy_utils = { path = "../bevy_utils", version = "0.9.0-dev" }

# other
crossbeam-channel = "0.5.0"
serde = { version = "1", features = ["derive"], optional = true }
1 change: 1 addition & 0 deletions crates/bevy_time/src/stopwatch.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ use bevy_utils::Duration;
/// assert_eq!(stopwatch.elapsed_secs(), 0.0);
/// ```
#[derive(Clone, Debug, Default, Reflect)]
#[cfg_attr(feature = "serialize", derive(serde::Deserialize, serde::Serialize))]
#[reflect(Default)]
pub struct Stopwatch {
elapsed: Duration,
Expand Down
2 changes: 2 additions & 0 deletions crates/bevy_time/src/timer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ use bevy_utils::Duration;
///
/// Paused timers will not have elapsed time increased.
#[derive(Clone, Debug, Default, Reflect)]
#[cfg_attr(feature = "serialize", derive(serde::Deserialize, serde::Serialize))]
#[reflect(Default)]
pub struct Timer {
stopwatch: Stopwatch,
Expand Down Expand Up @@ -401,6 +402,7 @@ impl Timer {

/// Specifies [`Timer`] behavior.
#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash, Default, Reflect)]
#[cfg_attr(feature = "serialize", derive(serde::Deserialize, serde::Serialize))]
#[reflect(Default)]
pub enum TimerMode {
/// Run once and stop.
Expand Down

0 comments on commit bfbcd47

Please sign in to comment.