[Backout] - CL33084850

[FYI] Rob.Gay
Original CL Desc
-----------------------------------------------------------------
Version Metasound Document to include all ed data and make all Metasound EdGraph data transient
- Add input template nodes
- Add comment node data to document
- Keep references to member literal data (i.e. knob/slider ranges) in document metadata to ensure continued serialization and flexibility to add more editor-only fields and literal metadata
- Misc builder API updates, bug fixes and migration of controllers to builder API in anticipation of pages
- Sunset non-deterministic guid cvar
#rb phil.popp, helen.yang
[FYI] sondra.moyls
#tests Standard Automated Audio Tests, EngineTests, Offline QA Smoke pass, CPR, etc., extensive MetaSound Editor use, -game MetaSound qa levels, AudioUnitTests
#jira UE-194159

[CL 33096249 by bob tellez in ue5-main branch]
This commit is contained in:
bob tellez
2024-04-18 23:43:05 -04:00
parent 47d04eab27
commit 416e6c17d8
80 changed files with 3243 additions and 5473 deletions

View File

@@ -13,14 +13,12 @@
#include "MetasoundDataReference.h"
#include "MetasoundFrontendController.h"
#include "MetasoundFrontendSearchEngine.h"
#include "MetasoundTrigger.h"
#include "Misc/AutomationTest.h"
#include "Misc/Paths.h"
#include "NodeTemplates/MetasoundFrontendNodeTemplateInput.h"
#include "Tests/AutomationCommon.h"
#if WITH_DEV_AUTOMATION_TESTS
#if WITH_DEV_AUTOMATION_TESTS
namespace EngineTestMetaSoundPatchBuilderPrivate
{
UMetaSoundPatchBuilder& CreatePatchBuilderChecked(FAutomationTestBase& Test, FName BuilderName, const TArray<FName>& InterfaceNamesToAdd)
@@ -195,8 +193,8 @@ bool FAudioMetaSoundBuilderInterfaceBindingConnectAndDisconnect::RunTest(const F
}
// This test creates a MetaSound patch, then adds and connects sin oscillator, attempts to retrieve a default input set, then clears it, and finally retrieves the class default
IMPLEMENT_SIMPLE_AUTOMATION_TEST(FAudioMetaSoundNodeClassQueryFunctions, "Audio.Metasound.Builder.NodeClassQueryFunctions", EAutomationTestFlags::EditorContext | EAutomationTestFlags::EngineFilter)
bool FAudioMetaSoundNodeClassQueryFunctions::RunTest(const FString& Parameters)
IMPLEMENT_SIMPLE_AUTOMATION_TEST(FAudioMetasoundNodeClassQueryFunctions, "Audio.Metasound.Builder.NodeClassQueryFunctions", EAutomationTestFlags::EditorContext | EAutomationTestFlags::EngineFilter)
bool FAudioMetasoundNodeClassQueryFunctions::RunTest(const FString& Parameters)
{
using namespace EngineTestMetaSoundPatchBuilderPrivate;
using namespace Metasound;
@@ -205,7 +203,7 @@ bool FAudioMetaSoundNodeClassQueryFunctions::RunTest(const FString& Parameters)
constexpr float NodeDefaultFreq = 100.0f;
EMetaSoundBuilderResult Result = EMetaSoundBuilderResult::Failed;
UMetaSoundPatchBuilder& Builder = CreatePatchBuilderChecked(*this, "DefaultLiteralAssignment_Test", { });
UMetaSoundPatchBuilder& Builder = CreatePatchBuilderChecked(*this, "DefaultLiteralAssignment", { });
// Sine Oscillator Node
const FMetaSoundNodeHandle OscNode = Builder.AddNodeByClassName({ "UE", "Sine", "Audio" }, Result, 1);
@@ -273,62 +271,4 @@ bool FAudioMetaSoundNodeClassQueryFunctions::RunTest(const FString& Parameters)
return true;
}
// This test creates a MetaSound patch, adds a frequency input, connects a sin oscillator, and if the editor is loaded, and then attempts to inject template input nodes.
IMPLEMENT_SIMPLE_AUTOMATION_TEST(FAudioMetaSoundInjectTemplateNodes, "Audio.Metasound.Builder.InjectInputTemplateNodes", EAutomationTestFlags::EditorContext | EAutomationTestFlags::EngineFilter)
bool FAudioMetaSoundInjectTemplateNodes::RunTest(const FString& Parameters)
{
using namespace EngineTestMetaSoundPatchBuilderPrivate;
using namespace Metasound;
using namespace Metasound::Frontend;
constexpr float NodeDefaultFreq = 100.0f;
EMetaSoundBuilderResult Result = EMetaSoundBuilderResult::Failed;
UMetaSoundPatchBuilder& Builder = CreatePatchBuilderChecked(*this, "TemplateInputInjection_Test", { });
// Sine Oscillator Node
const FMetaSoundNodeHandle OscNode = Builder.AddNodeByClassName({ "UE", "Sine", "Audio" }, Result, 1);
AddErrorIfFalse(Result == EMetaSoundBuilderResult::Succeeded && OscNode.IsSet(), TEXT("Failed to create new MetaSound node by class name"));
auto MakeAndConnectSinInputToGraphInput = [&](FName InputName, FName TypeName, const FVector2D* Location, const FMetasoundFrontendLiteral& InLiteral, bool bIsCtorPin)
{
const FMetaSoundBuilderNodeOutputHandle InputNodeOutputHandle = Builder.AddGraphInputNode(InputName, TypeName, InLiteral, Result, bIsCtorPin);
AddErrorIfFalse(Result == EMetaSoundBuilderResult::Succeeded && InputNodeOutputHandle.IsSet(), TEXT("Failed to create new MetaSound graph input"));
const FMetaSoundBuilderNodeInputHandle OscNodeInput = Builder.FindNodeInputByName(OscNode, InputName, Result);
AddErrorIfFalse(Result == EMetaSoundBuilderResult::Succeeded && OscNodeInput.IsSet(), TEXT("Failed to find Sine Oscillator node input"));
Builder.ConnectNodes(InputNodeOutputHandle, OscNodeInput, Result);
AddErrorIfFalse(Result == EMetaSoundBuilderResult::Succeeded, TEXT("Failed to connect input node to node input"));
#if WITH_EDITOR
if (Location)
{
Builder.SetNodeLocation(FMetaSoundNodeHandle{ InputNodeOutputHandle.NodeID }, *Location, Result);
AddErrorIfFalse(Result == EMetaSoundBuilderResult::Succeeded, TEXT("Failed to set input node location"));
}
#endif // WITH_EDITOR
};
FMetasoundFrontendLiteral Literal;
Literal.Set(true);
MakeAndConnectSinInputToGraphInput("Enabled", GetMetasoundDataTypeName<bool>(), nullptr, Literal, true);
Literal.Set(100.0f);
FVector2D FreqLoc(100, 100);
MakeAndConnectSinInputToGraphInput("Frequency", GetMetasoundDataTypeName<float>(), nullptr, Literal, false);
Literal.Set(FMetasoundFrontendLiteral::FDefault { });
FVector2D SyncLoc(300, 300);
MakeAndConnectSinInputToGraphInput("Sync", GetMetasoundDataTypeName<FTrigger>(), nullptr, Literal, false);
#if WITH_EDITOR
constexpr bool bForceNodeCreation = false;
Builder.InjectInputTemplateNodes(bForceNodeCreation, Result);
AddErrorIfFalse(Result == EMetaSoundBuilderResult::Succeeded, TEXT("Failed to inject input template node"));
#endif // WITH_EDITOR
return true;
}
#endif // WITH_DEV_AUTOMATION_TESTS

View File

@@ -310,7 +310,7 @@ bool FMetaSoundSourceBuilderAuditionLatentCommand::Update()
if (const USoundBase* InitSound = AudioComponent->GetSound())
{
const UMetaSoundSource* InitMetaSound = CastChecked<UMetaSoundSource>(InitSound);
return InitMetaSound->GetConstDocumentChecked().RootGraph.Metadata.GetClassName().GetFullName();
return InitMetaSound->GetDocumentChecked().RootGraph.Metadata.GetClassName().GetFullName();
}
return { };
@@ -384,10 +384,7 @@ bool FAudioMetasoundSourceTest::RunTest(const FString& Parameters)
UMetaSoundSource* MetaSoundSource = NewObject<UMetaSoundSource>(GetTransientPackage(), FName(*LexToString(FGuid::NewGuid())));;
if (ensure(nullptr != MetaSoundSource))
{
// TODO: Move to using builder to swap in doc
PRAGMA_DISABLE_DEPRECATION_WARNINGS
MetaSoundSource->SetDocument(CreateMonoSourceDocument());
PRAGMA_ENABLE_DEPRECATION_WARNINGS
if (UAudioComponent* AudioComponent = CreateTestComponent(*this, MetaSoundSource))
{