public static void Create(string deviceName, UInt16? storedBufferID = null) { if (Instance != null) { throw new Exception("Tried to instance more than one VoipCapture object"); } var capture = new VoipCapture(deviceName) { LatestBufferID = storedBufferID ?? BUFFER_COUNT - 1 }; if (capture.captureDevice != IntPtr.Zero) { Instance = capture; } }
public void SendToServer() { if (GameMain.Config.VoiceSetting == GameSettings.VoiceMode.Disabled) { if (VoipCapture.Instance != null) { storedBufferID = VoipCapture.Instance.LatestBufferID; VoipCapture.Instance.Dispose(); } return; } else { if (VoipCapture.Instance == null) { VoipCapture.Create(GameMain.Config.VoiceCaptureDevice, storedBufferID); } if (VoipCapture.Instance == null || VoipCapture.Instance.EnqueuedTotalLength <= 0) { return; } } if (DateTime.Now >= lastSendTime + VoipConfig.SEND_INTERVAL) { NetOutgoingMessage msg = netClient.CreateMessage(); msg.Write((byte)ClientPacketHeader.VOICE); msg.Write((byte)VoipCapture.Instance.QueueID); VoipCapture.Instance.Write(msg); netClient.SendMessage(msg, NetDeliveryMethod.Unreliable); lastSendTime = DateTime.Now; } }