forked from cgvr/DeltaVR
		
	
		
			
				
	
	
		
			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);
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
} |