Health/Assets/UVC4UnityAndroidPlugin/Samples/Scripts/TouchEventManager.cs

131 lines
2.7 KiB
C#
Raw Normal View History

2023-11-22 19:42:29 +00:00
//#define ENABLE_LOG
/*
* Copyright (c) 2014 - 2022 t_saki@serenegiant.com
*/
using UnityEngine;
namespace Serenegiant {
public class TouchEventManager
{
public enum TouchState
{
// タッチ無し
None = -1,
// タッチ開始
Began = TouchPhase.Began,
// タッチ移動
Moved = TouchPhase.Moved,
// タッチ静止
Stationary = TouchPhase.Stationary,
// タッチ終了
Ended = TouchPhase.Ended,
// タッチキャンセル
Canceled = TouchPhase.Canceled,
}
public class TouchEvent
{
public Vector2 position;
public TouchState state;
/**
*
* @param touched
* @param position
* @param phase
*/
public TouchEvent(Vector2? position = null, TouchState state = TouchState.Began)
{
if (position == null)
{
this.position = new Vector2(0, 0);
}
else
{
this.position = (Vector2)position;
}
this.state = state;
}
/**
*
* @param other
*/
public TouchEvent(TouchEvent other)
{
this.position = new Vector2(other.position.x, other.position.y);
this.state = other.state;
}
}
private TouchEvent touchEvent = new TouchEvent();
/**
*
*/
public TouchEventManager()
{
}
/**
*
* MonoBehaviourの下位クラスのUpdateから呼ぶこと
*/
public void Update()
{
touchEvent.state = TouchState.None;
if (Application.isEditor)
{ // エディタで実行中…マウスの状態でタッチイベントをシミュレートする
if (Input.GetMouseButtonDown(0))
{ // タッチしたとき
touchEvent.state = TouchState.Began;
#if (!NDEBUG && DEBUG && ENABLE_LOG)
Console.WriteLine("タッチした:");
#endif
}
if (Input.GetMouseButtonUp(0))
{ // 離したとき
touchEvent.state = TouchState.Ended;
#if (!NDEBUG && DEBUG && ENABLE_LOG)
Console.WriteLine("タッチした:");
#endif
}
if (Input.GetMouseButton(0))
{ // 押し続けているとき
touchEvent.state = TouchState.Moved;
#if (!NDEBUG && DEBUG && ENABLE_LOG)
Console.WriteLine("押し続けている");
#endif
}
if (touchEvent.state != TouchState.None)
{ // タッチイベントがあるときは座標を取得
touchEvent.position = Input.mousePosition;
}
}
else
{ // 実機で実行中
if (Input.touchCount > 0)
{
Touch touch = Input.GetTouch(0);
touchEvent.position = touch.position;
touchEvent.state = (TouchState)touch.phase;
}
}
}
/**
*
*/
public TouchEvent GetTouch()
{
return new TouchEvent(touchEvent);
}
}
} // namespace Serenegiant