Example #1
0
        /// <summary>
        /// Get settings exposed by the audio source.
        /// </summary>
        /// <param name="audiosource">Audio source.</param>
        /// <returns>A list of settings.</returns>
        public static List <AudioSourceSetting> GetSettings(this IAudioSource audiosource)
        {
            var typeAccessor   = TypeAccessor.Create(audiosource.GetType());
            var objectAccessor = ObjectAccessor.Create(audiosource);

            return(typeAccessor.GetMembers()
                   .Where(m => m.IsDefined(typeof(AudioSourceSettingAttribute)))
                   .Select(m => new AudioSourceSetting(objectAccessor, m.Type, m.Name, (AudioSourceSettingAttribute)m.GetAttribute(typeof(AudioSourceSettingAttribute), true)))
                   .ToList());
        }
Example #2
0
 // Token: 0x0600006C RID: 108 RVA: 0x00003D44 File Offset: 0x00001F44
 protected virtual LocalVoice createLocalVoiceAudio(VoiceInfo voiceInfo, IAudioSource source)
 {
     if (source is IAudioPusher <float> )
     {
         if (this.forceShort)
         {
             throw new NotImplementedException("Voice.IAudioPusher<float> at 'short' voice is not supported currently");
         }
         LocalVoiceAudio <float> localVoice = PhotonVoiceNetwork.VoiceClient.CreateLocalVoiceAudio <float>(voiceInfo, -1, null);
         ((IAudioPusher <float>) source).SetCallback(delegate(float[] buf)
         {
             localVoice.PushDataAsync(buf);
         }, localVoice);
         localVoice.Encrypt = PhotonVoiceSettings.Instance.Encrypt;
         return(localVoice);
     }
     else
     {
         if (source is IAudioPusher <short> )
         {
             LocalVoiceAudio <short> localVoice = PhotonVoiceNetwork.VoiceClient.CreateLocalVoiceAudio <short>(voiceInfo, -1, null);
             ((IAudioPusher <short>) source).SetCallback(delegate(short[] buf)
             {
                 localVoice.PushDataAsync(buf);
             }, localVoice);
             localVoice.Encrypt = PhotonVoiceSettings.Instance.Encrypt;
             return(localVoice);
         }
         if (source is IAudioReader <float> )
         {
             if (this.forceShort)
             {
                 if (PhotonVoiceSettings.Instance.DebugInfo)
                 {
                     Debug.LogFormat("PUNVoice: Creating local voice with source samples type conversion from float to short.", Array.Empty <object>());
                 }
                 LocalVoiceAudio <short> localVoiceAudio = PhotonVoiceNetwork.VoiceClient.CreateLocalVoiceAudio <short>(voiceInfo, -1, null);
                 localVoiceAudio.LocalUserServiceable = new BufferReaderPushAdapterAsyncPoolFloatToShort(localVoiceAudio, source as IAudioReader <float>);
                 localVoiceAudio.Encrypt = PhotonVoiceSettings.Instance.Encrypt;
                 return(localVoiceAudio);
             }
             LocalVoiceAudio <float> localVoiceAudio2 = PhotonVoiceNetwork.VoiceClient.CreateLocalVoiceAudio <float>(voiceInfo, -1, null);
             localVoiceAudio2.LocalUserServiceable = new BufferReaderPushAdapterAsyncPool <float>(localVoiceAudio2, source as IAudioReader <float>);
             localVoiceAudio2.Encrypt = PhotonVoiceSettings.Instance.Encrypt;
             return(localVoiceAudio2);
         }
         else
         {
             if (source is IAudioReader <short> )
             {
                 LocalVoiceAudio <short> localVoiceAudio3 = PhotonVoiceNetwork.VoiceClient.CreateLocalVoiceAudio <short>(voiceInfo, -1, null);
                 localVoiceAudio3.LocalUserServiceable = new BufferReaderPushAdapterAsyncPool <short>(localVoiceAudio3, source as IAudioReader <short>);
                 localVoiceAudio3.Encrypt = PhotonVoiceSettings.Instance.Encrypt;
                 return(localVoiceAudio3);
             }
             Debug.LogErrorFormat("PUNVoice: PhotonVoiceRecorder createLocalVoiceAudio does not support Voice.IAudioReader of type {0}", new object[]
             {
                 source.GetType()
             });
             return(LocalVoiceAudio.Dummy);
         }
     }
 }