101 lines
1.8 KiB
C#
101 lines
1.8 KiB
C#
using UnityEngine;
|
|
using OHM.UnityToolkit;
|
|
using UnityEngine.Serialization;
|
|
|
|
public class InputController : MonoBehaviour
|
|
{
|
|
[SerializeField]
|
|
[FormerlySerializedAs("core")]
|
|
private CoreController _core;
|
|
|
|
private bool _downValid;
|
|
|
|
private Vector2 GetTouchPos()
|
|
{
|
|
if (Input.touchCount >= 1)
|
|
{
|
|
return Input.GetTouch(0).position;
|
|
}
|
|
#if UNITY_EDITOR || UNITY_STANDALONE
|
|
|
|
return Input.mousePosition;
|
|
#else
|
|
return Vector2.zero;
|
|
#endif
|
|
}
|
|
|
|
private bool TouchDown()
|
|
{
|
|
if (Input.touchCount >= 1)
|
|
{
|
|
return Input.GetTouch(0).phase == TouchPhase.Began;
|
|
}
|
|
#if UNITY_EDITOR || UNITY_STANDALONE
|
|
return Input.GetMouseButtonDown(0);
|
|
#else
|
|
return false;
|
|
#endif
|
|
}
|
|
|
|
private bool TouchHold()
|
|
{
|
|
if (Input.touchCount >= 1)
|
|
{
|
|
TouchPhase phase = Input.GetTouch(0).phase;
|
|
return phase == TouchPhase.Moved || phase == TouchPhase.Stationary;
|
|
}
|
|
#if UNITY_EDITOR || UNITY_STANDALONE
|
|
return Input.GetMouseButton(0);
|
|
#else
|
|
return false;
|
|
#endif
|
|
}
|
|
|
|
private bool TouchUp()
|
|
{
|
|
if (Input.touchCount >= 1)
|
|
{
|
|
return Input.GetTouch(0).phase == TouchPhase.Ended;
|
|
}
|
|
#if UNITY_EDITOR || UNITY_STANDALONE
|
|
return Input.GetMouseButtonUp(0);
|
|
#else
|
|
return false;
|
|
#endif
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
Vector2 touchPos = GetTouchPos();
|
|
if (!UIUtils.IsInputBlocked(touchPos) && TouchDown())
|
|
{
|
|
IInputsListener listener = _core.GetCurrentInputsListener();
|
|
if (listener != null)
|
|
{
|
|
listener.InputDown(touchPos);
|
|
}
|
|
_downValid = true;
|
|
}
|
|
else if (_downValid)
|
|
{
|
|
if (TouchHold())
|
|
{
|
|
IInputsListener listener2 = _core.GetCurrentInputsListener();
|
|
if (listener2 != null)
|
|
{
|
|
listener2.InputMove(touchPos);
|
|
}
|
|
}
|
|
else if (TouchUp())
|
|
{
|
|
_downValid = false;
|
|
IInputsListener listener3 = _core.GetCurrentInputsListener();
|
|
if (listener3 != null)
|
|
{
|
|
listener3.InputUp();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|