ImmersalLocalControl.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. using Immersal.AR;
  2. using UnityEngine;
  3. using Blue;
  4. using UnityEngine.UI;
  5. using Newtonsoft.Json;
  6. /// <summary>
  7. /// 打开景点后是否开启点云定位功能
  8. /// </summary>
  9. public class ImmersalLocalControl : AbstractController
  10. {
  11. private Color32 blue= new Color32(0, 120, 255, 255);
  12. private Color32 white= new Color32(255, 255, 255, 255);
  13. private XRLocalizer XRLocalizer =>SceneIOCContainer.Instance.Pull("XRLocalizer")as XRLocalizer;
  14. private Toggle Y_Location_Toggle =>SceneIOCContainer.Instance.Pull("Y_Location_Toggle")as Toggle;
  15. private Toggle N_Location_Toggle =>SceneIOCContainer.Instance.Pull("N_Location_Toggle")as Toggle;
  16. public int id;
  17. public int projectId;
  18. public bool isOn; // 是否开启
  19. private bool firstOpen = true; // 第一次打开
  20. private BlueUserConfig BlueUserConfig;
  21. private void Awake()
  22. {
  23. TextAsset jsonTextAsset = Resources.Load("BlueUserConfig") as TextAsset;
  24. BlueUserConfig = JsonConvert.DeserializeObject<BlueUserConfig>(jsonTextAsset.text);
  25. if (!BlueUserConfig.Auto)
  26. {
  27. this.RegisterEvent<SetImmersalLocalEvent>(Unload);
  28. }
  29. }
  30. private void OnEnable()
  31. {
  32. if(BlueUserConfig.Auto) return;
  33. if(firstOpen)
  34. {
  35. firstOpen = false;
  36. return;
  37. }
  38. Debug.LogError($"{name}是否定位:"+isOn);
  39. if(isOn)
  40. {
  41. // 启动脚本,开启定位
  42. Y_Location_Toggle.isOn = true;
  43. XRLocalizer.enabled = true;
  44. Y_Location_Toggle.transform.Find("Background").GetComponent<Image>().color = blue;
  45. Y_Location_Toggle.transform.Find("Background/Checkmark").GetComponent<Image>().color = blue;
  46. N_Location_Toggle.transform.Find("Background").GetComponent<Image>().color = white;
  47. N_Location_Toggle.transform.Find("Background/Checkmark").GetComponent<Image>().color = white;
  48. }
  49. else
  50. {
  51. N_Location_Toggle.isOn = true;
  52. XRLocalizer.enabled = false;
  53. Y_Location_Toggle.transform.Find("Background").GetComponent<Image>().color = white;
  54. Y_Location_Toggle.transform.Find("Background/Checkmark").GetComponent<Image>().color = white;
  55. N_Location_Toggle.transform.Find("Background").GetComponent<Image>().color = blue;
  56. N_Location_Toggle.transform.Find("Background/Checkmark").GetComponent<Image>().color = blue;
  57. }
  58. this.RegisterEvent<SetImmersalLocalEvent>(Unload);
  59. }
  60. private void OnDisable()
  61. {
  62. if(BlueUserConfig.Auto) return;
  63. this.UnRegisterEvent<SetImmersalLocalEvent>(Unload);
  64. }
  65. private void Unload(SetImmersalLocalEvent e)
  66. {
  67. isOn = e.isLocation;
  68. this.SendCommand(new ImmersalSetLocalCommand(id,projectId,isOn));
  69. }
  70. }