Method: CyberarmEngine::Element::Container#hit_element?

Defined in:
lib/cyberarm_engine/ui/elements/container.rb

#hit_element?(x, y) ⇒ Boolean

Returns:

  • (Boolean)


102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
# File 'lib/cyberarm_engine/ui/elements/container.rb', line 102

def hit_element?(x, y)
  return unless hit?(x, y)

  # Offset child hit point by scroll position/offset
  child_x = x - @scroll_position.x
  child_y = y - @scroll_position.y

  @children.reverse_each do |child|
    next unless child.visible?

    case child
    when Container
      if element = child.hit_element?(child_x, child_y)
        return element
      end
    else
      return child if child.hit?(child_x, child_y)
    end
  end

  self if hit?(x, y)
end