From 6c9cd6106e733ec6b87188d604033c824e3b4244 Mon Sep 17 00:00:00 2001 From: rewin Date: Mon, 19 Feb 2024 22:09:37 +0300 Subject: [PATCH] event kind --- studio/src/ui/inspector.rs | 12 +++++++----- studio/src/ui/utils.rs | 26 +++++++++++++++++++------- 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/studio/src/ui/inspector.rs b/studio/src/ui/inspector.rs index b1e03ca..8dbfb92 100644 --- a/studio/src/ui/inspector.rs +++ b/studio/src/ui/inspector.rs @@ -88,11 +88,13 @@ fn show_selected(world: &mut World) { let e = cell.get_entity(selected_entity).unwrap(); if let Some(changes) = super::utils::wasm::ONCHAGE_BUFFER.take_message() { - for (id, value) in changes { - info!("change: {} : {}", id, value); - virtial_dom - .on_change_events - .execute(cell.world_mut(), id, value); + for (id, kind, value) in changes { + if kind == "onchange" { + info!("change: {} : {}", id, value); + virtial_dom + .on_change_events + .execute(cell.world_mut(), id, value); + } } } diff --git a/studio/src/ui/utils.rs b/studio/src/ui/utils.rs index 411b984..8ba4ee0 100644 --- a/studio/src/ui/utils.rs +++ b/studio/src/ui/utils.rs @@ -20,6 +20,7 @@ pub struct Component { pub attributes: Vec<(String, String)>, pub children: Vec, pub onchange: Option>, + pub onclick: Option>, } pub enum Element { @@ -54,6 +55,7 @@ impl WebEventStorage { pub struct VirtualDom { last_node: Option, pub on_change_events: WebEventStorage, + pub on_click_events: WebEventStorage, } impl VirtualDom { @@ -120,12 +122,12 @@ pub mod wasm { use crate::wasm::{StaticBuffer, WasmMessageBuffer}; - pub static ONCHAGE_BUFFER: WasmMessageBuffer> = WasmMessageBuffer::new(); + pub static ONCHAGE_BUFFER: WasmMessageBuffer> = WasmMessageBuffer::new(); #[wasm_bindgen(js_name = register_new_change)] - pub fn register_new_change(id: String, value: String) { + pub fn register_new_change(id: String, kind: String, value: String) { let mut data = ONCHAGE_BUFFER.take_message().unwrap_or_default(); - data.push((id, value)); + data.push((id, kind, value)); ONCHAGE_BUFFER.write_message(data); } } @@ -259,7 +261,7 @@ fn check_predefined(r: &dyn Reflect, onchange: ReflectChange) -> Option "font-weight: bold; font-size: 24px".to_string(), )], children: vec![Element::Text(format!("{}", &name))], - onchange: None, + ..default() })) } else if let Some(transform) = r.downcast_ref::() { Some(Element::Component(Component { @@ -276,7 +278,7 @@ fn check_predefined(r: &dyn Reflect, onchange: ReflectChange) -> Option Element::Text("Scale: ".to_string()), show_reflect(&transform.scale, onchange.add_path("scale")).unwrap(), ], - onchange: None, + ..default() })) } else if let Some(quat) = r.downcast_ref::() { let euler = quat.to_euler(EulerRot::XYZ); @@ -315,6 +317,7 @@ fn check_predefined(r: &dyn Reflect, onchange: ReflectChange) -> Option Quat::from_euler(EulerRot::XYZ, value, euler.1, euler.2); }, )), + ..default() }), Element::Text("Y: ".to_string()), Element::Component(Component { @@ -344,6 +347,7 @@ fn check_predefined(r: &dyn Reflect, onchange: ReflectChange) -> Option transform.rotation *= Quat::from_axis_angle(Vec3::Y, value - euler.1); }, )), + ..default() }), Element::Text("Z: ".to_string()), Element::Component(Component { @@ -374,9 +378,10 @@ fn check_predefined(r: &dyn Reflect, onchange: ReflectChange) -> Option Quat::from_euler(EulerRot::XYZ, euler.0, euler.1, value); }, )), + ..default() }), ], - onchange: None, + ..default() })) } else { r.downcast_ref::().map(|vec| { @@ -396,6 +401,7 @@ fn check_predefined(r: &dyn Reflect, onchange: ReflectChange) -> Option onchange: Some(Box::new(ReflectValueExecutor::from( onchange.add_path("x"), ))), + ..default() }), Element::Text("Y: ".to_string()), Element::Component(Component { @@ -409,6 +415,7 @@ fn check_predefined(r: &dyn Reflect, onchange: ReflectChange) -> Option onchange: Some(Box::new(ReflectValueExecutor::from( onchange.add_path("y"), ))), + ..default() }), Element::Text("Z: ".to_string()), Element::Component(Component { @@ -422,9 +429,10 @@ fn check_predefined(r: &dyn Reflect, onchange: ReflectChange) -> Option onchange: Some(Box::new(ReflectValueExecutor::from( onchange.add_path("z"), ))), + ..default() }), ], - onchange: None, + ..default() }) }) } @@ -453,6 +461,7 @@ pub fn show_reflect(r: &dyn Reflect, reflect: ReflectChange) -> Option ], children: vec![], onchange: Some(Box::new(ReflectValueExecutor::from(reflect))), + ..default() })) } else if let Some(b) = v.downcast_ref::() { Some(Element::Component(Component { @@ -463,6 +472,7 @@ pub fn show_reflect(r: &dyn Reflect, reflect: ReflectChange) -> Option ], children: vec![], onchange: Some(Box::new(ReflectValueExecutor::from(reflect))), + ..default() })) } else if let Some(i) = v.downcast_ref::() { Some(Element::Component(Component { @@ -473,6 +483,7 @@ pub fn show_reflect(r: &dyn Reflect, reflect: ReflectChange) -> Option ], children: vec![], onchange: Some(Box::new(ReflectValueExecutor::from(reflect))), + ..default() })) } else if let Some(f) = v.downcast_ref::() { Some(Element::Component(Component { @@ -483,6 +494,7 @@ pub fn show_reflect(r: &dyn Reflect, reflect: ReflectChange) -> Option ], children: vec![], onchange: Some(Box::new(ReflectValueExecutor::from(reflect))), + ..default() })) } else { Some(Element::Text(format!("{:?}", v)))