OrientationInfo.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using UnityEngine;
  2. using UnityEngine.UI;
  3. namespace ARLocation.UI
  4. {
  5. public class OrientationInfo : MonoBehaviour
  6. {
  7. private GameObject redArrow;
  8. private GameObject trueNorthLabel;
  9. private GameObject magneticNorthLabel;
  10. private GameObject headingAccuracyLabel;
  11. private GameObject compassImage;
  12. private ARLocationProvider locationProvider;
  13. private GameObject mainCamera;
  14. private bool isMainCameraNull;
  15. private Text text;
  16. private Text text1;
  17. private Text text2;
  18. private RectTransform rectTransform;
  19. private RectTransform rectTransform1;
  20. // Use this for initialization
  21. void Start()
  22. {
  23. mainCamera = GameObject.FindGameObjectWithTag("MainCamera");
  24. isMainCameraNull = mainCamera == null;
  25. locationProvider = ARLocationProvider.Instance;
  26. redArrow = GameObject.Find(gameObject.name + "/Panel/CompassImage/RedArrow");
  27. trueNorthLabel = GameObject.Find(gameObject.name + "/Panel/TrueNorthLabel");
  28. magneticNorthLabel = GameObject.Find(gameObject.name + "/Panel/MagneticNorthLabel");
  29. headingAccuracyLabel = GameObject.Find(gameObject.name + "Panel/HeadingAccuracyLabel");
  30. compassImage = GameObject.Find(gameObject.name + "Panel/CompassImage");
  31. text2 = headingAccuracyLabel.GetComponent<Text>();
  32. text1 = magneticNorthLabel.GetComponent<Text>();
  33. text = trueNorthLabel.GetComponent<Text>();
  34. rectTransform1 = compassImage.GetComponent<RectTransform>();
  35. rectTransform = redArrow.GetComponent<RectTransform>();
  36. }
  37. // Update is called once per frame
  38. void Update()
  39. {
  40. if (isMainCameraNull)
  41. {
  42. return;
  43. }
  44. var currentHeading = locationProvider.CurrentHeading.heading;
  45. var currentMagneticHeading = locationProvider.CurrentHeading.magneticHeading;
  46. var currentAccuracy = locationProvider.Provider.CurrentHeading.accuracy;
  47. text.text = "TRUE NORTH: " + currentHeading;
  48. text1.text = "MAGNETIC NORTH: " + currentMagneticHeading;
  49. text2.text = "ACCURACY: " + currentAccuracy;
  50. rectTransform.rotation = Quaternion.Euler(0, 0, (float)currentMagneticHeading);
  51. rectTransform1.rotation = Quaternion.Euler(0, 0, (float)currentHeading);
  52. }
  53. }
  54. }