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