Ejemplo n.º 1
0
    /// <summary>
    /// エンコードボイスデータ送信デリゲート
    /// </summary>
    /// <param name="debugMode">trueの場合、送信する音声が自分にも返ってくる</param>
    /// <param name="header">ヘッダー</param>
    /// <param name="voice">音声データ</param>
    public override void OnSendVoice(bool debugMode, object[] header, byte[] voice, int voice_size)
    {
        switch (SendStreamType)
        {
        case StreamType.BROADCAST:
        {
            // 送信タイプの指定
            var target = (debugMode == true) ? MonobitTargets.All : MonobitTargets.Others;

            // ボイスチャットデータの送信処理
            MonobitNetwork.SendVoice(monobitView, target, new int[0], ReliableMode, Encrypt, header, voice, voice_size);
        }
        break;

        case StreamType.MULTICAST:
        {
            // 送信対象リストの取得
            List <Int32> multicastPlayerList = GetMulticastTarget();

            // 送信対象リストの中に自分自身が含まれている場合、デバッグモードを有効にする
            if (multicastPlayerList.Contains(MonobitNetwork.player.ID))
            {
                m_DebugMode = true;
            }

            // デバッグモードが有効の状態で、かつ送信対象リストの中に自分自身が含まれていない場合、リストに追加する
            if (debugMode && !multicastPlayerList.Contains(MonobitNetwork.player.ID))
            {
                multicastPlayerList.Add(MonobitNetwork.player.ID);
            }

            // 送信対象リストの中に自分自身が含まれていない場合、デバッグモードを無効にする
            if (!multicastPlayerList.Contains(MonobitNetwork.player.ID))
            {
                m_DebugMode = false;
            }

            // ボイスチャットデータの送信処理
            if (multicastPlayerList.Count > 0)
            {
                MonobitEngineBase.MonobitNetwork.SendVoice(monobitView, MonobitTargets.LimitedPlayer, multicastPlayerList.ToArray(), ReliableMode, Encrypt, header, voice, voice_size);
            }
        }
        break;
        }
    }