using SC.XR.Unity;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using XRTool.Util;

public class SystemFollow : MonoBehaviour {

	//private followCamera followcamera;
	public SCButton resetSlamBtn;
	public SCButton switch3DofBtn;
	public SCButton switch6DofBtn;

	public SCButton switchAR;
	public SCButton switchMR;

	public void InitUI()
	{
		switch3DofBtn.gameObject.SetActive(false);
		switch6DofBtn.gameObject.SetActive(false);
		switchAR.gameObject.SetActive(false);
		switchMR.gameObject.SetActive(false);
		this.gameObject.SetActive(false);
	}

	public void Init()
	{
		this.gameObject.SetActive(true);
	}

	public void ResetPattern()
	{
		if (switchMR.gameObject.activeSelf)
		{
			SwitchMR();
		}
		//if (switch3DofBtn.gameObject.activeSelf)
		//{
		//	Swith3DOf();
		//}
		this.gameObject.SetActive(false);
	}

	// Use this for initialization
	void Start ()
	{
		resetSlamBtn.onClick.AddListener(ToResetSlam);
		switch3DofBtn.onClick.AddListener(Swith3DOf);
		switch6DofBtn.onClick.AddListener(Swith6DOf);
		switchAR.onClick.AddListener(SwitchAR);
		switchMR.onClick.AddListener(SwitchMR);
	}

	// Update is called once per frame
	void Update () {
		this.transform.position = OpenXRCamera.Instance.head.position;
		this.transform.eulerAngles = new Vector3 (0, OpenXRCamera.Instance.head.eulerAngles.y,0);
	}

    public void ToResetSlam()
    {
		/*
        API_GSXR_Slam.GSXR_Reset_Slam();
		if (ShowRoom.Instance.gameObject.activeSelf)
		{
			ShowRoom.Instance.Reset();
        }
		*/
		if (ShowRoom.Instance.gameObject.activeSelf)
		{
			ShowRoom.Instance.Reset();
		}
		//if (ShowRoom.Instance.gameObject.activeSelf)
  //      {
  //          ShowRoom.Instance.ResetPosition();
  //      }
    }

	public void Swith3DOf()
	{
        //API_GSXR_Slam.GSXR_Set_TrackMode(TrackMode.Mode_3Dof);
		switch3DofBtn.gameObject.SetActive(false);
		switch6DofBtn.gameObject.SetActive(true);
	}
	public void Swith6DOf()
	{
		//API_GSXR_Slam.GSXR_Set_TrackMode(TrackMode.Mode_6Dof);
		switch3DofBtn.gameObject.SetActive(true);
		switch6DofBtn.gameObject.SetActive(false);
        //API_GSXR_Slam.GSXR_Reset_Slam();
	}

	private void SwitchAR()
	{
		switchAR.gameObject.SetActive(false);
		switchMR.gameObject.SetActive(true);
		if (GameStart.Instance)
		{
			GameStart.Instance.gameObject.SetActive(false);
		}
		//if (RemoteRtc.Instance)
		//{
		//	RemoteRtc.Instance.meshRender.gameObject.layer = LayerMask.NameToLayer("Default");
		//}
		if (GSXRManager.Instance)
		{
            GSXRManager.Instance.leftCamera.cullingMask = -1;
            GSXRManager.Instance.rightCamera.cullingMask = -1;
		}
		resetSlamBtn.enabled = false;
		switch3DofBtn.enabled = false;
		switch6DofBtn.enabled = false;
	}

	private void SwitchMR()
	{
		switchAR.gameObject.SetActive(true);
		switchMR.gameObject.SetActive(false);
		if (GameStart.Instance)
		{
			GameStart.Instance.gameObject.SetActive(true);
		}
		//if (RemoteRtc.Instance)
		//{
		//	RemoteRtc.Instance.meshRender.gameObject.layer = LayerMask.NameToLayer("fouces");
		//}
		if (GSXRManager.Instance)
		{
            GSXRManager.Instance.leftCamera.cullingMask = ~(1 << 9);
            GSXRManager.Instance.rightCamera.cullingMask = ~(1 << 9);
		}
		resetSlamBtn.enabled = true;
		switch3DofBtn.enabled = true;
		switch6DofBtn.enabled = true;
	}

	public void SetBlue(Image image)
	{
		Color color = Color.white;
		color.r = 92 / 255f;
		color.g = 170 / 255f;
		color.b = 248 / 255f;
		color.a = 255f / 255f;
		image.color = color;
	}
	public void SetBlack(Image image)
	{
		image.color = Color.black;
	}
}