35 lines
1.0 KiB
C#
35 lines
1.0 KiB
C#
using System;
|
|
using Services.Interfaces;
|
|
using UnityEngine;
|
|
|
|
namespace Services {
|
|
public class InputService : MonoBehaviour, IInputService
|
|
{
|
|
public event Action<Vector2> OnPointerDown;
|
|
public event Action<Vector2> OnPointerUp;
|
|
|
|
private bool wasDown;
|
|
|
|
private void Update()
|
|
{
|
|
// Mouse
|
|
var isDown = Input.GetMouseButton(0);
|
|
if (!wasDown && isDown)
|
|
OnPointerDown?.Invoke(Input.mousePosition);
|
|
|
|
if (wasDown && !isDown)
|
|
OnPointerUp?.Invoke(Input.mousePosition);
|
|
|
|
wasDown = isDown;
|
|
|
|
// Optional: Touch (if you want both, you can merge logic more carefully)
|
|
if (Input.touchCount <= 0) return;
|
|
|
|
var t = Input.GetTouch(0);
|
|
if (t.phase == TouchPhase.Began)
|
|
OnPointerDown?.Invoke(t.position);
|
|
else if (t.phase == TouchPhase.Ended || t.phase == TouchPhase.Canceled)
|
|
OnPointerUp?.Invoke(t.position);
|
|
}
|
|
}
|
|
} |