SynPlayerTransform.cs 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. using LitJson;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. using XRTool.Util;
  6. public class SynPlayerTransform : MonoSingleton<SynPlayerTransform>
  7. {
  8. public Transform player;
  9. public bool isPushPos;
  10. private Vector3 oldPos;
  11. void Start()
  12. {
  13. isPushPos = false;
  14. player = OpenXRCamera.Instance.head;
  15. StartCoroutine(PushPos(0.5f));
  16. oldPos = Vector3.zero;
  17. }
  18. // Update is called once per frame
  19. void Update()
  20. {
  21. transform.eulerAngles = new Vector3(0, player.eulerAngles.y, 0);
  22. transform.position = new Vector3(player.position.x, 0, player.position.z);
  23. // UILogManager.Instance.text3.text = transform.localEulerAngles.y.ToString();
  24. if (Input.GetKeyDown(KeyCode.Y))
  25. {
  26. isPushPos = !isPushPos;
  27. }
  28. }
  29. private IEnumerator PushPos (float times)
  30. {
  31. while (true)
  32. {
  33. yield return new WaitForSeconds(times);
  34. if (isPushPos && Vector3.Distance(oldPos,player.transform.position)>0.5f)
  35. {
  36. oldPos = player.transform.position;
  37. JsonData obj = new JsonData();
  38. obj["z"] = (float)(Mathf.Round(player.position.x * 100)) / 100;
  39. obj["y"] = (float)(Mathf.Round(player.position.y * 100)) / 100;
  40. obj["x"] = (float)(Mathf.Round(player.position.z * 100)) / 100;
  41. obj["device"] = GetAndroidSNIEMI.GetDeviceUniqueIdMD5();
  42. obj["time"] = CommonMethod.GetCurrentTimeUnixMilliseconds();
  43. MQTTManager.Instance.PushMsg(MQTTManager.Instance.topiceSync, obj.ToJson());
  44. }
  45. }
  46. }
  47. public void StoPushOnClick()
  48. {
  49. JsonData obj = new JsonData();
  50. obj["action"] = "stop";
  51. MQTTManager.Instance.PushMsg(MQTTManager.Instance.topiceClose, obj.ToJson());
  52. }
  53. /// <summary>
  54. /// 返回当前朝向的机柜 , False 单排机柜 1 3 5...
  55. /// </summary>
  56. /// <returns></returns>
  57. public bool GetOrientation()
  58. {
  59. if (Mathf.Abs(transform.localEulerAngles.y) > 90&& Mathf.Abs(transform.localEulerAngles.y)<270)
  60. {
  61. return true;
  62. }
  63. return false;
  64. }
  65. /// <summary>
  66. /// 判断当前在第几排机柜之间
  67. /// </summary>
  68. public int GetRowCabinets()
  69. {
  70. int row = 0;
  71. float rowDis = 0;
  72. int index = 0;
  73. for (int i = 0; i < MachineRoomManager.Instance.listObjes.Count; i+=MachineRoomManager.Instance.data.line*2)
  74. {
  75. float disZ = Mathf.Abs(transform.position.z - MachineRoomManager.Instance.listObjes[i].transform.position.z);
  76. if(rowDis>disZ)
  77. {
  78. row = index;
  79. rowDis = disZ;
  80. }
  81. index++;
  82. }
  83. return row;
  84. }
  85. }