static WindowsMRRemotingConnector GetConnector() { if (s_Connector == null) { var go = GameObject.Find("~wmrconnector"); if (go == null) { go = new GameObject("~wmrconnector"); go.hideFlags = HideFlags.HideAndDontSave; } s_Connector = go.AddComponent <WindowsMRRemotingConnector>(); } return(s_Connector); }
static void Disconnect() { if (WindowsMREmulation.mode == WindowsMREmulationMode.Remoting && WindowsMRRemoting.isConnected) { var connector = GetConnector(); if (EditorApplication.isPlaying && s_RemoteSettings.autoConnectOnPlay && connector) { connector.StopRemotingConnection(); GameObject.Destroy(s_Connector); s_Connector = null; } else { WindowsMRRemoting.Disconnect(); } } }
static void OnPlayModeStateChanged(PlayModeStateChange stateChange) { var connector = GetConnector(); switch (stateChange) { case PlayModeStateChange.EnteredEditMode: LoadSettings(); break; case PlayModeStateChange.ExitingEditMode: SaveSettings(); break; case PlayModeStateChange.EnteredPlayMode: LoadSettings(); if (WindowsMREmulation.mode == WindowsMREmulationMode.Remoting && connector) { if (string.IsNullOrEmpty(s_RemoteSettings.m_RemoteMachineName)) { Debug.LogError("Atempting to initiate remoting connection with no valid machine name set."); return; } connector.StartRemotingConnection( s_RemoteSettings.m_RemoteMachineName, s_RemoteSettings.m_EnableAudio, s_RemoteSettings.m_EnableVideo, s_RemoteSettings.m_MaxBitRateKbps); } break; case PlayModeStateChange.ExitingPlayMode: if (WindowsMREmulation.mode == WindowsMREmulationMode.Remoting && WindowsMRRemoting.isConnected && connector) { connector.StopRemotingConnection(); GameObject.Destroy(s_Connector); s_Connector = null; } break; } }