애님그래프 커스텀 노드 (준비)
추가해줄 모듈네임
헤더파일
// Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "AnimGraphNode_Base.h" #include "AnimGraphNode_Swimming.generated.h" //실제 연산되는 런타임 구조체 USTRUCT(BlueprintType) struct FAnimNode_Swimming : public FAnimNode_Base { GENERATED_BODY() UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Links) FPoseLink BasePoseNode; //FAnimNode_Base interface // (메시 변경 등으로 인한)초기화/ 재초기화가 필요할 때 호출됨 virtual void Initialize_AnyThread(const FAnimationInitializeContext& context) override; //노드에 의해 레퍼런스 된 본 인덱스들을 리프레시 하는 데 사용 virtual void CacheBones_AnyThread(const FAnimationCacheBonesContext& context) override; //현재 상황 업데이트시에 호출됨(플레이 타임 증가나 블렌드 위젯 업데이트 등의 상황에서) 이 함수는 업데이트시 현재 노드의 DeltaTime과 blend weight를 가지고 있는 FAnimationUpdateContext를 입력받습니다. virtual void Update_AnyThread(const FAnimationUpdateContext& context) override; //‘포즈’를 만들어 내기 위해 호출됨(본 트랜스폼의 리스트 virtual void Evaluate_AnyThread(FPoseContext& context) override; //"ShowDebug Animation"의 데이터를 디버깅시 사용 virtual void GatherDebugData(FNodeDebugData& context) override; }; // 시각적인 면과 함수성 처리 하는 에디터 UCLASS() class SWIMMINGFISH_API UAnimGraphNode_Swimming : public UAnimGraphNode_Base { GENERATED_BODY() public: UPROPERTY(EditAnywhere, Category = "Settings") FAnimNode_Swimming Node; //제목 문구 배경 색 virtual FLinearColor GetNodeTitleColor() const override; // virtual FText GetTooltipText() const override; virtual FText GetNodeTitle(ENodeTitleType::Type TitleType) const override; virtual FString GetNodeCategory() const override; };
함수 파일
// Fill out your copyright notice in the Description page of Project Settings. #include "AnimGraphNode_Swimming.h" //텍스트현지화 #define LOCTEXT_NAMESPACE "A3Nodes" void FAnimNode_Swimming::Initialize_AnyThread(const FAnimationInitializeContext& context) { BasePoseNode.Initialize(context); } void FAnimNode_Swimming::CacheBones_AnyThread(const FAnimationCacheBonesContext& context) { BasePoseNode.CacheBones(context); } void FAnimNode_Swimming::Update_AnyThread(const FAnimationUpdateContext& context) { GetEvaluateGraphExposedInputs().Execute(context); BasePoseNode.Update(context); } void FAnimNode_Swimming::Evaluate_AnyThread(FPoseContext& context) { BasePoseNode.Evaluate(context); } void FAnimNode_Swimming::GatherDebugData(FNodeDebugData& context) { FString DebugLine = context.GetNodeName(this); context.AddDebugItem(DebugLine); BasePoseNode.GatherDebugData(context); } FLinearColor UAnimGraphNode_Swimming::GetNodeTitleColor() const { return FLinearColor::Green; } FText UAnimGraphNode_Swimming::GetTooltipText() const { //LOCTEXT(InKey, InTextLiteral) return LOCTEXT("My first CustomNode", "My first CustomNode"); } FText UAnimGraphNode_Swimming::GetNodeTitle(ENodeTitleType::Type TitleType) const { return LOCTEXT("SwimmingFish", "SwimmingFish"); } FString UAnimGraphNode_Swimming::GetNodeCategory() const { return TEXT("My Category"); }
댓글
댓글 쓰기