public override void LoadData() { base.LoadData(); Static = this; m_VoIP = new VoIP(); m_voiceChatLogic = Activator.CreateInstance(MyPerGameSettings.VoiceChatLogic) as IMyVoiceChatLogic; m_recording = false; m_compressedVoiceBuffer = new byte[COMPRESSED_SIZE]; m_uncompressedVoiceBuffer = new byte[UNCOMPRESSED_SIZE]; m_voices = new Dictionary<ulong, MyEntity3DSoundEmitter>(); m_receivedVoiceData = new Dictionary<ulong, ReceivedData>(); m_keys = new List<ulong>(); Sync.Players.PlayerRemoved += Players_PlayerRemoved; m_enabled = MyAudio.Static.EnableVoiceChat; MyAudio.Static.VoiceChatEnabled += Static_VoiceChatEnabled; MyHud.VoiceChat.VisibilityChanged += VoiceChat_VisibilityChanged; MyNetworkReader.SetHandler(MyMultiplayer.VoiceChatChannel, VoiceMessageReceived); }
protected override void UnloadData() { base.UnloadData(); if (m_recording) StopRecording(); MyNetworkReader.ClearHandler(MyMultiplayer.VoiceChatChannel); foreach (var pair in m_voices) { m_voices[pair.Key].StopSound(true, true); m_voices[pair.Key].Cleanup(); } m_compressedVoiceBuffer = null; m_uncompressedVoiceBuffer = null; m_voiceChatLogic = null; m_VoIP = null; Static = null; m_receivedVoiceData = null; m_voices = null; m_keys = null; Sync.Players.PlayerRemoved -= Players_PlayerRemoved; MyAudio.Static.VoiceChatEnabled -= Static_VoiceChatEnabled; MyHud.VoiceChat.VisibilityChanged -= VoiceChat_VisibilityChanged; }