This commit is contained in:
2024-10-16 00:03:41 +08:00
commit 897058435c
5033 changed files with 1009728 additions and 0 deletions

View File

@@ -0,0 +1,525 @@
/***********************************************
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.Collections.Generic;
namespace HedgehogTeam.EasyTouch{
[AddComponentMenu("EasyTouch/Trigger")]
[System.Serializable]
public class EasyTouchTrigger : MonoBehaviour {
public enum ETTParameter{ None,Gesture, Finger_Id,Touch_Count, Start_Position, Position, Delta_Position, Swipe_Type, Swipe_Length, Swipe_Vector,Delta_Pinch, Twist_Anlge, ActionTime, DeltaTime, PickedObject, PickedUIElement }
public enum ETTType {Object3D,UI};
[System.Serializable]
public class EasyTouchReceiver{
public bool enable;
public ETTType triggerType;
public string name;
public bool restricted;
public GameObject gameObject;
public bool otherReceiver;
public GameObject gameObjectReceiver;
public EasyTouch.EvtType eventName;
public string methodName;
public ETTParameter parameter;
}
[SerializeField]
public List<EasyTouchReceiver> receivers = new List<EasyTouchReceiver>();
#region Monobehaviour Callback
void Start(){
EasyTouch.SetEnableAutoSelect( true);
}
void OnEnable(){
SubscribeEasyTouchEvent();
}
void OnDisable(){
UnsubscribeEasyTouchEvent();
}
void OnDestroy(){
UnsubscribeEasyTouchEvent();
}
private void SubscribeEasyTouchEvent(){
// Touch
if (IsRecevier4( EasyTouch.EvtType.On_Cancel))
EasyTouch.On_Cancel += On_Cancel;
if (IsRecevier4( EasyTouch.EvtType.On_TouchStart))
EasyTouch.On_TouchStart += On_TouchStart;
if (IsRecevier4( EasyTouch.EvtType.On_TouchDown))
EasyTouch.On_TouchDown += On_TouchDown;
if (IsRecevier4( EasyTouch.EvtType.On_TouchUp))
EasyTouch.On_TouchUp += On_TouchUp;
// Tap & long tap
if (IsRecevier4( EasyTouch.EvtType.On_SimpleTap))
EasyTouch.On_SimpleTap += On_SimpleTap;
if (IsRecevier4( EasyTouch.EvtType.On_LongTapStart))
EasyTouch.On_LongTapStart += On_LongTapStart;
if (IsRecevier4( EasyTouch.EvtType.On_LongTap))
EasyTouch.On_LongTap += On_LongTap;
if (IsRecevier4( EasyTouch.EvtType.On_LongTapEnd))
EasyTouch.On_LongTapEnd += On_LongTapEnd;
// Double tap
if (IsRecevier4( EasyTouch.EvtType.On_DoubleTap))
EasyTouch.On_DoubleTap += On_DoubleTap;
// Drag
if (IsRecevier4( EasyTouch.EvtType.On_DragStart))
EasyTouch.On_DragStart += On_DragStart;
if (IsRecevier4( EasyTouch.EvtType.On_Drag))
EasyTouch.On_Drag += On_Drag;
if (IsRecevier4( EasyTouch.EvtType.On_DragEnd))
EasyTouch.On_DragEnd += On_DragEnd;
// Swipe
if (IsRecevier4( EasyTouch.EvtType.On_SwipeStart))
EasyTouch.On_SwipeStart += On_SwipeStart;
if (IsRecevier4( EasyTouch.EvtType.On_Swipe))
EasyTouch.On_Swipe += On_Swipe;
if (IsRecevier4( EasyTouch.EvtType.On_SwipeEnd))
EasyTouch.On_SwipeEnd += On_SwipeEnd;
// Tap 2 fingers
if (IsRecevier4( EasyTouch.EvtType.On_TouchStart2Fingers))
EasyTouch.On_TouchStart2Fingers += On_TouchStart2Fingers;
if (IsRecevier4( EasyTouch.EvtType.On_TouchDown2Fingers))
EasyTouch.On_TouchDown2Fingers += On_TouchDown2Fingers;
if (IsRecevier4( EasyTouch.EvtType.On_TouchUp2Fingers))
EasyTouch.On_TouchUp2Fingers += On_TouchUp2Fingers;
// Tap & Long tap 2 fingers
if (IsRecevier4( EasyTouch.EvtType.On_SimpleTap2Fingers))
EasyTouch.On_SimpleTap2Fingers+= On_SimpleTap2Fingers;
if (IsRecevier4( EasyTouch.EvtType.On_LongTapStart2Fingers))
EasyTouch.On_LongTapStart2Fingers += On_LongTapStart2Fingers;
if (IsRecevier4( EasyTouch.EvtType.On_LongTap2Fingers))
EasyTouch.On_LongTap2Fingers += On_LongTap2Fingers;
if (IsRecevier4( EasyTouch.EvtType.On_LongTapEnd2Fingers))
EasyTouch.On_LongTapEnd2Fingers += On_LongTapEnd2Fingers;
// double tap fingers
if (IsRecevier4( EasyTouch.EvtType.On_DoubleTap2Fingers))
EasyTouch.On_DoubleTap2Fingers += On_DoubleTap2Fingers;
// Swipe
if (IsRecevier4( EasyTouch.EvtType.On_SwipeStart2Fingers))
EasyTouch.On_SwipeStart2Fingers += On_SwipeStart2Fingers;
if (IsRecevier4( EasyTouch.EvtType.On_Swipe2Fingers))
EasyTouch.On_Swipe2Fingers += On_Swipe2Fingers;
if (IsRecevier4( EasyTouch.EvtType.On_SwipeEnd2Fingers))
EasyTouch.On_SwipeEnd2Fingers += On_SwipeEnd2Fingers;
// Drag
if (IsRecevier4( EasyTouch.EvtType.On_DragStart2Fingers))
EasyTouch.On_DragStart2Fingers += On_DragStart2Fingers;
if (IsRecevier4( EasyTouch.EvtType.On_Drag2Fingers))
EasyTouch.On_Drag2Fingers += On_Drag2Fingers;
if (IsRecevier4( EasyTouch.EvtType.On_DragEnd2Fingers))
EasyTouch.On_DragEnd2Fingers += On_DragEnd2Fingers;
// Pinch
if (IsRecevier4( EasyTouch.EvtType.On_Pinch))
EasyTouch.On_Pinch += On_Pinch;
if (IsRecevier4( EasyTouch.EvtType.On_PinchIn))
EasyTouch.On_PinchIn += On_PinchIn;
if (IsRecevier4( EasyTouch.EvtType.On_PinchOut))
EasyTouch.On_PinchOut += On_PinchOut;
if (IsRecevier4( EasyTouch.EvtType.On_PinchEnd))
EasyTouch.On_PinchEnd += On_PinchEnd;
// Twist
if (IsRecevier4( EasyTouch.EvtType.On_Twist))
EasyTouch.On_Twist += On_Twist;
if (IsRecevier4( EasyTouch.EvtType.On_TwistEnd))
EasyTouch.On_TwistEnd += On_TwistEnd;
// Unity UI
if (IsRecevier4( EasyTouch.EvtType.On_OverUIElement))
EasyTouch.On_OverUIElement += On_OverUIElement;
if (IsRecevier4( EasyTouch.EvtType.On_UIElementTouchUp))
EasyTouch.On_UIElementTouchUp += On_UIElementTouchUp;
}
private void UnsubscribeEasyTouchEvent(){
EasyTouch.On_Cancel -= On_Cancel;
EasyTouch.On_TouchStart -= On_TouchStart;
EasyTouch.On_TouchDown -= On_TouchDown;
EasyTouch.On_TouchUp -= On_TouchUp;
EasyTouch.On_SimpleTap -= On_SimpleTap;
EasyTouch.On_LongTapStart -= On_LongTapStart;
EasyTouch.On_LongTap -= On_LongTap;
EasyTouch.On_LongTapEnd -= On_LongTapEnd;
EasyTouch.On_DoubleTap -= On_DoubleTap;
EasyTouch.On_DragStart -= On_DragStart;
EasyTouch.On_Drag -= On_Drag;
EasyTouch.On_DragEnd -= On_DragEnd;
EasyTouch.On_SwipeStart -= On_SwipeStart;
EasyTouch.On_Swipe -= On_Swipe;
EasyTouch.On_SwipeEnd -= On_SwipeEnd;
EasyTouch.On_TouchStart2Fingers -= On_TouchStart2Fingers;
EasyTouch.On_TouchDown2Fingers -= On_TouchDown2Fingers;
EasyTouch.On_TouchUp2Fingers -= On_TouchUp2Fingers;
EasyTouch.On_SimpleTap2Fingers-= On_SimpleTap2Fingers;
EasyTouch.On_LongTapStart2Fingers -= On_LongTapStart2Fingers;
EasyTouch.On_LongTap2Fingers -= On_LongTap2Fingers;
EasyTouch.On_LongTapEnd2Fingers -= On_LongTapEnd2Fingers;
EasyTouch.On_DoubleTap2Fingers -= On_DoubleTap2Fingers;
EasyTouch.On_SwipeStart2Fingers -= On_SwipeStart2Fingers;
EasyTouch.On_Swipe2Fingers -= On_Swipe2Fingers;
EasyTouch.On_SwipeEnd2Fingers -= On_SwipeEnd2Fingers;
EasyTouch.On_DragStart2Fingers -= On_DragStart2Fingers;
EasyTouch.On_Drag2Fingers -= On_Drag2Fingers;
EasyTouch.On_DragEnd2Fingers -= On_DragEnd2Fingers;
EasyTouch.On_Pinch -= On_Pinch;
EasyTouch.On_PinchIn -= On_PinchIn;
EasyTouch.On_PinchOut -= On_PinchOut;
EasyTouch.On_PinchEnd -= On_PinchEnd;
EasyTouch.On_Twist -= On_Twist;
EasyTouch.On_TwistEnd -= On_TwistEnd;
EasyTouch.On_OverUIElement += On_OverUIElement;
EasyTouch.On_UIElementTouchUp += On_UIElementTouchUp;
}
#endregion
#region One Finger EasyTouch Callback
void On_TouchStart (Gesture gesture){
TriggerScheduler(EasyTouch.EvtType.On_TouchStart,gesture);
}
void On_TouchDown (Gesture gesture){
TriggerScheduler(EasyTouch.EvtType.On_TouchDown,gesture);
}
void On_TouchUp (Gesture gesture){
TriggerScheduler(EasyTouch.EvtType.On_TouchUp,gesture);
}
void On_SimpleTap (Gesture gesture){
TriggerScheduler(EasyTouch.EvtType.On_SimpleTap,gesture);
}
void On_DoubleTap (Gesture gesture){
TriggerScheduler(EasyTouch.EvtType.On_DoubleTap,gesture);
}
void On_LongTapStart (Gesture gesture){
TriggerScheduler(EasyTouch.EvtType.On_LongTapStart,gesture);
}
void On_LongTap (Gesture gesture){
TriggerScheduler(EasyTouch.EvtType.On_LongTap,gesture);
}
void On_LongTapEnd (Gesture gesture){
TriggerScheduler(EasyTouch.EvtType.On_LongTapEnd,gesture);
}
void On_SwipeStart (Gesture gesture){
TriggerScheduler(EasyTouch.EvtType.On_SwipeStart,gesture);
}
void On_Swipe (Gesture gesture){
TriggerScheduler(EasyTouch.EvtType.On_Swipe,gesture);
}
void On_SwipeEnd (Gesture gesture){
TriggerScheduler(EasyTouch.EvtType.On_SwipeEnd,gesture);
}
void On_DragStart (Gesture gesture){
TriggerScheduler(EasyTouch.EvtType.On_DragStart,gesture);
}
void On_Drag (Gesture gesture){
TriggerScheduler(EasyTouch.EvtType.On_Drag,gesture);
}
void On_DragEnd (Gesture gesture){
TriggerScheduler(EasyTouch.EvtType.On_DragEnd,gesture);
}
void On_Cancel (Gesture gesture){
TriggerScheduler(EasyTouch.EvtType.On_Cancel,gesture);
}
#endregion
#region Two Finger EasyTouch Callback
void On_TouchStart2Fingers (Gesture gesture){
TriggerScheduler(EasyTouch.EvtType.On_TouchStart2Fingers,gesture);
}
void On_TouchDown2Fingers (Gesture gesture){
TriggerScheduler(EasyTouch.EvtType.On_TouchDown2Fingers,gesture);
}
void On_TouchUp2Fingers (Gesture gesture){
TriggerScheduler(EasyTouch.EvtType.On_TouchUp2Fingers,gesture);
}
void On_LongTapStart2Fingers (Gesture gesture){
TriggerScheduler(EasyTouch.EvtType.On_LongTapStart2Fingers,gesture);
}
void On_LongTap2Fingers (Gesture gesture){
TriggerScheduler(EasyTouch.EvtType.On_LongTap2Fingers,gesture);
}
void On_LongTapEnd2Fingers (Gesture gesture){
TriggerScheduler(EasyTouch.EvtType.On_LongTapEnd2Fingers,gesture);
}
void On_DragStart2Fingers (Gesture gesture){
TriggerScheduler(EasyTouch.EvtType.On_DragStart2Fingers,gesture);
}
void On_Drag2Fingers (Gesture gesture){
TriggerScheduler(EasyTouch.EvtType.On_Drag2Fingers,gesture);
}
void On_DragEnd2Fingers (Gesture gesture){
TriggerScheduler(EasyTouch.EvtType.On_DragEnd2Fingers,gesture);
}
void On_SwipeStart2Fingers (Gesture gesture){
TriggerScheduler(EasyTouch.EvtType.On_SwipeStart2Fingers,gesture);
}
void On_Swipe2Fingers (Gesture gesture){
TriggerScheduler(EasyTouch.EvtType.On_Swipe2Fingers,gesture);
}
void On_SwipeEnd2Fingers (Gesture gesture){
TriggerScheduler(EasyTouch.EvtType.On_SwipeEnd2Fingers,gesture);
}
void On_Twist (Gesture gesture){
TriggerScheduler(EasyTouch.EvtType.On_Twist,gesture);
}
void On_TwistEnd (Gesture gesture){
TriggerScheduler(EasyTouch.EvtType.On_TwistEnd,gesture);
}
void On_Pinch (Gesture gesture){
TriggerScheduler(EasyTouch.EvtType.On_Pinch,gesture);
}
void On_PinchOut (Gesture gesture){
TriggerScheduler(EasyTouch.EvtType.On_PinchOut,gesture);
}
void On_PinchIn (Gesture gesture){
TriggerScheduler(EasyTouch.EvtType.On_PinchIn,gesture);
}
void On_PinchEnd (Gesture gesture){
TriggerScheduler(EasyTouch.EvtType.On_PinchEnd,gesture);
}
void On_SimpleTap2Fingers (Gesture gesture){
TriggerScheduler(EasyTouch.EvtType.On_SimpleTap2Fingers,gesture);
}
void On_DoubleTap2Fingers (Gesture gesture){
TriggerScheduler(EasyTouch.EvtType.On_DoubleTap2Fingers,gesture);
}
#endregion
#region UI Event
void On_UIElementTouchUp (Gesture gesture){
TriggerScheduler(EasyTouch.EvtType.On_UIElementTouchUp,gesture);
}
void On_OverUIElement (Gesture gesture){
TriggerScheduler(EasyTouch.EvtType.On_OverUIElement,gesture);
}
#endregion
#region Public Method
public void AddTrigger(EasyTouch.EvtType ev){
EasyTouchReceiver r = new EasyTouchReceiver();
r.enable = true;
r.restricted = true;
r.eventName = ev;
r.gameObject =null;
r.otherReceiver = false;
r.name = "New trigger";
receivers.Add( r );
if (Application.isPlaying){
UnsubscribeEasyTouchEvent();
SubscribeEasyTouchEvent();
}
}
public bool SetTriggerEnable(string triggerName,bool value){
EasyTouchReceiver r =GetTrigger( triggerName);
if (r!=null){
r.enable = value;
return true;
}
else{
return false;
}
}
public bool GetTriggerEnable(string triggerName){
EasyTouchReceiver r =GetTrigger( triggerName);
if (r!=null){
return r.enable;
}
else{
return false;
}
}
#endregion
#region Private Method
private void TriggerScheduler(EasyTouch.EvtType evnt, Gesture gesture){
foreach( EasyTouchReceiver receiver in receivers){
if (receiver.enable && receiver.eventName == evnt){
if (
(receiver.restricted && ( (gesture.pickedObject == gameObject && receiver.triggerType == ETTType.Object3D ) || ( gesture.pickedUIElement == gameObject && receiver.triggerType == ETTType.UI ) ))
|| (!receiver.restricted && (receiver.gameObject == null || ((receiver.gameObject == gesture.pickedObject && receiver.triggerType == ETTType.Object3D ) || ( gesture.pickedUIElement == receiver.gameObject && receiver.triggerType == ETTType.UI ) ) ))
){
GameObject sender = gameObject;
if (receiver.otherReceiver && receiver.gameObjectReceiver!=null){
sender = receiver.gameObjectReceiver;
}
switch (receiver.parameter){
case ETTParameter.None:
sender.SendMessage( receiver.methodName,SendMessageOptions.DontRequireReceiver);
break;
case ETTParameter.ActionTime:
sender.SendMessage( receiver.methodName,gesture.actionTime,SendMessageOptions.DontRequireReceiver);
break;
case ETTParameter.Delta_Pinch:
sender.SendMessage( receiver.methodName,gesture.deltaPinch,SendMessageOptions.DontRequireReceiver);
break;
case ETTParameter.Delta_Position:
sender.SendMessage( receiver.methodName,gesture.deltaPosition,SendMessageOptions.DontRequireReceiver);
break;
case ETTParameter.DeltaTime:
sender.SendMessage( receiver.methodName,gesture.deltaTime,SendMessageOptions.DontRequireReceiver);
break;
case ETTParameter.Finger_Id:
sender.SendMessage( receiver.methodName,gesture.fingerIndex,SendMessageOptions.DontRequireReceiver);
break;
case ETTParameter.Gesture:
sender.SendMessage( receiver.methodName,gesture,SendMessageOptions.DontRequireReceiver);
break;
case ETTParameter.PickedObject:
if (gesture.pickedObject!=null){
sender.SendMessage( receiver.methodName,gesture.pickedObject,SendMessageOptions.DontRequireReceiver);
}
break;
case ETTParameter.PickedUIElement:
if (gesture.pickedUIElement!=null){
sender.SendMessage( receiver.methodName,gesture.pickedObject,SendMessageOptions.DontRequireReceiver);
}
break;
case ETTParameter.Position:
sender.SendMessage( receiver.methodName,gesture.position,SendMessageOptions.DontRequireReceiver);
break;
case ETTParameter.Start_Position:
sender.SendMessage( receiver.methodName,gesture.startPosition,SendMessageOptions.DontRequireReceiver);
break;
case ETTParameter.Swipe_Length:
sender.SendMessage( receiver.methodName,gesture.swipeLength,SendMessageOptions.DontRequireReceiver);
break;
case ETTParameter.Swipe_Type:
sender.SendMessage( receiver.methodName,gesture.swipe,SendMessageOptions.DontRequireReceiver);
break;
case ETTParameter.Swipe_Vector:
sender.SendMessage( receiver.methodName,gesture.swipeVector,SendMessageOptions.DontRequireReceiver);
break;
case ETTParameter.Touch_Count:
sender.SendMessage( receiver.methodName,gesture.touchCount,SendMessageOptions.DontRequireReceiver);
break;
case ETTParameter.Twist_Anlge:
sender.SendMessage( receiver.methodName,gesture.twistAngle,SendMessageOptions.DontRequireReceiver);
break;
}
}
}
}
}
private bool IsRecevier4(EasyTouch.EvtType evnt){
int result = receivers.FindIndex(
delegate(EasyTouchTrigger.EasyTouchReceiver e){
return e.eventName == evnt;
}
);
if (result>-1){
return true;
}
else{
return false;
}
}
private EasyTouchReceiver GetTrigger(string triggerName){
EasyTouchTrigger.EasyTouchReceiver t = receivers.Find(
delegate(EasyTouchTrigger.EasyTouchReceiver n){
return n.name == triggerName;
}
);
return t;
}
#endregion
}
}

View File

@@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: a8c8100645ce3444a84b9f5e0164ad76
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {fileID: 2800000, guid: 61719e5cd5d2e754280e0dd736d759ec, type: 3}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,258 @@
/***********************************************
EasyTouch V
Copyright © 2014-2015 The Hedgehog Team
http://www.thehedgehogteam.com/Forum/
The.Hedgehog.Team@gmail.com
**********************************************/
using UnityEngine;
using System.Collections;
namespace HedgehogTeam.EasyTouch{
public class QuickBase : MonoBehaviour {
#region enumeration
protected enum GameObjectType { Auto,Obj_3D,Obj_2D,UI};
public enum DirectAction {None,Rotate, RotateLocal,Translate, TranslateLocal, Scale};
public enum AffectedAxesAction {X,Y,Z,XY,XZ,YZ,XYZ};
#endregion
#region Members
public string quickActionName;
// Touch management
public bool isMultiTouch = false;
public bool is2Finger = false;
public bool isOnTouch=false;
public bool enablePickOverUI = false;
public bool resetPhysic = false;
// simple Action
public DirectAction directAction;
public AffectedAxesAction axesAction;
public float sensibility = 1;
public CharacterController directCharacterController;
public bool inverseAxisValue = false;
protected Rigidbody cachedRigidBody;
protected bool isKinematic;
protected Rigidbody2D cachedRigidBody2D;
protected bool isKinematic2D;
// internal management
protected GameObjectType realType;
protected int fingerIndex =-1;
#endregion
#region Monobehavior Callback
void Awake(){
cachedRigidBody = GetComponent<Rigidbody>();
if (cachedRigidBody){
isKinematic = cachedRigidBody.isKinematic;
}
cachedRigidBody2D = GetComponent<Rigidbody2D>();
if (cachedRigidBody2D){
isKinematic2D = cachedRigidBody2D.isKinematic;
}
}
public virtual void Start(){
EasyTouch.SetEnableAutoSelect( true);
realType = GameObjectType.Obj_3D;
if (GetComponent<Collider>()){
realType = GameObjectType.Obj_3D;
}
else if (GetComponent<Collider2D>()){
realType = GameObjectType.Obj_2D;
}
else if (GetComponent<CanvasRenderer>()){
realType = GameObjectType.UI;
}
switch (realType){
case GameObjectType.Obj_3D:
LayerMask mask = EasyTouch.Get3DPickableLayer();
mask = mask | 1<<gameObject.layer;
EasyTouch.Set3DPickableLayer( mask);
break;
//2D
case GameObjectType.Obj_2D:
EasyTouch.SetEnable2DCollider( true);
mask = EasyTouch.Get2DPickableLayer();
mask = mask | 1<<gameObject.layer;
EasyTouch.Set2DPickableLayer( mask);
break;
// UI
case GameObjectType.UI:
EasyTouch.instance.enableUIMode = true;
EasyTouch.SetUICompatibily( false);
break;
}
if (enablePickOverUI){
EasyTouch.instance.enableUIMode = true;
EasyTouch.SetUICompatibily( false);
}
}
public virtual void OnEnable(){
//QuickTouchManager.instance.RegisterQuickAction( this);
}
public virtual void OnDisable(){
//if (QuickTouchManager._instance){
// QuickTouchManager.instance.UnregisterQuickAction( this);
//}
}
#endregion
#region Protected Methods
protected Vector3 GetInfluencedAxis(){
Vector3 axis = Vector3.zero;
switch(axesAction){
case AffectedAxesAction.X:
axis = new Vector3(1,0,0);
break;
case AffectedAxesAction.Y:
axis = new Vector3(0,1,0);
break;
case AffectedAxesAction.Z:
axis = new Vector3(0,0,1);
break;
case AffectedAxesAction.XY:
axis = new Vector3(1,1,0);
break;
case AffectedAxesAction.XYZ:
axis = new Vector3(1,1,1);
break;
case AffectedAxesAction.XZ:
axis = new Vector3(1,0,1);
break;
case AffectedAxesAction.YZ:
axis = new Vector3(0,1,1);
break;
}
return axis;
}
protected void DoDirectAction(float value){
Vector3 localAxis = GetInfluencedAxis();
switch ( directAction){
// Rotate
case DirectAction.Rotate:
transform.Rotate( localAxis * value, Space.World);
break;
// Rotate Local
case DirectAction.RotateLocal:
transform.Rotate( localAxis * value,Space.Self);
break;
// Translate
case DirectAction.Translate:
if ( directCharacterController==null){
transform.Translate(localAxis * value,Space.World);
}
else{
Vector3 direction = localAxis * value;
directCharacterController.Move( direction );
}
break;
// Translate local
case DirectAction.TranslateLocal:
if ( directCharacterController==null){
transform.Translate(localAxis * value,Space.Self);
}
else{
Vector3 direction = directCharacterController.transform.TransformDirection(localAxis) * value;
directCharacterController.Move( direction );
}
break;
// Scale
case DirectAction.Scale:
transform.localScale += localAxis * value;
break;
/*
// Force
case DirectAction.Force:
if (directRigidBody!=null){
directRigidBody.AddForce( localAxis * axisValue * speed);
}
break;
// Relative force
case DirectAction.RelativeForce:
if (directRigidBody!=null){
directRigidBody.AddRelativeForce( localAxis * axisValue * speed);
}
break;
// Torque
case DirectAction.Torque:
if (directRigidBody!=null){
directRigidBody.AddTorque(localAxis * axisValue * speed);
}
break;
// Relative torque
case DirectAction.RelativeTorque:
if (directRigidBody!=null){
directRigidBody.AddRelativeTorque(localAxis * axisValue * speed);
}
break;*/
}
}
#endregion
#region Public Methods
public void EnabledQuickComponent(string quickActionName){
QuickBase[] quickBases = GetComponents<QuickBase>();
foreach( QuickBase qb in quickBases){
if (qb.quickActionName == quickActionName){
qb.enabled = true;
}
}
}
public void DisabledQuickComponent(string quickActionName){
QuickBase[] quickBases = GetComponents<QuickBase>();
foreach( QuickBase qb in quickBases){
if (qb.quickActionName == quickActionName){
qb.enabled = false;
}
}
}
public void DisabledAllSwipeExcepted(string quickActionName){
QuickSwipe[] swipes = FindObjectsOfType(typeof(QuickSwipe)) as QuickSwipe[];
foreach( QuickSwipe swipe in swipes){
if (swipe.quickActionName != quickActionName || ( swipe.quickActionName == quickActionName && swipe.gameObject != gameObject)){
swipe.enabled = false;
}
}
}
#endregion
}
}

