using System;
using UnityEngine;

public abstract class AVRControllerBehavior : MonoBehaviour
{
	public abstract Vector3 GetVelocityHand();

	public abstract float GetRotHandY();

	public abstract AVRControllerBehavior.BEH_TYPE BehaviourType { get; }

	public abstract bool IsHandCameraMode { get; }

	public abstract bool HandCameraMode { get; set; }

	public abstract bool IsHandPenMode { get; }

	public abstract bool HandDanceMode { get; set; }

	public abstract bool HandVRIKMode { get; set; }

	public abstract bool HandYotogiMode { get; set; }

	public virtual AVRControllerBehavior.LIMIT_MODE HandLimitMode
	{
		get
		{
			return this.m_eHandLimitMode;
		}
		set
		{
			this.m_eHandLimitMode = value;
		}
	}

	public virtual bool HandModelVisible
	{
		get
		{
			return this.m_bHandModelVisible;
		}
		set
		{
			this.m_bHandModelVisible = value;
		}
	}

	protected virtual void Awake()
	{
	}

	public virtual void Init(AVRController f_controller)
	{
		this.m_controller = f_controller;
		this.m_buttons = this.m_controller.VRControllerButtons;
		this.m_obj_controller = this.m_controller.VRControllerObj;
	}

	public bool m_bHandL = true;

	public Vector3 m_vMoveCam;

	public float m_fRotCam;

	protected OvrMgr.OvrObject.Controller m_obj_controller;

	protected AVRController m_controller;

	protected AVRControllerButtons m_buttons;

	protected Transform m_trTabletPenRoot;

	protected GameObject m_goTabletPen;

	protected AVRControllerBehavior.LIMIT_MODE m_eHandLimitMode;

	protected bool m_bHandModelVisible = true;

	protected bool m_bHandDanceMode;

	protected bool m_bHandVRIKMode;

	protected bool m_bHandYotogiMode;

	public enum BEH_TYPE
	{
		LEGACY,
		NEW,
		DUMMY
	}

	public enum LIMIT_MODE
	{
		NORMAL,
		NO_WARP,
		HAND_ONLY
	}
}
