142 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			142 lines
		
	
	
		
			4.1 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 System; | ||
|  | 
 | ||
|  | namespace HedgehogTeam.EasyTouch{ | ||
|  | /// <summary> | ||
|  | /// This is the class passed as parameter by EasyTouch events, that containing all informations about the touch that raise the event, | ||
|  | /// or by the tow fingers gesture that raise the event. | ||
|  | /// </summary> | ||
|  | public class Gesture : BaseFinger,ICloneable{ | ||
|  | 	 | ||
|  | 	/// <summary> | ||
|  | 	/// The siwpe or drag  type ( None, Left, Right, Up, Down, Other => look at EayTouch.SwipeType enumeration). | ||
|  | 	/// </summary> | ||
|  | 	public EasyTouch.SwipeDirection swipe;	 | ||
|  | 	/// <summary> | ||
|  | 	/// The length of the swipe. | ||
|  | 	/// </summary> | ||
|  | 	public float swipeLength;				 | ||
|  | 	/// <summary> | ||
|  | 	/// The swipe vector direction. | ||
|  | 	/// </summary> | ||
|  | 	public Vector2 swipeVector;			 | ||
|  | 
 | ||
|  | 	/// <summary> | ||
|  | 	/// The pinch length delta since last change. | ||
|  | 	/// </summary> | ||
|  | 	public float deltaPinch;	 | ||
|  | 	/// <summary> | ||
|  | 	/// The angle of the twist. | ||
|  | 	/// </summary> | ||
|  | 	public float twistAngle;		 | ||
|  | 	/// <summary> | ||
|  | 	/// The distance between two finger for a two finger gesture. | ||
|  | 	/// </summary> | ||
|  | 	public float twoFingerDistance; | ||
|  | 
 | ||
|  | 	public EasyTouch.EvtType type = EasyTouch.EvtType.None; | ||
|  | 	 | ||
|  | 	#region public method | ||
|  | 	public object Clone(){ | ||
|  | 		return this.MemberwiseClone(); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	 | ||
|  | 	/// <summary> | ||
|  | 	/// Transforms touch position into world space, or the center position between the two touches for a two fingers gesture. | ||
|  | 	/// </summary> | ||
|  | 	/// <returns> | ||
|  | 	/// The touch to wordl point. | ||
|  | 	/// </returns> | ||
|  | 	/// <param name='z'> | ||
|  | 	/// The z position in world units from the camera or in world depending on worldZ value | ||
|  | 	/// </param> | ||
|  | 	/// <param name='worldZ'> | ||
|  | 	/// true = r | ||
|  | 	/// </param> | ||
|  | 	///  | ||
|  | 	public Vector3 GetTouchToWorldPoint(float z){ | ||
|  | 
 | ||
|  | 		return  Camera.main.ScreenToWorldPoint( new Vector3( position.x, position.y,z));	 | ||
|  | 
 | ||
|  | 	} | ||
|  | 	 | ||
|  | 	public Vector3 GetTouchToWorldPoint( Vector3 position3D){ | ||
|  | 
 | ||
|  | 		return  Camera.main.ScreenToWorldPoint( new Vector3( position.x, position.y,Camera.main.transform.InverseTransformPoint(position3D).z));	 | ||
|  | 	} | ||
|  | 
 | ||
|  | 
 | ||
|  | 	/// <summary> | ||
|  | 	/// Gets the swipe or drag angle. (calculate from swipe Vector) | ||
|  | 	/// </summary> | ||
|  | 	/// <returns> | ||
|  | 	/// Float : The swipe or drag angle. | ||
|  | 	/// </returns> | ||
|  | 	public float GetSwipeOrDragAngle(){ | ||
|  | 		return Mathf.Atan2( swipeVector.normalized.y,swipeVector.normalized.x) * Mathf.Rad2Deg;	 | ||
|  | 	} | ||
|  | 
 | ||
|  | 	/// <summary> | ||
|  | 	/// Normalizeds the position. | ||
|  | 	/// </summary> | ||
|  | 	/// <returns> | ||
|  | 	/// The position. | ||
|  | 	/// </returns> | ||
|  | 	public Vector2 NormalizedPosition(){ | ||
|  | 		return new Vector2(100f/Screen.width*position.x/100f,100f/Screen.height*position.y/100f);	 | ||
|  | 	} | ||
|  | 
 | ||
|  | 	/// <summary> | ||
|  | 	/// Determines whether this instance is over user interface element. | ||
|  | 	/// </summary> | ||
|  | 	/// <returns><c>true</c> if this instance is over user interface element; otherwise, <c>false</c>.</returns> | ||
|  | 	public bool IsOverUIElement(){ | ||
|  | 		return EasyTouch.IsFingerOverUIElement( fingerIndex); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	/// <summary> | ||
|  | 	/// Determines whether this instance is over rect transform the specified tr camera. | ||
|  | 	/// </summary> | ||
|  | 	/// <returns><c>true</c> if this instance is over rect transform the specified tr camera; otherwise, <c>false</c>.</returns> | ||
|  | 	/// <param name="tr">Tr.</param> | ||
|  | 	/// <param name="camera">Camera.</param> | ||
|  | 	public bool IsOverRectTransform(RectTransform tr,Camera camera=null){ | ||
|  | 
 | ||
|  | 		if (camera == null){ | ||
|  | 			return RectTransformUtility.RectangleContainsScreenPoint( tr,position,null); | ||
|  | 		} | ||
|  | 		else{ | ||
|  | 			return RectTransformUtility.RectangleContainsScreenPoint( tr,position,camera); | ||
|  | 		} | ||
|  | 
 | ||
|  | 	} | ||
|  | 
 | ||
|  | 	/// <summary> | ||
|  | 	/// Gets the first picked user interface element. | ||
|  | 	/// </summary> | ||
|  | 	/// <returns>The first picked user interface element.</returns> | ||
|  | 	public GameObject GetCurrentFirstPickedUIElement(bool isTwoFinger=false){ | ||
|  | 		return EasyTouch.GetCurrentPickedUIElement( fingerIndex,isTwoFinger); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	/// <summary> | ||
|  | 	/// Gets the current picked object. | ||
|  | 	/// </summary> | ||
|  | 	/// <returns>The current picked object.</returns> | ||
|  | 	public GameObject GetCurrentPickedObject(bool isTwoFinger=false){ | ||
|  | 		return EasyTouch.GetCurrentPickedObject( fingerIndex,isTwoFinger); | ||
|  | 	} | ||
|  | 	#endregion | ||
|  | } | ||
|  | } |