using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
namespace JoystickPlugin
{
public class Joystick : MonoBehaviour, IPointerUpHandler, IDragHandler, IPointerDownHandler
{
public float Horizontal { get { return (snapX) ? SnapFloat(input.x, AxisOptions.Horizontal) : input.x; } }
public float Vertical { get { return (snapY) ? SnapFloat(input.y, AxisOptions.Vertical) : input.y; } }
public Vector2 Direction { get { return new Vector2(Horizontal, Vertical); } }
public float HandleRange
{
get { return handleRange; }
set { handleRange = Mathf.Abs(value); }
}
public float DeadZone
{
get { return deadZone; }
set { deadZone = Mathf.Abs(value); }
}
public AxisOptions AxisOptions { get { return AxisOptions; } set { axisOptions = value; } }
public bool SnapX { get { return snapX; } set { snapX = value; } }
public bool SnapY { get { return snapY; } set { snapY = value; } }
SerializeField\] private float handleRange = 1;  
\[SerializeField\] private float deadZone = 0;  
\[SerializeField\] private AxisOptions axisOptions = AxisOptions.Both;  
\[SerializeField\] private bool snapX = false;  
\[SerializeField\] private bool snapY = false;
\[SerializeField\] public RectTransform background = null;  
\[SerializeField\] public RectTransform handle = null;  
private RectTransform baseRect = null;
private Canvas canvas;  
private Camera cam;
private Vector2 input = Vector2.zero;
private void Awake()  
{
HandleRange = 0.5f;  
DeadZone = 0;  
AxisOptions = AxisOptions.Both;  
SnapX = false;  
SnapY = false;  
background = transform.Find("Background").GetComponent\();  
handle = transform.Find("Background/Handle").GetComponent\();  
baseRect = GetComponent\();  
canvas = transform.parent.GetComponent\