using System;
using System.Collections.Generic;
using Script;
using Stary.Evo;
using Stary.Evo.UIFarme;
using UnityEngine;
using UnityEngine.U2D;
using UnityEngine.UI;
using Random = UnityEngine.Random;
namespace Unity.RenderStreaming
{
public class StartPanel : BasePanel
{
///
/// 每个Participant的UI信息
///
private readonly Dictionary participantUIs = new();
///
/// 返回按钮
///
private Button _arrowLeft;
private Text _meetingId;
///
/// 房间号输入框
///
private InputField _meetingNameInput;
private Image _profileImage;
///
/// 头像按钮
///
private Button _profilePhoto;
private int _profileSpriteIndex;
private Sprite[] _profileSprites;
///
/// 随机房间号按钮
///
private Button _randomMeetingId;
///
/// 头像Sprite Atlas
///
private SpriteAtlas _spriteAtlas;
///
/// 开始按钮
///
private Button _startButton;
///
/// 时间下拉选择框
///
private Dropdown _timeDropdown;
///
/// Host连接
///
private HostConnection hostConnection;
///
/// 本地视频显示
///
private RawImage localVideoImage;
///
/// 麦克风流发送器
///
private AudioStreamSender microphoneStreamer;
[Header("Participant视频容器")] private Transform participantVideoContainer;
///
/// 渲染流管理
///
private SignalingManager renderStreaming;
[Header("核心组件")] private RenderStreamingSettings settings;
[Header("Host本地视频")] private VideoStreamSender videoStreamSender;
public override UITweenType TweenType => UITweenType.Fade;
public override string UIPath => "Canvas";
public override void Initialize(GameObject panelGo)
{
base.Initialize(panelGo);
renderStreaming = GameObject.FindObjectOfType();
hostConnection = GameObject.FindObjectOfType();
videoStreamSender = hostConnection.GetComponent();
microphoneStreamer = hostConnection.GetComponent();
if (settings == null)
settings = new RenderStreamingSettings();
if (settings != null)
{
videoStreamSender.width = (uint)settings.StreamSize.x;
videoStreamSender.height = (uint)settings.StreamSize.y;
}
if (renderStreaming.runOnAwake)
return;
if (settings != null)
renderStreaming.useDefaultSettings = settings.UseDefaultSettings;
if (settings?.SignalingSettings != null)
renderStreaming.SetSignalingSettings(settings.SignalingSettings);
renderStreaming.Run();
_arrowLeft = panelGo.transform.Find("Herder/arrow-left").GetComponent