diff --git a/editor/src/asset/item.rs b/editor/src/asset/item.rs index 826fb8035..3566eb9ef 100644 --- a/editor/src/asset/item.rs +++ b/editor/src/asset/item.rs @@ -26,8 +26,8 @@ use crate::{ asset::{manager::ResourceManager, untyped::UntypedResource, Resource, TypedResourceData}, core::{ algebra::Vector2, color::Color, futures::executor::block_on, make_relative_path, - parking_lot::lock_api::Mutex, pool::Handle, reflect::prelude::*, - type_traits::prelude::*, uuid_provider, visitor::prelude::*, + parking_lot::lock_api::Mutex, pool::Handle, reflect::prelude::*, uuid_provider, + visitor::prelude::*, }, graph::SceneGraph, gui::{ @@ -80,7 +80,7 @@ pub enum AssetItemMessage { impl MessageData for AssetItemMessage {} #[allow(dead_code)] -#[derive(Debug, Clone, Visit, Reflect, ComponentProvider)] +#[derive(Debug, Clone, Visit, Reflect)] #[reflect(derived_type = "UiNode")] pub struct AssetItem { widget: Widget, diff --git a/editor/src/asset/menu.rs b/editor/src/asset/menu.rs index 91e1f1a84..f02cfb562 100644 --- a/editor/src/asset/menu.rs +++ b/editor/src/asset/menu.rs @@ -62,7 +62,7 @@ use std::{ path::PathBuf, }; -#[derive(Clone, Visit, Reflect, Debug, ComponentProvider, TypeUuidProvider)] +#[derive(Clone, Visit, Reflect, Debug, TypeUuidProvider)] #[reflect(derived_type = "UiNode")] #[type_uuid(id = "8c9934ad-b4e1-4c68-9876-f253e34c6667")] struct AssetRenameDialog { diff --git a/editor/src/asset/selector.rs b/editor/src/asset/selector.rs index c67a8d0a0..74338ea54 100644 --- a/editor/src/asset/selector.rs +++ b/editor/src/asset/selector.rs @@ -79,7 +79,7 @@ pub enum AssetSelectorMessage { } impl MessageData for AssetSelectorMessage {} -#[derive(Clone, Debug, Reflect, Visit, TypeUuidProvider, ComponentProvider)] +#[derive(Clone, Debug, Reflect, Visit, TypeUuidProvider)] #[type_uuid(id = "aa4f0726-8d25-4c90-add1-92ba392310c6")] struct Item { pub widget: Widget, @@ -230,7 +230,7 @@ impl ItemBuilder { } } -#[derive(Clone, Debug, Reflect, Visit, TypeUuidProvider, ComponentProvider)] +#[derive(Clone, Debug, Reflect, Visit, TypeUuidProvider)] #[type_uuid(id = "970bb83b-51e8-48e7-8050-f97bf0ac470b")] pub struct AssetSelector { pub widget: Widget, @@ -384,7 +384,7 @@ impl<'a> AssetSelectorBuilder<'a> { } } -#[derive(Clone, Debug, Reflect, Visit, TypeUuidProvider, ComponentProvider)] +#[derive(Clone, Debug, Reflect, Visit, TypeUuidProvider)] #[type_uuid(id = "c348ad3d-52a6-40ad-a5e4-bf63fefe1906")] pub struct AssetSelectorWindow { pub window: Window, diff --git a/editor/src/audio/bus.rs b/editor/src/audio/bus.rs index fffb902c9..7a43c8827 100644 --- a/editor/src/audio/bus.rs +++ b/editor/src/audio/bus.rs @@ -19,10 +19,7 @@ // SOFTWARE. use crate::fyrox::{ - core::{ - pool::Handle, reflect::prelude::*, type_traits::prelude::*, uuid_provider, - visitor::prelude::*, - }, + core::{pool::Handle, reflect::prelude::*, uuid_provider, visitor::prelude::*}, gui::{ border::BorderBuilder, decorator::DecoratorBuilder, @@ -56,7 +53,7 @@ pub enum AudioBusViewMessage { } impl MessageData for AudioBusViewMessage {} -#[derive(Clone, Visit, Reflect, Debug, ComponentProvider)] +#[derive(Clone, Visit, Reflect, Debug)] #[reflect(derived_type = "UiNode")] pub struct AudioBusView { widget: Widget, diff --git a/editor/src/command/mod.rs b/editor/src/command/mod.rs index ec21fb092..22448ced1 100644 --- a/editor/src/command/mod.rs +++ b/editor/src/command/mod.rs @@ -24,40 +24,38 @@ use crate::fyrox::{ reflect::{ is_path_to_array_element, Reflect, ResolvePath, SetFieldByPathError, SetFieldError, }, - some_or_return, ComponentProvider, + some_or_return, }, gui::inspector::{PropertyAction, PropertyChanged}, }; use std::{ - any::{type_name, TypeId}, + any::type_name, fmt::{Debug, Formatter}, ops::{Deref, DerefMut, RangeBounds}, }; pub mod panel; -pub trait CommandContext: ComponentProvider {} +pub trait CommandContext: Reflect {} impl dyn CommandContext + '_ { pub fn component_ref(&self) -> Option<&T> where - T: 'static, + T: Reflect, { - self.query_component_ref(TypeId::of::()) - .and_then(|c| c.downcast_ref()) + (self as &dyn Reflect).self_or_field_ref_of_type() } pub fn component_mut(&mut self) -> Option<&mut T> where - T: 'static, + T: Reflect, { - self.query_component_mut(TypeId::of::()) - .and_then(|c| c.downcast_mut()) + (self as &mut dyn Reflect).self_or_field_mut_of_type() } pub fn get(&self) -> &T where - T: 'static, + T: Reflect, { self.component_ref().unwrap_or_else(|| { panic!( @@ -69,7 +67,7 @@ impl dyn CommandContext + '_ { pub fn get_mut(&mut self) -> &mut T where - T: 'static, + T: Reflect, { self.component_mut().unwrap_or_else(|| { panic!( diff --git a/editor/src/message.rs b/editor/src/message.rs index 64dc0d793..93737cc28 100644 --- a/editor/src/message.rs +++ b/editor/src/message.rs @@ -24,6 +24,7 @@ use crate::{ core::{ log::Log, pool::{ErasedHandle, Handle}, + reflect::prelude::*, uuid::Uuid, }, gui::{inspector::PropertyChanged, UiNode}, @@ -123,7 +124,8 @@ pub enum Message { SetAssetBrowserCurrentDir(PathBuf), } -#[derive(Clone, Debug)] +#[derive(Clone, Debug, Reflect)] +#[reflect(hide_all)] pub struct MessageSender(pub Sender); impl Default for MessageSender { diff --git a/editor/src/plugins/absm/blendspace.rs b/editor/src/plugins/absm/blendspace.rs index 40364fdb0..5eb493de4 100644 --- a/editor/src/plugins/absm/blendspace.rs +++ b/editor/src/plugins/absm/blendspace.rs @@ -108,7 +108,7 @@ enum DragContext { Point { point: usize }, } -#[derive(Clone, Visit, Reflect, ComponentProvider)] +#[derive(Clone, Visit, Reflect)] #[reflect(derived_type = "UiNode")] struct BlendSpaceField { widget: Widget, @@ -557,7 +557,7 @@ pub enum BlendSpaceFieldPointMessage { } impl MessageData for BlendSpaceFieldPointMessage {} -#[derive(Clone, Visit, Reflect, Debug, ComponentProvider)] +#[derive(Clone, Visit, Reflect, Debug)] #[reflect(derived_type = "UiNode")] struct BlendSpaceFieldPoint { widget: Widget, diff --git a/editor/src/plugins/absm/canvas.rs b/editor/src/plugins/absm/canvas.rs index 0b8564499..f722bedec 100644 --- a/editor/src/plugins/absm/canvas.rs +++ b/editor/src/plugins/absm/canvas.rs @@ -25,7 +25,6 @@ use crate::fyrox::{ math::Rect, pool::Handle, reflect::prelude::*, - type_traits::prelude::*, uuid_provider, visitor::prelude::*, }, @@ -112,7 +111,7 @@ impl MessageData for AbsmCanvasMessage { } } -#[derive(Clone, Visit, Reflect, Debug, ComponentProvider)] +#[derive(Clone, Visit, Reflect, Debug)] #[reflect(derived_type = "UiNode")] pub struct AbsmCanvas { widget: Widget, @@ -194,7 +193,7 @@ impl AbsmCanvas { ui: &UserInterface, ) -> Handle where - T: 'static, + T: Reflect, { if ui .try_get_node(node_handle) diff --git a/editor/src/plugins/absm/connection.rs b/editor/src/plugins/absm/connection.rs index ac231fd48..466733364 100644 --- a/editor/src/plugins/absm/connection.rs +++ b/editor/src/plugins/absm/connection.rs @@ -21,7 +21,7 @@ use crate::fyrox::{ core::{ algebra::Vector2, color::Color, math::Rect, pool::Handle, reflect::prelude::*, - type_traits::prelude::*, uuid_provider, visitor::prelude::*, + uuid_provider, visitor::prelude::*, }, gui::{ brush::Brush, @@ -43,7 +43,7 @@ use fyrox::material::MaterialResource; const PICKED_BRUSH: Brush = Brush::Solid(Color::opaque(100, 100, 100)); const NORMAL_BRUSH: Brush = Brush::Solid(Color::opaque(80, 80, 80)); -#[derive(Debug, Clone, Visit, Reflect, ComponentProvider)] +#[derive(Debug, Clone, Visit, Reflect)] #[reflect(derived_type = "UiNode")] pub struct Connection { widget: Widget, diff --git a/editor/src/plugins/absm/node.rs b/editor/src/plugins/absm/node.rs index c2c028e0e..e3cff5bdc 100644 --- a/editor/src/plugins/absm/node.rs +++ b/editor/src/plugins/absm/node.rs @@ -57,7 +57,7 @@ pub struct AbsmBaseNode { pub output_socket: Handle, } -#[derive(Visit, Reflect, ComponentProvider)] +#[derive(Visit, Reflect)] #[reflect(derived_type = "UiNode")] pub struct AbsmNode where @@ -65,11 +65,9 @@ where { widget: Widget, background: Handle, - #[component(include)] selectable: Selectable, pub name_value: String, pub model_handle: Handle, - #[component(include)] pub base: AbsmBaseNode, pub add_input: Handle