IEnumerator TryConnect()
    {
        // Setup the connection state information required to make a connection
        // to the remote device.
        WindowsMRRemoting.isAudioEnabled    = enableAudio;
        WindowsMRRemoting.isVideoEnabled    = enableVideo;
        WindowsMRRemoting.maxBitRateKbps    = maxBitRate;
        WindowsMRRemoting.remoteMachineName = machineName;

        WindowsMREmulation.mode = WindowsMREmulationMode.Remoting;

        Debug.Log($"Connecting to {machineName}...");

        WindowsMRRemoting.Connect();

        yield return(new WaitForEndOfFrame());

        ConnectionState connectionState = ConnectionState.Disconnected;

        int connectionTryCount = 0;

        // If connection fails, we'll try again, up to the number of times specified
        while (WindowsMRRemoting.TryGetConnectionState(out connectionState) && connectionTryCount < connectionRetryCount)
        {
            connectionTryCount++;
            if (connectionState == ConnectionState.Connecting)
            {
                Debug.Log($"Still connecting to {machineName}...");
                yield return(new WaitForSeconds(1));

                continue;
            }
            break;
        }

        switch (connectionState)
        {
        case ConnectionState.Connected:
            Debug.Log($"Successfully connected to {machineName} after {connectionTryCount} seconds.");

            // We've connected, so now we need to spin up XR SDK.
            yield return(XRGeneralSettings.Instance.Manager.InitializeLoader());

            if (XRGeneralSettings.Instance.Manager.activeLoader != null)
            {
                XRGeneralSettings.Instance.Manager.activeLoader.Start();
            }
            break;

        case ConnectionState.Disconnected:
            Debug.LogError($"Unable to connect to {machineName} after {connectionTryCount} seconds");
            ConnectionFailureReason failureReason = ConnectionFailureReason.None;
            WindowsMRRemoting.TryGetConnectionFailureReason(out failureReason);
            Debug.LogError($"Connection Failure Reason {failureReason}");
            break;
        }
    }
Beispiel #2
0
        IEnumerator TryConnect()
        {
            WindowsMRRemoting.remoteMachineName = m_RemoteMachineName;
            WindowsMRRemoting.isAudioEnabled    = m_EnableAudio;
            WindowsMRRemoting.isVideoEnabled    = m_EnableVideo;
            WindowsMRRemoting.maxBitRateKbps    = m_MaxBitRateKbps;

            WindowsMRRemoting.Connect();

            yield return(new WaitForEndOfFrame());

            ConnectionState connectionState = ConnectionState.Disconnected;

            int connectionTryCount = 0;

            while (WindowsMRRemoting.TryGetConnectionState(out connectionState) && connectionTryCount < 30)
            {
                connectionTryCount++;
                if (connectionState == ConnectionState.Connecting)
                {
                    Debug.Log($"Still connecting to {WindowsMRRemoting.remoteMachineName}...");
                    yield return(new WaitForSeconds(1));

                    continue;
                }
                break;
            }

            switch (connectionState)
            {
            case ConnectionState.Connected:
                Debug.Log($"Successfully connected to {WindowsMRRemoting.remoteMachineName} after {connectionTryCount} seconds.");

                yield return(XRGeneralSettings.Instance.Manager.InitializeLoader());

                if (XRGeneralSettings.Instance.Manager.activeLoader != null)
                {
                    XRGeneralSettings.Instance.Manager.activeLoader.Start();
                }
                break;

            case ConnectionState.Disconnected:
                Debug.LogError($"Unable to connect to {WindowsMRRemoting.remoteMachineName} after {connectionTryCount} seconds");
                ConnectionFailureReason failureReason = ConnectionFailureReason.None;
                WindowsMRRemoting.TryGetConnectionFailureReason(out failureReason);
                Debug.LogError($"Connection Failure Reason {failureReason}");
                break;
            }
        }
 public ConnectionFailedArgs(ConnectionFailureReason reason)
     : base()
 {
     Reason = reason;
 }
 static bool UnityWindowsMR_Remoting_TryGetConnectionFailureReason(ref ConnectionFailureReason connectionFailureReason)
 {
     return(false);
 }
 public static extern bool UnityWindowsMR_Remoting_TryGetConnectionFailureReason(ref ConnectionFailureReason connectionFailureReason);
 /// <summary>Try to get the failure reason of the remoting connection</summary>
 /// <param name="connectionFailureReason">The reason the remoting connection failed</param>
 /// <returns>True if the connection failure reason was able to be acquired</returns>
 public static bool TryGetConnectionFailureReason(out ConnectionFailureReason connectionFailureReason)
 {
     connectionFailureReason = ConnectionFailureReason.None;
     return(UnityWindowsMR_Remoting_TryGetConnectionFailureReason(ref connectionFailureReason));
 }
 internal ConnectionAttemptFailedEventArgs(Peer peer, ConnectionFailureReason reason, TorrentManager manager)
     : base(manager)
 {
     Peer   = peer;
     Reason = reason;
 }