Files
UnrealEngineUWP/Engine/Source/Editor/BlueprintGraph/Classes/K2Node_StructOperation.h
julien stjean d37a1a36bb Allow better scripting of interchange for the automation by adding some callback when a asset or a scene object is created and when the import is completed.
Updated the PinHiddenByDefault uproperty metadata to work in blueprint struct ouside of animation blueprint.

#jira UETOOL-4035
#rb Phillip.Kavan, Alexis.Matte
#preflight 6144a8b03c7c6700010df23e

#ROBOMERGE-AUTHOR: julien.stjean
#ROBOMERGE-SOURCE: CL 17553215 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v870-17433530)

[CL 17553235 by julien stjean in ue5-release-engine-test branch]
2021-09-17 11:53:51 -04:00

67 lines
2.4 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "UObject/ObjectMacros.h"
#include "K2Node.h"
#include "K2Node_Variable.h"
#include "K2Node_StructOperation.generated.h"
UCLASS(MinimalAPI, abstract)
class UK2Node_StructOperation : public UK2Node_Variable
{
GENERATED_UCLASS_BODY()
/** Class that this variable is defined in. */
UPROPERTY()
TObjectPtr<UScriptStruct> StructType;
//~ Begin UEdGraphNode Interface
virtual FString GetPinMetaData(FName InPinName, FName InKey) override;
//~ End UEdGraphNode Interface
//~ Begin UK2Node Interface
//virtual bool DrawNodeAsVariable() const override { return true; }
virtual bool ShouldShowNodeProperties() const override { return true; }
virtual void ValidateNodeDuringCompilation(class FCompilerResultsLog& MessageLog) const override;
virtual bool HasExternalDependencies(TArray<class UStruct*>* OptionalOutput = nullptr) const override;
virtual FString GetFindReferenceSearchString() const override;
virtual bool IsActionFilteredOut(class FBlueprintActionFilter const& Filter) override;
//~ End UK2Node Interface
protected:
// Updater for subclasses that allow hiding pins
struct FStructOperationOptionalPinManager : public FOptionalPinManager
{
//~ Begin FOptionalPinsUpdater Interface
virtual void GetRecordDefaults(FProperty* TestProperty, FOptionalPinFromProperty& Record) const override
{
Record.bCanToggleVisibility = true;
Record.bShowPin = true;
if (TestProperty)
{
Record.bShowPin = !TestProperty->HasMetaData(TEXT("PinHiddenByDefault"));
if (Record.bShowPin)
{
if (UStruct* OwnerStruct = TestProperty->GetOwnerStruct())
{
Record.bShowPin = !OwnerStruct->HasMetaData(TEXT("HiddenByDefault"));
}
}
}
}
virtual void CustomizePinData(UEdGraphPin* Pin, FName SourcePropertyName, int32 ArrayIndex, FProperty* Property) const override;
// End of FOptionalPinsUpdater interfac
};
bool DoRenamedPinsMatch(const UEdGraphPin* NewPin, const UEdGraphPin* OldPin, bool bStructInVariablesOut) const;
/** Utility function to set up menu actions to set the struct type and promote category */
DECLARE_DELEGATE_RetVal_TwoParams(bool, FMakeStructSpawnerAllowedDelegate, const UScriptStruct*, bool);
void SetupMenuActions(FBlueprintActionDatabaseRegistrar& ActionRegistrar, const FMakeStructSpawnerAllowedDelegate& AllowedDelegate, EEdGraphPinDirection PinDirectionToPromote) const;
};