You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
Use correct title for asset players when asset is bound to property access #jira UE-116472 - Asset players bound via property access incorrectly report that they use asset 'None' #rb Jurre.deBaare [CL 16466900 by Thomas Sarkanen in ue5-main branch]
60 lines
3.2 KiB
C++
60 lines
3.2 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "UObject/ObjectMacros.h"
|
|
#include "Animation/AnimationAsset.h"
|
|
#include "AnimGraphNode_Base.h"
|
|
#include "EdGraph/EdGraphNodeUtils.h"
|
|
#include "AnimGraphNode_AssetPlayerBase.generated.h"
|
|
|
|
/** Get the default anim node class for playing a particular asset */
|
|
ANIMGRAPH_API UClass* GetNodeClassForAsset(const UClass* AssetClass);
|
|
|
|
/** See if a particular anim NodeClass can play a particular anim AssetClass */
|
|
ANIMGRAPH_API bool SupportNodeClassForAsset(const UClass* AssetClass, UClass* NodeClass);
|
|
|
|
/** Helper / intermediate for asset player graphical nodes */
|
|
UCLASS(Abstract)
|
|
class ANIMGRAPH_API UAnimGraphNode_AssetPlayerBase : public UAnimGraphNode_Base
|
|
{
|
|
GENERATED_BODY()
|
|
public:
|
|
// Deprecated - sync group data is held on the contained FAnimNode_Base
|
|
UPROPERTY()
|
|
FAnimationGroupReference SyncGroup_DEPRECATED;
|
|
|
|
/** UObject interface */
|
|
void Serialize(FArchive& Ar) override;
|
|
void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;
|
|
|
|
/** UEdGraphNode interface */
|
|
virtual void PinConnectionListChanged(UEdGraphPin* Pin) override;
|
|
virtual void PinDefaultValueChanged(UEdGraphPin* Pin) override;
|
|
virtual FText GetTooltipText() const override;
|
|
|
|
/** UK2Node interface */
|
|
virtual bool IsActionFilteredOut(class FBlueprintActionFilter const& Filter) override;
|
|
|
|
/** UAnimGraphNode_Base interface */
|
|
virtual void OnProcessDuringCompilation(IAnimBlueprintCompilationContext& InCompilationContext, IAnimBlueprintGeneratedClassCompiledData& OutCompiledData) override;
|
|
virtual void GetOutputLinkAttributes(FNodeAttributeArray& OutAttributes) const override;
|
|
virtual void ValidateAnimNodeDuringCompilation(USkeleton* ForSkeleton, FCompilerResultsLog& MessageLog) override;
|
|
virtual void SetAnimationAsset(UAnimationAsset* Asset) { check(false); /*Base function called*/ }
|
|
|
|
// Helper function to gather menu actions from specific asset types supported by this node
|
|
static void GetMenuActionsHelper(FBlueprintActionDatabaseRegistrar& InActionRegistrar, TSubclassOf<UAnimGraphNode_Base> InNodeClass, const TArray<TSubclassOf<UObject>>& InAssetTypes, const TArray<TSubclassOf<UObject>>& InExcludedAssetTypes, const TFunctionRef<FText(const FAssetData&)>& InMenuNameFunction, const TFunctionRef<FText(const FAssetData&)>& InMenuTooltipFunction, const TFunction<void(UEdGraphNode*, bool, const FAssetData)>& InSetupNewNodeFunction);
|
|
|
|
protected:
|
|
// Helper functions to build a title for an asset player node
|
|
FText GetNodeTitleHelper(ENodeTitleType::Type InTitleType, UEdGraphPin* InAssetPin, const FText& InAssetDesc, const TFunction<FText(UAnimationAsset*)> InPostFixFunctionRef = nullptr) const;
|
|
FText GetNodeTitleForAsset(ENodeTitleType::Type InTitleType, UAnimationAsset* InAsset, const FText& InAssetDesc, const TFunction<FText(UAnimationAsset*)> InPostFixFunctionRef = nullptr) const;
|
|
|
|
// Default setup function that can be used with GetMenuActionsHalper
|
|
static void SetupNewNode(UEdGraphNode* InNewNode, bool bInIsTemplateNode, const FAssetData InAssetData);
|
|
|
|
/** Used for filtering in the Blueprint context menu when the sequence asset this node uses is unloaded */
|
|
FString UnloadedSkeletonName;
|
|
};
|