// // AniTickleGestureRecognizer.cpp // SteveMaggieCpp // // Created by Katarzyna Kalinowska-Górska on 19.05.2017. // // #include #include "AniTickleGestureRecognizer.h" #include "AniGeometryUtils.h" AniTickleGestureRecognizer::AniTickleGestureRecognizer() { _swipeCount = 0; _onTickleDetected = [](){}; _onFastSwipeDetected = [&](AniGestureRecognizerDirection directionX, AniGestureRecognizerDirection directionY, cocos2d::Point startLocation, cocos2d::Point endLocation, float velocityX, float velocityY){ auto viewBB = AniGeometryUtils::getBoundingBoxToWorld(_view); if(!viewBB.containsPoint(startLocation) || !viewBB.containsPoint(endLocation)){ return; } _swipeCount += 1; if(_swipeCount == MIN_SWIPES_COUNT + 1){ _swipeTimes.pop_front(); _swipeCount = MIN_SWIPES_COUNT; } auto now = cocos2d::utils::getTimeInMilliseconds(); _swipeTimes.push_back(now); if(_swipeCount >= MIN_SWIPES_COUNT){ auto deltaTime = now - _swipeTimes[_swipeCount-MIN_SWIPES_COUNT]; if(deltaTime <= MAX_SWIPES_DETECTION_TIME){ _onTickleDetected(); _swipeTimes.clear(); _swipeCount = 0; } } }; } AniTickleGestureRecognizer::~AniTickleGestureRecognizer() { } void AniTickleGestureRecognizer::setOnTickleDetectedCallback(std::function callback) { _onTickleDetected = callback; }