/// <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()); }
// 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); } } }