lib/rubysketch/processing.rb in rubysketch-0.3.17 vs lib/rubysketch/processing.rb in rubysketch-0.3.18

- old
+ new

@@ -1827,11 +1827,11 @@ @key__ = nil @keyCode__ = nil @keysPressed__ = Set.new @pointerPos__ = @pointerPrevPos__ = [0, 0] - @pointersPressed__ = Set.new + @pointersPressed__ = [] @touches__ = [] @motionGravity__ = createVector 0, 0 @window__.before_draw = proc {beginDraw__} @window__.after_draw = proc {endDraw__} @@ -1862,16 +1862,25 @@ set, key = @keysPressed__, event.key pressed ? set.add(key) : set.delete(key) end } + mouseButtonMap = { + mouse_left: LEFT, + mouse_right: RIGHT, + mouse_middle: CENTER + } + updatePointerStates = -> event, pressed = nil { @pointerPos__ = event.pos.to_a @touches__ = event.pointers.map {|p| Touch.new(p.id, *p.pos.to_a)} if pressed != nil - set, type = @pointersPressed__, event.type - pressed ? set.add(type) : set.delete(type) + array = @pointersPressed__ + event.type + .tap {|types| types.delete :mouse} + .map {|type| mouseButtonMap[type] || type} + .each {|type| pressed ? array.push(type) : array.delete(type)} end } @window__.key_down = proc do |e| updateKeyStates.call e, true @@ -2138,9 +2147,17 @@ # # @return [Numeric] vertical position of mouse # def pmouseY() @pointerPrevPos__[1] + end + + # Returns which mouse button was pressed + # + # @return [Numeric] LEFT, RIGHT, CENTER or 0 + # + def mouseButton() + (@pointersPressed__ & [LEFT, RIGHT, CENTER]).last || 0 end # Returns array of touches # # @return [Array] Touch objects