110 lines
2.9 KiB
C#
110 lines
2.9 KiB
C#
/***********************************************
|
|
EasyTouch V
|
|
Copyright © 2014-2015 The Hedgehog Team
|
|
http://www.thehedgehogteam.com/Forum/
|
|
|
|
The.Hedgehog.Team@gmail.com
|
|
|
|
**********************************************/
|
|
using UnityEngine;
|
|
using System.Collections;
|
|
using UnityEngine.Events;
|
|
using UnityEngine.EventSystems;
|
|
|
|
namespace HedgehogTeam.EasyTouch{
|
|
[AddComponentMenu("EasyTouch/Quick LongTap")]
|
|
public class QuickLongTap : QuickBase {
|
|
|
|
#region Events
|
|
[System.Serializable] public class OnLongTap : UnityEvent<Gesture>{}
|
|
|
|
[SerializeField]
|
|
public OnLongTap onLongTap;
|
|
#endregion
|
|
|
|
#region Enumeration
|
|
public enum ActionTriggering {Start,InProgress,End};
|
|
#endregion
|
|
|
|
#region Members
|
|
public ActionTriggering actionTriggering;
|
|
private Gesture currentGesture;
|
|
#endregion
|
|
|
|
public QuickLongTap(){
|
|
quickActionName = "QuickLongTap"+ GetInstanceID().ToString();
|
|
}
|
|
|
|
void Update(){
|
|
currentGesture = EasyTouch.current;
|
|
|
|
if (!is2Finger){
|
|
|
|
if (currentGesture.type == EasyTouch.EvtType.On_TouchStart && fingerIndex == -1 && IsOverMe(currentGesture)){
|
|
fingerIndex = currentGesture.fingerIndex;
|
|
}
|
|
|
|
if (currentGesture.type == EasyTouch.EvtType.On_LongTapStart && actionTriggering == ActionTriggering.Start){
|
|
if (currentGesture.fingerIndex == fingerIndex || isMultiTouch){
|
|
|
|
DoAction( currentGesture);
|
|
}
|
|
}
|
|
|
|
if (currentGesture.type == EasyTouch.EvtType.On_LongTap && actionTriggering == ActionTriggering.InProgress){
|
|
if (currentGesture.fingerIndex == fingerIndex || isMultiTouch){
|
|
DoAction( currentGesture);
|
|
}
|
|
}
|
|
|
|
if (currentGesture.type == EasyTouch.EvtType.On_LongTapEnd && actionTriggering == ActionTriggering.End){
|
|
if (currentGesture.fingerIndex == fingerIndex || isMultiTouch){
|
|
DoAction( currentGesture);
|
|
fingerIndex =-1;
|
|
}
|
|
}
|
|
}
|
|
else{
|
|
if (currentGesture.type == EasyTouch.EvtType.On_LongTapStart2Fingers && actionTriggering == ActionTriggering.Start){
|
|
DoAction( currentGesture);
|
|
}
|
|
|
|
if (currentGesture.type == EasyTouch.EvtType.On_LongTap2Fingers && actionTriggering == ActionTriggering.InProgress){
|
|
DoAction( currentGesture);
|
|
}
|
|
|
|
if (currentGesture.type == EasyTouch.EvtType.On_LongTapEnd2Fingers && actionTriggering == ActionTriggering.End){
|
|
DoAction( currentGesture);
|
|
}
|
|
}
|
|
}
|
|
|
|
void DoAction(Gesture gesture){
|
|
if (IsOverMe(gesture)){
|
|
onLongTap.Invoke( gesture);
|
|
}
|
|
}
|
|
|
|
private bool IsOverMe(Gesture gesture){
|
|
bool returnValue = false;
|
|
|
|
if ( realType == GameObjectType.UI){
|
|
if (gesture.isOverGui ){
|
|
if ((gesture.pickedUIElement == gameObject || gesture.pickedUIElement.transform.IsChildOf( transform))){
|
|
returnValue = true;
|
|
}
|
|
}
|
|
}
|
|
else{
|
|
if ((!enablePickOverUI && gesture.pickedUIElement == null) || enablePickOverUI){
|
|
if (EasyTouch.GetGameObjectAt( gesture.position,is2Finger) == gameObject){
|
|
returnValue = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
return returnValue;
|
|
}
|
|
}
|
|
}
|