using System;
using UnityEngine;

public class OvrControllerButtons : AVRControllerButtons
{
	protected override void Awake()
	{
		base.Awake();
		this.m_eType = AVRControllerButtons.TYPE.TOUCH;
		this.m_goHandModel = base.transform.Find("HandPlayer").gameObject;
	}

	public override bool ShowHand
	{
		get
		{
			return this.m_goHandModel.activeSelf;
		}
		set
		{
			this.m_goHandModel.SetActive(value);
		}
	}

	public override void Haptic(byte f_byFoce, float f_fTime)
	{
		byte[] array = new byte[(int)(320f * f_fTime)];
		for (int i = 0; i < array.Length; i++)
		{
			array[i] = f_byFoce;
		}
		this.m_HapticsClip = new OVRHapticsClip(array, array.Length);
		if (this.m_bHandL)
		{
			OVRHaptics.LeftChannel.Mix(this.m_HapticsClip);
		}
		else
		{
			OVRHaptics.RightChannel.Mix(this.m_HapticsClip);
		}
	}

	public override bool GetPressDown(AVRControllerButtons.BTN f_eBtn)
	{
		if (f_eBtn != AVRControllerButtons.BTN.VIRTUAL_GRUB)
		{
			return OVRInput.GetDown((OVRInput.RawButton)this.m_aryBtn2RealOvr[(int)f_eBtn, (!this.m_bHandL) ? 1 : 0], OVRInput.Controller.Active);
		}
		if (this.m_bHandL)
		{
			return (OVRInput.GetDown(OVRInput.RawButton.LHandTrigger, OVRInput.Controller.Active) && OVRInput.GetDown(OVRInput.RawButton.LIndexTrigger, OVRInput.Controller.Active)) || (!OVRInput.Get(OVRInput.RawButton.LHandTrigger, OVRInput.Controller.Active) && OVRInput.GetDown(OVRInput.RawButton.LIndexTrigger, OVRInput.Controller.Active)) || (!OVRInput.Get(OVRInput.RawButton.LIndexTrigger, OVRInput.Controller.Active) && OVRInput.GetDown(OVRInput.RawButton.LHandTrigger, OVRInput.Controller.Active));
		}
		return (OVRInput.GetDown(OVRInput.RawButton.RHandTrigger, OVRInput.Controller.Active) && OVRInput.GetDown(OVRInput.RawButton.RIndexTrigger, OVRInput.Controller.Active)) || (!OVRInput.Get(OVRInput.RawButton.RHandTrigger, OVRInput.Controller.Active) && OVRInput.GetDown(OVRInput.RawButton.RIndexTrigger, OVRInput.Controller.Active)) || (!OVRInput.Get(OVRInput.RawButton.RIndexTrigger, OVRInput.Controller.Active) && OVRInput.GetDown(OVRInput.RawButton.RHandTrigger, OVRInput.Controller.Active));
	}

	public override bool GetPress(AVRControllerButtons.BTN f_eBtn)
	{
		if (f_eBtn == AVRControllerButtons.BTN.VIRTUAL_GRUB)
		{
			return (!this.m_bHandL) ? (OVRInput.Get(OVRInput.RawButton.RHandTrigger, OVRInput.Controller.Active) || OVRInput.Get(OVRInput.RawButton.RIndexTrigger, OVRInput.Controller.Active)) : (OVRInput.Get(OVRInput.RawButton.LHandTrigger, OVRInput.Controller.Active) || OVRInput.Get(OVRInput.RawButton.LIndexTrigger, OVRInput.Controller.Active));
		}
		return OVRInput.Get((OVRInput.RawButton)this.m_aryBtn2RealOvr[(int)f_eBtn, (!this.m_bHandL) ? 1 : 0], OVRInput.Controller.Active);
	}

	public override bool GetPressUp(AVRControllerButtons.BTN f_eBtn)
	{
		if (f_eBtn == AVRControllerButtons.BTN.VIRTUAL_GRUB)
		{
			return (!this.m_bHandL) ? ((!OVRInput.Get(OVRInput.RawButton.RIndexTrigger, OVRInput.Controller.Active) && OVRInput.GetUp(OVRInput.RawButton.RHandTrigger, OVRInput.Controller.Active)) || (!OVRInput.Get(OVRInput.RawButton.RHandTrigger, OVRInput.Controller.Active) && OVRInput.GetUp(OVRInput.RawButton.RIndexTrigger, OVRInput.Controller.Active))) : ((!OVRInput.Get(OVRInput.RawButton.LIndexTrigger, OVRInput.Controller.Active) && OVRInput.GetUp(OVRInput.RawButton.LHandTrigger, OVRInput.Controller.Active)) || (!OVRInput.Get(OVRInput.RawButton.LHandTrigger, OVRInput.Controller.Active) && OVRInput.GetUp(OVRInput.RawButton.LIndexTrigger, OVRInput.Controller.Active)));
		}
		return OVRInput.GetUp((OVRInput.RawButton)this.m_aryBtn2RealOvr[(int)f_eBtn, (!this.m_bHandL) ? 1 : 0], OVRInput.Controller.Active);
	}

	public override bool GetTouchDown(AVRControllerButtons.TOUCH f_eTouch)
	{
		return OVRInput.GetDown((OVRInput.RawTouch)this.m_aryTouch2RealOvr[(int)f_eTouch, (!this.m_bHandL) ? 1 : 0], OVRInput.Controller.Active);
	}

	public override bool GetTouch(AVRControllerButtons.TOUCH f_eTouch)
	{
		return OVRInput.Get((OVRInput.RawTouch)this.m_aryTouch2RealOvr[(int)f_eTouch, (!this.m_bHandL) ? 1 : 0], OVRInput.Controller.Active);
	}

	public override bool GetTouchUp(AVRControllerButtons.TOUCH f_eTouch)
	{
		return OVRInput.GetUp((OVRInput.RawTouch)this.m_aryTouch2RealOvr[(int)f_eTouch, (!this.m_bHandL) ? 1 : 0], OVRInput.Controller.Active);
	}

	public override Vector2 GetAxis()
	{
		return OVRInput.Get((!this.m_bHandL) ? OVRInput.RawAxis2D.RThumbstick : OVRInput.RawAxis2D.LThumbstick, OVRInput.Controller.Active);
	}

	public override float GetTriggerRate()
	{
		if (this.m_bHandL)
		{
			return OVRInput.Get(OVRInput.RawAxis1D.LIndexTrigger, OVRInput.Controller.Active);
		}
		return OVRInput.Get(OVRInput.RawAxis1D.RIndexTrigger, OVRInput.Controller.Active);
	}

	private void Update()
	{
	}

	private uint[,] m_aryBtn2RealOvr = new uint[,]
	{
		{
			512u,
			2u
		},
		{
			256u,
			1u
		},
		{
			1024u,
			4u
		},
		{
			536870912u,
			134217728u
		},
		{
			1048576u,
			1048576u
		},
		{
			268435456u,
			67108864u
		},
		{
			1024u,
			4u
		},
		{
			536870912u,
			134217728u
		}
	};

	private uint[,] m_aryTouch2RealOvr = new uint[,]
	{
		{
			4096u,
			16u
		},
		{
			1024u,
			4u
		},
		{
			2048u,
			8u
		},
		{
			512u,
			2u
		},
		{
			256u,
			1u
		}
	};

	private GameObject m_goHandModel;

	private OVRHapticsClip m_HapticsClip;
}
