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
 | |
| }
 | |
| }
 |