Files
Main/Assets/GameAssets/Resources/GameUI/Common/FingerGestures/FingerGesturesEventTrigger.cs
2025-01-25 04:38:09 +08:00

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