diff --git a/studio/src/lib.rs b/studio/src/lib.rs index 6eff445..2e21503 100644 --- a/studio/src/lib.rs +++ b/studio/src/lib.rs @@ -21,6 +21,7 @@ mod hierarchy; mod input; mod inspector; mod interaction; +pub mod material; pub mod math; mod mixamo; mod path; @@ -51,6 +52,7 @@ pub use crate::{ viewport::ViewportSize, world_grid::WorldGridPlugin, }; +use crate::material::MaterialPlugin; #[cfg(feature = "wasm")] mod wasm; @@ -86,6 +88,7 @@ impl PluginGroup for CommonPlugins { .add(InspectorPlugin) .add(InterpolationPlugin) .add(ScenePlugin) + .add(MaterialPlugin) .add(SkyboxPlugin) .add(StudioInputPlugin) .add(UiLayerPlugin) diff --git a/studio/src/material/mod.rs b/studio/src/material/mod.rs new file mode 100644 index 0000000..0678cca --- /dev/null +++ b/studio/src/material/mod.rs @@ -0,0 +1,14 @@ +use bevy::app::{App, Plugin}; +use space_editor::prelude::EditorRegistryExt; +use crate::material::short_material::ShortMaterial; + + +pub mod short_material; + +pub struct MaterialPlugin; +impl Plugin for MaterialPlugin { + fn build(&self, app: &mut App) { + app.register_type::() + .editor_registry::(); + } +} diff --git a/studio/src/material/short_material.rs b/studio/src/material/short_material.rs new file mode 100644 index 0000000..0eefe4f --- /dev/null +++ b/studio/src/material/short_material.rs @@ -0,0 +1,26 @@ +use bevy::pbr::StandardMaterial; +use bevy::prelude::{Color, Component, Reflect}; + +use bevy::ecs::reflect::ReflectComponent; +use bevy::reflect::std_traits::ReflectDefault; + + +#[derive(Reflect, Default, Clone, Component)] +#[reflect(Default, Component)] +pub struct ShortMaterial { + pub base_color: Color, + pub perceptual_roughness: f32, + pub metallic: f32, + pub reflectance: f32, +} + +impl ShortMaterial { + pub fn new(material: &StandardMaterial) -> Self { + Self { + base_color: material.base_color, + perceptual_roughness: material.perceptual_roughness, + metallic: material.metallic, + reflectance: material.reflectance, + } + } +} diff --git a/studio/src/ui/inspector.rs b/studio/src/ui/inspector.rs index 5d6f3df..6ae0a9a 100644 --- a/studio/src/ui/inspector.rs +++ b/studio/src/ui/inspector.rs @@ -24,6 +24,7 @@ use crate::{ interaction::Selection, wasm::{self, StaticBuffer, WasmMessageBuffer}, }; +use crate::material::short_material::ShortMaterial; pub struct InspectorPlugin; @@ -591,25 +592,6 @@ fn auto_serialize_asset( ev_update_description.send(UpdateEntityDescription); } -#[derive(Reflect, Default, Clone, Component)] -#[reflect(Default, Component)] -struct ShortMaterial { - pub base_color: Color, - pub perceptual_roughness: f32, - pub metallic: f32, - pub reflectance: f32, -} - -impl ShortMaterial { - pub fn new(material: &StandardMaterial) -> Self { - Self { - base_color: material.base_color, - perceptual_roughness: material.perceptual_roughness, - metallic: material.metallic, - reflectance: material.reflectance, - } - } -} fn serialize_standart_materal( r_selection: Option>,