/// --------------------------------------------- /// 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; } } }