You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
#rb Rob.Gay #jira UEAU-780 [FYI] Dan.Reynolds #preflight 60a6af8629bb870001c7b53e #ROBOMERGE-SOURCE: CL 16408345 in //UE5/Private-Frosty/... #ROBOMERGE-BOT: STARSHIP (Private-Frosty -> Main) (v804-16311228) [CL 16412437 by phil popp in ue5-main branch]
80 lines
2.9 KiB
C++
80 lines
2.9 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "MetasoundFrontendStandardController.h"
|
|
|
|
namespace Metasound
|
|
{
|
|
namespace Frontend
|
|
{
|
|
/** Controller for nodes representing subgraphs. Handles synchronization
|
|
* of node interface to subgraph interface.
|
|
*/
|
|
class FSubgraphNodeController : public FBaseNodeController
|
|
{
|
|
// Private token only allows members or friends to call constructor.
|
|
enum EPrivateToken { Token };
|
|
|
|
using Super = FBaseNodeController;
|
|
|
|
public:
|
|
struct FInitParams
|
|
{
|
|
FNodeAccessPtr NodePtr;
|
|
FConstClassAccessPtr ClassPtr;
|
|
FGraphAccessPtr GraphPtr;
|
|
FGraphHandle OwningGraph;
|
|
};
|
|
|
|
// Constructor takes a private token so it can only be instantiated by
|
|
// using the static creation functions. This protects against some
|
|
// error conditions which would result in a zombie object. The creation
|
|
// methods can detect the error conditions and return an invalid controller
|
|
// on error
|
|
FSubgraphNodeController(EPrivateToken InToken, const FInitParams& InParams);
|
|
|
|
/** Create a node handle for a external or subgraph node.
|
|
*
|
|
* @return A Node handle. On error, an invalid node handle is returned.
|
|
*/
|
|
static FNodeHandle CreateNodeHandle(const FInitParams& InParams);
|
|
|
|
/** Create a node handle for a external or subgraph node.
|
|
*
|
|
* @return A Node handle. On error, an invalid node handle is returned.
|
|
*/
|
|
static FConstNodeHandle CreateConstNodeHandle(const FInitParams& InParams);
|
|
|
|
virtual ~FSubgraphNodeController() = default;
|
|
|
|
bool IsValid() const override;
|
|
|
|
int32 GetNumInputs() const override;
|
|
|
|
int32 GetNumOutputs() const override;
|
|
|
|
protected:
|
|
FDocumentAccess ShareAccess() override;
|
|
FConstDocumentAccess ShareAccess() const override;
|
|
|
|
TArray<FBaseNodeController::FInputControllerParams> GetInputControllerParams() const override;
|
|
TArray<FBaseNodeController::FOutputControllerParams> GetOutputControllerParams() const override;
|
|
|
|
TArray<FBaseNodeController::FInputControllerParams> GetInputControllerParamsWithVertexName(const FString& InName) const override;
|
|
TArray<FBaseNodeController::FOutputControllerParams> GetOutputControllerParamsWithVertexName(const FString& InName) const override;
|
|
|
|
bool FindInputControllerParamsWithID(FGuid InVertexID, FInputControllerParams& OutParams) const override;
|
|
bool FindOutputControllerParamsWithID(FGuid InVertexID, FOutputControllerParams& OutParams) const override;
|
|
|
|
private:
|
|
void ConformNodeInterfaceToClassInterface();
|
|
|
|
FInputHandle CreateInputController(FGuid InVertexID, FConstVertexAccessPtr InNodeVertexPtr, FConstClassInputAccessPtr InClassInputPtr, FNodeHandle InOwningNode) const override;
|
|
FOutputHandle CreateOutputController(FGuid InVertexID, FConstVertexAccessPtr InNodeVertexPtr, FConstClassOutputAccessPtr InClassOutputPtr, FNodeHandle InOwningNode) const override;
|
|
|
|
FGraphAccessPtr GraphPtr;
|
|
};
|
|
}
|
|
}
|