internal void CheckLateLinking(PhotonVoiceView photonVoiceView, int viewId) { if (this.Client.InRoom && photonVoiceView != null && viewId > 0) { for (int i = 0; i < this.cachedRemoteVoices.Count; i++) { RemoteVoiceLink remoteVoice = this.cachedRemoteVoices[i]; if (remoteVoice.Info.UserData is int) { int photonViewId = (int)remoteVoice.Info.UserData; if (viewId == photonViewId) { Speaker speaker = photonVoiceView.SpeakerInUse; if (this.Logger.IsInfoEnabled) { this.Logger.LogInfo("Speaker 'late-linking' for the PhotonView with ID {0} with remote voice {1}/{2}.", viewId, remoteVoice.PlayerId, remoteVoice.VoiceId); } this.LinkSpeaker(speaker, remoteVoice); break; } } else if (this.Logger.IsErrorEnabled) { this.Logger.LogError("Unexpected: VoiceInfo.UserData should be int/ViewId, received: {0}", remoteVoice.Info.UserData == null ? "null" : string.Format("{0} ({1})", remoteVoice.Info.UserData, remoteVoice.Info.UserData.GetType())); } } } }
private string GetFilePath(RemoteVoiceLink remoteVoiceLink) { string filename = string.Format("in_{0}_{1}_{2}_{3}_{4}.wav", System.DateTime.UtcNow.ToString("yyyy-MM-dd_HH-mm-ss-ffff"), Random.Range(0, 1000), remoteVoiceLink.ChannelId, remoteVoiceLink.PlayerId, remoteVoiceLink.VoiceId); return(Path.Combine(Application.persistentDataPath, filename)); }
internal void CheckLateLinking(Speaker speaker, int viewId) { if (!speaker || speaker == null) { if (this.Logger.IsWarningEnabled) { this.Logger.LogWarning("Cannot check late linking for null Speaker"); } return; } if (viewId <= 0) { if (this.Logger.IsWarningEnabled) { this.Logger.LogWarning("Cannot check late linking for ViewID = {0} (<= 0)", viewId); } return; } if (!this.Client.InRoom) { if (this.Logger.IsWarningEnabled) { this.Logger.LogWarning("Cannot check late linking while not joined to a voice room, client state: {0}", System.Enum.GetName(typeof(ClientState), this.ClientState)); } return; } for (int i = 0; i < this.cachedRemoteVoices.Count; i++) { RemoteVoiceLink remoteVoice = this.cachedRemoteVoices[i]; if (remoteVoice.Info.UserData is int) { int photonViewId = (int)remoteVoice.Info.UserData; if (viewId == photonViewId) { if (this.Logger.IsInfoEnabled) { this.Logger.LogInfo("Speaker 'late-linking' for the PhotonView with ID {0} with remote voice {1}/{2}.", viewId, remoteVoice.PlayerId, remoteVoice.VoiceId); } this.LinkSpeaker(speaker, remoteVoice); break; } } else if (this.Logger.IsWarningEnabled) { this.Logger.LogWarning("VoiceInfo.UserData should be int/ViewId, received: {0}, do you have a Recorder not used with a PhotonVoiceView? is this expected?", remoteVoice.Info.UserData == null ? "null" : string.Format("{0} ({1})", remoteVoice.Info.UserData, remoteVoice.Info.UserData.GetType())); if (remoteVoice.PlayerId == viewId / PhotonNetwork.MAX_VIEW_IDS) { this.Logger.LogWarning("Player with ActorNumber {0} has started recording (voice # {1}) too early without setting a ViewId maybe? (before PhotonVoiceView setup)", remoteVoice.PlayerId, remoteVoice.VoiceId); } } } }
private void OnRemoteVoiceAdded(RemoteVoiceLink remoteVoiceLink) { int bitsPerSample = 32; string filePath = this.GetFilePath(remoteVoiceLink); if (this.Logger.IsInfoEnabled) { this.Logger.LogInfo("Incoming stream, output file path: {0}", filePath); } WaveWriter waveWriter = new WaveWriter(filePath, new WaveFormat(remoteVoiceLink.Info.SamplingRate, bitsPerSample, remoteVoiceLink.Info.Channels)); remoteVoiceLink.FloatFrameDecoded += f => { waveWriter.WriteSamples(f.Buf, 0, f.Buf.Length); }; remoteVoiceLink.RemoteVoiceRemoved += () => { if (this.Logger.IsInfoEnabled) { this.Logger.LogInfo("Remote voice stream removed: Saving wav file."); } waveWriter.Dispose(); }; }
internal void CheckLateLinking(PhotonVoiceView photonVoiceView, int viewId) { if (this.Client.InRoom && photonVoiceView != null && viewId > 0) { for (int i = 0; i < cachedRemoteVoices.Count; i++) { RemoteVoiceLink remoteVoice = cachedRemoteVoices[i]; if (remoteVoice.Info.UserData is int) { int photonViewId = (int)remoteVoice.Info.UserData; if (viewId == photonViewId) { Speaker speaker = photonVoiceView.SpeakerInUse; if (this.Logger.IsInfoEnabled) { this.Logger.LogInfo("Speaker 'late-linking' for the PhotonView with ID {0} with remote voice {1}/{2}.", viewId, remoteVoice.PlayerId, remoteVoice.VoiceId); } LinkSpeaker(speaker, remoteVoice); break; } } } } }
} // 0x0000000180F44A90-0x0000000180F44CF0 private string GetFilePath(RemoteVoiceLink remoteVoiceLink) => default; // 0x0000000180F445B0-0x0000000180F448E0
} // 0x0000000180F448E0-0x0000000180F44A90 private void OnRemoteVoiceAdded(RemoteVoiceLink remoteVoiceLink) { } // 0x0000000180F44A90-0x0000000180F44CF0