diff --git a/fyrox-core/Cargo.toml b/fyrox-core/Cargo.toml index 683daea42..513d91000 100644 --- a/fyrox-core/Cargo.toml +++ b/fyrox-core/Cargo.toml @@ -45,5 +45,5 @@ js-sys = "0.3.53" android-activity = "0.4.1" [features] -serde = ["nalgebra/serde-serialize"] +serde = ["nalgebra/serde-serialize", "uuid/serde"] enable_profiler = [] diff --git a/fyrox-ui/Cargo.toml b/fyrox-ui/Cargo.toml index 74b141a90..5695e5abd 100644 --- a/fyrox-ui/Cargo.toml +++ b/fyrox-ui/Cargo.toml @@ -16,7 +16,7 @@ resolver = "2" rust-version = "1.56" [dependencies] -fyrox-core = { path = "../fyrox-core", version = "0.24.0" } +fyrox-core = { path = "../fyrox-core", version = "0.24.0", features = ["serde"] } lazy_static = "1.4.0" copypasta = "0.8.1" fontdue = "0.7.2" diff --git a/fyrox-ui/src/dock/config.rs b/fyrox-ui/src/dock/config.rs index 4b448f46c..8c5fb37de 100644 --- a/fyrox-ui/src/dock/config.rs +++ b/fyrox-ui/src/dock/config.rs @@ -1,12 +1,12 @@ -use crate::dock::TileBuilder; -use crate::widget::WidgetBuilder; use crate::{ core::{algebra::Vector2, pool::Handle, uuid::Uuid, visitor::prelude::*}, - dock::{Tile, TileContent}, + dock::{Tile, TileBuilder, TileContent}, + widget::WidgetBuilder, Orientation, UiNode, UserInterface, }; +use serde::{Deserialize, Serialize}; -#[derive(Debug, PartialEq, Clone, Default)] +#[derive(Debug, PartialEq, Clone, Default, Serialize, Deserialize)] pub struct SplitTilesDescriptor { pub splitter: f32, pub orientation: Orientation, @@ -27,7 +27,7 @@ impl Visit for SplitTilesDescriptor { } } -#[derive(Debug, PartialEq, Clone, Visit, Default)] +#[derive(Debug, PartialEq, Clone, Visit, Default, Serialize, Deserialize)] pub enum TileContentDescriptor { #[default] Empty, @@ -60,7 +60,7 @@ impl TileContentDescriptor { } } -#[derive(Debug, PartialEq, Clone, Visit, Default)] +#[derive(Debug, PartialEq, Clone, Visit, Default, Serialize, Deserialize)] pub struct TileDescriptor { pub tile_uuid: Uuid, pub content: TileContentDescriptor, @@ -112,14 +112,14 @@ impl TileDescriptor { } } -#[derive(Debug, PartialEq, Clone, Visit, Default)] +#[derive(Debug, PartialEq, Clone, Visit, Default, Serialize, Deserialize)] pub struct FloatingWindowDescriptor { pub id: Uuid, pub position: Vector2, pub size: Vector2, } -#[derive(Debug, PartialEq, Clone, Visit, Default)] +#[derive(Debug, PartialEq, Clone, Visit, Default, Serialize, Deserialize)] pub struct DockingManagerLayoutDescriptor { pub floating_windows: Vec, pub root_tile_descriptor: Option, diff --git a/fyrox-ui/src/lib.rs b/fyrox-ui/src/lib.rs index a560605d7..e9663b9cb 100644 --- a/fyrox-ui/src/lib.rs +++ b/fyrox-ui/src/lib.rs @@ -253,6 +253,7 @@ use crate::{ }; use copypasta::ClipboardContext; use fxhash::{FxHashMap, FxHashSet}; +use serde::{Deserialize, Serialize}; use std::{ cell::{Cell, Ref, RefCell, RefMut}, collections::{btree_set::BTreeSet, hash_map::Entry, VecDeque}, @@ -351,7 +352,7 @@ impl Deref for RcUiNodeHandle { } } -#[derive(Copy, Clone, Debug, PartialEq, Eq, Visit, Default)] +#[derive(Copy, Clone, Debug, PartialEq, Eq, Visit, Default, Serialize, Deserialize)] pub enum Orientation { #[default] Vertical,