Sha256: c1e97efb093135bdeed74d941f26994bfe69401dc24eb8f537f6929c6640cdea

Contents?: true

Size: 579 Bytes

Versions: 4

Compression:

Stored size: 579 Bytes

Contents

module Nuklear
  # Stores staged events waiting to be drained.
  class EventBuffer
    # These correlate to methods defined by Nuklear::Context::EventSink.
    EVENT_NAMES = [:motion, :key, :button, :scroll, :char, :glyph, :unicode]

    attr_reader :pending_events

    def initialize
      @pending_events = []
    end

    def drain
      @pending_events.each { |evt| yield(evt) }
      @pending_events.clear
    end

    def add(event_name, *event_args)
      super unless EVENT_NAMES.include?(event_name)
      @pending_events << [event_name, *event_args]
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
nuklear-0.1.3 lib/nuklear/event_buffer.rb
nuklear-0.1.2 lib/nuklear/event_buffer.rb
nuklear-0.1.1 lib/nuklear/event_buffer.rb
nuklear-0.1.0 lib/nuklear/event_buffer.rb