Files
UnrealEngineUWP/Engine/Plugins/Runtime/Metasound/Source/MetasoundFrontend/Private/MetasoundFrontendVariableController.cpp
rob gay 45e4645008 Compile out editor-only data from MetaSoundFrontend
- Move Author field to FString to avoid generated text collisions (Authors should always be culture invariant anyway) & add option to override default in MetaSound user settings
#rb helen.yang
#jira UE-142159
#preflight 62055c89057375a802938669

#ROBOMERGE-AUTHOR: rob.gay
#ROBOMERGE-SOURCE: CL 18941073 in //UE5/Release-5.0/... via CL 18941268 via CL 18941634
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v917-18934589)

[CL 18941665 by rob gay in ue5-main branch]
2022-02-10 15:07:39 -05:00

240 lines
5.8 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "MetasoundFrontendVariableController.h"
#include "MetasoundFrontendInvalidController.h"
namespace Metasound
{
namespace Frontend
{
FVariableController::FVariableController(const FVariableController::FInitParams& InParams)
: VariablePtr(InParams.VariablePtr)
, OwningGraph(InParams.OwningGraph)
{
}
bool FVariableController::IsValid() const
{
if (nullptr != VariablePtr.Get())
{
return OwningGraph->IsValid();
}
return false;
}
FGuid FVariableController::GetID() const
{
if (const FMetasoundFrontendVariable* Variable = VariablePtr.Get())
{
return Variable->ID;
}
return Metasound::FrontendInvalidID;
}
/** Returns the data type name associated with this output. */
const FName& FVariableController::GetDataType() const
{
if (const FMetasoundFrontendVariable* Variable = VariablePtr.Get())
{
return Variable->TypeName;
}
return Invalid::GetInvalidName();
}
/** Returns the human readable name associated with this output. */
const FName& FVariableController::GetName() const
{
if (const FMetasoundFrontendVariable* Variable = VariablePtr.Get())
{
return Variable->Name;
}
return Invalid::GetInvalidName();
}
void FVariableController::SetName(const FName& InName)
{
if (FMetasoundFrontendVariable* Variable = VariablePtr.Get())
{
Variable->Name = InName;
}
}
#if WITH_EDITOR
/** Returns the human readable name associated with this output. */
FText FVariableController::GetDisplayName() const
{
if (const FMetasoundFrontendVariable* Variable = VariablePtr.Get())
{
return Variable->DisplayName;
}
return Invalid::GetInvalidText();
}
void FVariableController::SetDisplayName(const FText& InDisplayName)
{
if (FMetasoundFrontendVariable* Variable = VariablePtr.Get())
{
Variable->DisplayName = InDisplayName;
}
}
/** Returns the human readable description associated with this output. */
FText FVariableController::GetDescription() const
{
if (const FMetasoundFrontendVariable* Variable = VariablePtr.Get())
{
return Variable->Description;
}
return Invalid::GetInvalidText();
}
void FVariableController::SetDescription(const FText& InDescription)
{
if (FMetasoundFrontendVariable* Variable = VariablePtr.Get())
{
Variable->Description = InDescription;
}
}
#endif // WITH_EDITOR
FNodeHandle FVariableController::FindMutatorNode()
{
if (const FMetasoundFrontendVariable* Variable = VariablePtr.Get())
{
if (Metasound::FrontendInvalidID != Variable->MutatorNodeID)
{
return OwningGraph->GetNodeWithID(Variable->MutatorNodeID);
}
}
return INodeController::GetInvalidHandle();
}
FConstNodeHandle FVariableController::FindMutatorNode() const
{
if (const FMetasoundFrontendVariable* Variable = VariablePtr.Get())
{
if (Metasound::FrontendInvalidID != Variable->MutatorNodeID)
{
return OwningGraph->GetNodeWithID(Variable->MutatorNodeID);
}
}
return INodeController::GetInvalidHandle();
}
TArray<FNodeHandle> FVariableController::FindAccessorNodes()
{
if (const FMetasoundFrontendVariable* Variable = VariablePtr.Get())
{
return GetNodeArray(Variable->AccessorNodeIDs);
}
return TArray<FNodeHandle>();
}
TArray<FConstNodeHandle> FVariableController::FindAccessorNodes() const
{
if (const FMetasoundFrontendVariable* Variable = VariablePtr.Get())
{
return GetNodeArray(Variable->AccessorNodeIDs);
}
return TArray<FConstNodeHandle>();
}
TArray<FNodeHandle> FVariableController::FindDeferredAccessorNodes()
{
if (const FMetasoundFrontendVariable* Variable = VariablePtr.Get())
{
return GetNodeArray(Variable->DeferredAccessorNodeIDs);
}
return TArray<FNodeHandle>();
}
TArray<FConstNodeHandle> FVariableController::FindDeferredAccessorNodes() const
{
if (const FMetasoundFrontendVariable* Variable = VariablePtr.Get())
{
return GetNodeArray(Variable->DeferredAccessorNodeIDs);
}
return TArray<FConstNodeHandle>();
}
/** Returns a FGraphHandle to the node which owns this output. */
FGraphHandle FVariableController::GetOwningGraph()
{
return OwningGraph;
}
/** Returns a FConstGraphHandle to the node which owns this output. */
FConstGraphHandle FVariableController::GetOwningGraph() const
{
return OwningGraph;
}
/** Returns the value for the given variable instance if set. */
const FMetasoundFrontendLiteral& FVariableController::GetLiteral() const
{
if (const FMetasoundFrontendVariable* Variable = VariablePtr.Get())
{
return Variable->Literal;
}
return Invalid::GetInvalidLiteral();
}
/** Sets the value for the given variable instance */
bool FVariableController::SetLiteral(const FMetasoundFrontendLiteral& InLiteral)
{
if (FMetasoundFrontendVariable* Variable = VariablePtr.Get())
{
Variable->Literal = InLiteral;
return true;
}
return false;
}
TArray<FNodeHandle> FVariableController::GetNodeArray(const TArray<FGuid>& InNodeIDs)
{
TArray<FNodeHandle> Nodes;
for (const FGuid& ID : InNodeIDs)
{
FNodeHandle Node = OwningGraph->GetNodeWithID(ID);
if (Node->IsValid())
{
Nodes.Add(Node);
}
}
return Nodes;
}
TArray<FConstNodeHandle> FVariableController::GetNodeArray(const TArray<FGuid>& InNodeIDs) const
{
TArray<FConstNodeHandle> Nodes;
for (const FGuid& ID : InNodeIDs)
{
FConstNodeHandle Node = OwningGraph->GetNodeWithID(ID);
if (Node->IsValid())
{
Nodes.Add(Node);
}
}
return Nodes;
}
FDocumentAccess FVariableController::ShareAccess()
{
FDocumentAccess Access;
return Access;
}
FConstDocumentAccess FVariableController::ShareAccess() const
{
FConstDocumentAccess Access;
return Access;
}
}
}