using System.Collections;
using Immersal.AR;
using Blue;
using UnityEngine.UI;
using UnityEngine;
using Immersal;
using NRKernal;
using XRTool.Util;
///
/// 是否定位功能
///
public class IsLocation : AbstractController
{
public Toggle Y_Location_Toggle;
public Toggle N_Location_Toggle;
private XRLocalizer XRLocalizer =>SceneIOCContainer.Instance.Pull("XRLocalizer")as XRLocalizer;
private Color32 blue= new Color32(0, 120, 255, 255);
private Color32 white= new Color32(255, 255, 255, 255);
private void Start()
{
if (!AutoERNIEBot.Auto)
{
Y_Location_Toggle.onValueChanged.AddListener(Y_IsLocationValueChange);
N_Location_Toggle.onValueChanged.AddListener(N_IsLocationValueChange);
}
}
private void Y_IsLocationValueChange(bool isOn)
{
if (isOn)
{
Y_Location_Toggle.transform.Find("Background").GetComponent().color = blue;
Y_Location_Toggle.transform.Find("Background/Checkmark").GetComponent().color = blue;
N_Location_Toggle.transform.Find("Background").GetComponent().color = white;
N_Location_Toggle.transform.Find("Background/Checkmark").GetComponent().color = white;
XRLocalizer.enabled = true;
StartCoroutine(StartNewLocalize());
}
}
IEnumerator StartNewLocalize()
{
yield return null;
Ref();
this.SendCommand(new SetImmersalLocalCommand(true));
}
private void N_IsLocationValueChange(bool isOn)
{
if (isOn)
{
Y_Location_Toggle.transform.Find("Background").GetComponent().color = white;
Y_Location_Toggle.transform.Find("Background/Checkmark").GetComponent().color = white;
N_Location_Toggle.transform.Find("Background").GetComponent().color = blue;
N_Location_Toggle.transform.Find("Background/Checkmark").GetComponent().color = blue;
XRLocalizer.enabled = false;
this.SendCommand(new SetImmersalLocalCommand(false));
}
}
public void Ref()
{
ImmersalSDK.Instance.Localizer.Reset();
NRSessionManager.Instance.NRHMDPoseTracker.ChangeTo0Dof((result) =>
{
TimerMgr.Instance.CreateTimer(() => {
NRSessionManager.Instance.NRHMDPoseTracker.ChangeTo6Dof((result) =>
{
var poseTracker = NRSessionManager.Instance.NRHMDPoseTracker;
poseTracker.ResetWorldMatrix(false);
ImmersalSDK.Instance.Localizer.Reset();
NRInput.RecenterController();
SetLocalTime.isActive = true;
});
}, 1f);
});
}
}