View File

@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 7d28476965576224d90d72d674d604cf
timeCreated: 1450162043
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,243 @@
/***********************************************
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;
using HedgehogTeam.EasyTouch;
namespace HedgehogTeam.EasyTouch{
[AddComponentMenu("EasyTouch/Quick Drag")]
public class QuickDrag: QuickBase {
#region Events
[System.Serializable] public class OnDragStart : UnityEvent<Gesture>{}
[System.Serializable] public class OnDrag : UnityEvent<Gesture>{}
[System.Serializable] public class OnDragEnd : UnityEvent<Gesture>{}
[SerializeField]
public OnDragStart onDragStart;
[SerializeField]
public OnDrag onDrag;
[SerializeField]
public OnDragEnd onDragEnd;
#endregion
#region Members
public bool isStopOncollisionEnter = false;
private Vector3 deltaPosition;
private bool isOnDrag = false;
private Gesture lastGesture;
#endregion
#region Monobehaviour CallBack
public QuickDrag(){
quickActionName = "QuickDrag"+ System.Guid.NewGuid().ToString().Substring(0,7);
axesAction = AffectedAxesAction.XY;
}
public override void OnEnable(){
base.OnEnable();
EasyTouch.On_TouchStart += On_TouchStart;
EasyTouch.On_TouchDown += On_TouchDown;
EasyTouch.On_TouchUp += On_TouchUp;
EasyTouch.On_Drag += On_Drag;
EasyTouch.On_DragStart += On_DragStart;
EasyTouch.On_DragEnd += On_DragEnd;
}
public override void OnDisable(){
base.OnDisable();
UnsubscribeEvent();
}
void OnDestroy(){
UnsubscribeEvent();
}
void UnsubscribeEvent(){
EasyTouch.On_TouchStart -= On_TouchStart;
EasyTouch.On_TouchDown -= On_TouchDown;
EasyTouch.On_TouchUp -= On_TouchUp;
EasyTouch.On_Drag -= On_Drag;
EasyTouch.On_DragStart -= On_DragStart;
EasyTouch.On_DragEnd -= On_DragEnd;
}
void OnCollisionEnter(){
if (isStopOncollisionEnter && isOnDrag){
StopDrag();
}
}
#endregion
#region EasyTouch Event
void On_TouchStart (Gesture gesture){
if ( realType == GameObjectType.UI){
if (gesture.isOverGui ){
if ((gesture.pickedUIElement == gameObject || gesture.pickedUIElement.transform.IsChildOf( transform)) && fingerIndex==-1){
fingerIndex = gesture.fingerIndex;
transform.SetAsLastSibling();
onDragStart.Invoke(gesture);
isOnDrag = true;
}
}
}
}
void On_TouchDown (Gesture gesture){
if (isOnDrag && fingerIndex == gesture.fingerIndex && realType == GameObjectType.UI){
if (gesture.isOverGui ){
if ((gesture.pickedUIElement == gameObject || gesture.pickedUIElement.transform.IsChildOf( transform)) ){
transform.position += (Vector3)gesture.deltaPosition;
if (gesture.deltaPosition != Vector2.zero){
onDrag.Invoke(gesture);
}
lastGesture = gesture;
}
}
}
}
void On_TouchUp (Gesture gesture){
if (fingerIndex == gesture.fingerIndex && realType == GameObjectType.UI){
lastGesture = gesture;
StopDrag();
}
}
// At the drag beginning
void On_DragStart( Gesture gesture){
if (realType != GameObjectType.UI){
if ((!enablePickOverUI && gesture.pickedUIElement == null) || enablePickOverUI){
if (gesture.pickedObject == gameObject && !isOnDrag){
isOnDrag = true;
fingerIndex = gesture.fingerIndex;
// the world coordinate from touch
Vector3 position = gesture.GetTouchToWorldPoint(gesture.pickedObject.transform.position);
deltaPosition = position - transform.position;
//
if (resetPhysic){
if (cachedRigidBody){
cachedRigidBody.isKinematic = true;
}
if (cachedRigidBody2D){
cachedRigidBody2D.isKinematic = true;
}
}
onDragStart.Invoke(gesture);
}
}
}
}
// During the drag
void On_Drag(Gesture gesture){
if (fingerIndex == gesture.fingerIndex){
if (realType == GameObjectType.Obj_2D || realType == GameObjectType.Obj_3D){
// Verification that the action on the object
if (gesture.pickedObject == gameObject && fingerIndex == gesture.fingerIndex){
// the world coordinate from touch
Vector3 position = gesture.GetTouchToWorldPoint(gesture.pickedObject.transform.position)-deltaPosition;
transform.position = GetPositionAxes( position);
if (gesture.deltaPosition != Vector2.zero){
onDrag.Invoke(gesture);
}
lastGesture = gesture;
}
}
}
}
// End of drag
void On_DragEnd(Gesture gesture){
if (fingerIndex == gesture.fingerIndex){
lastGesture = gesture;
StopDrag();
}
}
#endregion
#region Private Method
private Vector3 GetPositionAxes(Vector3 position){
Vector3 axes = position;
switch (axesAction){
case AffectedAxesAction.X:
axes = new Vector3(position.x,transform.position.y,transform.position.z);
break;
case AffectedAxesAction.Y:
axes = new Vector3(transform.position.x,position.y,transform.position.z);
break;
case AffectedAxesAction.Z:
axes = new Vector3(transform.position.x,transform.position.y,position.z);
break;
case AffectedAxesAction.XY:
axes = new Vector3(position.x,position.y,transform.position.z);
break;
case AffectedAxesAction.XZ:
axes = new Vector3(position.x,transform.position.y,position.z);
break;
case AffectedAxesAction.YZ:
axes = new Vector3(transform.position.x,position.y,position.z);
break;
}
return axes;
}
#endregion
#region Public Method
public void StopDrag(){
fingerIndex = -1;
if (resetPhysic){
if (cachedRigidBody){
cachedRigidBody.isKinematic = isKinematic;
}
if (cachedRigidBody2D){
cachedRigidBody2D.isKinematic = isKinematic2D;
}
}
isOnDrag = false;
onDragEnd.Invoke(lastGesture);
}
#endregion
}
}

View File

@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 7961076ef9aef0341b2c9f8a38bfbc71
timeCreated: 1452768029
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {fileID: 2800000, guid: 61719e5cd5d2e754280e0dd736d759ec, type: 3}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,142 @@
/***********************************************
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 Enter-Over-Exit")]
public class QuickEnterOverExist : QuickBase {
#region Event
[System.Serializable] public class OnTouchEnter : UnityEvent<Gesture>{}
[System.Serializable] public class OnTouchOver : UnityEvent<Gesture>{}
[System.Serializable] public class OnTouchExit : UnityEvent<Gesture>{}
[SerializeField]
public OnTouchEnter onTouchEnter;
[SerializeField]
public OnTouchOver onTouchOver;
[SerializeField]
public OnTouchExit onTouchExit;
#endregion
#region Members
private bool[] fingerOver = new bool[100];
#endregion
#region MonoBehaviour callback
public QuickEnterOverExist(){
quickActionName = "QuickEnterOverExit"+ System.Guid.NewGuid().ToString().Substring(0,7);
}
void Awake(){
for (int i=0;i<100;i++){
fingerOver[i] = false;
}
}
public override void OnEnable(){
base.OnEnable();
EasyTouch.On_TouchDown += On_TouchDown;
EasyTouch.On_TouchUp += On_TouchUp;
}
public override void OnDisable(){
base.OnDisable();
UnsubscribeEvent();
}
void OnDestroy(){
UnsubscribeEvent();
}
void UnsubscribeEvent(){
EasyTouch.On_TouchDown -= On_TouchDown;
EasyTouch.On_TouchUp -= On_TouchUp;
}
#endregion
#region EasyTouch Event
void On_TouchDown (Gesture gesture){
if (realType != GameObjectType.UI){
if ((!enablePickOverUI && gesture.GetCurrentFirstPickedUIElement() == null) || enablePickOverUI){
if ( gesture.GetCurrentPickedObject()== gameObject){
if (!fingerOver[gesture.fingerIndex] && ((!isOnTouch && !isMultiTouch) || isMultiTouch)){
fingerOver[gesture.fingerIndex] = true;
onTouchEnter.Invoke( gesture);
isOnTouch = true;
}
else if (fingerOver[gesture.fingerIndex]){
onTouchOver.Invoke(gesture);
}
}
else{
if (fingerOver[gesture.fingerIndex]){
fingerOver[gesture.fingerIndex] = false;
onTouchExit.Invoke(gesture);
if (!isMultiTouch){
isOnTouch = false;
}
}
}
}
else{
if ( gesture.GetCurrentPickedObject()== gameObject && (!enablePickOverUI && gesture.GetCurrentFirstPickedUIElement() != null)){
if (fingerOver[gesture.fingerIndex]){
fingerOver[gesture.fingerIndex] = false;
onTouchExit.Invoke(gesture);
if (!isMultiTouch){
isOnTouch = false;
}
}
}
}
}
else{
if ( gesture.GetCurrentFirstPickedUIElement()== gameObject){
if (!fingerOver[gesture.fingerIndex] && ((!isOnTouch && !isMultiTouch) || isMultiTouch)){
fingerOver[gesture.fingerIndex] = true;
onTouchEnter.Invoke( gesture);
isOnTouch = true;
}
else if (fingerOver[gesture.fingerIndex]){
onTouchOver.Invoke(gesture);
}
}
else{
if (fingerOver[gesture.fingerIndex]){
fingerOver[gesture.fingerIndex] = false;
onTouchExit.Invoke(gesture);
if (!isMultiTouch){
isOnTouch = false;
}
}
}
}
}
void On_TouchUp (Gesture gesture){
if (fingerOver[gesture.fingerIndex]){
fingerOver[gesture.fingerIndex] = false;
onTouchExit.Invoke(gesture);
if (!isMultiTouch){
isOnTouch = false;
}
}
}
#endregion
}
}

View File

@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: e9b7affbfb3c1534484689f270420489
timeCreated: 1450162323
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {fileID: 2800000, guid: 61719e5cd5d2e754280e0dd736d759ec, type: 3}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,125 @@
/***********************************************
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"+ System.Guid.NewGuid().ToString().Substring(0,7);
}
void Update(){
currentGesture = EasyTouch.current;
if (currentGesture != null)
{
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;
}
}
}

View File

@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 96373da5010ca9442a11456032621dc3
timeCreated: 1452769950
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {fileID: 2800000, guid: 61719e5cd5d2e754280e0dd736d759ec, type: 3}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,139 @@
/***********************************************
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 Pinch")]
public class QuickPinch : QuickBase {
#region Events
[System.Serializable] public class OnPinchAction : UnityEvent<Gesture>{}
[SerializeField]
public OnPinchAction onPinchAction;
#endregion
#region enumeration
public enum ActionTiggering {InProgress,End};
public enum ActionPinchDirection {All, PinchIn, PinchOut};
#endregion
#region Members
public bool isGestureOnMe = false;
public ActionTiggering actionTriggering;
public ActionPinchDirection pinchDirection;
private float axisActionValue = 0;
public bool enableSimpleAction = false;
#endregion
#region MonoBehaviour callback
public QuickPinch(){
quickActionName = "QuickPinch"+ System.Guid.NewGuid().ToString().Substring(0,7);
}
public override void OnEnable(){
EasyTouch.On_Pinch += On_Pinch;
EasyTouch.On_PinchIn += On_PinchIn;
EasyTouch.On_PinchOut += On_PinchOut;
EasyTouch.On_PinchEnd += On_PichEnd;
}
public override void OnDisable(){
UnsubscribeEvent();
}
void OnDestroy(){
UnsubscribeEvent();
}
void UnsubscribeEvent(){
EasyTouch.On_Pinch -= On_Pinch;
EasyTouch.On_PinchIn -= On_PinchIn;
EasyTouch.On_PinchOut -= On_PinchOut;
EasyTouch.On_PinchEnd -= On_PichEnd;
}
#endregion
#region EasyTouch event
void On_Pinch (Gesture gesture){
if (actionTriggering == ActionTiggering.InProgress && pinchDirection == ActionPinchDirection.All){
DoAction( gesture);
}
}
void On_PinchIn (Gesture gesture){
if (actionTriggering == ActionTiggering.InProgress & pinchDirection == ActionPinchDirection.PinchIn){
DoAction( gesture);
}
}
void On_PinchOut (Gesture gesture){
if (actionTriggering == ActionTiggering.InProgress & pinchDirection == ActionPinchDirection.PinchOut){
DoAction( gesture);
}
}
void On_PichEnd (Gesture gesture){
if (actionTriggering == ActionTiggering.End){
DoAction( gesture);
}
}
#endregion
#region Private method
void DoAction(Gesture gesture){
axisActionValue = gesture.deltaPinch * sensibility * Time.deltaTime;
if (isGestureOnMe){
if ( realType == GameObjectType.UI){
if (gesture.isOverGui ){
if ((gesture.pickedUIElement == gameObject || gesture.pickedUIElement.transform.IsChildOf( transform))){
onPinchAction.Invoke(gesture);
if (enableSimpleAction){
DoDirectAction( axisActionValue);
}
}
}
}
else{
if ((!enablePickOverUI && gesture.pickedUIElement == null) || enablePickOverUI){
if (gesture.GetCurrentPickedObject(true) == gameObject){
onPinchAction.Invoke(gesture);
if (enableSimpleAction){
DoDirectAction( axisActionValue);
}
}
}
}
}
else{
if ((!enablePickOverUI && gesture.pickedUIElement == null) || enablePickOverUI){
onPinchAction.Invoke(gesture);
if (enableSimpleAction){
DoDirectAction( axisActionValue);
}
}
}
}
#endregion
}
}

View File

@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 82a53e7679dd5fe4a97e230b88ebc585
timeCreated: 1450353100
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {fileID: 2800000, guid: 61719e5cd5d2e754280e0dd736d759ec, type: 3}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,223 @@
/***********************************************
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 Swipe")]
public class QuickSwipe : QuickBase {
#region Events
[System.Serializable] public class OnSwipeAction : UnityEvent<Gesture>{}
[SerializeField]
public OnSwipeAction onSwipeAction;
#endregion
#region enumeration
public enum ActionTriggering {InProgress,End}
public enum SwipeDirection {Vertical, Horizontal, DiagonalRight,DiagonalLeft,Up,UpRight, Right,DownRight,Down,DownLeft, Left,UpLeft,All};
#endregion
#region Members
public bool allowSwipeStartOverMe = true;
public ActionTriggering actionTriggering;
public SwipeDirection swipeDirection = SwipeDirection.All;
private float axisActionValue = 0;
public bool enableSimpleAction = false;
#endregion
#region MonoBehaviour callback
public QuickSwipe(){
quickActionName = "QuickSwipe" + System.Guid.NewGuid().ToString().Substring(0,7);
}
public override void OnEnable(){
base.OnEnable();
EasyTouch.On_Drag += On_Drag;
EasyTouch.On_Swipe += On_Swipe;
EasyTouch.On_DragEnd += On_DragEnd;
EasyTouch.On_SwipeEnd += On_SwipeEnd;
}
public override void OnDisable(){
base.OnDisable();
UnsubscribeEvent();
}
void OnDestroy(){
UnsubscribeEvent();
}
void UnsubscribeEvent(){
EasyTouch.On_Drag -= On_Drag;
EasyTouch.On_Swipe -= On_Swipe;
EasyTouch.On_DragEnd -= On_DragEnd;
EasyTouch.On_SwipeEnd -= On_SwipeEnd;
}
#endregion
#region EasyTouch Event
void On_Swipe (Gesture gesture){
if (gesture.touchCount ==1 && ((gesture.pickedObject != gameObject && !allowSwipeStartOverMe) || allowSwipeStartOverMe)){
fingerIndex = gesture.fingerIndex;
if (actionTriggering == ActionTriggering.InProgress){
if (isRightDirection(gesture)){
onSwipeAction.Invoke( gesture);
if (enableSimpleAction){
DoAction(gesture);
}
}
}
}
}
void On_SwipeEnd (Gesture gesture){
if (actionTriggering == ActionTriggering.End && isRightDirection(gesture) ){
onSwipeAction.Invoke( gesture);
if (enableSimpleAction){
DoAction(gesture);
}
}
if (fingerIndex == gesture.fingerIndex){
fingerIndex =-1;
}
}
void On_DragEnd (Gesture gesture){
if (gesture.pickedObject == gameObject && allowSwipeStartOverMe){
On_SwipeEnd( gesture);
}
}
void On_Drag (Gesture gesture){
if (gesture.pickedObject == gameObject && allowSwipeStartOverMe){
On_Swipe( gesture);
}
}
#endregion
#region Private methods
bool isRightDirection(Gesture gesture){
float coef = -1;
if ( inverseAxisValue){
coef = 1;
}
axisActionValue = 0;
switch (swipeDirection){
case SwipeDirection.All:
axisActionValue = gesture.deltaPosition.magnitude*coef;
return true;
case SwipeDirection.Horizontal:
if (gesture.swipe == EasyTouch.SwipeDirection.Left || gesture.swipe == EasyTouch.SwipeDirection.Right){
axisActionValue = gesture.deltaPosition.x *coef;
return true;
}
break;
case SwipeDirection.Vertical:
if (gesture.swipe == EasyTouch.SwipeDirection.Up || gesture.swipe == EasyTouch.SwipeDirection.Down){
axisActionValue = gesture.deltaPosition.y*coef;
return true;
}
break;
case SwipeDirection.DiagonalLeft:
if (gesture.swipe == EasyTouch.SwipeDirection.UpLeft || gesture.swipe == EasyTouch.SwipeDirection.DownRight){
axisActionValue = gesture.deltaPosition.magnitude*coef;
return true;
}
break;
case SwipeDirection.DiagonalRight:
if (gesture.swipe == EasyTouch.SwipeDirection.UpRight || gesture.swipe == EasyTouch.SwipeDirection.DownLeft){
axisActionValue = gesture.deltaPosition.magnitude*coef;
return true;
}
break;
case SwipeDirection.Left:
if (gesture.swipe == EasyTouch.SwipeDirection.Left){
axisActionValue = gesture.deltaPosition.x*coef;
return true;
}
break;
case SwipeDirection.Right:
if (gesture.swipe == EasyTouch.SwipeDirection.Right){
axisActionValue = gesture.deltaPosition.x*coef;
return true;
}
break;
case SwipeDirection.DownLeft:
if (gesture.swipe == EasyTouch.SwipeDirection.DownLeft){
axisActionValue = gesture.deltaPosition.magnitude*coef;
return true;
}
break;
case SwipeDirection.DownRight:
if (gesture.swipe == EasyTouch.SwipeDirection.DownRight){
axisActionValue = gesture.deltaPosition.magnitude*coef;
return true;
}
break;
case SwipeDirection.UpLeft:
if (gesture.swipe == EasyTouch.SwipeDirection.UpLeft){
axisActionValue = gesture.deltaPosition.magnitude*coef;
return true;
}
break;
case SwipeDirection.UpRight:
if (gesture.swipe == EasyTouch.SwipeDirection.UpRight){
axisActionValue = gesture.deltaPosition.magnitude*coef;
return true;
}
break;
case SwipeDirection.Up:
if (gesture.swipe == EasyTouch.SwipeDirection.Up){
axisActionValue = gesture.deltaPosition.y*coef;
return true;
}
break;
case SwipeDirection.Down:
if (gesture.swipe == EasyTouch.SwipeDirection.Down){
axisActionValue = gesture.deltaPosition.y*coef;
return true;
}
break;
}
axisActionValue = 0;
return false;
}
void DoAction(Gesture gesture){
switch (directAction){
case DirectAction.Rotate:
case DirectAction.RotateLocal:
axisActionValue *= sensibility;
break;
case DirectAction.Translate:
case DirectAction.TranslateLocal:
case DirectAction.Scale:
axisActionValue /= Screen.dpi;
axisActionValue *= sensibility;
break;
}
DoDirectAction( axisActionValue);
}
#endregion
}
}

View File

@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: df757cf29e57b9449a27cd9dc4a9404a
timeCreated: 1450163203
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {fileID: 2800000, guid: 61719e5cd5d2e754280e0dd736d759ec, type: 3}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,91 @@
/***********************************************
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 Tap")]
public class QuickTap : QuickBase {
#region Events
[System.Serializable] public class OnTap : UnityEvent<Gesture>{}
[SerializeField]
public OnTap onTap;
#endregion
#region Enumeration
public enum ActionTriggering {Simple_Tap,Double_Tap};
#endregion
#region Members
public ActionTriggering actionTriggering;
private Gesture currentGesture;
#endregion
#region Monobehavior CallBack
public QuickTap(){
quickActionName = "QuickTap"+ System.Guid.NewGuid().ToString().Substring(0,7);
}
void Update(){
currentGesture = EasyTouch.current;
if (currentGesture != null)
{
if (!is2Finger)
{
if (currentGesture.type == EasyTouch.EvtType.On_DoubleTap && actionTriggering == ActionTriggering.Double_Tap)
{
DoAction(currentGesture);
}
if (currentGesture.type == EasyTouch.EvtType.On_SimpleTap && actionTriggering == ActionTriggering.Simple_Tap)
{
DoAction(currentGesture);
}
}
else
{
if (currentGesture.type == EasyTouch.EvtType.On_DoubleTap2Fingers && actionTriggering == ActionTriggering.Double_Tap)
{
DoAction(currentGesture);
}
if (currentGesture.type == EasyTouch.EvtType.On_SimpleTap2Fingers && actionTriggering == ActionTriggering.Simple_Tap)
{
DoAction(currentGesture);
}
}
}
}
#endregion
void DoAction(Gesture gesture){
if ( realType == GameObjectType.UI){
if (gesture.isOverGui ){
if ((gesture.pickedUIElement == gameObject || gesture.pickedUIElement.transform.IsChildOf( transform))){
onTap.Invoke( gesture);
}
}
}
else{
if ((!enablePickOverUI && gesture.pickedUIElement == null) || enablePickOverUI){
if (EasyTouch.GetGameObjectAt( gesture.position,is2Finger) == gameObject){
onTap.Invoke( gesture);
}
}
}
}
}
}

View File

@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: e9c933eb8b407754a8f98425dfaa784f
timeCreated: 1452768366
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {fileID: 2800000, guid: 61719e5cd5d2e754280e0dd736d759ec, type: 3}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,131 @@
/***********************************************
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"+ System.Guid.NewGuid().ToString().Substring(0,7);
}
#endregion
void Update(){
currentGesture = EasyTouch.current;
if (!is2Finger && currentGesture!=null)
{
// 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 != null){
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
}
}

View File

@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 5145c5785e18ed6459cb766ecf988d1a
timeCreated: 1450164574
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {fileID: 2800000, guid: 61719e5cd5d2e754280e0dd736d759ec, type: 3}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,152 @@
/***********************************************
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 Twist")]
public class QuickTwist : QuickBase {
#region Events
[System.Serializable] public class OnTwistAction : UnityEvent<Gesture>{}
[SerializeField]
public OnTwistAction onTwistAction;
#endregion
#region enumeration
public enum ActionTiggering {InProgress,End};
public enum ActionRotationDirection {All, Clockwise, Counterclockwise};
#endregion
#region Members
public bool isGestureOnMe = false;
public ActionTiggering actionTriggering;
public ActionRotationDirection rotationDirection;
private float axisActionValue = 0;
public bool enableSimpleAction = false;
#endregion
#region MonoBehaviour callback
public QuickTwist(){
quickActionName = "QuickTwist"+ System.Guid.NewGuid().ToString().Substring(0,7);
}
public override void OnEnable(){
EasyTouch.On_Twist += On_Twist;
EasyTouch.On_TwistEnd += On_TwistEnd;
}
public override void OnDisable(){
UnsubscribeEvent();
}
void OnDestroy(){
UnsubscribeEvent();
}
void UnsubscribeEvent(){
EasyTouch.On_Twist -= On_Twist;
EasyTouch.On_TwistEnd -= On_TwistEnd;
}
#endregion
#region EasyTouch event
void On_Twist (Gesture gesture){
if (actionTriggering == ActionTiggering.InProgress){
if (IsRightRotation(gesture)){
DoAction( gesture);
}
}
}
void On_TwistEnd (Gesture gesture){
if (actionTriggering == ActionTiggering.End){
if (IsRightRotation(gesture)){
DoAction( gesture);
}
}
}
#endregion
#region Private method
bool IsRightRotation(Gesture gesture){
axisActionValue =0;
float coef = 1;
if ( inverseAxisValue){
coef = -1;
}
switch (rotationDirection){
case ActionRotationDirection.All:
axisActionValue = gesture.twistAngle * sensibility * coef;
return true;
case ActionRotationDirection.Clockwise:
if (gesture.twistAngle<0){
axisActionValue = gesture.twistAngle * sensibility* coef;
return true;
}
break;
case ActionRotationDirection.Counterclockwise:
if (gesture.twistAngle>0){
axisActionValue = gesture.twistAngle * sensibility* coef;
return true;
}
break;
}
return false;
}
void DoAction(Gesture gesture){
if (isGestureOnMe){
if ( realType == GameObjectType.UI){
if (gesture.isOverGui ){
if ((gesture.pickedUIElement == gameObject || gesture.pickedUIElement.transform.IsChildOf( transform))){
onTwistAction.Invoke(gesture);
if (enableSimpleAction){
DoDirectAction( axisActionValue);
}
}
}
}
else{
if ((!enablePickOverUI && gesture.pickedUIElement == null) || enablePickOverUI){
if (gesture.GetCurrentPickedObject( true) == gameObject){
onTwistAction.Invoke(gesture);
if (enableSimpleAction){
DoDirectAction( axisActionValue);
}
}
}
}
}
else{
if ((!enablePickOverUI && gesture.pickedUIElement == null) || enablePickOverUI){
onTwistAction.Invoke(gesture);
if (enableSimpleAction){
DoDirectAction( axisActionValue);
}
}
}
}
#endregion
}
}

View File

@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: f38cfe9733704674da647859a90a3734
timeCreated: 1450252691
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {fileID: 2800000, guid: 61719e5cd5d2e754280e0dd736d759ec, type: 3}
userData:
assetBundleName:
assetBundleVariant: