281 lines
9.8 KiB
C#
281 lines
9.8 KiB
C#
using Thousandto.Core.Base;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
|
|
using System.Text;
|
|
using UnityEngine;
|
|
using FLogger = UnityEngine.Gonbest.MagicCube.FLogger;
|
|
|
|
namespace Thousandto.Plugins.Common
|
|
{
|
|
/// <summary>
|
|
/// 手势操作事件触发器
|
|
/// </summary>
|
|
public class FingerGesturesEventTrigger : IFingerGesturesEvent
|
|
{
|
|
#region//私有变量
|
|
FingerGesturesLoader _loader = null;
|
|
private FingerDownEventHandler _onFingerDown;
|
|
private FingerMoveEventHandler _onFingerMove;
|
|
private FingerMoveEventHandler _onFingerMoveBegin;
|
|
private FingerMoveEventHandler _onFingerMoveEnd;
|
|
private FingerUpEventHandler _onFingerUp;
|
|
private PinchEventHandler _onPinchBegin;
|
|
private PinchEventHandler _onPinchEnd;
|
|
private PinchMoveEventHandler _onPinchMove;
|
|
private RotationBeginEventHandler _onRotationBegin;
|
|
private RotationEndEventHandler _onRotationEnd;
|
|
private RotationMoveEventHandler _onRotationMove;
|
|
#endregion
|
|
|
|
#region//事件定义接口 IFingerGesturesEvent
|
|
public event FingerDownEventHandler OnFingerDown
|
|
{
|
|
add
|
|
{
|
|
_onFingerDown = (FingerDownEventHandler)Delegate.Combine(_onFingerDown, value);
|
|
}
|
|
remove
|
|
{
|
|
_onFingerDown = (FingerDownEventHandler)Delegate.Remove(_onFingerDown, value);
|
|
}
|
|
}
|
|
|
|
public event FingerMoveEventHandler OnFingerMove
|
|
{
|
|
add
|
|
{
|
|
_onFingerMove = (FingerMoveEventHandler)Delegate.Combine(_onFingerMove, value);
|
|
}
|
|
remove
|
|
{
|
|
_onFingerMove = (FingerMoveEventHandler)Delegate.Remove(_onFingerMove, value);
|
|
}
|
|
}
|
|
|
|
public event FingerMoveEventHandler OnFingerMoveBegin
|
|
{
|
|
add
|
|
{
|
|
_onFingerMoveBegin = (FingerMoveEventHandler)Delegate.Combine(_onFingerMoveBegin, value);
|
|
}
|
|
remove
|
|
{
|
|
_onFingerMoveBegin = (FingerMoveEventHandler)Delegate.Remove(_onFingerMoveBegin, value);
|
|
}
|
|
}
|
|
|
|
public event FingerMoveEventHandler OnFingerMoveEnd
|
|
{
|
|
add
|
|
{
|
|
_onFingerMoveEnd = (FingerMoveEventHandler)Delegate.Combine(_onFingerMoveEnd, value);
|
|
}
|
|
remove
|
|
{
|
|
_onFingerMoveEnd = (FingerMoveEventHandler)Delegate.Remove(_onFingerMoveEnd, value);
|
|
}
|
|
}
|
|
|
|
public event FingerUpEventHandler OnFingerUp
|
|
{
|
|
add
|
|
{
|
|
_onFingerUp = (FingerUpEventHandler)Delegate.Combine(_onFingerUp, value);
|
|
}
|
|
remove
|
|
{
|
|
_onFingerUp = (FingerUpEventHandler)Delegate.Remove(_onFingerUp, value);
|
|
}
|
|
}
|
|
|
|
public event PinchEventHandler OnPinchBegin
|
|
{
|
|
add
|
|
{
|
|
_onPinchBegin = (PinchEventHandler)Delegate.Combine(_onPinchBegin, value);
|
|
}
|
|
remove
|
|
{
|
|
_onPinchBegin = (PinchEventHandler)Delegate.Remove(_onPinchBegin, value);
|
|
}
|
|
}
|
|
|
|
public event PinchEventHandler OnPinchEnd
|
|
{
|
|
add
|
|
{
|
|
_onPinchEnd = (PinchEventHandler)Delegate.Combine(_onPinchEnd, value);
|
|
}
|
|
remove
|
|
{
|
|
_onPinchEnd = (PinchEventHandler)Delegate.Remove(_onPinchEnd, value);
|
|
}
|
|
}
|
|
|
|
public event PinchMoveEventHandler OnPinchMove
|
|
{
|
|
add
|
|
{
|
|
_onPinchMove = (PinchMoveEventHandler)Delegate.Combine(_onPinchMove, value);
|
|
}
|
|
remove
|
|
{
|
|
_onPinchMove = (PinchMoveEventHandler)Delegate.Remove(_onPinchMove, value);
|
|
}
|
|
}
|
|
|
|
public event RotationBeginEventHandler OnRotationBegin
|
|
{
|
|
add
|
|
{
|
|
_onRotationBegin = (RotationBeginEventHandler)Delegate.Combine(_onRotationBegin, value);
|
|
}
|
|
remove
|
|
{
|
|
_onRotationBegin = (RotationBeginEventHandler)Delegate.Remove(_onRotationBegin, value);
|
|
}
|
|
}
|
|
|
|
public event RotationEndEventHandler OnRotationEnd
|
|
{
|
|
add
|
|
{
|
|
_onRotationEnd = (RotationEndEventHandler)Delegate.Combine(_onRotationEnd, value);
|
|
}
|
|
remove
|
|
{
|
|
_onRotationEnd = (RotationEndEventHandler)Delegate.Remove(_onRotationEnd, value);
|
|
}
|
|
}
|
|
|
|
public event RotationMoveEventHandler OnRotationMove
|
|
{
|
|
add
|
|
{
|
|
_onRotationMove = (RotationMoveEventHandler)Delegate.Combine(_onRotationMove, value);
|
|
}
|
|
remove
|
|
{
|
|
_onRotationMove = (RotationMoveEventHandler)Delegate.Remove(_onRotationMove, value);
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region//公共接口
|
|
//初始化
|
|
public void Initialize()
|
|
{
|
|
if (_loader == null) _loader = new FingerGesturesLoader();
|
|
|
|
FingerGestures.OnFingerDown = FingerGestures_OnFingerDown;
|
|
FingerGestures.OnFingerUp = FingerGestures_OnFingerUP;
|
|
|
|
// -- 控制摄像机的先注释掉
|
|
// pinch touch func -- camera dis
|
|
FingerGestures.OnPinchBegin = FingerGestures_OnPinchBegin;
|
|
FingerGestures.OnPinchMove = FingerGestures_OnPinchMove;
|
|
FingerGestures.OnPinchEnd = FingerGestures_OnPinchEnd;
|
|
|
|
// rotate touch -- camera yaw
|
|
FingerGestures.OnRotationBegin = FingerGestures_OnRotationBegin;
|
|
FingerGestures.OnRotationMove = FingerGestures_OnRotationMove;
|
|
FingerGestures.OnRotationEnd = FingerGestures_OnRotationEnd;
|
|
|
|
|
|
FingerGestures.OnFingerMoveBegin = FingerGestures_OnMoveBegin;
|
|
FingerGestures.OnFingerMove = FingerGestures_OnMove;
|
|
FingerGestures.OnFingerMoveEnd = FingerGestures_OnMoveEnd;
|
|
}
|
|
//卸载
|
|
public void UnInitialize()
|
|
{
|
|
FLogger.Log("FingerGesturesEventTrigger::UnInitialize()");
|
|
// tap func -- move
|
|
FingerGestures.OnFingerDown = null;
|
|
FingerGestures.OnFingerUp = null;
|
|
|
|
// pinch touch func -- camera dis
|
|
FingerGestures.OnPinchBegin = null;
|
|
FingerGestures.OnPinchMove = null;
|
|
FingerGestures.OnPinchEnd = null;
|
|
|
|
// rotate touch -- camera yaw
|
|
FingerGestures.OnRotationBegin = null;
|
|
FingerGestures.OnRotationMove = null;
|
|
FingerGestures.OnRotationEnd = null;
|
|
|
|
FingerGestures.OnFingerMoveBegin = null;
|
|
FingerGestures.OnFingerMove = null;
|
|
FingerGestures.OnFingerMoveEnd = null;
|
|
}
|
|
#endregion
|
|
|
|
#region //事件的处理
|
|
//手指按下开始移动
|
|
private void FingerGestures_OnMoveBegin(int fingerIndex, Vector2 fingerPos)
|
|
{
|
|
//FLogger.Log("FingerGestures_OnMoveBegin)", fingerIndex, fingerPos);
|
|
if (_onFingerMoveBegin != null) _onFingerMoveBegin(fingerIndex, fingerPos);
|
|
}
|
|
//手指按下移动中
|
|
private void FingerGestures_OnMove(int fingerIndex, Vector2 fingerPos)
|
|
{
|
|
|
|
if (_onFingerMove != null) _onFingerMove(fingerIndex, fingerPos);
|
|
}
|
|
|
|
////手指按下移动结束
|
|
private void FingerGestures_OnMoveEnd(int fingerIndex, Vector2 fingerPos)
|
|
{
|
|
//FLogger.Log("FingerGestures_OnMoveEnd)", fingerIndex, fingerPos);
|
|
if (_onFingerMoveEnd != null) _onFingerMoveEnd(fingerIndex, fingerPos);
|
|
}
|
|
|
|
//按下操作处理
|
|
private void FingerGestures_OnFingerDown(int fingerindex, Vector2 fingerpos)
|
|
{
|
|
if (_onFingerDown != null) _onFingerDown(fingerindex, fingerpos);
|
|
}
|
|
|
|
//抬起的操作处理
|
|
private void FingerGestures_OnFingerUP(int fingerindex, Vector2 fingerpos, float time)
|
|
{
|
|
if (_onFingerUp != null) _onFingerUp(fingerindex, fingerpos, time);
|
|
}
|
|
|
|
|
|
//两个手指进行捏或者划操作 -- 开始
|
|
private void FingerGestures_OnPinchBegin(Vector2 fingerPos1, Vector2 fingerPos2)
|
|
{
|
|
if (_onPinchBegin != null) _onPinchBegin(fingerPos1, fingerPos2);
|
|
}
|
|
//两个手指进行捏或者划操作 -- 移动
|
|
private void FingerGestures_OnPinchMove(Vector2 fingerPos1, Vector2 fingerPos2, float delta)
|
|
{
|
|
if (_onPinchMove != null) _onPinchMove(fingerPos1, fingerPos2, delta);
|
|
}
|
|
//两个手指进行捏或者划操作 -- 结束
|
|
private void FingerGestures_OnPinchEnd(Vector2 fingerPos1, Vector2 fingerPos2)
|
|
{
|
|
if (_onPinchEnd != null) _onPinchEnd(fingerPos1, fingerPos2);
|
|
}
|
|
//两个手指进行旋转操作 -- 开始
|
|
private void FingerGestures_OnRotationBegin(Vector2 fingerPos1, Vector2 fingerPos2)
|
|
{
|
|
if (_onRotationBegin != null) _onRotationBegin(fingerPos1, fingerPos2);
|
|
}
|
|
//两个手指进行旋转操作 -- 移动
|
|
private void FingerGestures_OnRotationMove(Vector2 fingerPos1, Vector2 fingerPos2, float rotationAngleDelta)
|
|
{
|
|
if (_onRotationMove != null) _onRotationMove(fingerPos1, fingerPos2, rotationAngleDelta);
|
|
}
|
|
//两个手指进行旋转操作 --结束
|
|
private void FingerGestures_OnRotationEnd(Vector2 fingerPos1, Vector2 fingerPos2, float totalRotationAngle)
|
|
{
|
|
if (_onRotationEnd != null) _onRotationEnd(fingerPos1, fingerPos2, totalRotationAngle);
|
|
}
|
|
#endregion
|
|
}
|
|
}
|