lib/fusuma/pinch.rb in fusuma-0.2.2 vs lib/fusuma/pinch.rb in fusuma-0.2.3
- old
+ new
@@ -1,9 +1,10 @@
module Fusuma
- # manage actions
+ # vector data
class Pinch
BASE_THERESHOLD = 0.3
+ INTERVAL_TIME = 0.05
def initialize(diameter)
@diameter = diameter.to_f
end
@@ -12,15 +13,39 @@
def direction
return 'in' if diameter > 0
'out'
end
- def enough_diameter?
+ def enough?
MultiLogger.debug(diameter: diameter)
+ enough_diameter? && enough_interval? && self.class.touch_last_time
+ end
+
+ private
+
+ def enough_diameter?
diameter.abs > threshold
end
+ def enough_interval?
+ return true if first_time?
+ return true if (Time.now - self.class.last_time) > INTERVAL_TIME
+ false
+ end
+
+ def first_time?
+ self.class.last_time.nil?
+ end
+
def threshold
@threshold ||= BASE_THERESHOLD * Config.threshold('pinch')
+ end
+
+ class << self
+ attr_reader :last_time
+
+ def touch_last_time
+ @last_time = Time.now
+ end
end
end
end