/// ---------------------------------------------
/// Ultimate Character Controller
/// Copyright (c) Opsive. All Rights Reserved.
/// https://www.opsive.com
/// ---------------------------------------------
namespace Opsive.UltimateCharacterController.Input.VirtualControls
{
using UnityEngine;
using UnityEngine.EventSystems;
///
/// An abstract class for handing axis input.
///
public abstract class VirtualAxis : VirtualControl, IPointerDownHandler, IPointerUpHandler
{
[Tooltip("The name of the horizontal input axis.")]
[SerializeField] protected string m_HorizontalInputName = "Horizontal";
[Tooltip("The name of the vertical input axis.")]
[SerializeField] protected string m_VerticalInputName = "Vertical";
protected bool m_Pressed;
protected Vector2 m_DeltaPosition;
protected override void Awake()
{
base.Awake();
if (m_VirtualControlsManager != null) {
m_VirtualControlsManager.RegisterVirtualControl(m_HorizontalInputName, this);
m_VirtualControlsManager.RegisterVirtualControl(m_VerticalInputName, this);
}
}
///
/// Callback when a pointer has pressed on the button.
///
/// The pointer data.
public virtual void OnPointerDown(PointerEventData data)
{
if (m_Pressed) {
return;
}
m_Pressed = true;
m_DeltaPosition = Vector2.zero;
}
///
/// Callback when a pointer has released the button.
///
/// The pointer data.
public virtual void OnPointerUp(PointerEventData data)
{
if (!m_Pressed) {
return;
}
m_Pressed = false;
m_DeltaPosition = Vector2.zero;
}
}
}