123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- using System.Collections;
- using Immersal.AR;
- using Blue;
- using UnityEngine.UI;
- using UnityEngine;
- using Immersal;
- using NRKernal;
- using XRTool.Util;
- /// <summary>
- /// 是否定位功能
- /// </summary>
- 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<Image>().color = blue;
- Y_Location_Toggle.transform.Find("Background/Checkmark").GetComponent<Image>().color = blue;
- N_Location_Toggle.transform.Find("Background").GetComponent<Image>().color = white;
- N_Location_Toggle.transform.Find("Background/Checkmark").GetComponent<Image>().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<Image>().color = white;
- Y_Location_Toggle.transform.Find("Background/Checkmark").GetComponent<Image>().color = white;
- N_Location_Toggle.transform.Find("Background").GetComponent<Image>().color = blue;
- N_Location_Toggle.transform.Find("Background/Checkmark").GetComponent<Image>().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);
- });
- }
- }
|