Просмотр исходного кода

wallet: add is_visible property to objects

rsx 2 лет назад
Родитель
Сommit
9a90542009
1 измененных файлов с 8 добавлено и 3 удалено
  1. 8 3
      bin/darkwallet/src/gfx.rs

+ 8 - 3
bin/darkwallet/src/gfx.rs

@@ -394,12 +394,13 @@ impl Stage {
     }
 }
 
-fn get_obj_props(obj: &SceneNode) -> Result<(f32, f32, f32, f32)> {
+fn get_obj_props(obj: &SceneNode) -> Result<(f32, f32, f32, f32, bool)> {
     let x = obj.get_property_f32("x")?;
     let y = obj.get_property_f32("y")?;
     let scale_x = obj.get_property_f32("scale_x")?;
     let scale_y = obj.get_property_f32("scale_y")?;
-    Ok((x, y, scale_x, scale_y))
+    let is_visible = obj.get_property_bool("is_visible")?;
+    Ok((x, y, scale_x, scale_y, is_visible))
 }
 
 fn get_text_props(render_text: &SceneNode) -> Result<(String, f32, [f32; 4])> {
@@ -530,11 +531,15 @@ impl EventHandler for Stage {
             self.ctx.apply_scissor_rect(rect_x as i32, rect_y as i32, rect_w as i32, rect_h as i32);
 
             'outer: for obj in layer.iter_children(&scene_graph, SceneNodeType::RenderObject) {
-                let Ok((x, y, scale_x, scale_y)) = get_obj_props(obj) else {
+                let Ok((x, y, scale_x, scale_y, is_visible)) = get_obj_props(obj) else {
                     error!("obj '{}':{} has a property error", obj.name, obj.id);
                     continue
                 };
 
+                if !is_visible {
+                    continue
+                }
+
                 let model = glam::Mat4::from_translation(glam::Vec3::new(x, y, 0.)) *
                     glam::Mat4::from_scale(glam::Vec3::new(scale_x, scale_y, 1.));