Files

23 lines
953 B
C#

using System;
using UnityEngine;
using UnityEngine.EventSystems;
namespace HotUpdate.Gameplay
{
/// <summary>Input behaviour on authored formation buttons; creates no UI objects.</summary>
public sealed class FormationDragHandle : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
public Func<bool> CanBegin;
public Action<PointerEventData> Begin, Move, End;
bool _dragging;
public void OnBeginDrag(PointerEventData data)
{
if (data.button != PointerEventData.InputButton.Left || CanBegin?.Invoke() != true) return;
_dragging = true; data.eligibleForClick = false; Begin?.Invoke(data);
}
public void OnDrag(PointerEventData data) { if (_dragging) Move?.Invoke(data); }
public void OnEndDrag(PointerEventData data) { if (!_dragging) return; _dragging = false; End?.Invoke(data); }
void OnDisable() { _dragging = false; }
}
}