From c8734ae98b19adf61d3633d16916e6b28d215b13 Mon Sep 17 00:00:00 2001 From: Cyberarm Date: Fri, 24 Dec 2021 17:00:02 -0600 Subject: [PATCH] Container child elements that are not visible are no longer drawn --- lib/cyberarm_engine/ui/element.rb | 8 +++++++- lib/cyberarm_engine/ui/elements/container.rb | 3 +++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/cyberarm_engine/ui/element.rb b/lib/cyberarm_engine/ui/element.rb index d44cc94..fd33713 100644 --- a/lib/cyberarm_engine/ui/element.rb +++ b/lib/cyberarm_engine/ui/element.rb @@ -4,7 +4,7 @@ module CyberarmEngine include Event include Common - attr_accessor :x, :y, :z, :tip + attr_accessor :x, :y, :z, :tip, :element_visible attr_reader :parent, :options, :style, :event_handler, :background_canvas, :border_canvas def initialize(options = {}, block = nil) @@ -24,6 +24,7 @@ module CyberarmEngine @root ||= nil @gui_state ||= nil + @element_visible = true @x = @style.x @y = @style.y @@ -260,6 +261,10 @@ module CyberarmEngine @visible end + def element_visible? + @element_visible + end + def toggle @visible = !@visible root.gui_state.request_recalculate @@ -279,6 +284,7 @@ module CyberarmEngine def draw return unless visible? + return unless element_visible? @style.background_canvas.draw @style.background_nine_slice_canvas.draw diff --git a/lib/cyberarm_engine/ui/elements/container.rb b/lib/cyberarm_engine/ui/elements/container.rb index c0a9611..1de5fd0 100644 --- a/lib/cyberarm_engine/ui/elements/container.rb +++ b/lib/cyberarm_engine/ui/elements/container.rb @@ -129,6 +129,9 @@ module CyberarmEngine child.reposition # TODO: Implement top,bottom,left,center, and right positioning Stats.increment(:gui_recalculations_last_frame, 1) + + child.element_visible = child.x >= @x - child.width && child.x <= @x + width && + child.y >= @y - child.height && child.y <= @y + height end update_background