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