Exemple #1
0
    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);
                }
            }
        }
    }
Exemple #2
0
    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;
        }
    }