IsLocation.cs 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. using System.Collections;
  2. using Immersal.AR;
  3. using Blue;
  4. using UnityEngine.UI;
  5. using UnityEngine;
  6. using Immersal;
  7. using NRKernal;
  8. using XRTool.Util;
  9. /// <summary>
  10. /// 是否定位功能
  11. /// </summary>
  12. public class IsLocation : AbstractController
  13. {
  14. public Toggle Y_Location_Toggle;
  15. public Toggle N_Location_Toggle;
  16. private XRLocalizer XRLocalizer =>SceneIOCContainer.Instance.Pull("XRLocalizer")as XRLocalizer;
  17. private Color32 blue= new Color32(0, 120, 255, 255);
  18. private Color32 white= new Color32(255, 255, 255, 255);
  19. private void Start()
  20. {
  21. if (!AutoERNIEBot.Auto)
  22. {
  23. Y_Location_Toggle.onValueChanged.AddListener(Y_IsLocationValueChange);
  24. N_Location_Toggle.onValueChanged.AddListener(N_IsLocationValueChange);
  25. }
  26. }
  27. private void Y_IsLocationValueChange(bool isOn)
  28. {
  29. if (isOn)
  30. {
  31. Y_Location_Toggle.transform.Find("Background").GetComponent<Image>().color = blue;
  32. Y_Location_Toggle.transform.Find("Background/Checkmark").GetComponent<Image>().color = blue;
  33. N_Location_Toggle.transform.Find("Background").GetComponent<Image>().color = white;
  34. N_Location_Toggle.transform.Find("Background/Checkmark").GetComponent<Image>().color = white;
  35. XRLocalizer.enabled = true;
  36. StartCoroutine(StartNewLocalize());
  37. }
  38. }
  39. IEnumerator StartNewLocalize()
  40. {
  41. yield return null;
  42. Ref();
  43. this.SendCommand(new SetImmersalLocalCommand(true));
  44. }
  45. private void N_IsLocationValueChange(bool isOn)
  46. {
  47. if (isOn)
  48. {
  49. Y_Location_Toggle.transform.Find("Background").GetComponent<Image>().color = white;
  50. Y_Location_Toggle.transform.Find("Background/Checkmark").GetComponent<Image>().color = white;
  51. N_Location_Toggle.transform.Find("Background").GetComponent<Image>().color = blue;
  52. N_Location_Toggle.transform.Find("Background/Checkmark").GetComponent<Image>().color = blue;
  53. XRLocalizer.enabled = false;
  54. this.SendCommand(new SetImmersalLocalCommand(false));
  55. }
  56. }
  57. public void Ref()
  58. {
  59. ImmersalSDK.Instance.Localizer.Reset();
  60. NRSessionManager.Instance.NRHMDPoseTracker.ChangeTo0Dof((result) =>
  61. {
  62. TimerMgr.Instance.CreateTimer(() => {
  63. NRSessionManager.Instance.NRHMDPoseTracker.ChangeTo6Dof((result) =>
  64. {
  65. var poseTracker = NRSessionManager.Instance.NRHMDPoseTracker;
  66. poseTracker.ResetWorldMatrix(false);
  67. ImmersalSDK.Instance.Localizer.Reset();
  68. NRInput.RecenterController();
  69. SetLocalTime.isActive = true;
  70. });
  71. }, 1f);
  72. });
  73. }
  74. }