您最多选择25个主题 主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

51 行
1.6 KiB

using System;
using System.Collections;
using System.Collections.Generic;
using Unity.Collections;
using Unity.Jobs;
using Unity.Networking.Transport;
using Unity.Networking.Transport.Relay;
using Unity.Services.Relay.Models;
using UnityEngine;
using MsgType = LobbyRelaySample.Relay.RelayUTPSetup.MsgType;
namespace LobbyRelaySample.Relay
{
public class RelayHost : RelayUserWatcher
{
protected override void OnUpdate()
{
base.OnUpdate();
DoHeartbeat();
}
protected override void ProcessNetworkEvent(DataStreamReader strm, NetworkEvent.Type cmd)
{
base.ProcessNetworkEvent(strm, cmd);
// TODO: The only thing this has to care about is if all players have readied up.
}
private void DoHeartbeat()
{
// Update the driver should be the first job in the chain
m_networkDriver.ScheduleUpdate().Complete();
// Remove connections which have been destroyed from the list of active connections
for (int c = m_connections.Count - 1; c >= 0; c--)
{
if (!m_connections[c].IsCreated)
m_connections.RemoveAtSwapBack(c);
}
// Accept all new connections
while (true)
{
var con = m_networkDriver.Accept();
// "Nothing more to accept" is signaled by returning an invalid connection from accept
if (!con.IsCreated)
break;
m_connections.Add(con);
}
}
}
}