AniTickleGestureRecognizer.cpp 1.53 KB
//
//  AniTickleGestureRecognizer.cpp
//  SteveMaggieCpp
//
//  Created by Katarzyna Kalinowska-Górska on 19.05.2017.
//
//

#include <stdio.h>
#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<void()> callback)
{
    _onTickleDetected = callback;
}