Files
UnrealEngine/Engine/Plugins/MetaHuman/MetaHumanLiveLink/Source/MetaHumanLocalLiveLinkSource/Private/MetaHumanAudioBaseLiveLinkSubjectSettings.cpp
Brandyn / Techy fcc1b09210 init
2026-04-04 15:40:51 -05:00

84 lines
2.5 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "MetaHumanAudioBaseLiveLinkSubjectSettings.h"
#include "MetaHumanAudioBaseLiveLinkSubject.h"
#if WITH_EDITOR
void UMetaHumanAudioBaseLiveLinkSubjectSettings::PostEditChangeProperty(struct FPropertyChangedEvent& InPropertyChangedEvent)
{
Super::PostEditChangeProperty(InPropertyChangedEvent);
if (FProperty* Property = InPropertyChangedEvent.Property)
{
const FName PropertyName = *Property->GetName();
const bool bMoodChanged = PropertyName == GET_MEMBER_NAME_CHECKED(ThisClass, Mood);
const bool bMoodIntensityChanged = PropertyName == GET_MEMBER_NAME_CHECKED(ThisClass, MoodIntensity);
const bool bLookaheadChanged = PropertyName == GET_MEMBER_NAME_CHECKED(ThisClass, Lookahead);
FMetaHumanAudioBaseLiveLinkSubject* AudioSubject = (FMetaHumanAudioBaseLiveLinkSubject*) Subject;
if (bMoodChanged || bMoodIntensityChanged)
{
AudioSubject->SetMood(Mood, MoodIntensity);
}
else if (bLookaheadChanged)
{
AudioSubject->SetLookahead(Lookahead);
}
}
}
#endif
void UMetaHumanAudioBaseLiveLinkSubjectSettings::Setup()
{
Super::Setup();
// No calibration, smoothing or head translation required.
// Calibration and head translations are no-ops unless configured,
// but we do need to explicitly set smoothing parameters to null.
Parameters = nullptr;
}
void UMetaHumanAudioBaseLiveLinkSubjectSettings::SetMoodIntensity(float InMoodIntensity)
{
MoodIntensity = FMath::Clamp(InMoodIntensity, 0.0, 1.0);
FMetaHumanAudioBaseLiveLinkSubject* AudioSubject = (FMetaHumanAudioBaseLiveLinkSubject*) Subject;
AudioSubject->SetMood(Mood, MoodIntensity);
}
void UMetaHumanAudioBaseLiveLinkSubjectSettings::GetMoodIntensity(float& OutMoodIntensity) const
{
OutMoodIntensity = MoodIntensity;
}
void UMetaHumanAudioBaseLiveLinkSubjectSettings::SetMood(EAudioDrivenAnimationMood InMood)
{
Mood = InMood;
FMetaHumanAudioBaseLiveLinkSubject* AudioSubject = (FMetaHumanAudioBaseLiveLinkSubject*) Subject;
AudioSubject->SetMood(Mood, MoodIntensity);
}
void UMetaHumanAudioBaseLiveLinkSubjectSettings::GetMood(EAudioDrivenAnimationMood& OutMood) const
{
OutMood = Mood;
}
void UMetaHumanAudioBaseLiveLinkSubjectSettings::SetLookahead(int32 InLookahead)
{
Lookahead = FMath::Clamp((InLookahead/20) * 20, 80, 240);
FMetaHumanAudioBaseLiveLinkSubject* AudioSubject = (FMetaHumanAudioBaseLiveLinkSubject*) Subject;
AudioSubject->SetLookahead(Lookahead);
}
void UMetaHumanAudioBaseLiveLinkSubjectSettings::GetLookahead(int32& OutLookahead) const
{
OutLookahead = Lookahead;
}