Files
UnrealEngine/Engine/Source/Editor/AnimationEditorWidgets/Public/SchematicGraphPanel/SchematicGraphLink.h
2025-05-18 13:04:45 +08:00

55 lines
2.1 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#if WITH_EDITOR
#include "SchematicGraphDefines.h"
#define SCHEMATICGRAPHLINK_BODY(ClassName, SuperClass) \
SCHEMATICGRAPHELEMENT_BODY(ClassName, SuperClass, FSchematicGraphNode)
class ANIMATIONEDITORWIDGETS_API FSchematicGraphLink : public TSharedFromThis<FSchematicGraphLink>
{
public:
SCHEMATICGRAPHELEMENT_BODY_BASE(FSchematicGraphLink)
const FGuid& GetGuid() const { return Guid; }
static uint32 GetLinkHash(const FGuid& InSourceNodeGuid, const FGuid& InTargetNodeGuid)
{
return HashCombine(GetTypeHash(InSourceNodeGuid), GetTypeHash(InTargetNodeGuid));
}
uint32 GetLinkHash() const { return GetLinkHash(SourceNodeGuid, TargetNodeGuid); }
const FGuid& GetSourceNodeGuid() const { return SourceNodeGuid; }
const FGuid& GetTargetNodeGuid() const { return TargetNodeGuid; }
virtual float GetMinimum() const { return Minimum; }
virtual float GetMaximum() const { return Maximum; }
virtual FVector2d GetSourceNodeOffset() const { return SourceNodeOffset; }
virtual FVector2d GetTargetNodeOffset() const { return TargetNodeOffset; }
virtual FLinearColor GetColor() const { return Color; }
virtual float GetThickness() const { return Thickness; }
virtual const FSlateBrush* GetBrush() const { return Brush; }
virtual const FText& GetToolTip() const { return ToolTip; }
virtual ESchematicGraphVisibility::Type GetVisibility() const { return Visibility; }
virtual void SetVisibility(ESchematicGraphVisibility::Type InVisibility) { Visibility = InVisibility; }
protected:
FSchematicGraphModel* Model = nullptr;
FGuid Guid = FGuid::NewGuid();
FGuid SourceNodeGuid = FGuid();
FGuid TargetNodeGuid = FGuid();
float Minimum = 0.f;
float Maximum = 1.f;
FVector2d SourceNodeOffset = FVector2d::ZeroVector;
FVector2d TargetNodeOffset = FVector2d::ZeroVector;
FLinearColor Color = FLinearColor::White;
float Thickness = 1.f;
const FSlateBrush* Brush = nullptr;
FText ToolTip = FText();
ESchematicGraphVisibility::Type Visibility = ESchematicGraphVisibility::Visible;
friend class FSchematicGraphModel;
};
#endif