优化
This commit is contained in:
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user