RTCRoomMain.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. using Blue;
  2. using LitJson;
  3. using Newtonsoft.Json.Linq;
  4. using TMPro;
  5. using UnityEngine;
  6. using UnityEngine.UI;
  7. public class RTCRoomMain : SingletonMonobehaviour<RTCRoomMain>, IController
  8. {
  9. [SerializeField] private TextMeshProUGUI mRoomName_Text; // 房间名
  10. [SerializeField] private TextMeshProUGUI mRoomID_Text; // 房间ID
  11. [SerializeField] private TextMeshProUGUI mRoomPeopleCount_Text; // 房间人数
  12. [SerializeField] private Button mVideoOpen_Btn; // 开启视频
  13. [SerializeField] private Button mVideoClose_Btn; // 关闭视频
  14. [SerializeField] private Button mAudioOpen_Btn; // 开启音频
  15. [SerializeField] private Button mAudioClose_Btn; // 关闭音频
  16. [SerializeField] private Button mInvite_Btn; // 邀请用户
  17. [SerializeField] private Button mLeaveRoom; // 离开房间
  18. [SerializeField] private MeshRenderer mBigView_Mesh;
  19. [SerializeField] private RoomOtherUserPanel RoomOtherUserPanel_go;
  20. public GameObject mRoomOtherUser;
  21. public Transform InviteUserPanelPos;
  22. public Texture BigView_MeshTexture
  23. {
  24. set => mBigView_Mesh.material.mainTexture = value;
  25. }
  26. [SerializeField] private RawImage mRawImage_Raw;
  27. public Texture RawImageTexture
  28. {
  29. set => mRawImage_Raw.texture = value;
  30. }
  31. private IRTCService mRTCService;
  32. void Start()
  33. {
  34. mRTCService = this.GetService<IRTCService>();
  35. mVideoOpen_Btn.onClick.AddListener(VideoOpen);
  36. mVideoClose_Btn.onClick.AddListener(VideoClose);
  37. mAudioOpen_Btn.onClick.AddListener(AudioOpen);
  38. mAudioClose_Btn.onClick.AddListener(AudioClose);
  39. mInvite_Btn.onClick.AddListener(Invite);
  40. mLeaveRoom.onClick.AddListener(LeaveRoom);
  41. }
  42. private void OnEnable()
  43. {
  44. Vector3 vSDKSystem = OpenXRCamera.Instance.head.position;
  45. if (DeviceType.type == "Rhinox")
  46. vSDKSystem.y -= 1; // 遂光比较特殊,其他版本不需要
  47. transform.position = new Vector3(vSDKSystem.x + ResetVideoPanal.DifferencePosition.x, vSDKSystem.y + ResetVideoPanal.DifferencePosition.y, vSDKSystem.z + ResetVideoPanal.DifferencePosition.z);
  48. Vector3 pos = OpenXRCamera.Instance.head.position + new Vector3(-1 * (OpenXRCamera.Instance.head.right * 0.7f).x, 0.9f, (OpenXRCamera.Instance.head.forward * 1f).z);
  49. transform.position = new Vector3(pos.x, OpenXRCamera.Instance.head.position.y, pos.z);
  50. transform.eulerAngles = new Vector3(0, -30 + OpenXRCamera.Instance.head.eulerAngles.y, 0);
  51. }
  52. #region UI事件
  53. private void VideoOpen()
  54. {
  55. mRawImage_Raw.gameObject.SetActive(true);
  56. mRawImage_Raw.texture = XRRGBCamera.Instance.CaptureImage;
  57. mRTCService.ActiveVideo(true);
  58. }
  59. private void VideoClose()
  60. {
  61. mRawImage_Raw.gameObject.SetActive(false);
  62. mRTCService.ActiveVideo(false);
  63. }
  64. private void AudioOpen()
  65. {
  66. mRTCService.ActiveAudio(true);
  67. }
  68. private void AudioClose()
  69. {
  70. mRTCService.ActiveAudio(false);
  71. }
  72. private void Invite()
  73. {
  74. ShowRTC.Instance.window[2].SetActive(true);
  75. InviteUserPanel.Instance.TestInitData();
  76. InviteUserPanel.Instance.gameObject.transform.position = RTCRoomMain.Instance.InviteUserPanelPos.position;
  77. InviteUserPanel.Instance.gameObject.transform.eulerAngles = RTCRoomMain.Instance.InviteUserPanelPos.eulerAngles;
  78. }
  79. private void LeaveRoom()
  80. {
  81. mRTCService.LeaveRoom();
  82. ResetData();
  83. ScenesManager.Instance.showWindow(ScenesManager.SceneType.ShowChoose);
  84. }
  85. #endregion
  86. /// <summary>
  87. /// 离开房间后清理数据及UI
  88. /// </summary>
  89. private void ResetData()
  90. {
  91. InviteUserPanel.Instance.Reset();
  92. RoomOtherUserPanel_go.Reset();
  93. }
  94. }