// // Tickle2GestureRecognizer.h // SteveMaggieCpp // // Created by Katarzyna Kalinowska-Górska on 19.05.2017. // // #ifndef Tickle2GestureRecognizer_h #define Tickle2GestureRecognizer_h #include "AniGestureRecognizer.h" class Tickle2GestureRecognizer : public AniGestureRecognizer { public: Tickle2GestureRecognizer(); virtual ~Tickle2GestureRecognizer(); virtual void setOnTicklingStartedCallback(std::function callback); virtual void setOnTicklingCallback(std::function callback); virtual void setOnTicklingEndedCallback(std::function callback); protected: std::function _onTicklingStartedCallback; std::function _onTicklingCallback; std::function _onTicklingEndedCallback; const int N_LAST_SAMPLES = 16; const int N_DIRECTION_CHANGES_TO_DETECT_TICKLE = 2; const float MAX_DETECTION_TIME = 500; const float MIN_DELTA_VALUE = 1; const float TIME_TO_ASSUME_TICKLE_FINISHED = 6000; AniGestureRecognizerDirection _currentDirectionX; AniGestureRecognizerDirection _currentDirectionY; std::deque _directionChangeTimes; double _tickleStartedTime; bool _beganValid; std::deque _lastXDeltas; std::deque _lastYDeltas; bool _isTickling; virtual void clearTemps(); virtual void endTickling(); virtual bool onTouchBegan(cocos2d::Touch* touch, cocos2d::Event* event) override; virtual void onTouchMoved(cocos2d::Touch* touch, cocos2d::Event* event) override; virtual void onTouchEnded(cocos2d::Touch* touch, cocos2d::Event* event) override; }; #endif /* Tickle2GestureRecognizer_h */