/// <summary> /// Closes the webrtc server and shuts things down /// </summary> public void Close() { if (!isClosing && Plugin != null) { Plugin.Dispose(); Plugin = null; } }
/// <summary> /// Opens the webrtc server and gets things rolling /// </summary> public void Open() { if (Plugin != null) { Close(); } // Create the plugin Plugin = new StreamingUnityServerPlugin(this.GetComponent <Camera>()); // hook it's input event // note: if you wish to capture debug data, see the <see cref="StreamingUnityServerDebug"/> behaviour Plugin.Input += OnInputData; }
/// <summary> /// Opens the webrtc server and gets things rolling /// </summary> public void Open() { if (Plugin != null) { Close(); } // clear the underlying mutable peer data PeerList.Peers.Clear(); PeerList.SelectedPeer = null; // check if we're in the editor, and fail out if we aren't loading the plugin in editor if (Application.isEditor && !UseEditorNativePlugin) { return; } // Create the plugin Plugin = new StreamingUnityServerPlugin(); // hook it's input event // note: if you wish to capture debug data, see the <see cref="StreamingUnityServerDebug"/> behaviour Plugin.InputUpdate += OnInputData; Plugin.PeerConnect += (int peerId, string peerName) => { PeerList.Peers.Add(new PeerListState.Peer() { Id = peerId, Name = peerName }); }; Plugin.PeerDisconnect += (int peerId) => { // TODO(bengreenier): this can be optimized to stop at the first match PeerList.Peers.RemoveAll(p => p.Id == peerId); }; // when we get a message, check if it's an offer and if it is track who it's // from so that we can use it to determine who we're connected to in AddStream Plugin.MessageFromPeer += (int peer, string message) => { try { var msg = SimpleJSON.JSON.Parse(message); if (!msg["sdp"].IsNull && msg["type"].Value == "offer") { offerPeer = peer; } } catch (Exception) { // swallow } }; // when we add a stream successfully, track that Plugin.AddStream += (string streamLabel) => { offerSucceeded = true; }; // when we remove a stream, track that Plugin.RemoveStream += (string streamLabel) => { offerSucceeded = false; }; }