This commit is contained in:
2026-05-22 15:43:00 +08:00
parent 6f17a740e8
commit de23d47e5f
14 changed files with 669 additions and 135 deletions

View File

@@ -3,6 +3,7 @@ using System.Collections.Generic;
using Script.Util;
using Stary.Evo;
using Stary.Evo.UIFarme;
using Unity.RenderStreaming;
using UnityEngine;
using UnityEngine.UI;
@@ -61,6 +62,7 @@ namespace Script
public override string UIPath => "Canvas";
public Action<List<UsersItem>> OnUsersChangedEvnent;
private Dictionary<UsersItem, GameObject> _userMap = new();
private GameObjectPool _objectPool;
@@ -90,8 +92,6 @@ namespace Script
{
base.OnEnter(complete);
_meetingInfoList.OnEnter();
;
_titleText.text = this.GetSystem<IGlobalConfigSystem>().GetConnectionName();
this.GetSystem<IGlobalConfigSystem>().StartConnectionTime(_timeText);
_idText.text = this.GetSystem<IGlobalConfigSystem>().GetConnectionId();
@@ -100,15 +100,14 @@ namespace Script
_contactsTog.onValueChanged.AddListener(OnContactsTog);
_meetingOrganizersTog.onValueChanged.AddListener(OnMeetingOrganizersTog);
OnUsersChangedEvnent += OnUsersChanged;
GameObject.FindObjectOfType<HostConnection>().OnParticipantDisconnected += OnUsersChangedDisconnected;
}
public override void OnExit(float delay = 0)
{
base.OnExit(delay);
_meetingContacts.OnExit();
_meetingInfoList.OnExit();
_meetingChat.OnExit();
_arrowLeft.onClick.RemoveListener(OnArrowLeftClick);
_chatTog.onValueChanged.RemoveListener(OnChatTog);
_contactsTog.onValueChanged.RemoveListener(OnContactsTog);
@@ -118,20 +117,44 @@ namespace Script
private async void OnUsersChanged(List<UsersItem> obj)
{
for (var i = 0; i < _objectPool.transform.childCount; i++)
_objectPool.Release(_objectPool.transform.GetChild(i).gameObject);
foreach (var user in _userMap) _objectPool.Release(user.Value.gameObject);
_userMap.Clear();
_roomPeopleNumText.text = obj.Count.ToString();
for (var i = 0; i < obj.Count; i++)
{
if (i > 4) break;
var entry = _objectPool.Get();
await WebRTCUtil.DownloadAndSetAvatar(obj[i].avatar,
entry.transform.Find("image").GetComponent<Image>());
_userMap.TryAdd(obj[i], entry);
}
// 更新会议聊天面板人数
_meetingChat.OnUserCountChangedEvent?.Invoke(obj.Count);
}
private void OnUsersChangedDisconnected(string obj)
{
UsersItem usersItem = null;
foreach (var item in _userMap.Keys)
if (item.participantId == obj)
{
usersItem = item;
break;
}
if (usersItem != null)
if (_userMap.TryGetValue(usersItem, out var entry))
{
_objectPool.Release(entry);
_userMap.Remove(usersItem);
}
_roomPeopleNumText.text = _userMap.Count.ToString();
_meetingChat.OnUserCountChangedEvent?.Invoke(_userMap.Count);
}
private void OnMeetingOrganizersTog(bool value)
{
_meetingInfoList.PanelGo.SetActive(value);
@@ -140,13 +163,15 @@ namespace Script
private void OnContactsTog(bool value)
{
_meetingContacts.PanelGo.SetActive(value);
if (value) _meetingContacts.OnEnter();
if (value)
_meetingContacts.OnEnter();
}
private void OnChatTog(bool value)
{
_meetingChat.PanelGo.SetActive(value);
if (value) _meetingChat.OnEnter();
if (value)
_meetingChat.OnEnter();
}
private void OnArrowLeftClick()
@@ -156,6 +181,8 @@ namespace Script
public override void OnDestroy()
{
base.OnDestroy();
_meetingChat.OnDestroy();
_meetingContacts.OnDestroy();
}
[Serializable]