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); }); } }