65 lines
1.9 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|
|
|
|
} |