lighttroupe/luz-next

View on GitHub
gui/gui_object_renderer.rb

Summary

Maintainability
A
0 mins
Test Coverage
#
# GuiObjectRenderer is base class for "renderers", ie rendering an object (usually a UserObject) without reparenting it
#
class GuiObjectRenderer < GuiObject
    callback :clicked
    callback :double_clicked

    easy_accessor :foreground_image

    attr_reader :object

    def initialize(object)
        @object = object
    end

    def ==(object)        # useful for being found in lists, etc.
        super || (@object == object)
    end

    #pipe :gui_tick, :object

    #
    # rendering
    #
    def gui_render
        return if hidden?
        gui_render_background
        @object.gui_render        # TODO: send a symbol for customizable render method (ie simple curves)
        if foreground_image
            foreground_image.using {
                unit_square
            }
        end
    end

    #
    # pointer
    #
    def click(pointer)
        parent.set_selection(self) if parent
        clicked_notify(pointer)
    end

    def double_click(pointer)
        double_clicked_notify(pointer)
    end
end