129 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			129 lines
		
	
	
		
			3.3 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 Touch")]
 | |
| public class QuickTouch : QuickBase {
 | |
| 
 | |
| 	#region Events
 | |
| 	[System.Serializable] public class OnTouch : UnityEvent<Gesture>{}
 | |
| 	[System.Serializable] public class OnTouchNotOverMe : UnityEvent<Gesture>{}
 | |
| 
 | |
| 	[SerializeField] 
 | |
| 	public OnTouch onTouch;
 | |
| 	public OnTouchNotOverMe onTouchNotOverMe;
 | |
| 	#endregion
 | |
| 
 | |
| 	#region Enumeration
 | |
| 	public enum ActionTriggering {Start,Down,Up};
 | |
| 	#endregion
 | |
| 
 | |
| 	#region Members
 | |
| 	public ActionTriggering actionTriggering;
 | |
| 	private Gesture currentGesture;
 | |
| 	#endregion
 | |
| 
 | |
| 	#region Monobehavior CallBack
 | |
| 	public QuickTouch(){
 | |
| 		quickActionName = "QuickTouch"+ GetInstanceID().ToString();
 | |
| 	}
 | |
| 	#endregion		
 | |
| 
 | |
| 	void Update(){
 | |
| 		currentGesture = EasyTouch.current;
 | |
| 		
 | |
| 		if (!is2Finger){
 | |
| 			
 | |
| 			// GetIndex at touch start
 | |
| 			if (currentGesture.type == EasyTouch.EvtType.On_TouchStart && fingerIndex == -1 && IsOverMe(currentGesture)){
 | |
| 				fingerIndex = currentGesture.fingerIndex;
 | |
| 			}
 | |
| 			
 | |
| 			// start
 | |
| 			if (currentGesture.type == EasyTouch.EvtType.On_TouchStart && actionTriggering == ActionTriggering.Start){
 | |
| 				if (currentGesture.fingerIndex == fingerIndex || isMultiTouch){
 | |
| 					DoAction( currentGesture);
 | |
| 				}
 | |
| 			}
 | |
| 			
 | |
| 			// Down
 | |
| 			if (currentGesture.type == EasyTouch.EvtType.On_TouchDown  && actionTriggering == ActionTriggering.Down){
 | |
| 				if (currentGesture.fingerIndex == fingerIndex || isMultiTouch){
 | |
| 					DoAction( currentGesture);
 | |
| 				}
 | |
| 			}
 | |
| 			
 | |
| 			// Up
 | |
| 			if (currentGesture.type == EasyTouch.EvtType.On_TouchUp){
 | |
| 			    if ( actionTriggering == ActionTriggering.Up){
 | |
| 					if (currentGesture.fingerIndex == fingerIndex || isMultiTouch){
 | |
| 						if (IsOverMe(currentGesture)){
 | |
| 							onTouch.Invoke( currentGesture);
 | |
| 						}
 | |
| 						else{
 | |
| 							onTouchNotOverMe.Invoke( currentGesture);
 | |
| 						}
 | |
| 					}
 | |
| 				}
 | |
| 				if (currentGesture.fingerIndex == fingerIndex){ fingerIndex =-1;}
 | |
| 			}
 | |
| 		}
 | |
| 		else{
 | |
| 			if (currentGesture.type == EasyTouch.EvtType.On_TouchStart2Fingers && actionTriggering == ActionTriggering.Start){
 | |
| 				DoAction( currentGesture);
 | |
| 			}
 | |
| 			
 | |
| 			if (currentGesture.type == EasyTouch.EvtType.On_TouchDown2Fingers && actionTriggering == ActionTriggering.Down){
 | |
| 				DoAction( currentGesture);
 | |
| 			}
 | |
| 			
 | |
| 			if (currentGesture.type == EasyTouch.EvtType.On_TouchUp2Fingers && actionTriggering == ActionTriggering.Up){
 | |
| 				DoAction( currentGesture);
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	#region Private method
 | |
| 	void DoAction(Gesture gesture){
 | |
| 		if (IsOverMe(gesture)){
 | |
| 			onTouch.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;
 | |
| 	}
 | |
| 	#endregion
 | |
| }
 | |
| }
 | |
| 	
 |