MarkerInfoCallback.cs 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using LitJson;
  5. using UnityEngine;
  6. using UnityEngine.XR;
  7. namespace Unity.XR.PXR
  8. {
  9. public class MarkerInfoCallback:AndroidJavaProxy
  10. {
  11. public Action<List<MarkerInfo>> mCallback;
  12. private List<MarkerInfo> mlist = new List<MarkerInfo>();
  13. private TrackingOriginModeFlags TrackingMode;
  14. private float YOffset;
  15. public MarkerInfoCallback(TrackingOriginModeFlags trackingMode,float cameraYOffset,Action<List<MarkerInfo>> callback) : base("com.picoxr.tobservice.interfaces.StringCallback")
  16. {
  17. TrackingMode = trackingMode;
  18. YOffset = cameraYOffset;
  19. mCallback = callback;
  20. mlist.Clear();
  21. }
  22. public void CallBack(string var1)
  23. {
  24. Debug.Log("ToBService MarkerInfo Callback 回调:" + var1);
  25. List<MarkerInfo> tmp = JsonToMarkerInfos(var1);
  26. PXR_EnterpriseTools.QueueOnMainThread(() =>
  27. {
  28. if (mCallback != null)
  29. {
  30. mCallback(tmp);
  31. }
  32. });
  33. }
  34. public List<MarkerInfo> JsonToMarkerInfos(string json)
  35. {
  36. if (string.IsNullOrEmpty(json))
  37. {
  38. return null;
  39. }
  40. List<MarkerInfo> ModelList = new List<MarkerInfo>();
  41. JsonData jsonData = JsonMapper.ToObject(json);
  42. IDictionary dictionary = jsonData as IDictionary;
  43. for (int i = 0; i < dictionary.Count; i++)
  44. {
  45. Debug.Log("TOB TestDemo---- MarkerInfo Callback 回调:1" );
  46. if (TrackingMode != TrackingOriginModeFlags.Device)
  47. {
  48. YOffset = 0;
  49. }
  50. float OriginHeight = PXR_Plugin.System.UPxr_GetConfigFloat(ConfigType.ToDelaSensorY);
  51. //Debug.Log("TOB TestDemo---- MarkerInfo Callback 回调:OriginHeight:"+OriginHeight );
  52. // float OriginHeight = Mathf.Abs(PXR_Plugin.System.UPxr_GetConfigFloat(ConfigType.ToDelaSensorY));
  53. MarkerInfo model = new MarkerInfo();
  54. model.posX = double.Parse(jsonData[i]["posX"].ToString());
  55. model.posY = double.Parse(jsonData[i]["posY"].ToString())+OriginHeight+YOffset;
  56. model.posZ = -double.Parse(jsonData[i]["posZ"].ToString());
  57. model.rotationX = -double.Parse(jsonData[i]["rotationX"].ToString());
  58. model.rotationY = -double.Parse(jsonData[i]["rotationY"].ToString());
  59. model.rotationZ = double.Parse(jsonData[i]["rotationZ"].ToString());
  60. model.rotationW = double.Parse(jsonData[i]["rotationW"].ToString());
  61. model.validFlag = int.Parse(jsonData[i]["validFlag"].ToString());
  62. model.markerType = int.Parse(jsonData[i]["markerType"].ToString());
  63. model.iMarkerId = int.Parse(jsonData[i]["iMarkerId"].ToString());
  64. model.dTimestamp = double.Parse(jsonData[i]["dTimestamp"].ToString());
  65. IDictionary dictionaryReserve = jsonData[i]["reserve"] as IDictionary;
  66. model.reserve = new float[dictionaryReserve.Count];
  67. for (int j = 0; j < dictionaryReserve.Count; j++)
  68. {
  69. model.reserve[j]=float.Parse(jsonData[i]["reserve"][j].ToString());
  70. }
  71. ModelList.Add(model);
  72. }
  73. return ModelList;
  74. }
  75. }
  76. }
粤ICP备19079148号