Add Custom Dialogue Graph for Dialogue Trees

This commit is contained in:
Philip W 2023-11-20 21:28:08 +00:00
parent d736224daa
commit 74ea72c76c
11 changed files with 217 additions and 0 deletions

View File

@ -14,6 +14,11 @@
"CoreUObject",
"UMG"
]
},
{
"Name": "DialogueSystemEditor",
"Type": "Editor",
"LoadingPhase": "PostEngineInit"
}
],
"Plugins": [

View File

@ -11,5 +11,11 @@ public class EndlessVendettaTarget : TargetRules
DefaultBuildSettings = BuildSettingsVersion.V2;
IncludeOrderVersion = EngineIncludeOrderVersion.Unreal5_1;
ExtraModuleNames.Add("EndlessVendetta");
RegisterModulesCreatedByRider();
}
private void RegisterModulesCreatedByRider()
{
ExtraModuleNames.AddRange(new string[] { "DialogueSystemEditor" });
}
}

View File

@ -0,0 +1,39 @@
#include "DialogueAddItemNode.h"
#include "DialogueTree.h"
#define LOCTEXT_NAMESPACE "UDialogueTextNode"
UDialogueAddItemNode::UDialogueAddItemNode()
{
#if WITH_EDITORONLY_DATA
CompatibleGraphType = UDialogueTree::StaticClass();
ContextMenuName = LOCTEXT("ConextMenuName", "Add Item Node");
#endif
}
#if WITH_EDITOR
FText UDialogueAddItemNode::GetNodeTitle() const
{
return Bruh;
}
void UDialogueAddItemNode::SetNodeTitle(const FText& NewTitle)
{
Bruh = NewTitle;
}
FLinearColor UDialogueAddItemNode::GetBackgroundColor() const
{
const UDialogueTree* DialogueTree = Cast<UDialogueTree>(GetGraph());
if (DialogueTree == nullptr)
return Super::GetBackgroundColor();
return FLinearColor::Black;
}
#endif
#undef LOCTEXT_NAMESPACE

View File

@ -0,0 +1,24 @@
#pragma once
#include "CoreMinimal.h"
#include "GenericGraphNode.h"
#include "DialogueAddItemNode.generated.h"
UCLASS(Blueprintable)
class UDialogueAddItemNode : public UGenericGraphNode
{
GENERATED_BODY()
public:
UDialogueAddItemNode();
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Dialogue")
FText Bruh;
#if WITH_EDITOR
virtual FText GetNodeTitle() const override;
virtual void SetNodeTitle(const FText& NewTitle) override;
virtual FLinearColor GetBackgroundColor() const override;
#endif
};

View File

@ -0,0 +1,16 @@
#pragma once
#include "CoreMinimal.h"
#include "GenericGraphEdge.h"
#include "DialogueEdge.generated.h"
UCLASS(Blueprintable)
class UDialogueEdge: public UGenericGraphEdge
{
GENERATED_BODY()
public:
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Dialogue")
FText Selection;
};

View File

@ -0,0 +1,47 @@
#include "DialogueTextNode.h"
#include "DialogueTree.h"
#define LOCTEXT_NAMESPACE "UDialogueTextNode"
UDialogueTextNode::UDialogueTextNode()
{
#if WITH_EDITORONLY_DATA
CompatibleGraphType = UDialogueTree::StaticClass();
ContextMenuName = LOCTEXT("ConextMenuName", "Dialogue Node");
#endif
}
#if WITH_EDITOR
FText UDialogueTextNode::GetNodeTitle() const
{
return Text.IsEmpty() ? LOCTEXT("EmptyParagraph", "(Empty paragraph)") : Text;
}
void UDialogueTextNode::SetNodeTitle(const FText& NewTitle)
{
Text = NewTitle;
}
FLinearColor UDialogueTextNode::GetBackgroundColor() const
{
const UDialogueTree* DialogueTree = Cast<UDialogueTree>(GetGraph());
if (DialogueTree == nullptr)
return Super::GetBackgroundColor();
switch (DialoguePosition)
{
case EDialoguePosition::Left:
return DialogueTree->LeftDialogueBgColor;
case EDialoguePosition::Right:
return DialogueTree->RightDialogueBgColor;
default:
return FLinearColor::Black;
}
}
#endif
#undef LOCTEXT_NAMESPACE

View File

@ -0,0 +1,34 @@
#pragma once
#include "CoreMinimal.h"
#include "GenericGraphNode.h"
#include "DialogueTextNode.generated.h"
UENUM(BlueprintType)
enum class EDialoguePosition : uint8
{
Left,
Right
};
UCLASS(Blueprintable)
class UDialogueTextNode : public UGenericGraphNode
{
GENERATED_BODY()
public:
UDialogueTextNode();
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Dialogue")
FText Text;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Dialogue")
EDialoguePosition DialoguePosition;
#if WITH_EDITOR
virtual FText GetNodeTitle() const override;
virtual void SetNodeTitle(const FText& NewTitle) override;
virtual FLinearColor GetBackgroundColor() const override;
#endif
};

View File

@ -0,0 +1,18 @@
#include "DialogueTree.h"
#include "DialogueTextNode.h"
#include "DialogueEdge.h"
#define LOCTEXT_NAMESPACE "DialogueSession"
UDialogueTree::UDialogueTree()
{
NodeType = UGenericGraphNode::StaticClass();
EdgeType = UDialogueEdge::StaticClass();
LeftDialogueBgColor = FLinearColor::Black;
RightDialogueBgColor = FLinearColor(0.93f, 0.93f, 0.93f, 1.f);
Name = "Dialogue Tree";
}
#undef LOCTEXT_NAMESPACE

View File

@ -0,0 +1,20 @@
#pragma once
#include "CoreMinimal.h"
#include "GenericGraph.h"
#include "DialogueTree.generated.h"
UCLASS(Blueprintable)
class ENDLESSVENDETTA_API UDialogueTree: public UGenericGraph
{
GENERATED_BODY()
public:
UDialogueTree();
UPROPERTY(EditDefaultsOnly, Category = "Dialogue")
FLinearColor LeftDialogueBgColor;
UPROPERTY(EditDefaultsOnly, Category = "Dialogue")
FLinearColor RightDialogueBgColor;
};

View File

@ -13,5 +13,7 @@ public class EndlessVendetta : ModuleRules
"Core", "CoreUObject", "Engine", "InputCore", "HeadMountedDisplay", "EnhancedInput", "AIModule",
"GameplayTasks", "NavigationSystem", "UMG", "Slate", "SlateCore", "Niagara", "NiagaraCore", "NiagaraShader"
});
PrivateDependencyModuleNames.AddRange(new string[] { "GenericGraphRuntime" });
}
}

View File

@ -11,5 +11,11 @@ public class EndlessVendettaEditorTarget : TargetRules
DefaultBuildSettings = BuildSettingsVersion.V2;
IncludeOrderVersion = EngineIncludeOrderVersion.Unreal5_1;
ExtraModuleNames.Add("EndlessVendetta");
RegisterModulesCreatedByRider();
}
private void RegisterModulesCreatedByRider()
{
ExtraModuleNames.AddRange(new string[] { "DialogueSystemEditor" });
}
}