StationObscurum/Assets/FishNet/Runtime/Managing/Transporting/TransportManager.QOL.cs

65 lines
1.9 KiB
C#

using FishNet.Transporting;
using FishNet.Transporting.Multipass;
using UnityEngine;
namespace FishNet.Managing.Transporting
{
/// <summary>
/// Communicates with the Transport to send and receive data.
/// </summary>
public sealed partial class TransportManager : MonoBehaviour
{
#region Public.
/// <summary>
/// Returns IsLocalTransport for the current transport.
/// </summary>
public bool IsLocalTransport(int connectionId) => (Transport == null) ? false : Transport.IsLocalTransport(connectionId);
#endregion
/// <summary>
/// Gets transport on index.
/// Commonly index will be 0 unless using Multipass.
/// </summary>
/// <returns></returns>
public Transport GetTransport(int index)
{
//If using multipass try to find the correct transport.
if (Transport is Multipass mp)
{
return mp.GetTransport(index);
}
//Not using multipass.
else
{
return Transport;
}
}
/// <summary>
/// Gets transport of type T.
/// </summary>
/// <returns>Returns the found transport which is of type T. Returns default of T if not found.</returns>
public T GetTransport<T>() where T : Transport
{
//If using multipass try to find the correct transport.
if (Transport is Multipass mp)
{
if (typeof(T) == typeof(Multipass))
return (T)(object)mp;
else
return mp.GetTransport<T>();
}
//Not using multipass.
else
{
if (Transport.GetType() == typeof(T))
return (T)(object)Transport;
else
return default(T);
}
}
}
}