using FullInspector; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; namespace MoleMole { public class MonoJoystick : MonoBehaviour, IPointerDownHandler, IPointerUpHandler, IEventSystemHandler, IDragHandler { private const int POINTER_NONE = -253; private Button _button; private RectTransform _imageTrans; private float _currentAngle; private BaseAvatarInputController _controller; private Camera _uiCamera; private bool _useVirtualJoyStick; private bool _isPointerDown; private bool _pointerLeaveTrigger; private Vector2 _currentScreenHitPos; private float _lastAnalogInputX; private float _lastAnalogInputY; private bool _updateAfterEnable; [ShowInInspector] private int _controlPointerID = -253; public bool IsMoving { get; private set; } public float CurrentAngleV2 { get { return (!(_currentAngle < -180f)) ? _currentAngle : (_currentAngle + 360f); } } public void Update() { if (_updateAfterEnable) { _updateAfterEnable = false; OnUnactive(); } if (_isPointerDown && Input.touchCount == 0) { _controlPointerID = -253; _isPointerDown = false; _pointerLeaveTrigger = true; } if (_isPointerDown) { OnActive(_currentScreenHitPos); } else if (_pointerLeaveTrigger) { _pointerLeaveTrigger = false; OnUnactive(); } } public void InitJoystick(BaseAvatarInputController controller) { _controller = controller; base.gameObject.SetActive(true); } public void OnDrag(PointerEventData data) { if (_controlPointerID != -253 && data.pointerId == _controlPointerID && _isPointerDown) { _currentScreenHitPos = data.position; OnActive(_currentScreenHitPos); } } public void OnPointerDown(PointerEventData data) { if (_controlPointerID == -253) { _controlPointerID = data.pointerId; } else if (_controlPointerID != data.pointerId) { return; } _isPointerDown = true; _currentScreenHitPos = data.position; } public void OnPointerUp(PointerEventData data) { if (_controlPointerID != -253 && _controlPointerID == data.pointerId) { _controlPointerID = -253; _isPointerDown = false; _pointerLeaveTrigger = true; } } private void Awake() { _button = GetComponent