示例#1
0
        internal void OnRemoteVoiceInfo(VoiceInfo voiceInfo, ref RemoteVoiceOptions options)
        {
            options.OnDecodedFrameFloatAction += this.OnAudioFrame;
            options.OnRemoteVoiceRemoveAction += this.OnRemoteVoiceRemove;

            this.audioOutput.Start(voiceInfo.SamplingRate, voiceInfo.Channels, voiceInfo.FrameDurationSamples, this.PlayDelayMs);
        }
 public RemoteVoiceLink(VoiceInfo info, int playerId, int voiceId, int channelId,
                        ref RemoteVoiceOptions options)
 {
     this.Info      = info;
     this.PlayerId  = playerId;
     this.VoiceId   = voiceId;
     this.ChannelId = channelId;
     options.SetOutput(this.OnDecodedFrameFloatAction);
     options.OnRemoteVoiceRemoveAction = this.OnRemoteVoiceRemoveAction;
 }
        private void OnRemoteVoiceInfo(int channelId, int playerId, byte voiceId, VoiceInfo voiceInfo, ref RemoteVoiceOptions options)
        {
            if (this.Logger.IsInfoEnabled)
            {
                this.Logger.LogInfo("OnRemoteVoiceInfo channel {0} player {1} voice #{2} userData {3}", channelId, playerId, voiceId, voiceInfo.UserData);
            }
            bool duplicate = false;

            for (int i = 0; i < cachedRemoteVoices.Count; i++)
            {
                RemoteVoiceLink remoteVoiceLink = cachedRemoteVoices[i];
                if (remoteVoiceLink.PlayerId == playerId && remoteVoiceLink.VoiceId == voiceId)
                {
                    if (this.Logger.IsWarningEnabled)
                    {
                        this.Logger.LogWarning("Duplicate remote voice info event channel {0} player {1} voice #{2} userData {3}", channelId, playerId, voiceId, voiceInfo.UserData);
                    }
                    duplicate = true;
                    cachedRemoteVoices.RemoveAt(i);
                    break;
                }
            }
            RemoteVoiceLink remoteVoice = new RemoteVoiceLink(voiceInfo, playerId, voiceId, channelId, ref options);

            cachedRemoteVoices.Add(remoteVoice);
            if (RemoteVoiceAdded != null)
            {
                RemoteVoiceAdded(remoteVoice);
            }
            remoteVoice.RemoteVoiceRemoved += delegate
            {
                if (this.Logger.IsInfoEnabled)
                {
                    this.Logger.LogInfo("RemoteVoiceRemoved channel {0} player {1} voice #{2} userData {3}", channelId, playerId, voiceId, voiceInfo.UserData);
                }
                if (!cachedRemoteVoices.Remove(remoteVoice) && this.Logger.IsWarningEnabled)
                {
                    this.Logger.LogWarning("Cached remote voice info not removed for channel {0} player {1} voice #{2} userData {3}", channelId, playerId, voiceId, voiceInfo.UserData);
                }
            };
            if (SpeakerFactory != null)
            {
                Speaker speaker = SpeakerFactory(playerId, voiceId, voiceInfo.UserData);
                if (speaker != null && duplicate && speaker.IsLinked)
                {
                    if (this.Logger.IsWarningEnabled)
                    {
                        this.Logger.LogWarning("Overriding speaker link for channel {0} player {1} voice #{2} userData {3}", channelId, playerId, voiceId, voiceInfo.UserData);
                    }
                    speaker.OnRemoteVoiceRemove();
                }
                LinkSpeaker(speaker, remoteVoice);
            }
        }
示例#4
0
    // Token: 0x06000058 RID: 88 RVA: 0x00003460 File Offset: 0x00001660
    public void OnRemoteVoiceInfo(int channelId, int playerId, byte voiceId, VoiceInfo voiceInfo, ref RemoteVoiceOptions options)
    {
        options.OnDecodedFrameFloatAction = (Action <float[]>) Delegate.Combine(options.OnDecodedFrameFloatAction, new Action <float[]>(delegate(float[] frame)
        {
            this.OnAudioFrame(playerId, voiceId, frame);
        }));
        options.OnRemoteVoiceRemoveAction = (Action)Delegate.Combine(options.OnRemoteVoiceRemoveAction, new Action(delegate()
        {
            this.OnRemoteVoiceRemove(playerId, voiceId);
        }));
        KeyValuePair <int, byte> key = new KeyValuePair <int, byte>(playerId, voiceId);

        if (this.voiceSpeakers.ContainsKey(key))
        {
            Debug.LogWarningFormat("PUNVoice: Info duplicate for voice #{0} of player {1}", new object[]
            {
                voiceId,
                playerId
            });
        }
        PhotonVoiceSpeaker photonVoiceSpeaker = null;

        foreach (PhotonVoiceSpeaker photonVoiceSpeaker2 in Object.FindObjectsOfType <PhotonVoiceSpeaker>())
        {
            if (photonVoiceSpeaker2.photonView.viewID == (int)voiceInfo.UserData)
            {
                photonVoiceSpeaker = photonVoiceSpeaker2;
                break;
            }
        }
        if (!(photonVoiceSpeaker == null))
        {
            this.linkVoice(playerId, voiceId, voiceInfo, photonVoiceSpeaker);
        }
        if (this.OnRemoteVoiceInfoAction != null)
        {
            this.OnRemoteVoiceInfoAction(playerId, voiceId, voiceInfo);
        }
    }
        }                                   // Dummy constructor

        public RemoteVoiceLink(VoiceInfo info, int playerId, int voiceId, int channelId, ref RemoteVoiceOptions options)
        {
        }                                                                                                                           // 0x0000000180F44050-0x0000000180F44150
示例#6
0
        private void OnRemoteVoiceInfo(int channelId, int playerId, byte voiceId, VoiceInfo voiceInfo, ref RemoteVoiceOptions options)
        {
            if (this.Logger.IsInfoEnabled)
            {
                this.Logger.LogInfo("PhotonVoice: OnRemoteVoiceInfo channel {0} player {1} voice #{2} userData {3}", channelId, playerId, voiceId, voiceInfo.UserData);
            }

            if (SpeakerFactory != null)
            {
                Speaker speaker = SpeakerFactory(playerId, voiceId, voiceInfo.UserData);
                if (speaker != null)
                {
                    speaker.OnRemoteVoiceInfo(voiceInfo, ref options);
                    if (speaker.Actor == null && this.Client.CurrentRoom != null)
                    {
                        speaker.Actor = this.Client.CurrentRoom.GetPlayer(playerId);
                    }
                    if (SpeakerLinked != null)
                    {
                        SpeakerLinked.Invoke(speaker);
                    }
                }
            }
        }