void USpeechComponent::PlayNextViseme()

in Source/AmazonPollyMetaHuman/Private/SpeechComponent.cpp [92:107]


void USpeechComponent::PlayNextViseme() {
    FScopeLock lock(&Mutex);
    CurrentVisemeIndex++;
    ClearTimer();
    if (CurrentVisemeIndex == VisemeEventArray.Num() || VisemeEventArray.Num() == 0) {
        bIsSpeaking = false;
        return;
    }
    else {
        CurrentViseme = VisemeEventArray[CurrentVisemeIndex].Viseme;
        auto CurrentTimePoint = std::chrono::steady_clock::now();
        float SecondsSinceStart = std::chrono::duration<float, std::milli>(CurrentTimePoint - StartTimePoint).count() / 1000.0f;
        float CurrentVisemeDurationSeconds = fmaxf(VisemeEventArray[CurrentVisemeIndex].TimeMilliseconds / 1000.0f - SecondsSinceStart, 0);
        SetTimer(CurrentVisemeDurationSeconds);
    }
}