private void OnAudioLabelEvent(
        object sender,
        AudioLabelEventArgs eventArgs)
    {
        switch (eventArgs.EventType)
        {
        case AudioLabelEventType.Immediate:
        {
            bool triggeredDuringLabelEffect =
                TryTriggerValueTargetMapping(
                    eventArgs.LabelName,
                    (elem => elem.DuringLabelValueTargetName),
                    eventArgs.EventType);

            if (triggeredDuringLabelEffect)
            {
                SnapCurrentValueToTarget();
            }

            TryTriggerValueTargetMapping(
                eventArgs.LabelName,
                (elem => elem.AfterLabelValueTargetName),
                eventArgs.EventType);

            break;
        }

        case AudioLabelEventType.IntervalStarting:
            TryTriggerValueTargetMapping(
                eventArgs.LabelName,
                (elem => elem.DuringLabelValueTargetName),
                eventArgs.EventType);
            break;

        case AudioLabelEventType.IntervalEnding:
            TryTriggerValueTargetMapping(
                eventArgs.LabelName,
                (elem => elem.AfterLabelValueTargetName),
                eventArgs.EventType);
            break;

        default:
            throw new System.InvalidOperationException();
        }
    }
Пример #2
0
    private void OnAudioLabelEvent(
        object sender,
        AudioLabelEventArgs eventArgs)
    {
        switch (eventArgs.EventType)
        {
        case AudioLabelEventType.Immediate:
        {
            // There's no sensible response to an immediate-label.
            break;
        }

        case AudioLabelEventType.IntervalStarting:
        {
            if (AudioLabelsWhitelist.Contains(eventArgs.LabelName))
            {
                ++ActiveLabelCount;
            }

            UpdateTargetActivation();

            break;
        }

        case AudioLabelEventType.IntervalEnding:
        {
            if (AudioLabelsWhitelist.Contains(eventArgs.LabelName))
            {
                --ActiveLabelCount;
            }

            UpdateTargetActivation();

            break;
        }

        default:
            throw new System.InvalidOperationException();
        }
    }
Пример #3
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;
        }
    }