private void OnAudioLabelRemapping( object sender, AudioLabelRemappingEventArgs eventArgs) { string originalLabelTrack = new string(eventArgs.OriginalLabelName.Where(Char.IsLetter).ToArray()); int originalLabelNumberValue; bool originalLabelHasNumber = int.TryParse( eventArgs.OriginalLabelName.Substring(originalLabelTrack.Length), out originalLabelNumberValue); foreach (LabelRemappingEntry remappingEntry in labelRemappings) { if (originalLabelTrack.Equals(remappingEntry.OriginalLabelTrack, StringComparison.OrdinalIgnoreCase)) { bool numberRangeIsMatched = ( (remappingEntry.OriginalLabelRangeIsEnabled == false) || ( originalLabelHasNumber && (remappingEntry.OriginalLabelRangeFirst <= originalLabelNumberValue) && (originalLabelNumberValue <= remappingEntry.OriginalLabelRangeLast) )); if (numberRangeIsMatched) { eventArgs.OutRemappedLabelNames.Add(remappingEntry.RemappedLabelName); } } } }
private void BroadcastLabelEvents( float targetTime, bool broadcasterIsSeeking) { while ((nextLabelEventIndex < sortedLabelEvents.Count) && (sortedLabelEvents[nextLabelEventIndex].EventTime <= targetTime)) { var sourceLabelEvent = sortedLabelEvents[nextLabelEventIndex]; // Give remappers a chance to modify the label. { scratchRemappedLabelNames.Clear(); if (AudioLabelRemapping != null) { var remappingEventArgs = new AudioLabelRemappingEventArgs() { Broadcaster = this, OriginalLabelName = sourceLabelEvent.LabelName, OutRemappedLabelNames = scratchRemappedLabelNames, }; AudioLabelRemapping(this, remappingEventArgs); } if (OnlyBroadcastRemappedLabels == false) { scratchRemappedLabelNames.Add(sourceLabelEvent.LabelName); } } var labelEventArgs = new AudioLabelEventArgs() { Broadcaster = this, BroadcasterIsSeeking = broadcasterIsSeeking, CorrespondingAudio = audioSource, EventTime = sourceLabelEvent.EventTime, EventType = sourceLabelEvent.EventType, LabelName = sourceLabelEvent.LabelName, }; foreach (string remappedLabelName in scratchRemappedLabelNames) { labelEventArgs.LabelName = remappedLabelName; if (DebugEnabled) { Debug.LogFormat( "Broadcasting audio-label: {0:n2} {1} {2}", labelEventArgs.EventTime, labelEventArgs.EventType, labelEventArgs.LabelName); } if (AudioLabelEventTriggered != null) { AudioLabelEventTriggered(this, labelEventArgs); } } ++nextLabelEventIndex; } }