diff --git a/Assets/Resources/MainPanel.prefab b/Assets/Resources/MainPanel.prefab index 07e8b9b..3fa8d36 100644 --- a/Assets/Resources/MainPanel.prefab +++ b/Assets/Resources/MainPanel.prefab @@ -807,7 +807,7 @@ GameObject: - component: {fileID: 5633745582843563864} - component: {fileID: 2745806976415084587} m_Layer: 5 - m_Name: 'menuBar ' + m_Name: menuBar m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -5468,57 +5468,6 @@ MonoBehaviour: m_FillOrigin: 0 m_UseSpriteMesh: 0 m_PixelsPerUnitMultiplier: 1 ---- !u!1 &6378174656737304708 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 564683241228581302} - - component: {fileID: 4786814708591545236} - m_Layer: 5 - m_Name: Pool - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &564683241228581302 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6378174656737304708} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 6018946838727076121} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 100, y: 100} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &4786814708591545236 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6378174656737304708} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 1970feb7fdb702645b753cd8ed1be4ea, type: 3} - m_Name: - m_EditorClassIdentifier: - prefab: {fileID: 8495991377958309690, guid: ac2316fabaf14dc409bee0e9c34cae94, type: 3} - preload: 20 - parent: {fileID: 5467042597978700984} --- !u!1 &6412793980989755428 GameObject: m_ObjectHideFlags: 0 @@ -5965,7 +5914,6 @@ RectTransform: m_Children: - {fileID: 3211075651667160076} - {fileID: 8993963496967448533} - - {fileID: 564683241228581302} m_Father: {fileID: 6596158407599272745} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} diff --git a/Assets/Script/MainArchitecture.cs b/Assets/Script/MainArchitecture.cs index b463c91..6e134ca 100644 --- a/Assets/Script/MainArchitecture.cs +++ b/Assets/Script/MainArchitecture.cs @@ -1,4 +1,5 @@ -using Stary.Evo; +using Script; +using Stary.Evo; using Stary.Evo.UIFarme; namespace RenderStreaming @@ -12,6 +13,7 @@ namespace RenderStreaming RegisterSystem(new PanelSystem(new ResourcesAssetLoader())); RegisterSystem(new GlobalConfigSystem()); RegisterSystem(new TimerSystem()); + RegisterSystem(new RenderStreamingSystem()); } } } \ No newline at end of file diff --git a/Assets/Script/MainPanel/ContactEntryController.cs b/Assets/Script/MainPanel/ContactEntryController.cs index d2a40a0..85af16e 100644 --- a/Assets/Script/MainPanel/ContactEntryController.cs +++ b/Assets/Script/MainPanel/ContactEntryController.cs @@ -17,7 +17,7 @@ namespace Script private Text _confirmBtnTimeText; private Button _confirmButton; private bool _isCountingDown; - private MeetingContacts _meetingContacts; + private MeetingContactsController _meetingContactsController; private Transform _messageText; private Transform _nameText; private MainPanel.UsersItem _usersItem; @@ -33,10 +33,10 @@ namespace Script return MainArchitecture.Interface; } - public void SetData(MainPanel.UsersItem item, MeetingContacts meetingContactsController) + public void SetData(MainPanel.UsersItem item, MeetingContactsController meetingContactsControllerController) { _usersItem = item; - _meetingContacts = meetingContactsController; + _meetingContactsController = meetingContactsControllerController; _background = transform.Find("headBackground/image").GetComponent(); _backgroundName = transform.Find("headBackground/Name").GetComponent(); @@ -120,9 +120,9 @@ namespace Script Debug.Log($"点击了联系人: {_usersItem.name}"); // 这里可以添加点击联系人后的逻辑,比如打开聊天窗口 // 或者发送邀请请求等 - _meetingContacts.ClickContactEntry(_background.GetComponent().sprite, + _meetingContactsController.ClickContactEntry(_background.GetComponent().sprite, _backgroundName.GetComponent().text, _usersItem); - _meetingContacts.CurrentEntry = this; + _meetingContactsController.CurrentEntry = this; } public void StartCountdown() diff --git a/Assets/Script/MainPanel/MainPanel.cs b/Assets/Script/MainPanel/MainPanel.cs index df8779f..6c0e973 100644 --- a/Assets/Script/MainPanel/MainPanel.cs +++ b/Assets/Script/MainPanel/MainPanel.cs @@ -28,17 +28,17 @@ namespace Script /// /// 会议联系人类和面板 /// - private MeetingContacts _meetingContacts; + private MeetingContactsController _meetingContactsController; /// /// 会议参与者列表和面板 /// - private MeetingInfoList _meetingInfoList; + private MeetingInfoListController _meetingInfoListController; /// /// 会议聊天面板 /// - private MeetingChat _meetingChat; + private MeetingChatController _meetingChatController; /// /// 房间人数 @@ -80,18 +80,18 @@ namespace Script _contactsTog = panelGo.transform.Find("Tabs/Contacts").GetComponent(); _meetingOrganizersTog = panelGo.transform.Find("Tabs/MeetingOrganizers").GetComponent(); - _meetingContacts = new MeetingContacts(); - _meetingContacts.Initialize(panelGo.transform.Find("MeetingContacts").gameObject); - _meetingInfoList = new MeetingInfoList(); - _meetingInfoList.Initialize(panelGo.transform.Find("MeetingInfoList").gameObject, this); - _meetingChat = new MeetingChat(); - _meetingChat.Initialize(panelGo.transform.Find("MeetingChat").gameObject, this); + _meetingContactsController = new MeetingContactsController(); + _meetingContactsController.Initialize(panelGo.transform.Find("MeetingContacts").gameObject); + _meetingInfoListController = new MeetingInfoListController(); + _meetingInfoListController.Initialize(panelGo.transform.Find("MeetingInfoList").gameObject, this); + _meetingChatController = new MeetingChatController(); + _meetingChatController.Initialize(panelGo.transform.Find("MeetingChat").gameObject, this); } public override void OnEnter(Action complete = null) { base.OnEnter(complete); - _meetingInfoList.OnEnter(); + _meetingInfoListController.OnEnter(); _titleText.text = this.GetSystem().GetConnectionName(); this.GetSystem().StartConnectionTime(_timeText); _idText.text = this.GetSystem().GetConnectionId(); @@ -107,7 +107,7 @@ namespace Script public override void OnExit(float delay = 0) { base.OnExit(delay); - _meetingInfoList.OnExit(); + _meetingInfoListController.OnExit(); _arrowLeft.onClick.RemoveListener(OnArrowLeftClick); _chatTog.onValueChanged.RemoveListener(OnChatTog); _contactsTog.onValueChanged.RemoveListener(OnContactsTog); @@ -131,7 +131,7 @@ namespace Script } // 更新会议聊天面板人数 - _meetingChat.OnUserCountChangedEvent?.Invoke(obj.Count); + _meetingChatController.OnUserCountChangedEvent?.Invoke(obj.Count); } private void OnUsersChangedDisconnected(string obj) @@ -152,26 +152,26 @@ namespace Script } _roomPeopleNumText.text = _userMap.Count.ToString(); - _meetingChat.OnUserCountChangedEvent?.Invoke(_userMap.Count); + _meetingChatController.OnUserCountChangedEvent?.Invoke(_userMap.Count); } private void OnMeetingOrganizersTog(bool value) { - _meetingInfoList.PanelGo.SetActive(value); + _meetingInfoListController.PanelGo.SetActive(value); } private void OnContactsTog(bool value) { - _meetingContacts.PanelGo.SetActive(value); + _meetingContactsController.PanelGo.SetActive(value); if (value) - _meetingContacts.OnEnter(); + _meetingContactsController.OnEnter(); } private void OnChatTog(bool value) { - _meetingChat.PanelGo.SetActive(value); + _meetingChatController.PanelGo.SetActive(value); if (value) - _meetingChat.OnEnter(); + _meetingChatController.OnEnter(); } private void OnArrowLeftClick() @@ -181,8 +181,8 @@ namespace Script public override void OnDestroy() { base.OnDestroy(); - _meetingChat.OnDestroy(); - _meetingContacts.OnDestroy(); + _meetingChatController.OnDestroy(); + _meetingContactsController.OnDestroy(); } [Serializable] diff --git a/Assets/Script/MainPanel/MeetingChat.cs b/Assets/Script/MainPanel/MeetingChatController.cs similarity index 90% rename from Assets/Script/MainPanel/MeetingChat.cs rename to Assets/Script/MainPanel/MeetingChatController.cs index ac2c913..121a9fa 100644 --- a/Assets/Script/MainPanel/MeetingChat.cs +++ b/Assets/Script/MainPanel/MeetingChatController.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Globalization; using Newtonsoft.Json; using RenderStreaming; using Script.Util; @@ -10,7 +11,7 @@ using UnityEngine.UI; namespace Script { - public class MeetingChat : IController + public class MeetingChatController : IController { public GameObject PanelGo; private MainPanel _mainPanel; @@ -62,6 +63,9 @@ namespace Script _objectLeftPool.AllRelease(); } + /// + /// 发送聊天信息 + /// private void OnSendButtonClick() { if (string.IsNullOrEmpty(_messageInput.text)) return; @@ -97,6 +101,9 @@ namespace Script SignalingMessageHelper.SendMessage(JsonConvert.SerializeObject(send)); _messageInput.text = ""; chatData.isSelf = !chatData.isSelf; + var utc = DateTimeOffset.Parse(chatData.timestamp, CultureInfo.InvariantCulture); + var local = utc.ToLocalTime().ToString("HH:mm"); + chatData.timestamp = local; _chatDatas.Add(chatData); var entry = _objectRightPool.Get(); SetMessageEntry(chatData, entry); @@ -119,7 +126,7 @@ namespace Script var name = entry.transform.Find("name"); var message = entry.transform.Find("message"); var sprite = entry.transform.Find("sprite"); - + var time = entry.transform.Find("message/messagebg/time"); if (string.IsNullOrEmpty(data.senderAvatar)) { var randomColor = WebRTCUtil.GetRandomColor(); @@ -148,6 +155,11 @@ namespace Script new Rect(0, 0, texture.width, texture.height), Vector2.one); } + + var utc = DateTimeOffset.Parse(data.timestamp, CultureInfo.InvariantCulture); + var local = utc.ToLocalTime().ToString("HH:mm"); + data.timestamp = local; + time.GetComponent().text = data.timestamp; } private void OnUserCountChanged(int obj) diff --git a/Assets/Script/MainPanel/MeetingChat.cs.meta b/Assets/Script/MainPanel/MeetingChatController.cs.meta similarity index 100% rename from Assets/Script/MainPanel/MeetingChat.cs.meta rename to Assets/Script/MainPanel/MeetingChatController.cs.meta diff --git a/Assets/Script/MainPanel/MeetingContacts.cs b/Assets/Script/MainPanel/MeetingContactsController.cs similarity index 98% rename from Assets/Script/MainPanel/MeetingContacts.cs rename to Assets/Script/MainPanel/MeetingContactsController.cs index 13ee6ce..748eeaf 100644 --- a/Assets/Script/MainPanel/MeetingContacts.cs +++ b/Assets/Script/MainPanel/MeetingContactsController.cs @@ -9,7 +9,7 @@ using UnityEngine.UI; namespace Script { - public class MeetingContacts : IController + public class MeetingContactsController : IController { /// /// 联系人列表项字典 diff --git a/Assets/Script/MainPanel/MeetingContacts.cs.meta b/Assets/Script/MainPanel/MeetingContactsController.cs.meta similarity index 100% rename from Assets/Script/MainPanel/MeetingContacts.cs.meta rename to Assets/Script/MainPanel/MeetingContactsController.cs.meta diff --git a/Assets/Script/MainPanel/MeetingInfoList.cs b/Assets/Script/MainPanel/MeetingInfoListController.cs similarity index 72% rename from Assets/Script/MainPanel/MeetingInfoList.cs rename to Assets/Script/MainPanel/MeetingInfoListController.cs index d30ea57..f47b63f 100644 --- a/Assets/Script/MainPanel/MeetingInfoList.cs +++ b/Assets/Script/MainPanel/MeetingInfoListController.cs @@ -1,14 +1,16 @@ using System.Collections.Generic; +using Newtonsoft.Json; using RenderStreaming; using Script.Util; using Stary.Evo; +using Stary.Evo.UIFarme; using Unity.RenderStreaming; using UnityEngine; using UnityEngine.UI; namespace Script { - public class MeetingInfoList : IController + public class MeetingInfoListController : IController { private MainPanel _mainPanel; public GameObject PanelGo; @@ -29,6 +31,15 @@ namespace Script private GameObjectPool _objectPool; + + private Toggle _micTog; + private Toggle _videoTog; + private Toggle _recordTog; + private Button _hangUpTog; + + private AudioStreamSender _audioStreamSender; + private VideoStreamSender _videoStreamSender; + public void Initialize(GameObject panelGo, MainPanel mainPanel) { PanelGo = panelGo; @@ -37,18 +48,88 @@ namespace Script _content = panelGo.transform.Find("MeetingGrid/Viewport/Content"); _meetingNum = panelGo.transform.Find("MeetingNum/Num").GetComponent(); _objectPool = PanelGo.transform.Find("MeetingGrid/Pool").GetComponent(); + _micTog = PanelGo.transform.Find("menuBar/mic").GetComponent(); + _videoTog = PanelGo.transform.Find("menuBar/video").GetComponent(); + _recordTog = PanelGo.transform.Find("menuBar/record").GetComponent(); + _hangUpTog = PanelGo.transform.Find("menuBar/hangUp").GetComponent private bool IsParticipantConnectionId(string connectionId) { - return m_participantToRoom.ContainsKey(connectionId); + if (!string.IsNullOrEmpty(connectionId) && m_participantToRoom != null && m_participantToRoom.Count > 0) + return m_participantToRoom.ContainsKey(connectionId); + return false; } ///