From c682f72afa6869c63972d3ed027078bcdde23462 Mon Sep 17 00:00:00 2001 From: PHILIP WHITE Date: Mon, 20 Nov 2023 21:25:36 +0000 Subject: [PATCH 001/112] Add Generic Graph Plugin for Creating Custom Graph --- .../Plugins/GenericGraph/.gitignore | 14 + .../Plugins/GenericGraph/GenericGraph.uplugin | 30 + EndlessVendetta/Plugins/GenericGraph/LICENSE | 21 + .../Resources/AutoArrangeIcon.png | 3 + .../GenericGraph/Resources/Icon128.png | 3 + .../GenericGraphEditor.Build.cs | 62 ++ .../Private/AssetTypeActions_GenericGraph.cpp | 48 + .../Private/AutoLayout/AutoLayoutStrategy.cpp | 96 ++ .../ForceDirectedLayoutStrategy.cpp | 162 ++++ .../Private/AutoLayout/TreeLayoutStrategy.cpp | 241 ++++++ .../AssetEditorToolbar_GenericGraph.cpp | 46 + .../AssetEditor_GenericGraph.cpp | 819 ++++++++++++++++++ .../AssetGraphSchema_GenericGraph.cpp | 476 ++++++++++ .../ConnectionDrawingPolicy_GenericGraph.cpp | 149 ++++ .../EdGraph_GenericGraph.cpp | 205 +++++ .../EdNode_GenericGraphEdge.cpp | 97 +++ .../EdNode_GenericGraphNode.cpp | 84 ++ .../EditorCommands_GenericGraph.cpp | 11 + .../GenericGraphDragConnection.cpp | 325 +++++++ .../GenericGraphEditorStyle.cpp | 54 ++ .../SEdNode_GenericGraphEdge.cpp | 199 +++++ .../SEdNode_GenericGraphNode.cpp | 336 +++++++ .../Settings_GenericGraphEditor.cpp | 24 + .../Private/GenericGraphEditor.cpp | 55 ++ .../Private/GenericGraphFactory.cpp | 117 +++ .../Private/GenericGraphNodeFactory.cpp | 20 + .../Public/AssetTypeActions_GenericGraph.h | 19 + .../Public/AutoLayout/AutoLayoutStrategy.h | 40 + .../AutoLayout/ForceDirectedLayoutStrategy.h | 24 + .../Public/AutoLayout/TreeLayoutStrategy.h | 29 + .../AssetEditorToolbar_GenericGraph.h | 24 + .../AssetEditor_GenericGraph.h | 137 +++ .../AssetGraphSchema_GenericGraph.h | 90 ++ .../Colors_GenericGraph.h | 45 + .../ConnectionDrawingPolicy_GenericGraph.h | 27 + .../EdGraph_GenericGraph.h | 39 + .../EdNode_GenericGraphEdge.h | 42 + .../EdNode_GenericGraphNode.h | 42 + .../EditorCommands_GenericGraph.h | 18 + .../GenericGraphDragConnection.h | 52 ++ .../GenericGraphEditorStyle.h | 16 + .../SEdNode_GenericGraphEdge.h | 40 + .../SEdNode_GenericGraphNode.h | 32 + .../Settings_GenericGraphEditor.h | 42 + .../Public/GenericGraphEditor.h | 23 + .../Public/GenericGraphEditorModule.h | 34 + .../Public/GenericGraphEditorPCH.h | 13 + .../Public/GenericGraphFactory.h | 22 + .../Public/GenericGraphNodeFactory.h | 8 + .../GenericGraphRuntime.Build.cs | 51 ++ .../Private/GenericGraph.cpp | 136 +++ .../Private/GenericGraphEdge.cpp | 23 + .../Private/GenericGraphNode.cpp | 90 ++ .../Private/GenericGraphRuntime.cpp | 29 + .../Private/GenericGraphRuntimePCH.h | 12 + .../GenericGraphRuntime/Public/GenericGraph.h | 60 ++ .../Public/GenericGraphEdge.h | 48 + .../Public/GenericGraphNode.h | 94 ++ .../Public/IGenericGraphRuntime.h | 36 + .../GenericGraph/docs/images/GenericGraph.png | 3 + .../docs/images/ability-graph.png | 3 + .../docs/images/dialogue/dialogue01.png | 3 + .../docs/images/dialogue/dialogue02.png | 3 + .../docs/images/dialogue/dialogue03.png | 3 + .../Plugins/GenericGraph/readme.rst | 51 ++ 65 files changed, 5200 insertions(+) create mode 100644 EndlessVendetta/Plugins/GenericGraph/.gitignore create mode 100644 EndlessVendetta/Plugins/GenericGraph/GenericGraph.uplugin create mode 100644 EndlessVendetta/Plugins/GenericGraph/LICENSE create mode 100644 EndlessVendetta/Plugins/GenericGraph/Resources/AutoArrangeIcon.png create mode 100644 EndlessVendetta/Plugins/GenericGraph/Resources/Icon128.png create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/GenericGraphEditor.Build.cs create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/AssetTypeActions_GenericGraph.cpp create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/AutoLayout/AutoLayoutStrategy.cpp create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/AutoLayout/ForceDirectedLayoutStrategy.cpp create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/AutoLayout/TreeLayoutStrategy.cpp create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/AssetEditorToolbar_GenericGraph.cpp create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/AssetEditor_GenericGraph.cpp create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/AssetGraphSchema_GenericGraph.cpp create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/ConnectionDrawingPolicy_GenericGraph.cpp create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/EdGraph_GenericGraph.cpp create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/EdNode_GenericGraphEdge.cpp create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/EdNode_GenericGraphNode.cpp create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/EditorCommands_GenericGraph.cpp create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/GenericGraphDragConnection.cpp create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/GenericGraphEditorStyle.cpp create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/SEdNode_GenericGraphEdge.cpp create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/SEdNode_GenericGraphNode.cpp create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/Settings_GenericGraphEditor.cpp create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphEditor.cpp create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphFactory.cpp create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphNodeFactory.cpp create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/AssetTypeActions_GenericGraph.h create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/AutoLayout/AutoLayoutStrategy.h create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/AutoLayout/ForceDirectedLayoutStrategy.h create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/AutoLayout/TreeLayoutStrategy.h create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/AssetEditorToolbar_GenericGraph.h create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/AssetEditor_GenericGraph.h create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/AssetGraphSchema_GenericGraph.h create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/Colors_GenericGraph.h create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/ConnectionDrawingPolicy_GenericGraph.h create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/EdGraph_GenericGraph.h create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/EdNode_GenericGraphEdge.h create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/EdNode_GenericGraphNode.h create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/EditorCommands_GenericGraph.h create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/GenericGraphDragConnection.h create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/GenericGraphEditorStyle.h create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/SEdNode_GenericGraphEdge.h create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/SEdNode_GenericGraphNode.h create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/Settings_GenericGraphEditor.h create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphEditor.h create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphEditorModule.h create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphEditorPCH.h create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphFactory.h create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphNodeFactory.h create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/GenericGraphRuntime.Build.cs create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Private/GenericGraph.cpp create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Private/GenericGraphEdge.cpp create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Private/GenericGraphNode.cpp create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Private/GenericGraphRuntime.cpp create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Private/GenericGraphRuntimePCH.h create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Public/GenericGraph.h create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Public/GenericGraphEdge.h create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Public/GenericGraphNode.h create mode 100644 EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Public/IGenericGraphRuntime.h create mode 100644 EndlessVendetta/Plugins/GenericGraph/docs/images/GenericGraph.png create mode 100644 EndlessVendetta/Plugins/GenericGraph/docs/images/ability-graph.png create mode 100644 EndlessVendetta/Plugins/GenericGraph/docs/images/dialogue/dialogue01.png create mode 100644 EndlessVendetta/Plugins/GenericGraph/docs/images/dialogue/dialogue02.png create mode 100644 EndlessVendetta/Plugins/GenericGraph/docs/images/dialogue/dialogue03.png create mode 100644 EndlessVendetta/Plugins/GenericGraph/readme.rst diff --git a/EndlessVendetta/Plugins/GenericGraph/.gitignore b/EndlessVendetta/Plugins/GenericGraph/.gitignore new file mode 100644 index 00000000..7b887157 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/.gitignore @@ -0,0 +1,14 @@ +Binaries +DerivedDataCache +Intermediate +Saved +Build +*.sdf +*.sln +*.suo +*.opensdf +*.opendb +*.db +/docs/sphinx-build-result +/.vs +NoCommit \ No newline at end of file diff --git a/EndlessVendetta/Plugins/GenericGraph/GenericGraph.uplugin b/EndlessVendetta/Plugins/GenericGraph/GenericGraph.uplugin new file mode 100644 index 00000000..68e4ef88 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/GenericGraph.uplugin @@ -0,0 +1,30 @@ +{ + "FileVersion" : 3, + "Version" : 1, + "VersionName" : "1.0", + "FriendlyName" : "Generic Graph Plugin", + "Description" : "", + "Category" : "GenericGraph", + "CreatedBy" : "jinyuliao", + "CreatedByURL" : "", + "DocsURL" : "", + "MarketplaceURL" : "", + "SupportURL" : "", + "EnabledByDefault" : true, + "CanContainContent" : true, + "IsBetaVersion" : false, + "Installed" : false, + "Modules" : + [ + { + "Name" : "GenericGraphRuntime", + "Type" : "Runtime", + "LoadingPhase" : "PreDefault" + }, + { + "Name" : "GenericGraphEditor", + "Type" : "Editor", + "LoadingPhase" : "Default" + } + ] +} \ No newline at end of file diff --git a/EndlessVendetta/Plugins/GenericGraph/LICENSE b/EndlessVendetta/Plugins/GenericGraph/LICENSE new file mode 100644 index 00000000..9c189b15 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2016 jinyuliao + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/EndlessVendetta/Plugins/GenericGraph/Resources/AutoArrangeIcon.png b/EndlessVendetta/Plugins/GenericGraph/Resources/AutoArrangeIcon.png new file mode 100644 index 00000000..b5e6c3b1 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Resources/AutoArrangeIcon.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:71dff338a731ee7bf2def0d378b0a866615d2ee72aa591ab4ed7ad1105049806 +size 5528 diff --git a/EndlessVendetta/Plugins/GenericGraph/Resources/Icon128.png b/EndlessVendetta/Plugins/GenericGraph/Resources/Icon128.png new file mode 100644 index 00000000..57ee2a55 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Resources/Icon128.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9eb6f69963ee569b0a8a4446e21f69d0a93205caf07b30cc37b1fddb62599602 +size 15543 diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/GenericGraphEditor.Build.cs b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/GenericGraphEditor.Build.cs new file mode 100644 index 00000000..aa57f0ce --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/GenericGraphEditor.Build.cs @@ -0,0 +1,62 @@ +using UnrealBuildTool; + +public class GenericGraphEditor : ModuleRules +{ + public GenericGraphEditor(ReadOnlyTargetRules Target) : base(Target) + { + PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; + bLegacyPublicIncludePaths = false; + ShadowVariableWarningLevel = WarningLevel.Error; + + PublicIncludePaths.AddRange( + new string[] { + // ... add public include paths required here ... + } + ); + + PrivateIncludePaths.AddRange( + new string[] { + // ... add other private include paths required here ... + "GenericGraphEditor/Private", + "GenericGraphEditor/Public", + } + ); + + PublicDependencyModuleNames.AddRange( + new string[] + { + "Core", + "CoreUObject", + "Engine", + "UnrealEd", + // ... add other public dependencies that you statically link with here ... + } + ); + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "GenericGraphRuntime", + "AssetTools", + "Slate", + "InputCore", + "SlateCore", + "GraphEditor", + "PropertyEditor", + "EditorStyle", + "Kismet", + "KismetWidgets", + "ApplicationCore", + "ToolMenus", + // ... add private dependencies that you statically link with here ... + } + ); + + DynamicallyLoadedModuleNames.AddRange( + new string[] + { + // ... add any modules that your module loads dynamically here ... + } + ); + } +} diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/AssetTypeActions_GenericGraph.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/AssetTypeActions_GenericGraph.cpp new file mode 100644 index 00000000..643911c7 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/AssetTypeActions_GenericGraph.cpp @@ -0,0 +1,48 @@ +#include "AssetTypeActions_GenericGraph.h" +#include "GenericGraphEditorPCH.h" +#include "GenericGraphAssetEditor/AssetEditor_GenericGraph.h" + +#define LOCTEXT_NAMESPACE "AssetTypeActions_GenericGraph" + +FAssetTypeActions_GenericGraph::FAssetTypeActions_GenericGraph(EAssetTypeCategories::Type InAssetCategory) + : MyAssetCategory(InAssetCategory) +{ +} + +FText FAssetTypeActions_GenericGraph::GetName() const +{ + return LOCTEXT("FGenericGraphAssetTypeActionsName", "Generic Graph"); +} + +FColor FAssetTypeActions_GenericGraph::GetTypeColor() const +{ + return FColor(129, 196, 115); +} + +UClass* FAssetTypeActions_GenericGraph::GetSupportedClass() const +{ + return UGenericGraph::StaticClass(); +} + +void FAssetTypeActions_GenericGraph::OpenAssetEditor(const TArray& InObjects, TSharedPtr EditWithinLevelEditor) +{ + const EToolkitMode::Type Mode = EditWithinLevelEditor.IsValid() ? EToolkitMode::WorldCentric : EToolkitMode::Standalone; + + for (auto ObjIt = InObjects.CreateConstIterator(); ObjIt; ++ObjIt) + { + if (UGenericGraph* Graph = Cast(*ObjIt)) + { + TSharedRef NewGraphEditor(new FAssetEditor_GenericGraph()); + NewGraphEditor->InitGenericGraphAssetEditor(Mode, EditWithinLevelEditor, Graph); + } + } +} + +uint32 FAssetTypeActions_GenericGraph::GetCategories() +{ + return MyAssetCategory; +} + +////////////////////////////////////////////////////////////////////////// + +#undef LOCTEXT_NAMESPACE \ No newline at end of file diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/AutoLayout/AutoLayoutStrategy.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/AutoLayout/AutoLayoutStrategy.cpp new file mode 100644 index 00000000..4d03bd87 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/AutoLayout/AutoLayoutStrategy.cpp @@ -0,0 +1,96 @@ +#include "AutoLayout/AutoLayoutStrategy.h" +#include "Kismet/KismetMathLibrary.h" +#include "GenericGraphAssetEditor/EdNode_GenericGraphNode.h" +#include "GenericGraphAssetEditor/SEdNode_GenericGraphNode.h" + +UAutoLayoutStrategy::UAutoLayoutStrategy() +{ + Settings = nullptr; + MaxIteration = 50; + OptimalDistance = 150; +} + +UAutoLayoutStrategy::~UAutoLayoutStrategy() +{ + +} + +FBox2D UAutoLayoutStrategy::GetNodeBound(UEdGraphNode* EdNode) +{ + int32 NodeWidth = GetNodeWidth(Cast(EdNode)); + int32 NodeHeight = GetNodeHeight(Cast(EdNode)); + FVector2D Min(EdNode->NodePosX, EdNode->NodePosY); + FVector2D Max(EdNode->NodePosX + NodeWidth, EdNode->NodePosY + NodeHeight); + return FBox2D(Min, Max); +} + +FBox2D UAutoLayoutStrategy::GetActualBounds(UGenericGraphNode* RootNode) +{ + int Level = 0; + TArray CurrLevelNodes = { RootNode }; + TArray NextLevelNodes; + + FBox2D Rtn = GetNodeBound(EdGraph->NodeMap[RootNode]); + + while (CurrLevelNodes.Num() != 0) + { + for (int i = 0; i < CurrLevelNodes.Num(); ++i) + { + UGenericGraphNode* Node = CurrLevelNodes[i]; + check(Node != nullptr); + + Rtn += GetNodeBound(EdGraph->NodeMap[Node]); + + for (int j = 0; j < Node->ChildrenNodes.Num(); ++j) + { + NextLevelNodes.Add(Node->ChildrenNodes[j]); + } + } + + CurrLevelNodes = NextLevelNodes; + NextLevelNodes.Reset(); + ++Level; + } + return Rtn; +} + +void UAutoLayoutStrategy::RandomLayoutOneTree(UGenericGraphNode* RootNode, const FBox2D& Bound) +{ + int Level = 0; + TArray CurrLevelNodes = { RootNode }; + TArray NextLevelNodes; + + while (CurrLevelNodes.Num() != 0) + { + for (int i = 0; i < CurrLevelNodes.Num(); ++i) + { + UGenericGraphNode* Node = CurrLevelNodes[i]; + check(Node != nullptr); + + UEdNode_GenericGraphNode* EdNode_Node = EdGraph->NodeMap[Node]; + + EdNode_Node->NodePosX = UKismetMathLibrary::RandomFloatInRange(Bound.Min.X, Bound.Max.X); + EdNode_Node->NodePosY = UKismetMathLibrary::RandomFloatInRange(Bound.Min.Y, Bound.Max.Y); + + for (int j = 0; j < Node->ChildrenNodes.Num(); ++j) + { + NextLevelNodes.Add(Node->ChildrenNodes[j]); + } + } + + CurrLevelNodes = NextLevelNodes; + NextLevelNodes.Reset(); + ++Level; + } +} + +int32 UAutoLayoutStrategy::GetNodeWidth(UEdNode_GenericGraphNode* EdNode) +{ + return EdNode->SEdNode->GetCachedGeometry().GetLocalSize().X; +} + +int32 UAutoLayoutStrategy::GetNodeHeight(UEdNode_GenericGraphNode* EdNode) +{ + return EdNode->SEdNode->GetCachedGeometry().GetLocalSize().Y; +} + diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/AutoLayout/ForceDirectedLayoutStrategy.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/AutoLayout/ForceDirectedLayoutStrategy.cpp new file mode 100644 index 00000000..8d66bfcb --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/AutoLayout/ForceDirectedLayoutStrategy.cpp @@ -0,0 +1,162 @@ +#include "AutoLayout/ForceDirectedLayoutStrategy.h" + +static inline float CoolDown(float Temp, float CoolDownRate) +{ + if (Temp < .01) return .01; + return Temp - (Temp / CoolDownRate); +} + +static inline float GetAttractForce(float X, float K) +{ + return (X * X) / K; +} + +static inline float GetRepulseForce(float X, float k) +{ + return X != 0 ? k * k / X : TNumericLimits::Max(); +} + +UForceDirectedLayoutStrategy::UForceDirectedLayoutStrategy() +{ + bRandomInit = false; + CoolDownRate = 10; + InitTemperature = 10.f; +} + +UForceDirectedLayoutStrategy::~UForceDirectedLayoutStrategy() +{ + +} + +void UForceDirectedLayoutStrategy::Layout(UEdGraph* _EdGraph) +{ + EdGraph = Cast(_EdGraph); + check(EdGraph != nullptr); + + EdGraph->RebuildGenericGraph(); + Graph = EdGraph->GetGenericGraph(); + check(Graph != nullptr); + + if (Settings != nullptr) + { + OptimalDistance = Settings->OptimalDistance; + MaxIteration = Settings->MaxIteration; + bRandomInit = Settings->bRandomInit; + } + + FBox2D PreTreeBound(ForceInitToZero); + for (int32 i = 0; i < Graph->RootNodes.Num(); ++i) + { + PreTreeBound = LayoutOneTree(Graph->RootNodes[i], PreTreeBound); + } +} + +FBox2D UForceDirectedLayoutStrategy::LayoutOneTree(UGenericGraphNode* RootNode, const FBox2D& PreTreeBound) +{ + float Temp = InitTemperature; + FBox2D TreeBound = GetActualBounds(RootNode); + TreeBound.Min.X += PreTreeBound.Max.X + OptimalDistance; + TreeBound.Max.X += PreTreeBound.Max.X + OptimalDistance; + + if (bRandomInit) + { + RandomLayoutOneTree(RootNode, TreeBound); + } + + float RepulseForce, AttractForce, Distance; + FVector2D Diff; + + TMap NodeToDisplacement; + + for (int32 i = 0; i < EdGraph->Nodes.Num(); ++i) + { + NodeToDisplacement.Add(EdGraph->Nodes[i], FVector2D(0.f, 0.f)); + } + + for (int32 IterrationNum = 0; IterrationNum < MaxIteration; ++IterrationNum) + { + // Calculate the repulsive forces. + for (int32 i = 0; i < EdGraph->Nodes.Num(); ++i) + { + for (int32 j = 0; j < EdGraph->Nodes.Num(); ++j) + { + if (i == j) + continue; + Diff.X = EdGraph->Nodes[i]->NodePosX - EdGraph->Nodes[j]->NodePosX; + Diff.Y = EdGraph->Nodes[i]->NodePosY - EdGraph->Nodes[j]->NodePosY; + Distance = Diff.Size(); + Diff.Normalize(); + + RepulseForce = Distance > 2 * OptimalDistance ? 0 : GetRepulseForce(Distance, OptimalDistance); + + NodeToDisplacement[EdGraph->Nodes[i]] += Diff * RepulseForce; + } + } + + // Calculate the attractive forces. + int Level = 0; + TArray CurrLevelNodes = { RootNode }; + TArray NextLevelNodes; + + while (CurrLevelNodes.Num() != 0) + { + for (int32 i = 0; i < CurrLevelNodes.Num(); ++i) + { + UGenericGraphNode* Node = CurrLevelNodes[i]; + check(Node != nullptr); + + UEdNode_GenericGraphNode* EdNode_ParentNode = EdGraph->NodeMap[Node]; + + for (int32 j = 0; j < Node->ChildrenNodes.Num(); ++j) + { + NextLevelNodes.Add(Node->ChildrenNodes[j]); + + UEdNode_GenericGraphNode* EdNode_ChildNode = EdGraph->NodeMap[Node->ChildrenNodes[j]]; + + Diff.X = EdNode_ChildNode->NodePosX - EdNode_ParentNode->NodePosY; + Diff.Y = EdNode_ChildNode->NodePosY - EdNode_ParentNode->NodePosY; + Distance = Diff.Size(); + Diff.Normalize(); + + AttractForce = GetAttractForce(Distance, OptimalDistance); + + NodeToDisplacement[EdNode_ParentNode] += Distance * Diff; + NodeToDisplacement[EdNode_ChildNode] -= Distance * Diff; + } + } + + CurrLevelNodes = NextLevelNodes; + NextLevelNodes.Reset(); + ++Level; + } + + for (int32 i = 0; i < EdGraph->Nodes.Num(); ++i) + { + UEdGraphNode* EdNode = EdGraph->Nodes[i]; + Distance = NodeToDisplacement[EdNode].Size(); + NodeToDisplacement[EdNode].Normalize(); + + float Minimum = Distance < Temp ? Distance : Temp; + EdNode->NodePosX += NodeToDisplacement[EdNode].X * Minimum; + EdNode->NodePosY += NodeToDisplacement[EdNode].Y * Minimum; + } + + Temp = CoolDown(Temp, CoolDownRate); + } + + FBox2D ActualBound = GetActualBounds(RootNode); + + FVector2D Center = ActualBound.GetCenter(); + FVector2D TreeCenter = TreeBound.GetCenter(); + + FVector2D Scale = (TreeBound.Max - TreeBound.Min) / (ActualBound.Max - ActualBound.Min); + + for (int32 i = 0; i < EdGraph->Nodes.Num(); ++i) + { + UEdGraphNode* EdNode = EdGraph->Nodes[i]; + EdNode->NodePosX = TreeCenter.X + Scale.X * (EdNode->NodePosX - Center.X); + EdNode->NodePosY = TreeCenter.Y + Scale.Y * (EdNode->NodePosY - Center.Y); + } + + return TreeBound; +} diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/AutoLayout/TreeLayoutStrategy.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/AutoLayout/TreeLayoutStrategy.cpp new file mode 100644 index 00000000..93163208 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/AutoLayout/TreeLayoutStrategy.cpp @@ -0,0 +1,241 @@ +#include "AutoLayout/TreeLayoutStrategy.h" +#include "GenericGraphEditorPCH.h" +#include "GenericGraphAssetEditor/SEdNode_GenericGraphNode.h" + +UTreeLayoutStrategy::UTreeLayoutStrategy() +{ +} + +UTreeLayoutStrategy::~UTreeLayoutStrategy() +{ + +} + +void UTreeLayoutStrategy::Layout(UEdGraph* _EdGraph) +{ + EdGraph = Cast(_EdGraph); + check(EdGraph != nullptr); + + EdGraph->RebuildGenericGraph(); + Graph = EdGraph->GetGenericGraph(); + check(Graph != nullptr); + + bool bFirstPassOnly = false; + + if (Settings != nullptr) + { + OptimalDistance = Settings->OptimalDistance; + MaxIteration = Settings->MaxIteration; + bFirstPassOnly = Settings->bFirstPassOnly; + } + + FVector2D Anchor(0.f, 0.f); + for (int32 i = 0; i < Graph->RootNodes.Num(); ++i) + { + UGenericGraphNode* RootNode = Graph->RootNodes[i]; + InitPass(RootNode, Anchor); + + if (!bFirstPassOnly) + { + for (int32 j = 0; j < MaxIteration; ++j) + { + bool HasConflict = ResolveConflictPass(RootNode); + if (!HasConflict) + { + break; + } + } + } + } + + for (int32 i = 0; i < Graph->RootNodes.Num(); ++i) + { + for (int32 j = 0; j < i; ++j) + { + ResolveConflict(Graph->RootNodes[j], Graph->RootNodes[i]); + } + } +} + +void UTreeLayoutStrategy::InitPass(UGenericGraphNode* RootNode, const FVector2D& Anchor) +{ + UEdNode_GenericGraphNode* EdNode_RootNode = EdGraph->NodeMap[RootNode]; + + FVector2D ChildAnchor(FVector2D(0.f, GetNodeHeight(EdNode_RootNode) + OptimalDistance + Anchor.Y)); + for (int32 i = 0; i < RootNode->ChildrenNodes.Num(); ++i) + { + UGenericGraphNode* Child = RootNode->ChildrenNodes[i]; + UEdNode_GenericGraphNode* EdNode_ChildNode = EdGraph->NodeMap[Child]; + if (i > 0) + { + UGenericGraphNode* PreChild = RootNode->ChildrenNodes[i - 1]; + UEdNode_GenericGraphNode* EdNode_PreChildNode = EdGraph->NodeMap[PreChild]; + ChildAnchor.X += OptimalDistance + GetNodeWidth(EdNode_PreChildNode) / 2; + } + ChildAnchor.X += GetNodeWidth(EdNode_ChildNode) / 2; + InitPass(Child, ChildAnchor); + } + + float NodeWidth = GetNodeWidth(EdNode_RootNode); + + EdNode_RootNode->NodePosY = Anchor.Y; + if (RootNode->ChildrenNodes.Num() == 0) + { + EdNode_RootNode->NodePosX = Anchor.X - NodeWidth / 2; + } + else + { + UpdateParentNodePosition(RootNode); + } +} + +bool UTreeLayoutStrategy::ResolveConflictPass(UGenericGraphNode* Node) +{ + bool HasConflict = false; + for (int32 i = 0; i < Node->ChildrenNodes.Num(); ++i) + { + UGenericGraphNode* Child = Node->ChildrenNodes[i]; + if (ResolveConflictPass(Child)) + { + HasConflict = true; + } + } + + for (int32 i = 0; i < Node->ParentNodes.Num(); ++i) + { + UGenericGraphNode* ParentNode = Node->ParentNodes[i]; + for (int32 j = 0; j < ParentNode->ChildrenNodes.Num(); ++j) + { + UGenericGraphNode* LeftSibling = ParentNode->ChildrenNodes[j]; + if (LeftSibling == Node) + break; + if (ResolveConflict(LeftSibling, Node)) + { + HasConflict = true; + } + } + } + + return HasConflict; +} + +bool UTreeLayoutStrategy::ResolveConflict(UGenericGraphNode* LRoot, UGenericGraphNode* RRoot) +{ + TArray RightContour, LeftContour; + + GetRightContour(LRoot, 0, RightContour); + GetLeftContour(RRoot, 0, LeftContour); + + int32 MaxOverlapDistance = 0; + int32 Num = FMath::Min(LeftContour.Num(), RightContour.Num()); + for (int32 i = 0; i < Num; ++i) + { + if (RightContour.Contains(LeftContour[i]) || LeftContour.Contains(RightContour[i])) + break; + + int32 RightBound = RightContour[i]->NodePosX + GetNodeWidth(RightContour[i]); + int32 LeftBound = LeftContour[i]->NodePosX; + int32 Distance = RightBound + OptimalDistance - LeftBound; + if (Distance > MaxOverlapDistance) + { + MaxOverlapDistance = Distance; + } + } + + if (MaxOverlapDistance > 0) + { + ShiftSubTree(RRoot, FVector2D(MaxOverlapDistance, 0.f)); + + TArray ParentNodes = RRoot->ParentNodes; + TArray NextParentNodes; + while (ParentNodes.Num() != 0) + { + for (int32 i = 0; i < ParentNodes.Num(); ++i) + { + UpdateParentNodePosition(ParentNodes[i]); + + NextParentNodes.Append(ParentNodes[i]->ParentNodes); + } + + ParentNodes = NextParentNodes; + NextParentNodes.Reset(); + } + + return true; + } + else + { + return false; + } +} + +void UTreeLayoutStrategy::GetLeftContour(UGenericGraphNode* RootNode, int32 Level, TArray& Contour) +{ + UEdNode_GenericGraphNode* EdNode_Node = EdGraph->NodeMap[RootNode]; + if (Level >= Contour.Num()) + { + Contour.Add(EdNode_Node); + } + else if (EdNode_Node->NodePosX < Contour[Level]->NodePosX) + { + Contour[Level] = EdNode_Node; + } + + for (int32 i = 0; i < RootNode->ChildrenNodes.Num(); ++i) + { + GetLeftContour(RootNode->ChildrenNodes[i], Level + 1, Contour); + } +} + +void UTreeLayoutStrategy::GetRightContour(UGenericGraphNode* RootNode, int32 Level, TArray& Contour) +{ + UEdNode_GenericGraphNode* EdNode_Node = EdGraph->NodeMap[RootNode]; + if (Level >= Contour.Num()) + { + Contour.Add(EdNode_Node); + } + else if (EdNode_Node->NodePosX + GetNodeWidth(EdNode_Node) > Contour[Level]->NodePosX + GetNodeWidth(Contour[Level])) + { + Contour[Level] = EdNode_Node; + } + + for (int32 i = 0; i < RootNode->ChildrenNodes.Num(); ++i) + { + GetRightContour(RootNode->ChildrenNodes[i], Level + 1, Contour); + } +} + +void UTreeLayoutStrategy::ShiftSubTree(UGenericGraphNode* RootNode, const FVector2D& Offset) +{ + UEdNode_GenericGraphNode* EdNode_Node = EdGraph->NodeMap[RootNode]; + EdNode_Node->NodePosX += Offset.X; + EdNode_Node->NodePosY += Offset.Y; + + for (int32 i = 0; i < RootNode->ChildrenNodes.Num(); ++i) + { + UGenericGraphNode* Child = RootNode->ChildrenNodes[i]; + + if (Child->ParentNodes[0] == RootNode) + { + ShiftSubTree(RootNode->ChildrenNodes[i], Offset); + } + } +} + +void UTreeLayoutStrategy::UpdateParentNodePosition(UGenericGraphNode* ParentNode) +{ + UEdNode_GenericGraphNode* EdNode_ParentNode = EdGraph->NodeMap[ParentNode]; + if (ParentNode->ChildrenNodes.Num() % 2 == 0) + { + UEdNode_GenericGraphNode* FirstChild = EdGraph->NodeMap[ParentNode->ChildrenNodes[0]]; + UEdNode_GenericGraphNode* LastChild = EdGraph->NodeMap[ParentNode->ChildrenNodes.Last()]; + float LeftBound = FirstChild->NodePosX; + float RightBound = LastChild->NodePosX + GetNodeWidth(LastChild); + EdNode_ParentNode->NodePosX = (LeftBound + RightBound) / 2 - GetNodeWidth(EdNode_ParentNode) / 2; + } + else + { + UEdNode_GenericGraphNode* MidChild = EdGraph->NodeMap[ParentNode->ChildrenNodes[ParentNode->ChildrenNodes.Num() / 2]]; + EdNode_ParentNode->NodePosX = MidChild->NodePosX + GetNodeWidth(MidChild) / 2 - GetNodeWidth(EdNode_ParentNode) / 2; + } +} diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/AssetEditorToolbar_GenericGraph.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/AssetEditorToolbar_GenericGraph.cpp new file mode 100644 index 00000000..1d9127cc --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/AssetEditorToolbar_GenericGraph.cpp @@ -0,0 +1,46 @@ +#include "GenericGraphAssetEditor/AssetEditorToolbar_GenericGraph.h" +#include "GenericGraphAssetEditor/AssetEditor_GenericGraph.h" +#include "GenericGraphAssetEditor/EditorCommands_GenericGraph.h" +#include "GenericGraphAssetEditor/GenericGraphEditorStyle.h" + +#define LOCTEXT_NAMESPACE "AssetEditorToolbar_GenericGraph" + +void FAssetEditorToolbar_GenericGraph::AddGenericGraphToolbar(TSharedPtr Extender) +{ + check(GenericGraphEditor.IsValid()); + TSharedPtr GenericGraphEditorPtr = GenericGraphEditor.Pin(); + + TSharedPtr ToolbarExtender = MakeShareable(new FExtender); + ToolbarExtender->AddToolBarExtension("Asset", EExtensionHook::After, GenericGraphEditorPtr->GetToolkitCommands(), FToolBarExtensionDelegate::CreateSP( this, &FAssetEditorToolbar_GenericGraph::FillGenericGraphToolbar )); + GenericGraphEditorPtr->AddToolbarExtender(ToolbarExtender); +} + +void FAssetEditorToolbar_GenericGraph::FillGenericGraphToolbar(FToolBarBuilder& ToolbarBuilder) +{ + check(GenericGraphEditor.IsValid()); + TSharedPtr GenericGraphEditorPtr = GenericGraphEditor.Pin(); + + ToolbarBuilder.BeginSection("Generic Graph"); + { + ToolbarBuilder.AddToolBarButton(FEditorCommands_GenericGraph::Get().GraphSettings, + NAME_None, + LOCTEXT("GraphSettings_Label", "Graph Settings"), + LOCTEXT("GraphSettings_ToolTip", "Show the Graph Settings"), + FSlateIcon(FAppStyle::GetAppStyleSetName(), "LevelEditor.GameSettings")); + } + ToolbarBuilder.EndSection(); + + ToolbarBuilder.BeginSection("Util"); + { + ToolbarBuilder.AddToolBarButton(FEditorCommands_GenericGraph::Get().AutoArrange, + NAME_None, + LOCTEXT("AutoArrange_Label", "Auto Arrange"), + LOCTEXT("AutoArrange_ToolTip", "Auto arrange nodes, not perfect, but still handy"), + FSlateIcon(FGenericGraphEditorStyle::GetStyleSetName(), "GenericGraphEditor.AutoArrange")); + } + ToolbarBuilder.EndSection(); + +} + + +#undef LOCTEXT_NAMESPACE diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/AssetEditor_GenericGraph.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/AssetEditor_GenericGraph.cpp new file mode 100644 index 00000000..68507d39 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/AssetEditor_GenericGraph.cpp @@ -0,0 +1,819 @@ +#include "GenericGraphAssetEditor/AssetEditor_GenericGraph.h" +#include "GenericGraphEditorPCH.h" +#include "GenericGraphAssetEditor/AssetEditorToolbar_GenericGraph.h" +#include "GenericGraphAssetEditor/AssetGraphSchema_GenericGraph.h" +#include "GenericGraphAssetEditor/EditorCommands_GenericGraph.h" +#include "GenericGraphAssetEditor/EdGraph_GenericGraph.h" +#include "AssetToolsModule.h" +#include "HAL/PlatformApplicationMisc.h" +#include "Framework/Commands/GenericCommands.h" +#include "GraphEditorActions.h" +#include "IDetailsView.h" +#include "PropertyEditorModule.h" +#include "Editor/UnrealEd/Public/Kismet2/BlueprintEditorUtils.h" +#include "Kismet2/KismetEditorUtilities.h" +#include "EdGraphUtilities.h" +#include "GenericGraphAssetEditor/EdGraph_GenericGraph.h" +#include "GenericGraphAssetEditor/EdNode_GenericGraphNode.h" +#include "GenericGraphAssetEditor/EdNode_GenericGraphEdge.h" +#include "AutoLayout/TreeLayoutStrategy.h" +#include "AutoLayout/ForceDirectedLayoutStrategy.h" + +#define LOCTEXT_NAMESPACE "AssetEditor_GenericGraph" + +const FName GenericGraphEditorAppName = FName(TEXT("GenericGraphEditorApp")); + +struct FGenericGraphAssetEditorTabs +{ + // Tab identifiers + static const FName GenericGraphPropertyID; + static const FName ViewportID; + static const FName GenericGraphEditorSettingsID; +}; + +////////////////////////////////////////////////////////////////////////// + +const FName FGenericGraphAssetEditorTabs::GenericGraphPropertyID(TEXT("GenericGraphProperty")); +const FName FGenericGraphAssetEditorTabs::ViewportID(TEXT("Viewport")); +const FName FGenericGraphAssetEditorTabs::GenericGraphEditorSettingsID(TEXT("GenericGraphEditorSettings")); + +////////////////////////////////////////////////////////////////////////// + +FAssetEditor_GenericGraph::FAssetEditor_GenericGraph() +{ + EditingGraph = nullptr; + + GenricGraphEditorSettings = NewObject(UGenericGraphEditorSettings::StaticClass()); + +#if ENGINE_MAJOR_VERSION < 5 + OnPackageSavedDelegateHandle = UPackage::PackageSavedEvent.AddRaw(this, &FAssetEditor_GenericGraph::OnPackageSaved); +#else // #if ENGINE_MAJOR_VERSION < 5 + OnPackageSavedDelegateHandle = UPackage::PackageSavedWithContextEvent.AddRaw(this, &FAssetEditor_GenericGraph::OnPackageSavedWithContext); +#endif // #else // #if ENGINE_MAJOR_VERSION < 5 +} + +FAssetEditor_GenericGraph::~FAssetEditor_GenericGraph() +{ +#if ENGINE_MAJOR_VERSION < 5 + UPackage::PackageSavedEvent.Remove(OnPackageSavedDelegateHandle); +#else // #if ENGINE_MAJOR_VERSION < 5 + UPackage::PackageSavedWithContextEvent.Remove(OnPackageSavedDelegateHandle); +#endif // #else // #if ENGINE_MAJOR_VERSION < 5 +} + +void FAssetEditor_GenericGraph::InitGenericGraphAssetEditor(const EToolkitMode::Type Mode, const TSharedPtr< IToolkitHost >& InitToolkitHost, UGenericGraph* Graph) +{ + EditingGraph = Graph; + CreateEdGraph(); + + FGenericCommands::Register(); + FGraphEditorCommands::Register(); + FEditorCommands_GenericGraph::Register(); + + if (!ToolbarBuilder.IsValid()) + { + ToolbarBuilder = MakeShareable(new FAssetEditorToolbar_GenericGraph(SharedThis(this))); + } + + BindCommands(); + + CreateInternalWidgets(); + + TSharedPtr ToolbarExtender = MakeShareable(new FExtender); + + ToolbarBuilder->AddGenericGraphToolbar(ToolbarExtender); + + // Layout + const TSharedRef StandaloneDefaultLayout = FTabManager::NewLayout("Standalone_GenericGraphEditor_Layout_v1") + ->AddArea + ( + FTabManager::NewPrimaryArea()->SetOrientation(Orient_Vertical) +#if ENGINE_MAJOR_VERSION < 5 + ->Split + ( + FTabManager::NewStack() + ->SetSizeCoefficient(0.1f) + ->AddTab(GetToolbarTabId(), ETabState::OpenedTab)->SetHideTabWell(true) + ) +#endif // #if ENGINE_MAJOR_VERSION < 5 + ->Split + ( + FTabManager::NewSplitter()->SetOrientation(Orient_Horizontal)->SetSizeCoefficient(0.9f) + ->Split + ( + FTabManager::NewStack() + ->SetSizeCoefficient(0.65f) + ->AddTab(FGenericGraphAssetEditorTabs::ViewportID, ETabState::OpenedTab)->SetHideTabWell(true) + ) + ->Split + ( + FTabManager::NewSplitter()->SetOrientation(Orient_Vertical) + ->Split + ( + FTabManager::NewStack() + ->SetSizeCoefficient(0.7f) + ->AddTab(FGenericGraphAssetEditorTabs::GenericGraphPropertyID, ETabState::OpenedTab)->SetHideTabWell(true) + ) + ->Split + ( + FTabManager::NewStack() + ->SetSizeCoefficient(0.3f) + ->AddTab(FGenericGraphAssetEditorTabs::GenericGraphEditorSettingsID, ETabState::OpenedTab) + ) + ) + ) + ); + + const bool bCreateDefaultStandaloneMenu = true; + const bool bCreateDefaultToolbar = true; + FAssetEditorToolkit::InitAssetEditor(Mode, InitToolkitHost, GenericGraphEditorAppName, StandaloneDefaultLayout, bCreateDefaultStandaloneMenu, bCreateDefaultToolbar, EditingGraph, false); + + RegenerateMenusAndToolbars(); +} + +void FAssetEditor_GenericGraph::RegisterTabSpawners(const TSharedRef& InTabManager) +{ + WorkspaceMenuCategory = InTabManager->AddLocalWorkspaceMenuCategory(LOCTEXT("WorkspaceMenu_GenericGraphEditor", "Generic Graph Editor")); + auto WorkspaceMenuCategoryRef = WorkspaceMenuCategory.ToSharedRef(); + + FAssetEditorToolkit::RegisterTabSpawners(InTabManager); + + InTabManager->RegisterTabSpawner(FGenericGraphAssetEditorTabs::ViewportID, FOnSpawnTab::CreateSP(this, &FAssetEditor_GenericGraph::SpawnTab_Viewport)) + .SetDisplayName(LOCTEXT("GraphCanvasTab", "Viewport")) + .SetGroup(WorkspaceMenuCategoryRef) + .SetIcon(FSlateIcon(FAppStyle::GetAppStyleSetName(), "GraphEditor.EventGraph_16x")); + + InTabManager->RegisterTabSpawner(FGenericGraphAssetEditorTabs::GenericGraphPropertyID, FOnSpawnTab::CreateSP(this, &FAssetEditor_GenericGraph::SpawnTab_Details)) + .SetDisplayName(LOCTEXT("DetailsTab", "Property")) + .SetGroup(WorkspaceMenuCategoryRef) + .SetIcon(FSlateIcon(FAppStyle::GetAppStyleSetName(), "LevelEditor.Tabs.Details")); + + InTabManager->RegisterTabSpawner(FGenericGraphAssetEditorTabs::GenericGraphEditorSettingsID, FOnSpawnTab::CreateSP(this, &FAssetEditor_GenericGraph::SpawnTab_EditorSettings)) + .SetDisplayName(LOCTEXT("EditorSettingsTab", "Generic Graph Editor Setttings")) + .SetGroup(WorkspaceMenuCategoryRef) + .SetIcon(FSlateIcon(FAppStyle::GetAppStyleSetName(), "LevelEditor.Tabs.Details")); +} + +void FAssetEditor_GenericGraph::UnregisterTabSpawners(const TSharedRef& InTabManager) +{ + FAssetEditorToolkit::UnregisterTabSpawners(InTabManager); + + InTabManager->UnregisterTabSpawner(FGenericGraphAssetEditorTabs::ViewportID); + InTabManager->UnregisterTabSpawner(FGenericGraphAssetEditorTabs::GenericGraphPropertyID); + InTabManager->UnregisterTabSpawner(FGenericGraphAssetEditorTabs::GenericGraphEditorSettingsID); +} + +FName FAssetEditor_GenericGraph::GetToolkitFName() const +{ + return FName("FGenericGraphEditor"); +} + +FText FAssetEditor_GenericGraph::GetBaseToolkitName() const +{ + return LOCTEXT("GenericGraphEditorAppLabel", "Generic Graph Editor"); +} + +FText FAssetEditor_GenericGraph::GetToolkitName() const +{ + const bool bDirtyState = EditingGraph->GetOutermost()->IsDirty(); + + FFormatNamedArguments Args; + Args.Add(TEXT("GenericGraphName"), FText::FromString(EditingGraph->GetName())); + Args.Add(TEXT("DirtyState"), bDirtyState ? FText::FromString(TEXT("*")) : FText::GetEmpty()); + return FText::Format(LOCTEXT("GenericGraphEditorToolkitName", "{GenericGraphName}{DirtyState}"), Args); +} + +FText FAssetEditor_GenericGraph::GetToolkitToolTipText() const +{ + return FAssetEditorToolkit::GetToolTipTextForObject(EditingGraph); +} + +FLinearColor FAssetEditor_GenericGraph::GetWorldCentricTabColorScale() const +{ + return FLinearColor::White; +} + +FString FAssetEditor_GenericGraph::GetWorldCentricTabPrefix() const +{ + return TEXT("GenericGraphEditor"); +} + +FString FAssetEditor_GenericGraph::GetDocumentationLink() const +{ + return TEXT(""); +} + +void FAssetEditor_GenericGraph::SaveAsset_Execute() +{ + if (EditingGraph != nullptr) + { + RebuildGenericGraph(); + } + + FAssetEditorToolkit::SaveAsset_Execute(); +} + +void FAssetEditor_GenericGraph::AddReferencedObjects(FReferenceCollector& Collector) +{ + Collector.AddReferencedObject(EditingGraph); + Collector.AddReferencedObject(EditingGraph->EdGraph); +} + +UGenericGraphEditorSettings* FAssetEditor_GenericGraph::GetSettings() const +{ + return GenricGraphEditorSettings; +} + +TSharedRef FAssetEditor_GenericGraph::SpawnTab_Viewport(const FSpawnTabArgs& Args) +{ + check(Args.GetTabId() == FGenericGraphAssetEditorTabs::ViewportID); + + TSharedRef SpawnedTab = SNew(SDockTab) + .Label(LOCTEXT("ViewportTab_Title", "Viewport")); + + if (ViewportWidget.IsValid()) + { + SpawnedTab->SetContent(ViewportWidget.ToSharedRef()); + } + + return SpawnedTab; +} + +TSharedRef FAssetEditor_GenericGraph::SpawnTab_Details(const FSpawnTabArgs& Args) +{ + check(Args.GetTabId() == FGenericGraphAssetEditorTabs::GenericGraphPropertyID); + + return SNew(SDockTab) +#if ENGINE_MAJOR_VERSION < 5 + .Icon(FAppStyle::GetBrush("LevelEditor.Tabs.Details")) +#endif // #if ENGINE_MAJOR_VERSION < 5 + .Label(LOCTEXT("Details_Title", "Property")) + [ + PropertyWidget.ToSharedRef() + ]; +} + +TSharedRef FAssetEditor_GenericGraph::SpawnTab_EditorSettings(const FSpawnTabArgs& Args) +{ + check(Args.GetTabId() == FGenericGraphAssetEditorTabs::GenericGraphEditorSettingsID); + + return SNew(SDockTab) +#if ENGINE_MAJOR_VERSION < 5 + .Icon(FAppStyle::GetBrush("LevelEditor.Tabs.Details")) +#endif // #if ENGINE_MAJOR_VERSION < 5 + .Label(LOCTEXT("EditorSettings_Title", "Generic Graph Editor Setttings")) + [ + EditorSettingsWidget.ToSharedRef() + ]; +} + +void FAssetEditor_GenericGraph::CreateInternalWidgets() +{ + ViewportWidget = CreateViewportWidget(); + + FDetailsViewArgs Args; + Args.bHideSelectionTip = true; + Args.NotifyHook = this; + + FPropertyEditorModule& PropertyModule = FModuleManager::LoadModuleChecked("PropertyEditor"); + PropertyWidget = PropertyModule.CreateDetailView(Args); + PropertyWidget->SetObject(EditingGraph); + PropertyWidget->OnFinishedChangingProperties().AddSP(this, &FAssetEditor_GenericGraph::OnFinishedChangingProperties); + + EditorSettingsWidget = PropertyModule.CreateDetailView(Args); + EditorSettingsWidget->SetObject(GenricGraphEditorSettings); +} + +TSharedRef FAssetEditor_GenericGraph::CreateViewportWidget() +{ + FGraphAppearanceInfo AppearanceInfo; + AppearanceInfo.CornerText = LOCTEXT("AppearanceCornerText_GenericGraph", "Generic Graph"); + + CreateCommandList(); + + SGraphEditor::FGraphEditorEvents InEvents; + InEvents.OnSelectionChanged = SGraphEditor::FOnSelectionChanged::CreateSP(this, &FAssetEditor_GenericGraph::OnSelectedNodesChanged); + InEvents.OnNodeDoubleClicked = FSingleNodeEvent::CreateSP(this, &FAssetEditor_GenericGraph::OnNodeDoubleClicked); + + return SNew(SGraphEditor) + .AdditionalCommands(GraphEditorCommands) + .IsEditable(true) + .Appearance(AppearanceInfo) + .GraphToEdit(EditingGraph->EdGraph) + .GraphEvents(InEvents) + .AutoExpandActionMenu(true) + .ShowGraphStateOverlay(false); +} + +void FAssetEditor_GenericGraph::BindCommands() +{ + ToolkitCommands->MapAction(FEditorCommands_GenericGraph::Get().GraphSettings, + FExecuteAction::CreateSP(this, &FAssetEditor_GenericGraph::GraphSettings), + FCanExecuteAction::CreateSP(this, &FAssetEditor_GenericGraph::CanGraphSettings) + ); + + ToolkitCommands->MapAction(FEditorCommands_GenericGraph::Get().AutoArrange, + FExecuteAction::CreateSP(this, &FAssetEditor_GenericGraph::AutoArrange), + FCanExecuteAction::CreateSP(this, &FAssetEditor_GenericGraph::CanAutoArrange) + ); +} + +void FAssetEditor_GenericGraph::CreateEdGraph() +{ + if (EditingGraph->EdGraph == nullptr) + { + EditingGraph->EdGraph = CastChecked(FBlueprintEditorUtils::CreateNewGraph(EditingGraph, NAME_None, UEdGraph_GenericGraph::StaticClass(), UAssetGraphSchema_GenericGraph::StaticClass())); + EditingGraph->EdGraph->bAllowDeletion = false; + + // Give the schema a chance to fill out any required nodes (like the results node) + const UEdGraphSchema* Schema = EditingGraph->EdGraph->GetSchema(); + Schema->CreateDefaultNodesForGraph(*EditingGraph->EdGraph); + } +} + +void FAssetEditor_GenericGraph::CreateCommandList() +{ + if (GraphEditorCommands.IsValid()) + { + return; + } + + GraphEditorCommands = MakeShareable(new FUICommandList); + + // Can't use CreateSP here because derived editor are already implementing TSharedFromThis + // however it should be safe, since commands are being used only within this editor + // if it ever crashes, this function will have to go away and be reimplemented in each derived class + + GraphEditorCommands->MapAction(FEditorCommands_GenericGraph::Get().GraphSettings, + FExecuteAction::CreateRaw(this, &FAssetEditor_GenericGraph::GraphSettings), + FCanExecuteAction::CreateRaw(this, &FAssetEditor_GenericGraph::CanGraphSettings)); + + GraphEditorCommands->MapAction(FEditorCommands_GenericGraph::Get().AutoArrange, + FExecuteAction::CreateRaw(this, &FAssetEditor_GenericGraph::AutoArrange), + FCanExecuteAction::CreateRaw(this, &FAssetEditor_GenericGraph::CanAutoArrange)); + + GraphEditorCommands->MapAction(FGenericCommands::Get().SelectAll, + FExecuteAction::CreateRaw(this, &FAssetEditor_GenericGraph::SelectAllNodes), + FCanExecuteAction::CreateRaw(this, &FAssetEditor_GenericGraph::CanSelectAllNodes) + ); + + GraphEditorCommands->MapAction(FGenericCommands::Get().Delete, + FExecuteAction::CreateRaw(this, &FAssetEditor_GenericGraph::DeleteSelectedNodes), + FCanExecuteAction::CreateRaw(this, &FAssetEditor_GenericGraph::CanDeleteNodes) + ); + + GraphEditorCommands->MapAction(FGenericCommands::Get().Copy, + FExecuteAction::CreateRaw(this, &FAssetEditor_GenericGraph::CopySelectedNodes), + FCanExecuteAction::CreateRaw(this, &FAssetEditor_GenericGraph::CanCopyNodes) + ); + + GraphEditorCommands->MapAction(FGenericCommands::Get().Cut, + FExecuteAction::CreateRaw(this, &FAssetEditor_GenericGraph::CutSelectedNodes), + FCanExecuteAction::CreateRaw(this, &FAssetEditor_GenericGraph::CanCutNodes) + ); + + GraphEditorCommands->MapAction(FGenericCommands::Get().Paste, + FExecuteAction::CreateRaw(this, &FAssetEditor_GenericGraph::PasteNodes), + FCanExecuteAction::CreateRaw(this, &FAssetEditor_GenericGraph::CanPasteNodes) + ); + + GraphEditorCommands->MapAction(FGenericCommands::Get().Duplicate, + FExecuteAction::CreateRaw(this, &FAssetEditor_GenericGraph::DuplicateNodes), + FCanExecuteAction::CreateRaw(this, &FAssetEditor_GenericGraph::CanDuplicateNodes) + ); + + GraphEditorCommands->MapAction(FGenericCommands::Get().Rename, + FExecuteAction::CreateSP(this, &FAssetEditor_GenericGraph::OnRenameNode), + FCanExecuteAction::CreateSP(this, &FAssetEditor_GenericGraph::CanRenameNodes) + ); +} + +TSharedPtr FAssetEditor_GenericGraph::GetCurrGraphEditor() const +{ + return ViewportWidget; +} + +FGraphPanelSelectionSet FAssetEditor_GenericGraph::GetSelectedNodes() const +{ + FGraphPanelSelectionSet CurrentSelection; + TSharedPtr FocusedGraphEd = GetCurrGraphEditor(); + if (FocusedGraphEd.IsValid()) + { + CurrentSelection = FocusedGraphEd->GetSelectedNodes(); + } + + return CurrentSelection; +} + +void FAssetEditor_GenericGraph::RebuildGenericGraph() +{ + if (EditingGraph == nullptr) + { + LOG_WARNING(TEXT("FGenericGraphAssetEditor::RebuildGenericGraph EditingGraph is nullptr")); + return; + } + + UEdGraph_GenericGraph* EdGraph = Cast(EditingGraph->EdGraph); + check(EdGraph != nullptr); + + EdGraph->RebuildGenericGraph(); +} + +void FAssetEditor_GenericGraph::SelectAllNodes() +{ + TSharedPtr CurrentGraphEditor = GetCurrGraphEditor(); + if (CurrentGraphEditor.IsValid()) + { + CurrentGraphEditor->SelectAllNodes(); + } +} + +bool FAssetEditor_GenericGraph::CanSelectAllNodes() +{ + return true; +} + +void FAssetEditor_GenericGraph::DeleteSelectedNodes() +{ + TSharedPtr CurrentGraphEditor = GetCurrGraphEditor(); + if (!CurrentGraphEditor.IsValid()) + { + return; + } + + const FScopedTransaction Transaction(FGenericCommands::Get().Delete->GetDescription()); + + CurrentGraphEditor->GetCurrentGraph()->Modify(); + + const FGraphPanelSelectionSet SelectedNodes = CurrentGraphEditor->GetSelectedNodes(); + CurrentGraphEditor->ClearSelectionSet(); + + for (FGraphPanelSelectionSet::TConstIterator NodeIt(SelectedNodes); NodeIt; ++NodeIt) + { + UEdGraphNode* EdNode = Cast(*NodeIt); + if (EdNode == nullptr || !EdNode->CanUserDeleteNode()) + continue;; + + if (UEdNode_GenericGraphNode* EdNode_Node = Cast(EdNode)) + { + EdNode_Node->Modify(); + + const UEdGraphSchema* Schema = EdNode_Node->GetSchema(); + if (Schema != nullptr) + { + Schema->BreakNodeLinks(*EdNode_Node); + } + + EdNode_Node->DestroyNode(); + } + else + { + EdNode->Modify(); + EdNode->DestroyNode(); + } + } +} + +bool FAssetEditor_GenericGraph::CanDeleteNodes() +{ + // If any of the nodes can be deleted then we should allow deleting + const FGraphPanelSelectionSet SelectedNodes = GetSelectedNodes(); + for (FGraphPanelSelectionSet::TConstIterator SelectedIter(SelectedNodes); SelectedIter; ++SelectedIter) + { + UEdGraphNode* Node = Cast(*SelectedIter); + if (Node != nullptr && Node->CanUserDeleteNode()) + { + return true; + } + } + + return false; +} + +void FAssetEditor_GenericGraph::DeleteSelectedDuplicatableNodes() +{ + TSharedPtr CurrentGraphEditor = GetCurrGraphEditor(); + if (!CurrentGraphEditor.IsValid()) + { + return; + } + + const FGraphPanelSelectionSet OldSelectedNodes = CurrentGraphEditor->GetSelectedNodes(); + CurrentGraphEditor->ClearSelectionSet(); + + for (FGraphPanelSelectionSet::TConstIterator SelectedIter(OldSelectedNodes); SelectedIter; ++SelectedIter) + { + UEdGraphNode* Node = Cast(*SelectedIter); + if (Node && Node->CanDuplicateNode()) + { + CurrentGraphEditor->SetNodeSelection(Node, true); + } + } + + // Delete the duplicatable nodes + DeleteSelectedNodes(); + + CurrentGraphEditor->ClearSelectionSet(); + + for (FGraphPanelSelectionSet::TConstIterator SelectedIter(OldSelectedNodes); SelectedIter; ++SelectedIter) + { + if (UEdGraphNode* Node = Cast(*SelectedIter)) + { + CurrentGraphEditor->SetNodeSelection(Node, true); + } + } +} + +void FAssetEditor_GenericGraph::CutSelectedNodes() +{ + CopySelectedNodes(); + DeleteSelectedDuplicatableNodes(); +} + +bool FAssetEditor_GenericGraph::CanCutNodes() +{ + return CanCopyNodes() && CanDeleteNodes(); +} + +void FAssetEditor_GenericGraph::CopySelectedNodes() +{ + // Export the selected nodes and place the text on the clipboard + FGraphPanelSelectionSet SelectedNodes = GetSelectedNodes(); + + FString ExportedText; + + for (FGraphPanelSelectionSet::TIterator SelectedIter(SelectedNodes); SelectedIter; ++SelectedIter) + { + UEdGraphNode* Node = Cast(*SelectedIter); + if (Node == nullptr) + { + SelectedIter.RemoveCurrent(); + continue; + } + + if (UEdNode_GenericGraphEdge* EdNode_Edge = Cast(*SelectedIter)) + { + UEdNode_GenericGraphNode* StartNode = EdNode_Edge->GetStartNode(); + UEdNode_GenericGraphNode* EndNode = EdNode_Edge->GetEndNode(); + + if (!SelectedNodes.Contains(StartNode) || !SelectedNodes.Contains(EndNode)) + { + SelectedIter.RemoveCurrent(); + continue; + } + } + + Node->PrepareForCopying(); + } + + FEdGraphUtilities::ExportNodesToText(SelectedNodes, ExportedText); + FPlatformApplicationMisc::ClipboardCopy(*ExportedText); +} + +bool FAssetEditor_GenericGraph::CanCopyNodes() +{ + // If any of the nodes can be duplicated then we should allow copying + const FGraphPanelSelectionSet SelectedNodes = GetSelectedNodes(); + for (FGraphPanelSelectionSet::TConstIterator SelectedIter(SelectedNodes); SelectedIter; ++SelectedIter) + { + UEdGraphNode* Node = Cast(*SelectedIter); + if (Node && Node->CanDuplicateNode()) + { + return true; + } + } + + return false; +} + +void FAssetEditor_GenericGraph::PasteNodes() +{ + TSharedPtr CurrentGraphEditor = GetCurrGraphEditor(); + if (CurrentGraphEditor.IsValid()) + { + PasteNodesHere(CurrentGraphEditor->GetPasteLocation()); + } +} + +void FAssetEditor_GenericGraph::PasteNodesHere(const FVector2D& Location) +{ + // Find the graph editor with focus + TSharedPtr CurrentGraphEditor = GetCurrGraphEditor(); + if (!CurrentGraphEditor.IsValid()) + { + return; + } + // Select the newly pasted stuff + UEdGraph* EdGraph = CurrentGraphEditor->GetCurrentGraph(); + + { + const FScopedTransaction Transaction(FGenericCommands::Get().Paste->GetDescription()); + EdGraph->Modify(); + + // Clear the selection set (newly pasted stuff will be selected) + CurrentGraphEditor->ClearSelectionSet(); + + // Grab the text to paste from the clipboard. + FString TextToImport; + FPlatformApplicationMisc::ClipboardPaste(TextToImport); + + // Import the nodes + TSet PastedNodes; + FEdGraphUtilities::ImportNodesFromText(EdGraph, TextToImport, PastedNodes); + + //Average position of nodes so we can move them while still maintaining relative distances to each other + FVector2D AvgNodePosition(0.0f, 0.0f); + + for (TSet::TIterator It(PastedNodes); It; ++It) + { + UEdGraphNode* Node = *It; + AvgNodePosition.X += Node->NodePosX; + AvgNodePosition.Y += Node->NodePosY; + } + + float InvNumNodes = 1.0f / float(PastedNodes.Num()); + AvgNodePosition.X *= InvNumNodes; + AvgNodePosition.Y *= InvNumNodes; + + for (TSet::TIterator It(PastedNodes); It; ++It) + { + UEdGraphNode* Node = *It; + CurrentGraphEditor->SetNodeSelection(Node, true); + + Node->NodePosX = (Node->NodePosX - AvgNodePosition.X) + Location.X; + Node->NodePosY = (Node->NodePosY - AvgNodePosition.Y) + Location.Y; + + Node->SnapToGrid(16); + + // Give new node a different Guid from the old one + Node->CreateNewGuid(); + } + } + + // Update UI + CurrentGraphEditor->NotifyGraphChanged(); + + UObject* GraphOwner = EdGraph->GetOuter(); + if (GraphOwner) + { + GraphOwner->PostEditChange(); + GraphOwner->MarkPackageDirty(); + } +} + +bool FAssetEditor_GenericGraph::CanPasteNodes() +{ + TSharedPtr CurrentGraphEditor = GetCurrGraphEditor(); + if (!CurrentGraphEditor.IsValid()) + { + return false; + } + + FString ClipboardContent; + FPlatformApplicationMisc::ClipboardPaste(ClipboardContent); + + return FEdGraphUtilities::CanImportNodesFromText(CurrentGraphEditor->GetCurrentGraph(), ClipboardContent); +} + +void FAssetEditor_GenericGraph::DuplicateNodes() +{ + CopySelectedNodes(); + PasteNodes(); +} + +bool FAssetEditor_GenericGraph::CanDuplicateNodes() +{ + return CanCopyNodes(); +} + +void FAssetEditor_GenericGraph::GraphSettings() +{ + PropertyWidget->SetObject(EditingGraph); +} + +bool FAssetEditor_GenericGraph::CanGraphSettings() const +{ + return true; +} + +void FAssetEditor_GenericGraph::AutoArrange() +{ + UEdGraph_GenericGraph* EdGraph = Cast(EditingGraph->EdGraph); + check(EdGraph != nullptr); + + const FScopedTransaction Transaction(LOCTEXT("GenericGraphEditorAutoArrange", "Generic Graph Editor: Auto Arrange")); + + EdGraph->Modify(); + + UAutoLayoutStrategy* LayoutStrategy = nullptr; + switch (GenricGraphEditorSettings->AutoLayoutStrategy) + { + case EAutoLayoutStrategy::Tree: + LayoutStrategy = NewObject(EdGraph, UTreeLayoutStrategy::StaticClass()); + break; + case EAutoLayoutStrategy::ForceDirected: + LayoutStrategy = NewObject(EdGraph, UForceDirectedLayoutStrategy::StaticClass()); + break; + default: + break; + } + + if (LayoutStrategy != nullptr) + { + LayoutStrategy->Settings = GenricGraphEditorSettings; + LayoutStrategy->Layout(EdGraph); + LayoutStrategy->ConditionalBeginDestroy(); + } + else + { + LOG_ERROR(TEXT("FAssetEditor_GenericGraph::AutoArrange LayoutStrategy is null.")); + } +} + +bool FAssetEditor_GenericGraph::CanAutoArrange() const +{ + return EditingGraph != nullptr && Cast(EditingGraph->EdGraph) != nullptr; +} + +void FAssetEditor_GenericGraph::OnRenameNode() +{ + TSharedPtr CurrentGraphEditor = GetCurrGraphEditor(); + if (CurrentGraphEditor.IsValid()) + { + const FGraphPanelSelectionSet SelectedNodes = GetSelectedNodes(); + for (FGraphPanelSelectionSet::TConstIterator NodeIt(SelectedNodes); NodeIt; ++NodeIt) + { + UEdGraphNode* SelectedNode = Cast(*NodeIt); + if (SelectedNode != NULL && SelectedNode->bCanRenameNode) + { + CurrentGraphEditor->IsNodeTitleVisible(SelectedNode, true); + break; + } + } + } +} + +bool FAssetEditor_GenericGraph::CanRenameNodes() const +{ + UEdGraph_GenericGraph* EdGraph = Cast(EditingGraph->EdGraph); + check(EdGraph != nullptr); + + UGenericGraph* Graph = EdGraph->GetGenericGraph(); + check(Graph != nullptr) + + return Graph->bCanRenameNode && GetSelectedNodes().Num() == 1; +} + +void FAssetEditor_GenericGraph::OnSelectedNodesChanged(const TSet& NewSelection) +{ + TArray Selection; + + for (UObject* SelectionEntry : NewSelection) + { + Selection.Add(SelectionEntry); + } + + if (Selection.Num() == 0) + { + PropertyWidget->SetObject(EditingGraph); + + } + else + { + PropertyWidget->SetObjects(Selection); + } +} + +void FAssetEditor_GenericGraph::OnNodeDoubleClicked(UEdGraphNode* Node) +{ + +} + +void FAssetEditor_GenericGraph::OnFinishedChangingProperties(const FPropertyChangedEvent& PropertyChangedEvent) +{ + if (EditingGraph == nullptr) + return; + + EditingGraph->EdGraph->GetSchema()->ForceVisualizationCacheClear(); +} + +#if ENGINE_MAJOR_VERSION < 5 +void FAssetEditor_GenericGraph::OnPackageSaved(const FString& PackageFileName, UObject* Outer) +{ + RebuildGenericGraph(); +} +#else // #if ENGINE_MAJOR_VERSION < 5 +void FAssetEditor_GenericGraph::OnPackageSavedWithContext(const FString& PackageFileName, UPackage* Package, FObjectPostSaveContext ObjectSaveContext) +{ + RebuildGenericGraph(); +} +#endif // #else // #if ENGINE_MAJOR_VERSION < 5 + +void FAssetEditor_GenericGraph::RegisterToolbarTab(const TSharedRef& InTabManager) +{ + FAssetEditorToolkit::RegisterTabSpawners(InTabManager); +} + + +#undef LOCTEXT_NAMESPACE + diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/AssetGraphSchema_GenericGraph.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/AssetGraphSchema_GenericGraph.cpp new file mode 100644 index 00000000..8c873f8d --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/AssetGraphSchema_GenericGraph.cpp @@ -0,0 +1,476 @@ +#include "GenericGraphAssetEditor/AssetGraphSchema_GenericGraph.h" +#include "ToolMenus.h" +#include "GenericGraphEditorPCH.h" +#include "GenericGraphAssetEditor/EdNode_GenericGraphNode.h" +#include "GenericGraphAssetEditor/EdNode_GenericGraphEdge.h" +#include "GenericGraphAssetEditor/ConnectionDrawingPolicy_GenericGraph.h" +#include "GraphEditorActions.h" +#include "Framework/Commands/GenericCommands.h" +#include "AutoLayout/ForceDirectedLayoutStrategy.h" +#include "AutoLayout/TreeLayoutStrategy.h" + +#define LOCTEXT_NAMESPACE "AssetSchema_GenericGraph" + +int32 UAssetGraphSchema_GenericGraph::CurrentCacheRefreshID = 0; + + +class FNodeVisitorCycleChecker +{ +public: + /** Check whether a loop in the graph would be caused by linking the passed-in nodes */ + bool CheckForLoop(UEdGraphNode* StartNode, UEdGraphNode* EndNode) + { + + VisitedNodes.Add(StartNode); + + return TraverseNodes(EndNode); + } + +private: + bool TraverseNodes(UEdGraphNode* Node) + { + VisitedNodes.Add(Node); + + for (auto MyPin : Node->Pins) + { + if (MyPin->Direction == EGPD_Output) + { + for (auto OtherPin : MyPin->LinkedTo) + { + UEdGraphNode* OtherNode = OtherPin->GetOwningNode(); + if (VisitedNodes.Contains(OtherNode)) + { + // Only an issue if this is a back-edge + return false; + } + else if (!FinishedNodes.Contains(OtherNode)) + { + // Only should traverse if this node hasn't been traversed + if (!TraverseNodes(OtherNode)) + return false; + } + } + } + } + + VisitedNodes.Remove(Node); + FinishedNodes.Add(Node); + return true; + }; + + + TSet VisitedNodes; + TSet FinishedNodes; +}; + +UEdGraphNode* FAssetSchemaAction_GenericGraph_NewNode::PerformAction(class UEdGraph* ParentGraph, UEdGraphPin* FromPin, const FVector2D Location, bool bSelectNewNode /*= true*/) +{ + UEdGraphNode* ResultNode = nullptr; + + if (NodeTemplate != nullptr) + { + const FScopedTransaction Transaction(LOCTEXT("GenericGraphEditorNewNode", "Generic Graph Editor: New Node")); + ParentGraph->Modify(); + if (FromPin != nullptr) + FromPin->Modify(); + + NodeTemplate->Rename(nullptr, ParentGraph); + ParentGraph->AddNode(NodeTemplate, true, bSelectNewNode); + + NodeTemplate->CreateNewGuid(); + NodeTemplate->PostPlacedNewNode(); + NodeTemplate->AllocateDefaultPins(); + NodeTemplate->AutowireNewNode(FromPin); + + NodeTemplate->NodePosX = Location.X; + NodeTemplate->NodePosY = Location.Y; + + NodeTemplate->GenericGraphNode->SetFlags(RF_Transactional); + NodeTemplate->SetFlags(RF_Transactional); + + ResultNode = NodeTemplate; + } + + return ResultNode; +} + +void FAssetSchemaAction_GenericGraph_NewNode::AddReferencedObjects(FReferenceCollector& Collector) +{ + FEdGraphSchemaAction::AddReferencedObjects(Collector); + Collector.AddReferencedObject(NodeTemplate); +} + +UEdGraphNode* FAssetSchemaAction_GenericGraph_NewEdge::PerformAction(class UEdGraph* ParentGraph, UEdGraphPin* FromPin, const FVector2D Location, bool bSelectNewNode /*= true*/) +{ + UEdGraphNode* ResultNode = nullptr; + + if (NodeTemplate != nullptr) + { + const FScopedTransaction Transaction(LOCTEXT("GenericGraphEditorNewEdge", "Generic Graph Editor: New Edge")); + ParentGraph->Modify(); + if (FromPin != nullptr) + FromPin->Modify(); + + NodeTemplate->Rename(nullptr, ParentGraph); + ParentGraph->AddNode(NodeTemplate, true, bSelectNewNode); + + NodeTemplate->CreateNewGuid(); + NodeTemplate->PostPlacedNewNode(); + NodeTemplate->AllocateDefaultPins(); + NodeTemplate->AutowireNewNode(FromPin); + + NodeTemplate->NodePosX = Location.X; + NodeTemplate->NodePosY = Location.Y; + + NodeTemplate->GenericGraphEdge->SetFlags(RF_Transactional); + NodeTemplate->SetFlags(RF_Transactional); + + ResultNode = NodeTemplate; + } + + return ResultNode; +} + +void FAssetSchemaAction_GenericGraph_NewEdge::AddReferencedObjects(FReferenceCollector& Collector) +{ + FEdGraphSchemaAction::AddReferencedObjects(Collector); + Collector.AddReferencedObject(NodeTemplate); +} + +void UAssetGraphSchema_GenericGraph::GetBreakLinkToSubMenuActions(UToolMenu* Menu, UEdGraphPin* InGraphPin) +{ + // Make sure we have a unique name for every entry in the list + TMap< FString, uint32 > LinkTitleCount; + + FToolMenuSection& Section = Menu->FindOrAddSection("GenericGraphAssetGraphSchemaPinActions"); + + // Add all the links we could break from + for (TArray::TConstIterator Links(InGraphPin->LinkedTo); Links; ++Links) + { + UEdGraphPin* Pin = *Links; + FString TitleString = Pin->GetOwningNode()->GetNodeTitle(ENodeTitleType::ListView).ToString(); + FText Title = FText::FromString(TitleString); + if (Pin->PinName != TEXT("")) + { + TitleString = FString::Printf(TEXT("%s (%s)"), *TitleString, *Pin->PinName.ToString()); + + // Add name of connection if possible + FFormatNamedArguments Args; + Args.Add(TEXT("NodeTitle"), Title); + Args.Add(TEXT("PinName"), Pin->GetDisplayName()); + Title = FText::Format(LOCTEXT("BreakDescPin", "{NodeTitle} ({PinName})"), Args); + } + + uint32& Count = LinkTitleCount.FindOrAdd(TitleString); + + FText Description; + FFormatNamedArguments Args; + Args.Add(TEXT("NodeTitle"), Title); + Args.Add(TEXT("NumberOfNodes"), Count); + + if (Count == 0) + { + Description = FText::Format(LOCTEXT("BreakDesc", "Break link to {NodeTitle}"), Args); + } + else + { + Description = FText::Format(LOCTEXT("BreakDescMulti", "Break link to {NodeTitle} ({NumberOfNodes})"), Args); + } + ++Count; + + Section.AddMenuEntry(NAME_None, Description, Description, FSlateIcon(), FUIAction( + FExecuteAction::CreateUObject(this, &UAssetGraphSchema_GenericGraph::BreakSinglePinLink, const_cast(InGraphPin), *Links))); + } +} + +EGraphType UAssetGraphSchema_GenericGraph::GetGraphType(const UEdGraph* TestEdGraph) const +{ + return GT_StateMachine; +} + +void UAssetGraphSchema_GenericGraph::GetGraphContextActions(FGraphContextMenuBuilder& ContextMenuBuilder) const +{ + UGenericGraph* Graph = CastChecked(ContextMenuBuilder.CurrentGraph->GetOuter()); + + if (Graph->NodeType == nullptr) + { + return; + } + + const bool bNoParent = (ContextMenuBuilder.FromPin == NULL); + + const FText AddToolTip = LOCTEXT("NewGenericGraphNodeTooltip", "Add node here"); + + TSet > Visited; + + FText Desc = Graph->NodeType.GetDefaultObject()->ContextMenuName; + + if (Desc.IsEmpty()) + { + FString Title = Graph->NodeType->GetName(); + Title.RemoveFromEnd("_C"); + Desc = FText::FromString(Title); + } + + if (!Graph->NodeType->HasAnyClassFlags(CLASS_Abstract)) + { + TSharedPtr NewNodeAction(new FAssetSchemaAction_GenericGraph_NewNode(LOCTEXT("GenericGraphNodeAction", "Generic Graph Node"), Desc, AddToolTip, 0)); + NewNodeAction->NodeTemplate = NewObject(ContextMenuBuilder.OwnerOfTemporaries); + NewNodeAction->NodeTemplate->GenericGraphNode = NewObject(NewNodeAction->NodeTemplate, Graph->NodeType); + NewNodeAction->NodeTemplate->GenericGraphNode->Graph = Graph; + ContextMenuBuilder.AddAction(NewNodeAction); + + Visited.Add(Graph->NodeType); + } + + for (TObjectIterator It; It; ++It) + { + if (It->IsChildOf(Graph->NodeType) && !It->HasAnyClassFlags(CLASS_Abstract) && !Visited.Contains(*It)) + { + TSubclassOf NodeType = *It; + + if (It->GetName().StartsWith("REINST") || It->GetName().StartsWith("SKEL")) + continue; + + if (!Graph->GetClass()->IsChildOf(NodeType.GetDefaultObject()->CompatibleGraphType)) + continue; + + Desc = NodeType.GetDefaultObject()->ContextMenuName; + + if (Desc.IsEmpty()) + { + FString Title = NodeType->GetName(); + Title.RemoveFromEnd("_C"); + Desc = FText::FromString(Title); + } + + TSharedPtr Action(new FAssetSchemaAction_GenericGraph_NewNode(LOCTEXT("GenericGraphNodeAction", "Generic Graph Node"), Desc, AddToolTip, 0)); + Action->NodeTemplate = NewObject(ContextMenuBuilder.OwnerOfTemporaries); + Action->NodeTemplate->GenericGraphNode = NewObject(Action->NodeTemplate, NodeType); + Action->NodeTemplate->GenericGraphNode->Graph = Graph; + ContextMenuBuilder.AddAction(Action); + + Visited.Add(NodeType); + } + } +} + +void UAssetGraphSchema_GenericGraph::GetContextMenuActions(UToolMenu* Menu, UGraphNodeContextMenuContext* Context) const +{ + if (Context->Pin) + { + { + FToolMenuSection& Section = Menu->AddSection("GenericGraphAssetGraphSchemaNodeActions", LOCTEXT("PinActionsMenuHeader", "Pin Actions")); + // Only display the 'Break Links' option if there is a link to break! + if (Context->Pin->LinkedTo.Num() > 0) + { + Section.AddMenuEntry(FGraphEditorCommands::Get().BreakPinLinks); + + // add sub menu for break link to + if (Context->Pin->LinkedTo.Num() > 1) + { + Section.AddSubMenu( + "BreakLinkTo", + LOCTEXT("BreakLinkTo", "Break Link To..."), + LOCTEXT("BreakSpecificLinks", "Break a specific link..."), + FNewToolMenuDelegate::CreateUObject((UAssetGraphSchema_GenericGraph* const)this, &UAssetGraphSchema_GenericGraph::GetBreakLinkToSubMenuActions, const_cast(Context->Pin))); + } + else + { + ((UAssetGraphSchema_GenericGraph* const)this)->GetBreakLinkToSubMenuActions(Menu, const_cast(Context->Pin)); + } + } + } + } + else if (Context->Node) + { + { + FToolMenuSection& Section = Menu->AddSection("GenericGraphAssetGraphSchemaNodeActions", LOCTEXT("ClassActionsMenuHeader", "Node Actions")); + Section.AddMenuEntry(FGenericCommands::Get().Delete); + Section.AddMenuEntry(FGenericCommands::Get().Cut); + Section.AddMenuEntry(FGenericCommands::Get().Copy); + Section.AddMenuEntry(FGenericCommands::Get().Duplicate); + + Section.AddMenuEntry(FGraphEditorCommands::Get().BreakNodeLinks); + } + } + + Super::GetContextMenuActions(Menu, Context); +} + +const FPinConnectionResponse UAssetGraphSchema_GenericGraph::CanCreateConnection(const UEdGraphPin* A, const UEdGraphPin* B) const +{ + // Make sure the pins are not on the same node + if (A->GetOwningNode() == B->GetOwningNode()) + { + return FPinConnectionResponse(CONNECT_RESPONSE_DISALLOW, LOCTEXT("PinErrorSameNode", "Can't connect node to itself")); + } + + const UEdGraphPin *Out = A; + const UEdGraphPin *In = B; + + UEdNode_GenericGraphNode* EdNode_Out = Cast(Out->GetOwningNode()); + UEdNode_GenericGraphNode* EdNode_In = Cast(In->GetOwningNode()); + + if (EdNode_Out == nullptr || EdNode_In == nullptr) + { + return FPinConnectionResponse(CONNECT_RESPONSE_DISALLOW, LOCTEXT("PinError", "Not a valid UGenericGraphEdNode")); + } + + //Determine if we can have cycles or not + bool bAllowCycles = false; + auto EdGraph = Cast(Out->GetOwningNode()->GetGraph()); + if (EdGraph != nullptr) + { + bAllowCycles = EdGraph->GetGenericGraph()->bCanBeCyclical; + } + + // check for cycles + FNodeVisitorCycleChecker CycleChecker; + if (!bAllowCycles && !CycleChecker.CheckForLoop(Out->GetOwningNode(), In->GetOwningNode())) + { + return FPinConnectionResponse(CONNECT_RESPONSE_DISALLOW, LOCTEXT("PinErrorCycle", "Can't create a graph cycle")); + } + + FText ErrorMessage; + if (!EdNode_Out->GenericGraphNode->CanCreateConnectionTo(EdNode_In->GenericGraphNode, EdNode_Out->GetOutputPin()->LinkedTo.Num(), ErrorMessage)) + { + return FPinConnectionResponse(CONNECT_RESPONSE_DISALLOW, ErrorMessage); + } + if (!EdNode_In->GenericGraphNode->CanCreateConnectionFrom(EdNode_Out->GenericGraphNode, EdNode_In->GetInputPin()->LinkedTo.Num(), ErrorMessage)) + { + return FPinConnectionResponse(CONNECT_RESPONSE_DISALLOW, ErrorMessage); + } + + + if (EdNode_Out->GenericGraphNode->GetGraph()->bEdgeEnabled) + { + return FPinConnectionResponse(CONNECT_RESPONSE_MAKE_WITH_CONVERSION_NODE, LOCTEXT("PinConnect", "Connect nodes with edge")); + } + else + { + return FPinConnectionResponse(CONNECT_RESPONSE_MAKE, LOCTEXT("PinConnect", "Connect nodes")); + } +} + +bool UAssetGraphSchema_GenericGraph::TryCreateConnection(UEdGraphPin* A, UEdGraphPin* B) const +{ + // We don't actually care about the pin, we want the node that is being dragged between + UEdNode_GenericGraphNode* NodeA = Cast(A->GetOwningNode()); + UEdNode_GenericGraphNode* NodeB = Cast(B->GetOwningNode()); + + // Check that this edge doesn't already exist + for (UEdGraphPin *TestPin : NodeA->GetOutputPin()->LinkedTo) + { + UEdGraphNode* ChildNode = TestPin->GetOwningNode(); + if (UEdNode_GenericGraphEdge* EdNode_Edge = Cast(ChildNode)) + { + ChildNode = EdNode_Edge->GetEndNode(); + } + + if (ChildNode == NodeB) + return false; + } + + if (NodeA && NodeB) + { + // Always create connections from node A to B, don't allow adding in reverse + Super::TryCreateConnection(NodeA->GetOutputPin(), NodeB->GetInputPin()); + return true; + } + else + { + return false; + } +} + +bool UAssetGraphSchema_GenericGraph::CreateAutomaticConversionNodeAndConnections(UEdGraphPin* A, UEdGraphPin* B) const +{ + UEdNode_GenericGraphNode* NodeA = Cast(A->GetOwningNode()); + UEdNode_GenericGraphNode* NodeB = Cast(B->GetOwningNode()); + + // Are nodes and pins all valid? + if (!NodeA || !NodeA->GetOutputPin() || !NodeB || !NodeB->GetInputPin()) + return false; + + UGenericGraph* Graph = NodeA->GenericGraphNode->GetGraph(); + + FVector2D InitPos((NodeA->NodePosX + NodeB->NodePosX) / 2, (NodeA->NodePosY + NodeB->NodePosY) / 2); + + FAssetSchemaAction_GenericGraph_NewEdge Action; + Action.NodeTemplate = NewObject(NodeA->GetGraph()); + Action.NodeTemplate->SetEdge(NewObject(Action.NodeTemplate, Graph->EdgeType)); + UEdNode_GenericGraphEdge* EdgeNode = Cast(Action.PerformAction(NodeA->GetGraph(), nullptr, InitPos, false)); + + // Always create connections from node A to B, don't allow adding in reverse + EdgeNode->CreateConnections(NodeA, NodeB); + + return true; +} + +class FConnectionDrawingPolicy* UAssetGraphSchema_GenericGraph::CreateConnectionDrawingPolicy(int32 InBackLayerID, int32 InFrontLayerID, float InZoomFactor, const FSlateRect& InClippingRect, class FSlateWindowElementList& InDrawElements, class UEdGraph* InGraphObj) const +{ + return new FConnectionDrawingPolicy_GenericGraph(InBackLayerID, InFrontLayerID, InZoomFactor, InClippingRect, InDrawElements, InGraphObj); +} + +FLinearColor UAssetGraphSchema_GenericGraph::GetPinTypeColor(const FEdGraphPinType& PinType) const +{ + return FColor::White; +} + +void UAssetGraphSchema_GenericGraph::BreakNodeLinks(UEdGraphNode& TargetNode) const +{ + const FScopedTransaction Transaction(NSLOCTEXT("UnrealEd", "GraphEd_BreakNodeLinks", "Break Node Links")); + + Super::BreakNodeLinks(TargetNode); +} + +void UAssetGraphSchema_GenericGraph::BreakPinLinks(UEdGraphPin& TargetPin, bool bSendsNodeNotifcation) const +{ + const FScopedTransaction Transaction(NSLOCTEXT("UnrealEd", "GraphEd_BreakPinLinks", "Break Pin Links")); + + Super::BreakPinLinks(TargetPin, bSendsNodeNotifcation); +} + +void UAssetGraphSchema_GenericGraph::BreakSinglePinLink(UEdGraphPin* SourcePin, UEdGraphPin* TargetPin) const +{ + const FScopedTransaction Transaction(NSLOCTEXT("UnrealEd", "GraphEd_BreakSinglePinLink", "Break Pin Link")); + + Super::BreakSinglePinLink(SourcePin, TargetPin); +} + +UEdGraphPin* UAssetGraphSchema_GenericGraph::DropPinOnNode(UEdGraphNode* InTargetNode, const FName& InSourcePinName, const FEdGraphPinType& InSourcePinType, EEdGraphPinDirection InSourcePinDirection) const +{ + UEdNode_GenericGraphNode* EdNode = Cast(InTargetNode); + switch (InSourcePinDirection) + { + case EGPD_Input: + return EdNode->GetOutputPin(); + case EGPD_Output: + return EdNode->GetInputPin(); + default: + return nullptr; + } +} + +bool UAssetGraphSchema_GenericGraph::SupportsDropPinOnNode(UEdGraphNode* InTargetNode, const FEdGraphPinType& InSourcePinType, EEdGraphPinDirection InSourcePinDirection, FText& OutErrorMessage) const +{ + return Cast(InTargetNode) != nullptr; +} + +bool UAssetGraphSchema_GenericGraph::IsCacheVisualizationOutOfDate(int32 InVisualizationCacheID) const +{ + return CurrentCacheRefreshID != InVisualizationCacheID; +} + +int32 UAssetGraphSchema_GenericGraph::GetCurrentVisualizationCacheID() const +{ + return CurrentCacheRefreshID; +} + +void UAssetGraphSchema_GenericGraph::ForceVisualizationCacheClear() const +{ + ++CurrentCacheRefreshID; +} + +#undef LOCTEXT_NAMESPACE diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/ConnectionDrawingPolicy_GenericGraph.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/ConnectionDrawingPolicy_GenericGraph.cpp new file mode 100644 index 00000000..a727293d --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/ConnectionDrawingPolicy_GenericGraph.cpp @@ -0,0 +1,149 @@ +#include "GenericGraphAssetEditor/ConnectionDrawingPolicy_GenericGraph.h" +#include "GenericGraphAssetEditor/EdNode_GenericGraphNode.h" +#include "GenericGraphAssetEditor/EdNode_GenericGraphEdge.h" + +FConnectionDrawingPolicy_GenericGraph::FConnectionDrawingPolicy_GenericGraph(int32 InBackLayerID, int32 InFrontLayerID, float ZoomFactor, const FSlateRect& InClippingRect, FSlateWindowElementList& InDrawElements, UEdGraph* InGraphObj) + : FConnectionDrawingPolicy(InBackLayerID, InFrontLayerID, ZoomFactor, InClippingRect, InDrawElements) + , GraphObj(InGraphObj) +{ +} + +void FConnectionDrawingPolicy_GenericGraph::DetermineWiringStyle(UEdGraphPin* OutputPin, UEdGraphPin* InputPin, /*inout*/ FConnectionParams& Params) +{ + Params.AssociatedPin1 = OutputPin; + Params.AssociatedPin2 = InputPin; + Params.WireThickness = 1.5f; + + const bool bDeemphasizeUnhoveredPins = HoveredPins.Num() > 0; + if (bDeemphasizeUnhoveredPins) + { + ApplyHoverDeemphasis(OutputPin, InputPin, /*inout*/ Params.WireThickness, /*inout*/ Params.WireColor); + } +} + +void FConnectionDrawingPolicy_GenericGraph::Draw(TMap, FArrangedWidget>& InPinGeometries, FArrangedChildren& ArrangedNodes) +{ + // Build an acceleration structure to quickly find geometry for the nodes + NodeWidgetMap.Empty(); + for (int32 NodeIndex = 0; NodeIndex < ArrangedNodes.Num(); ++NodeIndex) + { + FArrangedWidget& CurWidget = ArrangedNodes[NodeIndex]; + TSharedRef ChildNode = StaticCastSharedRef(CurWidget.Widget); + NodeWidgetMap.Add(ChildNode->GetNodeObj(), NodeIndex); + } + + // Now draw + FConnectionDrawingPolicy::Draw(InPinGeometries, ArrangedNodes); +} + +void FConnectionDrawingPolicy_GenericGraph::DrawPreviewConnector(const FGeometry& PinGeometry, const FVector2D& StartPoint, const FVector2D& EndPoint, UEdGraphPin* Pin) +{ + FConnectionParams Params; + DetermineWiringStyle(Pin, nullptr, /*inout*/ Params); + + if (Pin->Direction == EEdGraphPinDirection::EGPD_Output) + { + DrawSplineWithArrow(FGeometryHelper::FindClosestPointOnGeom(PinGeometry, EndPoint), EndPoint, Params); + } + else + { + DrawSplineWithArrow(FGeometryHelper::FindClosestPointOnGeom(PinGeometry, StartPoint), StartPoint, Params); + } +} + +void FConnectionDrawingPolicy_GenericGraph::DrawSplineWithArrow(const FVector2D& StartAnchorPoint, const FVector2D& EndAnchorPoint, const FConnectionParams& Params) +{ + // bUserFlag1 indicates that we need to reverse the direction of connection (used by debugger) + const FVector2D& P0 = Params.bUserFlag1 ? EndAnchorPoint : StartAnchorPoint; + const FVector2D& P1 = Params.bUserFlag1 ? StartAnchorPoint : EndAnchorPoint; + + Internal_DrawLineWithArrow(P0, P1, Params); +} + +void FConnectionDrawingPolicy_GenericGraph::Internal_DrawLineWithArrow(const FVector2D& StartAnchorPoint, const FVector2D& EndAnchorPoint, const FConnectionParams& Params) +{ + //@TODO: Should this be scaled by zoom factor? + const float LineSeparationAmount = 4.5f; + + const FVector2D DeltaPos = EndAnchorPoint - StartAnchorPoint; + const FVector2D UnitDelta = DeltaPos.GetSafeNormal(); + const FVector2D Normal = FVector2D(DeltaPos.Y, -DeltaPos.X).GetSafeNormal(); + + // Come up with the final start/end points + const FVector2D DirectionBias = Normal * LineSeparationAmount; + const FVector2D LengthBias = ArrowRadius.X * UnitDelta; + const FVector2D StartPoint = StartAnchorPoint + DirectionBias + LengthBias; + const FVector2D EndPoint = EndAnchorPoint + DirectionBias - LengthBias; + + // Draw a line/spline + DrawConnection(WireLayerID, StartPoint, EndPoint, Params); + + // Draw the arrow + const FVector2D ArrowDrawPos = EndPoint - ArrowRadius; + const float AngleInRadians = FMath::Atan2(DeltaPos.Y, DeltaPos.X); + + FSlateDrawElement::MakeRotatedBox( + DrawElementsList, + ArrowLayerID, + FPaintGeometry(ArrowDrawPos, ArrowImage->ImageSize * ZoomFactor, ZoomFactor), + ArrowImage, + ESlateDrawEffect::None, + AngleInRadians, + TOptional(), + FSlateDrawElement::RelativeToElement, + Params.WireColor + ); +} + +void FConnectionDrawingPolicy_GenericGraph::DrawSplineWithArrow(const FGeometry& StartGeom, const FGeometry& EndGeom, const FConnectionParams& Params) +{ + // Get a reasonable seed point (halfway between the boxes) + const FVector2D StartCenter = FGeometryHelper::CenterOf(StartGeom); + const FVector2D EndCenter = FGeometryHelper::CenterOf(EndGeom); + const FVector2D SeedPoint = (StartCenter + EndCenter) * 0.5f; + + // Find the (approximate) closest points between the two boxes + const FVector2D StartAnchorPoint = FGeometryHelper::FindClosestPointOnGeom(StartGeom, SeedPoint); + const FVector2D EndAnchorPoint = FGeometryHelper::FindClosestPointOnGeom(EndGeom, SeedPoint); + + DrawSplineWithArrow(StartAnchorPoint, EndAnchorPoint, Params); +} + +FVector2D FConnectionDrawingPolicy_GenericGraph::ComputeSplineTangent(const FVector2D& Start, const FVector2D& End) const +{ + const FVector2D Delta = End - Start; + const FVector2D NormDelta = Delta.GetSafeNormal(); + + return NormDelta; +} + +void FConnectionDrawingPolicy_GenericGraph::DetermineLinkGeometry(FArrangedChildren& ArrangedNodes, TSharedRef& OutputPinWidget, + UEdGraphPin* OutputPin, UEdGraphPin* InputPin, FArrangedWidget*& StartWidgetGeometry, FArrangedWidget*& EndWidgetGeometry) +{ + if (UEdNode_GenericGraphEdge* EdgeNode = Cast(InputPin->GetOwningNode())) + { + UEdNode_GenericGraphNode* Start = EdgeNode->GetStartNode(); + UEdNode_GenericGraphNode* End = EdgeNode->GetEndNode(); + if (Start != nullptr && End != nullptr) + { + int32* StartNodeIndex = NodeWidgetMap.Find(Start); + int32* EndNodeIndex = NodeWidgetMap.Find(End); + if (StartNodeIndex != nullptr && EndNodeIndex != nullptr) + { + StartWidgetGeometry = &(ArrangedNodes[*StartNodeIndex]); + EndWidgetGeometry = &(ArrangedNodes[*EndNodeIndex]); + } + } + } + else + { + StartWidgetGeometry = PinGeometries->Find(OutputPinWidget); + + if (TSharedPtr* pTargetWidget = PinToPinWidgetMap.Find(InputPin)) + { + TSharedRef InputWidget = (*pTargetWidget).ToSharedRef(); + EndWidgetGeometry = PinGeometries->Find(InputWidget); + } + } +} + diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/EdGraph_GenericGraph.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/EdGraph_GenericGraph.cpp new file mode 100644 index 00000000..f730756f --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/EdGraph_GenericGraph.cpp @@ -0,0 +1,205 @@ +#include "GenericGraphAssetEditor/EdGraph_GenericGraph.h" +#include "GenericGraphEditorPCH.h" +#include "GenericGraph.h" +#include "GenericGraphAssetEditor/EdNode_GenericGraphNode.h" +#include "GenericGraphAssetEditor/EdNode_GenericGraphEdge.h" + +UEdGraph_GenericGraph::UEdGraph_GenericGraph() +{ + +} + +UEdGraph_GenericGraph::~UEdGraph_GenericGraph() +{ + +} + +void UEdGraph_GenericGraph::RebuildGenericGraph() +{ + LOG_INFO(TEXT("UGenericGraphEdGraph::RebuildGenericGraph has been called")); + + UGenericGraph* Graph = GetGenericGraph(); + + Clear(); + + for (int i = 0; i < Nodes.Num(); ++i) + { + if (UEdNode_GenericGraphNode* EdNode = Cast(Nodes[i])) + { + if (EdNode->GenericGraphNode == nullptr) + continue; + + UGenericGraphNode* GenericGraphNode = EdNode->GenericGraphNode; + + NodeMap.Add(GenericGraphNode, EdNode); + + Graph->AllNodes.Add(GenericGraphNode); + + for (int PinIdx = 0; PinIdx < EdNode->Pins.Num(); ++PinIdx) + { + UEdGraphPin* Pin = EdNode->Pins[PinIdx]; + + if (Pin->Direction != EEdGraphPinDirection::EGPD_Output) + continue; + + for (int LinkToIdx = 0; LinkToIdx < Pin->LinkedTo.Num(); ++LinkToIdx) + { + UGenericGraphNode* ChildNode = nullptr; + if (UEdNode_GenericGraphNode* EdNode_Child = Cast(Pin->LinkedTo[LinkToIdx]->GetOwningNode())) + { + ChildNode = EdNode_Child->GenericGraphNode; + } + else if (UEdNode_GenericGraphEdge* EdNode_Edge = Cast(Pin->LinkedTo[LinkToIdx]->GetOwningNode())) + { + UEdNode_GenericGraphNode* Child = EdNode_Edge->GetEndNode();; + if (Child != nullptr) + { + ChildNode = Child->GenericGraphNode; + } + } + + if (ChildNode != nullptr) + { + GenericGraphNode->ChildrenNodes.Add(ChildNode); + + ChildNode->ParentNodes.Add(GenericGraphNode); + } + else + { + LOG_ERROR(TEXT("UEdGraph_GenericGraph::RebuildGenericGraph can't find child node")); + } + } + } + } + else if (UEdNode_GenericGraphEdge* EdgeNode = Cast(Nodes[i])) + { + UEdNode_GenericGraphNode* StartNode = EdgeNode->GetStartNode(); + UEdNode_GenericGraphNode* EndNode = EdgeNode->GetEndNode(); + UGenericGraphEdge* Edge = EdgeNode->GenericGraphEdge; + + if (StartNode == nullptr || EndNode == nullptr || Edge == nullptr) + { + LOG_ERROR(TEXT("UEdGraph_GenericGraph::RebuildGenericGraph add edge failed.")); + continue; + } + + EdgeMap.Add(Edge, EdgeNode); + + Edge->Graph = Graph; + Edge->Rename(nullptr, Graph, REN_DontCreateRedirectors | REN_DoNotDirty); + Edge->StartNode = StartNode->GenericGraphNode; + Edge->EndNode = EndNode->GenericGraphNode; + Edge->StartNode->Edges.Add(Edge->EndNode, Edge); + } + } + + for (int i = 0; i < Graph->AllNodes.Num(); ++i) + { + UGenericGraphNode* Node = Graph->AllNodes[i]; + if (Node->ParentNodes.Num() == 0) + { + Graph->RootNodes.Add(Node); + + SortNodes(Node); + } + + Node->Graph = Graph; + Node->Rename(nullptr, Graph, REN_DontCreateRedirectors | REN_DoNotDirty); + } + + Graph->RootNodes.Sort([&](const UGenericGraphNode& L, const UGenericGraphNode& R) + { + UEdNode_GenericGraphNode* EdNode_LNode = NodeMap[&L]; + UEdNode_GenericGraphNode* EdNode_RNode = NodeMap[&R]; + return EdNode_LNode->NodePosX < EdNode_RNode->NodePosX; + }); +} + +UGenericGraph* UEdGraph_GenericGraph::GetGenericGraph() const +{ + return CastChecked(GetOuter()); +} + +bool UEdGraph_GenericGraph::Modify(bool bAlwaysMarkDirty /*= true*/) +{ + bool Rtn = Super::Modify(bAlwaysMarkDirty); + + GetGenericGraph()->Modify(); + + for (int32 i = 0; i < Nodes.Num(); ++i) + { + Nodes[i]->Modify(); + } + + return Rtn; +} + +void UEdGraph_GenericGraph::Clear() +{ + UGenericGraph* Graph = GetGenericGraph(); + + Graph->ClearGraph(); + NodeMap.Reset(); + EdgeMap.Reset(); + + for (int i = 0; i < Nodes.Num(); ++i) + { + if (UEdNode_GenericGraphNode* EdNode = Cast(Nodes[i])) + { + UGenericGraphNode* GenericGraphNode = EdNode->GenericGraphNode; + if (GenericGraphNode) + { + GenericGraphNode->ParentNodes.Reset(); + GenericGraphNode->ChildrenNodes.Reset(); + GenericGraphNode->Edges.Reset(); + } + } + } +} + +void UEdGraph_GenericGraph::SortNodes(UGenericGraphNode* RootNode) +{ + int Level = 0; + TArray CurrLevelNodes = { RootNode }; + TArray NextLevelNodes; + TSet Visited; + + while (CurrLevelNodes.Num() != 0) + { + int32 LevelWidth = 0; + for (int i = 0; i < CurrLevelNodes.Num(); ++i) + { + UGenericGraphNode* Node = CurrLevelNodes[i]; + Visited.Add(Node); + + auto Comp = [&](const UGenericGraphNode& L, const UGenericGraphNode& R) + { + UEdNode_GenericGraphNode* EdNode_LNode = NodeMap[&L]; + UEdNode_GenericGraphNode* EdNode_RNode = NodeMap[&R]; + return EdNode_LNode->NodePosX < EdNode_RNode->NodePosX; + }; + + Node->ChildrenNodes.Sort(Comp); + Node->ParentNodes.Sort(Comp); + + for (int j = 0; j < Node->ChildrenNodes.Num(); ++j) + { + UGenericGraphNode* ChildNode = Node->ChildrenNodes[j]; + if(!Visited.Contains(ChildNode)) + NextLevelNodes.Add(Node->ChildrenNodes[j]); + } + } + + CurrLevelNodes = NextLevelNodes; + NextLevelNodes.Reset(); + ++Level; + } +} + +void UEdGraph_GenericGraph::PostEditUndo() +{ + Super::PostEditUndo(); + + NotifyGraphChanged(); +} + diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/EdNode_GenericGraphEdge.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/EdNode_GenericGraphEdge.cpp new file mode 100644 index 00000000..636ce9c4 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/EdNode_GenericGraphEdge.cpp @@ -0,0 +1,97 @@ +#include "GenericGraphAssetEditor/EdNode_GenericGraphEdge.h" +#include "GenericGraphEdge.h" +#include "GenericGraphAssetEditor/EdNode_GenericGraphNode.h" + +#define LOCTEXT_NAMESPACE "EdNode_GenericGraphEdge" + +UEdNode_GenericGraphEdge::UEdNode_GenericGraphEdge() +{ + bCanRenameNode = true; +} + +void UEdNode_GenericGraphEdge::SetEdge(UGenericGraphEdge* Edge) +{ + GenericGraphEdge = Edge; +} + +void UEdNode_GenericGraphEdge::AllocateDefaultPins() +{ + UEdGraphPin* Inputs = CreatePin(EGPD_Input, TEXT("Edge"), FName(), TEXT("In")); + Inputs->bHidden = true; + UEdGraphPin* Outputs = CreatePin(EGPD_Output, TEXT("Edge"), FName(), TEXT("Out")); + Outputs->bHidden = true; +} + +FText UEdNode_GenericGraphEdge::GetNodeTitle(ENodeTitleType::Type TitleType) const +{ + if (GenericGraphEdge) + { + return GenericGraphEdge->GetNodeTitle(); + } + return FText(); +} + +void UEdNode_GenericGraphEdge::PinConnectionListChanged(UEdGraphPin* Pin) +{ + if (Pin->LinkedTo.Num() == 0) + { + // Commit suicide; transitions must always have an input and output connection + Modify(); + + // Our parent graph will have our graph in SubGraphs so needs to be modified to record that. + if (UEdGraph* ParentGraph = GetGraph()) + { + ParentGraph->Modify(); + } + + DestroyNode(); + } +} + +void UEdNode_GenericGraphEdge::PrepareForCopying() +{ + GenericGraphEdge->Rename(nullptr, this, REN_DontCreateRedirectors | REN_DoNotDirty); +} + +void UEdNode_GenericGraphEdge::CreateConnections(UEdNode_GenericGraphNode* Start, UEdNode_GenericGraphNode* End) +{ + Pins[0]->Modify(); + Pins[0]->LinkedTo.Empty(); + + Start->GetOutputPin()->Modify(); + Pins[0]->MakeLinkTo(Start->GetOutputPin()); + + // This to next + Pins[1]->Modify(); + Pins[1]->LinkedTo.Empty(); + + End->GetInputPin()->Modify(); + Pins[1]->MakeLinkTo(End->GetInputPin()); +} + +UEdNode_GenericGraphNode* UEdNode_GenericGraphEdge::GetStartNode() +{ + if (Pins[0]->LinkedTo.Num() > 0) + { + return Cast(Pins[0]->LinkedTo[0]->GetOwningNode()); + } + else + { + return nullptr; + } +} + +UEdNode_GenericGraphNode* UEdNode_GenericGraphEdge::GetEndNode() +{ + if (Pins[1]->LinkedTo.Num() > 0) + { + return Cast(Pins[1]->LinkedTo[0]->GetOwningNode()); + } + else + { + return nullptr; + } +} + +#undef LOCTEXT_NAMESPACE + diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/EdNode_GenericGraphNode.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/EdNode_GenericGraphNode.cpp new file mode 100644 index 00000000..9a487cf6 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/EdNode_GenericGraphNode.cpp @@ -0,0 +1,84 @@ +#include "GenericGraphAssetEditor/EdNode_GenericGraphNode.h" +#include "GenericGraphAssetEditor/EdGraph_GenericGraph.h" +#include "Kismet2/Kismet2NameValidators.h" +#include "Kismet2/BlueprintEditorUtils.h" + +#define LOCTEXT_NAMESPACE "EdNode_GenericGraph" + +UEdNode_GenericGraphNode::UEdNode_GenericGraphNode() +{ + bCanRenameNode = true; +} + +UEdNode_GenericGraphNode::~UEdNode_GenericGraphNode() +{ + +} + +void UEdNode_GenericGraphNode::AllocateDefaultPins() +{ + CreatePin(EGPD_Input, "MultipleNodes", FName(), TEXT("In")); + CreatePin(EGPD_Output, "MultipleNodes", FName(), TEXT("Out")); +} + +UEdGraph_GenericGraph* UEdNode_GenericGraphNode::GetGenericGraphEdGraph() +{ + return Cast(GetGraph()); +} + +FText UEdNode_GenericGraphNode::GetNodeTitle(ENodeTitleType::Type TitleType) const +{ + if (GenericGraphNode == nullptr) + { + return Super::GetNodeTitle(TitleType); + } + else + { + return GenericGraphNode->GetNodeTitle(); + } +} + +void UEdNode_GenericGraphNode::PrepareForCopying() +{ + GenericGraphNode->Rename(nullptr, this, REN_DontCreateRedirectors | REN_DoNotDirty); +} + +void UEdNode_GenericGraphNode::AutowireNewNode(UEdGraphPin* FromPin) +{ + Super::AutowireNewNode(FromPin); + + if (FromPin != nullptr) + { + if (GetSchema()->TryCreateConnection(FromPin, GetInputPin())) + { + FromPin->GetOwningNode()->NodeConnectionListChanged(); + } + } +} + +void UEdNode_GenericGraphNode::SetGenericGraphNode(UGenericGraphNode* InNode) +{ + GenericGraphNode = InNode; +} + +FLinearColor UEdNode_GenericGraphNode::GetBackgroundColor() const +{ + return GenericGraphNode == nullptr ? FLinearColor::Black : GenericGraphNode->GetBackgroundColor(); +} + +UEdGraphPin* UEdNode_GenericGraphNode::GetInputPin() const +{ + return Pins[0]; +} + +UEdGraphPin* UEdNode_GenericGraphNode::GetOutputPin() const +{ + return Pins[1]; +} + +void UEdNode_GenericGraphNode::PostEditUndo() +{ + UEdGraphNode::PostEditUndo(); +} + +#undef LOCTEXT_NAMESPACE diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/EditorCommands_GenericGraph.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/EditorCommands_GenericGraph.cpp new file mode 100644 index 00000000..8cd338f5 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/EditorCommands_GenericGraph.cpp @@ -0,0 +1,11 @@ +#include "GenericGraphAssetEditor/EditorCommands_GenericGraph.h" + +#define LOCTEXT_NAMESPACE "EditorCommands_GenericGraph" + +void FEditorCommands_GenericGraph::RegisterCommands() +{ + UI_COMMAND(GraphSettings, "Graph Settings", "Graph Settings", EUserInterfaceActionType::Button, FInputChord()); + UI_COMMAND(AutoArrange, "Auto Arrange", "Auto Arrange", EUserInterfaceActionType::Button, FInputChord()); +} + +#undef LOCTEXT_NAMESPACE diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/GenericGraphDragConnection.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/GenericGraphDragConnection.cpp new file mode 100644 index 00000000..c8c3999d --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/GenericGraphDragConnection.cpp @@ -0,0 +1,325 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + + +#include "GenericGraphAssetEditor/GenericGraphDragConnection.h" +#include "Widgets/SBoxPanel.h" +#include "Framework/Application/SlateApplication.h" +#include "Widgets/Images/SImage.h" +#include "EdGraph/EdGraph.h" +#include "SGraphPanel.h" +#include "ScopedTransaction.h" + +TSharedRef FGenericGraphDragConnection::New(const TSharedRef& GraphPanel, const FDraggedPinTable& DraggedPins) +{ + TSharedRef Operation = MakeShareable(new FGenericGraphDragConnection(GraphPanel, DraggedPins)); + Operation->Construct(); + + return Operation; +} + +void FGenericGraphDragConnection::OnDrop(bool bDropWasHandled, const FPointerEvent& MouseEvent) +{ + GraphPanel->OnStopMakingConnection(); + + Super::OnDrop(bDropWasHandled, MouseEvent); +} + +void FGenericGraphDragConnection::OnDragged(const class FDragDropEvent& DragDropEvent) +{ + FVector2D TargetPosition = DragDropEvent.GetScreenSpacePosition(); + + // Reposition the info window wrt to the drag + CursorDecoratorWindow->MoveWindowTo(DragDropEvent.GetScreenSpacePosition() + DecoratorAdjust); + // Request the active panel to scroll if required + GraphPanel->RequestDeferredPan(TargetPosition); +} + +void FGenericGraphDragConnection::HoverTargetChanged() +{ + TArray UniqueMessages; + + if (UEdGraphPin* TargetPinObj = GetHoveredPin()) + { + TArray ValidSourcePins; + ValidateGraphPinList(/*out*/ ValidSourcePins); + + // Check the schema for connection responses + for (UEdGraphPin* StartingPinObj : ValidSourcePins) + { + // The Graph object in which the pins reside. + UEdGraph* GraphObj = StartingPinObj->GetOwningNode()->GetGraph(); + + // Determine what the schema thinks about the wiring action + const FPinConnectionResponse Response = GraphObj->GetSchema()->CanCreateConnection(StartingPinObj, TargetPinObj); + + if (Response.Response == ECanCreateConnectionResponse::CONNECT_RESPONSE_DISALLOW) + { + TSharedPtr NodeWidget = TargetPinObj->GetOwningNode()->DEPRECATED_NodeWidget.Pin(); + if (NodeWidget.IsValid()) + { + NodeWidget->NotifyDisallowedPinConnection(StartingPinObj, TargetPinObj); + } + } + + UniqueMessages.AddUnique(Response); + } + } + else if (UEdNode_GenericGraphNode* TargetNodeObj = Cast(GetHoveredNode())) + { + TArray ValidSourcePins; + ValidateGraphPinList(/*out*/ ValidSourcePins); + + // Check the schema for connection responses + for (UEdGraphPin* StartingPinObj : ValidSourcePins) + { + FPinConnectionResponse Response; + FText ResponseText; + + const UEdGraphSchema *Schema = StartingPinObj->GetSchema(); + UEdGraphPin *TargetPin = TargetNodeObj->GetInputPin(); + + if (Schema && TargetPin) + { + Response = Schema->CanCreateConnection(StartingPinObj, TargetPin); + if (Response.Response == ECanCreateConnectionResponse::CONNECT_RESPONSE_DISALLOW) + { + TSharedPtr NodeWidget = TargetPin->GetOwningNode()->DEPRECATED_NodeWidget.Pin(); + if (NodeWidget.IsValid()) + { + NodeWidget->NotifyDisallowedPinConnection(StartingPinObj, TargetPinObj); + } + } + } + else + { +#define LOCTEXT_NAMESPACE "AssetSchema_GenericGraph" + Response = FPinConnectionResponse(CONNECT_RESPONSE_DISALLOW, LOCTEXT("PinError", "Not a valid UGenericGraphEdNode")); +#undef LOCTEXT_NAMESPACE + } + + UniqueMessages.AddUnique(Response); + } + } + else if (UEdGraph* CurrentHoveredGraph = GetHoveredGraph()) + { + TArray ValidSourcePins; + ValidateGraphPinList(/*out*/ ValidSourcePins); + + for (UEdGraphPin* StartingPinObj : ValidSourcePins) + { + // Let the schema describe the connection we might make + FPinConnectionResponse Response = CurrentHoveredGraph->GetSchema()->CanCreateNewNodes(StartingPinObj); + if (!Response.Message.IsEmpty()) + { + UniqueMessages.AddUnique(Response); + } + } + } + + // Let the user know the status of dropping now + if (UniqueMessages.Num() == 0) + { + // Display the place a new node icon, we're not over a valid pin and have no message from the schema + SetSimpleFeedbackMessage( + FAppStyle::GetBrush(TEXT("Graph.ConnectorFeedback.NewNode")), + FLinearColor::White, + NSLOCTEXT("GraphEditor.Feedback", "PlaceNewNode", "Place a new node.")); + } + else + { + // Take the unique responses and create visual feedback for it + TSharedRef FeedbackBox = SNew(SVerticalBox); + for (auto ResponseIt = UniqueMessages.CreateConstIterator(); ResponseIt; ++ResponseIt) + { + // Determine the icon + const FSlateBrush* StatusSymbol = NULL; + + switch (ResponseIt->Response) + { + case CONNECT_RESPONSE_MAKE: + case CONNECT_RESPONSE_BREAK_OTHERS_A: + case CONNECT_RESPONSE_BREAK_OTHERS_B: + case CONNECT_RESPONSE_BREAK_OTHERS_AB: + StatusSymbol = FAppStyle::GetBrush(TEXT("Graph.ConnectorFeedback.OK")); + break; + + case CONNECT_RESPONSE_MAKE_WITH_CONVERSION_NODE: + StatusSymbol = FAppStyle::GetBrush(TEXT("Graph.ConnectorFeedback.ViaCast")); + break; + + case CONNECT_RESPONSE_DISALLOW: + default: + StatusSymbol = FAppStyle::GetBrush(TEXT("Graph.ConnectorFeedback.Error")); + break; + } + + // Add a new message row + FeedbackBox->AddSlot() + .AutoHeight() + [ + SNew(SHorizontalBox) + + SHorizontalBox::Slot() + .AutoWidth() + .Padding(3.0f) + .VAlign(VAlign_Center) + [ + SNew(SImage).Image(StatusSymbol) + ] + + SHorizontalBox::Slot() + .AutoWidth() + .VAlign(VAlign_Center) + [ + SNew(STextBlock).Text(ResponseIt->Message) + ] + ]; + } + + SetFeedbackMessage(FeedbackBox); + } +} + +FGenericGraphDragConnection::FGenericGraphDragConnection(const TSharedRef& GraphPanelIn, const FDraggedPinTable& DraggedPinsIn) + : GraphPanel(GraphPanelIn) + , DraggingPins(DraggedPinsIn) + , DecoratorAdjust(FSlateApplication::Get().GetCursorSize()) +{ + if (DraggingPins.Num() > 0) + { + const UEdGraphPin* PinObj = FDraggedPinTable::TConstIterator(DraggedPinsIn)->GetPinObj(*GraphPanelIn); + if (PinObj && PinObj->Direction == EGPD_Input) + { + DecoratorAdjust *= FVector2D(-1.0f, 1.0f); + } + } + + for (const FGraphPinHandle& DraggedPin : DraggedPinsIn) + { + GraphPanelIn->OnBeginMakingConnection(DraggedPin); + } +} + +FReply FGenericGraphDragConnection::DroppedOnPin(FVector2D ScreenPosition, FVector2D GraphPosition) +{ + TArray ValidSourcePins; + ValidateGraphPinList(/*out*/ ValidSourcePins); + + const FScopedTransaction Transaction(NSLOCTEXT("UnrealEd", "GraphEd_CreateConnection", "Create Pin Link")); + + UEdGraphPin* PinB = GetHoveredPin(); + bool bError = false; + TSet NodeList; + + for (UEdGraphPin* PinA : ValidSourcePins) + { + if ((PinA != NULL) && (PinB != NULL)) + { + UEdGraph* MyGraphObj = PinA->GetOwningNode()->GetGraph(); + + if (MyGraphObj->GetSchema()->TryCreateConnection(PinA, PinB)) + { + if (!PinA->IsPendingKill()) + { + NodeList.Add(PinA->GetOwningNode()); + } + if (!PinB->IsPendingKill()) + { + NodeList.Add(PinB->GetOwningNode()); + } + } + } + else + { + bError = true; + } + } + + // Send all nodes that received a new pin connection a notification + for (auto It = NodeList.CreateConstIterator(); It; ++It) + { + UEdGraphNode* Node = (*It); + Node->NodeConnectionListChanged(); + } + + if (bError) + { + return FReply::Unhandled(); + } + + return FReply::Handled(); +} + +FReply FGenericGraphDragConnection::DroppedOnNode(FVector2D ScreenPosition, FVector2D GraphPosition) +{ + bool bHandledPinDropOnNode = false; + UEdGraphNode* NodeOver = GetHoveredNode(); + + if (NodeOver) + { + // Gather any source drag pins + TArray ValidSourcePins; + ValidateGraphPinList(/*out*/ ValidSourcePins); + + if (ValidSourcePins.Num()) + { + for (UEdGraphPin* SourcePin : ValidSourcePins) + { + // Check for pin drop support + FText ResponseText; + if (SourcePin->GetOwningNode() != NodeOver && SourcePin->GetSchema()->SupportsDropPinOnNode(NodeOver, SourcePin->PinType, SourcePin->Direction, ResponseText)) + { + bHandledPinDropOnNode = true; + + // Find which pin name to use and drop the pin on the node + const FName PinName = SourcePin->PinFriendlyName.IsEmpty() ? SourcePin->PinName : *SourcePin->PinFriendlyName.ToString(); + + const FScopedTransaction Transaction((SourcePin->Direction == EGPD_Output) ? NSLOCTEXT("UnrealEd", "AddInParam", "Add In Parameter") : NSLOCTEXT("UnrealEd", "AddOutParam", "Add Out Parameter")); + + UEdGraphPin* EdGraphPin = NodeOver->GetSchema()->DropPinOnNode(GetHoveredNode(), PinName, SourcePin->PinType, SourcePin->Direction); + + // This can invalidate the source pin due to node reconstruction, abort in that case + if (SourcePin->GetOwningNodeUnchecked() && EdGraphPin) + { + SourcePin->Modify(); + EdGraphPin->Modify(); + SourcePin->GetSchema()->TryCreateConnection(SourcePin, EdGraphPin); + } + } + + // If we have not handled the pin drop on node and there is an error message, do not let other actions occur. + if (!bHandledPinDropOnNode && !ResponseText.IsEmpty()) + { + bHandledPinDropOnNode = true; + } + } + } + } + return bHandledPinDropOnNode ? FReply::Handled() : FReply::Unhandled(); +} + +FReply FGenericGraphDragConnection::DroppedOnPanel(const TSharedRef< SWidget >& Panel, FVector2D ScreenPosition, FVector2D GraphPosition, UEdGraph& Graph) +{ + // Gather any source drag pins + TArray PinObjects; + ValidateGraphPinList(/*out*/ PinObjects); + + // Create a context menu + TSharedPtr WidgetToFocus = GraphPanel->SummonContextMenu(ScreenPosition, GraphPosition, NULL, NULL, PinObjects); + + // Give the context menu focus + return (WidgetToFocus.IsValid()) + ? FReply::Handled().SetUserFocus(WidgetToFocus.ToSharedRef(), EFocusCause::SetDirectly) + : FReply::Handled(); +} + + +void FGenericGraphDragConnection::ValidateGraphPinList(TArray& OutValidPins) +{ + OutValidPins.Empty(DraggingPins.Num()); + for (const FGraphPinHandle& PinHandle : DraggingPins) + { + if (UEdGraphPin* GraphPin = PinHandle.GetPinObj(*GraphPanel)) + { + OutValidPins.Add(GraphPin); + } + } +} diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/GenericGraphEditorStyle.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/GenericGraphEditorStyle.cpp new file mode 100644 index 00000000..6870128f --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/GenericGraphEditorStyle.cpp @@ -0,0 +1,54 @@ +#include "GenericGraphAssetEditor/GenericGraphEditorStyle.h" +#include "Styling/SlateStyleRegistry.h" +#include "Styling/SlateTypes.h" +#include "Misc/Paths.h" + +TSharedPtr FGenericGraphEditorStyle::StyleSet = nullptr; + +#define IMAGE_BRUSH( RelativePath, ... ) FSlateImageBrush( StyleSet->RootToContentDir( RelativePath, TEXT(".png") ), __VA_ARGS__ ) +#define BOX_BRUSH( RelativePath, ... ) FSlateBoxBrush( StyleSet->RootToContentDir( RelativePath, TEXT(".png") ), __VA_ARGS__ ) +#define BORDER_BRUSH( RelativePath, ... ) FSlateBorderBrush( StyleSet->RootToContentDir( RelativePath, TEXT(".png") ), __VA_ARGS__ ) +#define TTF_FONT( RelativePath, ... ) FSlateFontInfo( StyleSet->RootToContentDir( RelativePath, TEXT(".ttf") ), __VA_ARGS__ ) +#define OTF_FONT( RelativePath, ... ) FSlateFontInfo( StyleSet->RootToContentDir( RelativePath, TEXT(".otf") ), __VA_ARGS__ ) + +void FGenericGraphEditorStyle::Initialize() +{ + const FVector2D Icon20x20(20.0f, 20.0f); + const FVector2D Icon40x40(40.0f, 40.0f); + const FVector2D Icon64x64(64.0f, 64.0f); + + if (StyleSet.IsValid()) + { + return; + } + + StyleSet = MakeShareable(new FSlateStyleSet("GenericGraphEditorStyle")); + + StyleSet->SetContentRoot(FPaths::ProjectPluginsDir() / TEXT("GenericGraph/Resources")); + + StyleSet->Set("GenericGraphEditor.AutoArrange", new IMAGE_BRUSH("AutoArrangeIcon", Icon40x40)); + StyleSet->Set("GenericGraphEditor.AutoArrange.Small", new IMAGE_BRUSH( "AutoArrangeIcon", Icon20x20 ) ); + + FSlateStyleRegistry::RegisterSlateStyle(*StyleSet.Get()); +} + +void FGenericGraphEditorStyle::Shutdown() +{ + if (StyleSet.IsValid()) + { + FSlateStyleRegistry::UnRegisterSlateStyle(*StyleSet.Get()); + ensure(StyleSet.IsUnique()); + StyleSet.Reset(); + } +} + +const FName& FGenericGraphEditorStyle::GetStyleSetName() +{ + return StyleSet->GetStyleSetName(); +} + +#undef IMAGE_BRUSH +#undef BOX_BRUSH +#undef BORDER_BRUSH +#undef TTF_FONT +#undef OTF_FONT diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/SEdNode_GenericGraphEdge.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/SEdNode_GenericGraphEdge.cpp new file mode 100644 index 00000000..d46b0777 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/SEdNode_GenericGraphEdge.cpp @@ -0,0 +1,199 @@ +#include "GenericGraphAssetEditor/SEdNode_GenericGraphEdge.h" +#include "Widgets/SBoxPanel.h" +#include "Widgets/Images/SImage.h" +#include "Widgets/Text/SInlineEditableTextBlock.h" +#include "Widgets/SToolTip.h" +#include "SGraphPanel.h" +#include "EdGraphSchema_K2.h" +#include "GenericGraphAssetEditor/EdNode_GenericGraphNode.h" +#include "GenericGraphAssetEditor/EdNode_GenericGraphEdge.h" +#include "GenericGraphAssetEditor/ConnectionDrawingPolicy_GenericGraph.h" + +#define LOCTEXT_NAMESPACE "SGenericGraphEdge" + +void SEdNode_GenericGraphEdge::Construct(const FArguments& InArgs, UEdNode_GenericGraphEdge* InNode) +{ + this->GraphNode = InNode; + this->UpdateGraphNode(); +} + +bool SEdNode_GenericGraphEdge::RequiresSecondPassLayout() const +{ + return true; +} + +void SEdNode_GenericGraphEdge::PerformSecondPassLayout(const TMap< UObject*, TSharedRef >& NodeToWidgetLookup) const +{ + UEdNode_GenericGraphEdge* EdgeNode = CastChecked(GraphNode); + + FGeometry StartGeom; + FGeometry EndGeom; + + UEdNode_GenericGraphNode* Start = EdgeNode->GetStartNode(); + UEdNode_GenericGraphNode* End = EdgeNode->GetEndNode(); + if (Start != nullptr && End != nullptr) + { + const TSharedRef* pFromWidget = NodeToWidgetLookup.Find(Start); + const TSharedRef* pToWidget = NodeToWidgetLookup.Find(End); + if (pFromWidget != nullptr && pToWidget != nullptr) + { + const TSharedRef& FromWidget = *pFromWidget; + const TSharedRef& ToWidget = *pToWidget; + + StartGeom = FGeometry(FVector2D(Start->NodePosX, Start->NodePosY), FVector2D::ZeroVector, FromWidget->GetDesiredSize(), 1.0f); + EndGeom = FGeometry(FVector2D(End->NodePosX, End->NodePosY), FVector2D::ZeroVector, ToWidget->GetDesiredSize(), 1.0f); + } + } + + PositionBetweenTwoNodesWithOffset(StartGeom, EndGeom, 0, 1); +} + +void SEdNode_GenericGraphEdge::OnNameTextCommited(const FText& InText, ETextCommit::Type CommitInfo) +{ + SGraphNode::OnNameTextCommited(InText, CommitInfo); + + UEdNode_GenericGraphEdge* MyNode = CastChecked(GraphNode); + + if (MyNode != nullptr && MyNode->GenericGraphEdge != nullptr) + { + const FScopedTransaction Transaction(LOCTEXT("GenericGraphEditorRenameEdge", "Generic Graph Editor: Rename Edge")); + MyNode->Modify(); + MyNode->GenericGraphEdge->SetNodeTitle(InText); + UpdateGraphNode(); + } +} + +void SEdNode_GenericGraphEdge::UpdateGraphNode() +{ + InputPins.Empty(); + OutputPins.Empty(); + + RightNodeBox.Reset(); + LeftNodeBox.Reset(); + + TSharedPtr NodeTitle = SNew(SNodeTitle, GraphNode); + + this->ContentScale.Bind( this, &SGraphNode::GetContentScale ); + this->GetOrAddSlot( ENodeZone::Center ) + .HAlign(HAlign_Center) + .VAlign(VAlign_Center) + [ + SNew(SOverlay) + + SOverlay::Slot() + [ + SNew(SImage) + .Image(FAppStyle::GetBrush("Graph.TransitionNode.ColorSpill")) + .ColorAndOpacity(this, &SEdNode_GenericGraphEdge::GetEdgeColor) + ] + + SOverlay::Slot() + [ + SNew(SImage) + .Image(this, &SEdNode_GenericGraphEdge::GetEdgeImage) + .Visibility(this, &SEdNode_GenericGraphEdge::GetEdgeImageVisibility) + ] + + + SOverlay::Slot() + .Padding(FMargin(4.0f, 4.0f, 4.0f, 4.0f)) + [ + SNew(SVerticalBox) + + SVerticalBox::Slot() + .HAlign(HAlign_Center) + .AutoHeight() + [ + SAssignNew(InlineEditableText, SInlineEditableTextBlock) + .ColorAndOpacity(FLinearColor::Black) + .Visibility(this, &SEdNode_GenericGraphEdge::GetEdgeTitleVisbility) + .Font(FCoreStyle::GetDefaultFontStyle("Regular", 12)) + .Text(NodeTitle.Get(), &SNodeTitle::GetHeadTitle) + .OnTextCommitted(this, &SEdNode_GenericGraphEdge::OnNameTextCommited) + ] + + SVerticalBox::Slot() + .AutoHeight() + [ + NodeTitle.ToSharedRef() + ] + + ] + ]; +} + +void SEdNode_GenericGraphEdge::PositionBetweenTwoNodesWithOffset(const FGeometry& StartGeom, const FGeometry& EndGeom, int32 NodeIndex, int32 MaxNodes) const +{ + // Get a reasonable seed point (halfway between the boxes) + const FVector2D StartCenter = FGeometryHelper::CenterOf(StartGeom); + const FVector2D EndCenter = FGeometryHelper::CenterOf(EndGeom); + const FVector2D SeedPoint = (StartCenter + EndCenter) * 0.5f; + + // Find the (approximate) closest points between the two boxes + const FVector2D StartAnchorPoint = FGeometryHelper::FindClosestPointOnGeom(StartGeom, SeedPoint); + const FVector2D EndAnchorPoint = FGeometryHelper::FindClosestPointOnGeom(EndGeom, SeedPoint); + + // Position ourselves halfway along the connecting line between the nodes, elevated away perpendicular to the direction of the line + const float Height = 30.0f; + + const FVector2D DesiredNodeSize = GetDesiredSize(); + + FVector2D DeltaPos(EndAnchorPoint - StartAnchorPoint); + + if (DeltaPos.IsNearlyZero()) + { + DeltaPos = FVector2D(10.0f, 0.0f); + } + + const FVector2D Normal = FVector2D(DeltaPos.Y, -DeltaPos.X).GetSafeNormal(); + + const FVector2D NewCenter = StartAnchorPoint + (0.5f * DeltaPos) + (Height * Normal); + + FVector2D DeltaNormal = DeltaPos.GetSafeNormal(); + + // Calculate node offset in the case of multiple transitions between the same two nodes + // MultiNodeOffset: the offset where 0 is the centre of the transition, -1 is 1 + // towards the PrevStateNode and +1 is 1 towards the NextStateNode. + + const float MutliNodeSpace = 0.2f; // Space between multiple transition nodes (in units of ) + const float MultiNodeStep = (1.f + MutliNodeSpace); //Step between node centres (Size of node + size of node spacer) + + const float MultiNodeStart = -((MaxNodes - 1) * MultiNodeStep) / 2.f; + const float MultiNodeOffset = MultiNodeStart + (NodeIndex * MultiNodeStep); + + // Now we need to adjust the new center by the node size, zoom factor and multi node offset + const FVector2D NewCorner = NewCenter - (0.5f * DesiredNodeSize) + (DeltaNormal * MultiNodeOffset * DesiredNodeSize.Size()); + + GraphNode->NodePosX = NewCorner.X; + GraphNode->NodePosY = NewCorner.Y; +} + +FSlateColor SEdNode_GenericGraphEdge::GetEdgeColor() const +{ + UEdNode_GenericGraphEdge* EdgeNode = CastChecked(GraphNode); + if (EdgeNode != nullptr && EdgeNode->GenericGraphEdge != nullptr) + { + return EdgeNode->GenericGraphEdge->GetEdgeColour(); + } + return FLinearColor(0.9f, 0.9f, 0.9f, 1.0f); +} + +const FSlateBrush* SEdNode_GenericGraphEdge::GetEdgeImage() const +{ + return FAppStyle::GetBrush("Graph.TransitionNode.Icon"); +} + +EVisibility SEdNode_GenericGraphEdge::GetEdgeImageVisibility() const +{ + UEdNode_GenericGraphEdge* EdgeNode = CastChecked(GraphNode); + if (EdgeNode && EdgeNode->GenericGraphEdge && EdgeNode->GenericGraphEdge->bShouldDrawTitle) + return EVisibility::Hidden; + + return EVisibility::Visible; +} + +EVisibility SEdNode_GenericGraphEdge::GetEdgeTitleVisbility() const +{ + UEdNode_GenericGraphEdge* EdgeNode = CastChecked(GraphNode); + if (EdgeNode && EdgeNode->GenericGraphEdge && EdgeNode->GenericGraphEdge->bShouldDrawTitle) + return EVisibility::Visible; + + return EVisibility::Collapsed; +} + +#undef LOCTEXT_NAMESPACE diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/SEdNode_GenericGraphNode.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/SEdNode_GenericGraphNode.cpp new file mode 100644 index 00000000..d69e7eea --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/SEdNode_GenericGraphNode.cpp @@ -0,0 +1,336 @@ +#include "GenericGraphAssetEditor/SEdNode_GenericGraphNode.h" +#include "GenericGraphEditorPCH.h" +#include "GenericGraphAssetEditor/Colors_GenericGraph.h" +#include "SLevelOfDetailBranchNode.h" +#include "Widgets/Text/SInlineEditableTextBlock.h" +#include "SCommentBubble.h" +#include "SlateOptMacros.h" +#include "SGraphPin.h" +#include "GraphEditorSettings.h" +#include "GenericGraphAssetEditor/EdNode_GenericGraphNode.h" +#include "GenericGraphAssetEditor/GenericGraphDragConnection.h" + +#define LOCTEXT_NAMESPACE "EdNode_GenericGraph" + +////////////////////////////////////////////////////////////////////////// +class SGenericGraphPin : public SGraphPin +{ +public: + SLATE_BEGIN_ARGS(SGenericGraphPin) {} + SLATE_END_ARGS() + + void Construct(const FArguments& InArgs, UEdGraphPin* InPin) + { + this->SetCursor(EMouseCursor::Default); + + bShowLabel = true; + + GraphPinObj = InPin; + check(GraphPinObj != nullptr); + + const UEdGraphSchema* Schema = GraphPinObj->GetSchema(); + check(Schema); + + SBorder::Construct(SBorder::FArguments() + .BorderImage(this, &SGenericGraphPin::GetPinBorder) + .BorderBackgroundColor(this, &SGenericGraphPin::GetPinColor) + .OnMouseButtonDown(this, &SGenericGraphPin::OnPinMouseDown) + .Cursor(this, &SGenericGraphPin::GetPinCursor) + .Padding(FMargin(5.0f)) + ); + } + +protected: + virtual FSlateColor GetPinColor() const override + { + return GenericGraphColors::Pin::Default; + } + + virtual TSharedRef GetDefaultValueWidget() override + { + return SNew(STextBlock); + } + + const FSlateBrush* GetPinBorder() const + { + return FAppStyle::GetBrush(TEXT("Graph.StateNode.Body")); + } + + virtual TSharedRef SpawnPinDragEvent(const TSharedRef& InGraphPanel, const TArray< TSharedRef >& InStartingPins) override + { + FGenericGraphDragConnection::FDraggedPinTable PinHandles; + PinHandles.Reserve(InStartingPins.Num()); + // since the graph can be refreshed and pins can be reconstructed/replaced + // behind the scenes, the DragDropOperation holds onto FGraphPinHandles + // instead of direct widgets/graph-pins + for (const TSharedRef& PinWidget : InStartingPins) + { + PinHandles.Add(PinWidget->GetPinObj()); + } + + return FGenericGraphDragConnection::New(InGraphPanel, PinHandles); + } + +}; + + +////////////////////////////////////////////////////////////////////////// +void SEdNode_GenericGraphNode::Construct(const FArguments& InArgs, UEdNode_GenericGraphNode* InNode) +{ + GraphNode = InNode; + UpdateGraphNode(); + InNode->SEdNode = this; +} + +BEGIN_SLATE_FUNCTION_BUILD_OPTIMIZATION +void SEdNode_GenericGraphNode::UpdateGraphNode() +{ + const FMargin NodePadding = FMargin(5); + const FMargin NamePadding = FMargin(2); + + InputPins.Empty(); + OutputPins.Empty(); + + // Reset variables that are going to be exposed, in case we are refreshing an already setup node. + RightNodeBox.Reset(); + LeftNodeBox.Reset(); + + const FSlateBrush *NodeTypeIcon = GetNameIcon(); + + FLinearColor TitleShadowColor(0.6f, 0.6f, 0.6f); + TSharedPtr ErrorText; + TSharedPtr NodeBody; + TSharedPtr NodeTitle = SNew(SNodeTitle, GraphNode); + + this->ContentScale.Bind(this, &SGraphNode::GetContentScale); + this->GetOrAddSlot(ENodeZone::Center) + .HAlign(HAlign_Fill) + .VAlign(VAlign_Center) + [ + SNew(SBorder) + .BorderImage(FAppStyle::GetBrush("Graph.StateNode.Body")) + .Padding(0.0f) + .BorderBackgroundColor(this, &SEdNode_GenericGraphNode::GetBorderBackgroundColor) + [ + SNew(SOverlay) + + + SOverlay::Slot() + .HAlign(HAlign_Fill) + .VAlign(VAlign_Fill) + [ + SNew(SVerticalBox) + + // Input Pin Area + + SVerticalBox::Slot() + .FillHeight(1) + [ + SAssignNew(LeftNodeBox, SVerticalBox) + ] + + // Output Pin Area + + SVerticalBox::Slot() + .FillHeight(1) + [ + SAssignNew(RightNodeBox, SVerticalBox) + ] + ] + + + SOverlay::Slot() + .HAlign(HAlign_Center) + .VAlign(VAlign_Center) + .Padding(8.0f) + [ + SNew(SBorder) + .BorderImage(FAppStyle::GetBrush("Graph.StateNode.ColorSpill")) + .BorderBackgroundColor(TitleShadowColor) + .HAlign(HAlign_Center) + .VAlign(VAlign_Center) + .Visibility(EVisibility::SelfHitTestInvisible) + .Padding(6.0f) + [ + SAssignNew(NodeBody, SVerticalBox) + + // Title + + SVerticalBox::Slot() + .AutoHeight() + [ + SNew(SHorizontalBox) + + // Error message + + SHorizontalBox::Slot() + .AutoWidth() + [ + SAssignNew(ErrorText, SErrorText) + .BackgroundColor(this, &SEdNode_GenericGraphNode::GetErrorColor) + .ToolTipText(this, &SEdNode_GenericGraphNode::GetErrorMsgToolTip) + ] + + // Icon + +SHorizontalBox::Slot() + .AutoWidth() + .VAlign(VAlign_Center) + [ + SNew(SImage) + .Image(NodeTypeIcon) + ] + + // Node Title + + SHorizontalBox::Slot() + .Padding(FMargin(4.0f, 0.0f, 4.0f, 0.0f)) + [ + SNew(SVerticalBox) + + SVerticalBox::Slot() + .AutoHeight() + [ + SAssignNew(InlineEditableText, SInlineEditableTextBlock) + .Style(FAppStyle::Get(), "Graph.StateNode.NodeTitleInlineEditableText") + .Text(NodeTitle.Get(), &SNodeTitle::GetHeadTitle) + .OnVerifyTextChanged(this, &SEdNode_GenericGraphNode::OnVerifyNameTextChanged) + .OnTextCommitted(this, &SEdNode_GenericGraphNode::OnNameTextCommited) + .IsReadOnly(this, &SEdNode_GenericGraphNode::IsNameReadOnly) + .IsSelected(this, &SEdNode_GenericGraphNode::IsSelectedExclusively) + ] + + SVerticalBox::Slot() + .AutoHeight() + [ + NodeTitle.ToSharedRef() + ] + ] + ] + ] + ] + ] + ]; + + // Create comment bubble + TSharedPtr CommentBubble; + const FSlateColor CommentColor = GetDefault()->DefaultCommentNodeTitleColor; + + SAssignNew(CommentBubble, SCommentBubble) + .GraphNode(GraphNode) + .Text(this, &SGraphNode::GetNodeComment) + .OnTextCommitted(this, &SGraphNode::OnCommentTextCommitted) + .ColorAndOpacity(CommentColor) + .AllowPinning(true) + .EnableTitleBarBubble(true) + .EnableBubbleCtrls(true) + .GraphLOD(this, &SGraphNode::GetCurrentLOD) + .IsGraphNodeHovered(this, &SGraphNode::IsHovered); + + GetOrAddSlot(ENodeZone::TopCenter) + .SlotOffset(TAttribute(CommentBubble.Get(), &SCommentBubble::GetOffset)) + .SlotSize(TAttribute(CommentBubble.Get(), &SCommentBubble::GetSize)) + .AllowScaling(TAttribute(CommentBubble.Get(), &SCommentBubble::IsScalingAllowed)) + .VAlign(VAlign_Top) + [ + CommentBubble.ToSharedRef() + ]; + + ErrorReporting = ErrorText; + ErrorReporting->SetError(ErrorMsg); + CreatePinWidgets(); +} + +void SEdNode_GenericGraphNode::CreatePinWidgets() +{ + UEdNode_GenericGraphNode* StateNode = CastChecked(GraphNode); + + for (int32 PinIdx = 0; PinIdx < StateNode->Pins.Num(); PinIdx++) + { + UEdGraphPin* MyPin = StateNode->Pins[PinIdx]; + if (!MyPin->bHidden) + { + TSharedPtr NewPin = SNew(SGenericGraphPin, MyPin); + + AddPin(NewPin.ToSharedRef()); + } + } +} + +void SEdNode_GenericGraphNode::AddPin(const TSharedRef& PinToAdd) +{ + PinToAdd->SetOwner(SharedThis(this)); + + const UEdGraphPin* PinObj = PinToAdd->GetPinObj(); + const bool bAdvancedParameter = PinObj && PinObj->bAdvancedView; + if (bAdvancedParameter) + { + PinToAdd->SetVisibility( TAttribute(PinToAdd, &SGraphPin::IsPinVisibleAsAdvanced) ); + } + + TSharedPtr PinBox; + if (PinToAdd->GetDirection() == EEdGraphPinDirection::EGPD_Input) + { + PinBox = LeftNodeBox; + InputPins.Add(PinToAdd); + } + else // Direction == EEdGraphPinDirection::EGPD_Output + { + PinBox = RightNodeBox; + OutputPins.Add(PinToAdd); + } + + if (PinBox) + { + PinBox->AddSlot() + .HAlign(HAlign_Fill) + .VAlign(VAlign_Fill) + .FillHeight(1.0f) + //.Padding(6.0f, 0.0f) + [ + PinToAdd + ]; + } +} + +bool SEdNode_GenericGraphNode::IsNameReadOnly() const +{ + UEdNode_GenericGraphNode* EdNode_Node = Cast(GraphNode); + check(EdNode_Node != nullptr); + + UGenericGraph* GenericGraph = EdNode_Node->GenericGraphNode->Graph; + check(GenericGraph != nullptr); + + return (!GenericGraph->bCanRenameNode || !EdNode_Node->GenericGraphNode->IsNameEditable()) || SGraphNode::IsNameReadOnly(); +} + +END_SLATE_FUNCTION_BUILD_OPTIMIZATION + +void SEdNode_GenericGraphNode::OnNameTextCommited(const FText& InText, ETextCommit::Type CommitInfo) +{ + SGraphNode::OnNameTextCommited(InText, CommitInfo); + + UEdNode_GenericGraphNode* MyNode = CastChecked(GraphNode); + + if (MyNode != nullptr && MyNode->GenericGraphNode != nullptr) + { + const FScopedTransaction Transaction(LOCTEXT("GenericGraphEditorRenameNode", "Generic Graph Editor: Rename Node")); + MyNode->Modify(); + MyNode->GenericGraphNode->Modify(); + MyNode->GenericGraphNode->SetNodeTitle(InText); + UpdateGraphNode(); + } +} + +FSlateColor SEdNode_GenericGraphNode::GetBorderBackgroundColor() const +{ + UEdNode_GenericGraphNode* MyNode = CastChecked(GraphNode); + return MyNode ? MyNode->GetBackgroundColor() : GenericGraphColors::NodeBorder::HighlightAbortRange0; +} + +FSlateColor SEdNode_GenericGraphNode::GetBackgroundColor() const +{ + return GenericGraphColors::NodeBody::Default; +} + +EVisibility SEdNode_GenericGraphNode::GetDragOverMarkerVisibility() const +{ + return EVisibility::Visible; +} + +const FSlateBrush* SEdNode_GenericGraphNode::GetNameIcon() const +{ + return FAppStyle::GetBrush(TEXT("BTEditor.Graph.BTNode.Icon")); +} + +#undef LOCTEXT_NAMESPACE diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/Settings_GenericGraphEditor.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/Settings_GenericGraphEditor.cpp new file mode 100644 index 00000000..a5180a8d --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/Settings_GenericGraphEditor.cpp @@ -0,0 +1,24 @@ +#include "GenericGraphAssetEditor/Settings_GenericGraphEditor.h" + +UGenericGraphEditorSettings::UGenericGraphEditorSettings() +{ + AutoLayoutStrategy = EAutoLayoutStrategy::Tree; + + bFirstPassOnly = false; + + bRandomInit = false; + + OptimalDistance = 100.f; + + MaxIteration = 50; + + InitTemperature = 10.f; + + CoolDownRate = 10.f; +} + +UGenericGraphEditorSettings::~UGenericGraphEditorSettings() +{ + +} + diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphEditor.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphEditor.cpp new file mode 100644 index 00000000..b83d1f6d --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphEditor.cpp @@ -0,0 +1,55 @@ +#include "GenericGraphEditor.h" +#include "GenericGraphNodeFactory.h" +#include "AssetTypeActions_GenericGraph.h" +#include "GenericGraphAssetEditor/GenericGraphEditorStyle.h" + +DEFINE_LOG_CATEGORY(GenericGraphEditor) + +#define LOCTEXT_NAMESPACE "Editor_GenericGraph" + +void FGenericGraphEditor::StartupModule() +{ + FGenericGraphEditorStyle::Initialize(); + + GraphPanelNodeFactory_GenericGraph = MakeShareable(new FGraphPanelNodeFactory_GenericGraph()); + FEdGraphUtilities::RegisterVisualNodeFactory(GraphPanelNodeFactory_GenericGraph); + + IAssetTools& AssetTools = FModuleManager::LoadModuleChecked("AssetTools").Get(); + + GenericGraphAssetCategoryBit = AssetTools.RegisterAdvancedAssetCategory(FName(TEXT("GenericGraph")), LOCTEXT("GenericGraphAssetCategory", "GenericGraph")); + + RegisterAssetTypeAction(AssetTools, MakeShareable(new FAssetTypeActions_GenericGraph(GenericGraphAssetCategoryBit))); +} + + +void FGenericGraphEditor::ShutdownModule() +{ + // Unregister all the asset types that we registered + if (FModuleManager::Get().IsModuleLoaded("AssetTools")) + { + IAssetTools& AssetTools = FModuleManager::GetModuleChecked("AssetTools").Get(); + for (int32 Index = 0; Index < CreatedAssetTypeActions.Num(); ++Index) + { + AssetTools.UnregisterAssetTypeActions(CreatedAssetTypeActions[Index].ToSharedRef()); + } + } + + if (GraphPanelNodeFactory_GenericGraph.IsValid()) + { + FEdGraphUtilities::UnregisterVisualNodeFactory(GraphPanelNodeFactory_GenericGraph); + GraphPanelNodeFactory_GenericGraph.Reset(); + } + + FGenericGraphEditorStyle::Shutdown(); +} + +void FGenericGraphEditor::RegisterAssetTypeAction(IAssetTools& AssetTools, TSharedRef Action) +{ + AssetTools.RegisterAssetTypeActions(Action); + CreatedAssetTypeActions.Add(Action); +} + +IMPLEMENT_MODULE(FGenericGraphEditor, GenericGraphEditor) + +#undef LOCTEXT_NAMESPACE + diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphFactory.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphFactory.cpp new file mode 100644 index 00000000..4c9fc7bb --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphFactory.cpp @@ -0,0 +1,117 @@ +#include "GenericGraphFactory.h" +#include "GenericGraph.h" + +#include "ClassViewerModule.h" +#include "ClassViewerFilter.h" +#include "Kismet2/KismetEditorUtilities.h" +#include "Kismet2/SClassPickerDialog.h" + +#define LOCTEXT_NAMESPACE "GenericGraphFactory" + +class FAssetClassParentFilter : public IClassViewerFilter +{ +public: + FAssetClassParentFilter() + : DisallowedClassFlags(CLASS_None), bDisallowBlueprintBase(false) + {} + + /** All children of these classes will be included unless filtered out by another setting. */ + TSet< const UClass* > AllowedChildrenOfClasses; + + /** Disallowed class flags. */ + EClassFlags DisallowedClassFlags; + + /** Disallow blueprint base classes. */ + bool bDisallowBlueprintBase; + + virtual bool IsClassAllowed(const FClassViewerInitializationOptions& InInitOptions, const UClass* InClass, TSharedRef< FClassViewerFilterFuncs > InFilterFuncs) override + { + bool bAllowed= !InClass->HasAnyClassFlags(DisallowedClassFlags) + && InFilterFuncs->IfInChildOfClassesSet(AllowedChildrenOfClasses, InClass) != EFilterReturn::Failed; + + if (bAllowed && bDisallowBlueprintBase) + { + if (FKismetEditorUtilities::CanCreateBlueprintOfClass(InClass)) + { + return false; + } + } + + return bAllowed; + } + + virtual bool IsUnloadedClassAllowed(const FClassViewerInitializationOptions& InInitOptions, const TSharedRef< const IUnloadedBlueprintData > InUnloadedClassData, TSharedRef< FClassViewerFilterFuncs > InFilterFuncs) override + { + if (bDisallowBlueprintBase) + { + return false; + } + + return !InUnloadedClassData->HasAnyClassFlags(DisallowedClassFlags) + && InFilterFuncs->IfInChildOfClassesSet(AllowedChildrenOfClasses, InUnloadedClassData) != EFilterReturn::Failed; + } +}; + + +UGenericGraphFactory::UGenericGraphFactory() +{ + bCreateNew = true; + bEditAfterNew = true; + SupportedClass = UGenericGraph::StaticClass(); +} + +UGenericGraphFactory::~UGenericGraphFactory() +{ + +} + +bool UGenericGraphFactory::ConfigureProperties() +{ + // nullptr the GenericGraphClass so we can check for selection + GenericGraphClass = nullptr; + + // Load the classviewer module to display a class picker + FClassViewerModule& ClassViewerModule = FModuleManager::LoadModuleChecked("ClassViewer"); + + // Fill in options + FClassViewerInitializationOptions Options; + Options.Mode = EClassViewerMode::ClassPicker; + +#if ENGINE_MAJOR_VERSION < 5 + TSharedPtr Filter = MakeShareable(new FAssetClassParentFilter); + Options.ClassFilter = Filter; +#else // #if ENGINE_MAJOR_VERSION < 5 + TSharedRef Filter = MakeShareable(new FAssetClassParentFilter); + Options.ClassFilters.Add(Filter); +#endif // #else // #if ENGINE_MAJOR_VERSION < 5 + + Filter->DisallowedClassFlags = CLASS_Abstract | CLASS_Deprecated | CLASS_NewerVersionExists | CLASS_HideDropDown; + Filter->AllowedChildrenOfClasses.Add(UGenericGraph::StaticClass()); + + const FText TitleText = LOCTEXT("CreateGenericGraphAssetOptions", "Pick Generic Graph Class"); + UClass* ChosenClass = nullptr; + const bool bPressedOk = SClassPickerDialog::PickClass(TitleText, Options, ChosenClass, UGenericGraph::StaticClass()); + + if ( bPressedOk ) + { + GenericGraphClass = ChosenClass; + } + + return bPressedOk; +} + +UObject* UGenericGraphFactory::FactoryCreateNew(UClass* Class, UObject* InParent, FName Name, EObjectFlags Flags, UObject* Context, FFeedbackContext* Warn) +{ + if (GenericGraphClass != nullptr) + { + return NewObject(InParent, GenericGraphClass, Name, Flags | RF_Transactional); + } + else + { + check(Class->IsChildOf(UGenericGraph::StaticClass())); + return NewObject(InParent, Class, Name, Flags | RF_Transactional); + } + +} + +#undef LOCTEXT_NAMESPACE diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphNodeFactory.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphNodeFactory.cpp new file mode 100644 index 00000000..e79dd2cf --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphNodeFactory.cpp @@ -0,0 +1,20 @@ +#include "GenericGraphNodeFactory.h" +#include +#include "GenericGraphAssetEditor/SEdNode_GenericGraphEdge.h" +#include "GenericGraphAssetEditor/EdNode_GenericGraphNode.h" +#include "GenericGraphAssetEditor/SEdNode_GenericGraphNode.h" +#include "GenericGraphAssetEditor/EdNode_GenericGraphEdge.h" + +TSharedPtr FGraphPanelNodeFactory_GenericGraph::CreateNode(UEdGraphNode* Node) const +{ + if (UEdNode_GenericGraphNode* EdNode_GraphNode = Cast(Node)) + { + return SNew(SEdNode_GenericGraphNode, EdNode_GraphNode); + } + else if (UEdNode_GenericGraphEdge* EdNode_Edge = Cast(Node)) + { + return SNew(SEdNode_GenericGraphEdge, EdNode_Edge); + } + return nullptr; +} + diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/AssetTypeActions_GenericGraph.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/AssetTypeActions_GenericGraph.h new file mode 100644 index 00000000..8d7ba935 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/AssetTypeActions_GenericGraph.h @@ -0,0 +1,19 @@ +#pragma once + +#include "CoreMinimal.h" +#include "AssetTypeActions_Base.h" + +class GENERICGRAPHEDITOR_API FAssetTypeActions_GenericGraph : public FAssetTypeActions_Base +{ +public: + FAssetTypeActions_GenericGraph(EAssetTypeCategories::Type InAssetCategory); + + virtual FText GetName() const override; + virtual FColor GetTypeColor() const override; + virtual UClass* GetSupportedClass() const override; + virtual void OpenAssetEditor(const TArray& InObjects, TSharedPtr EditWithinLevelEditor = TSharedPtr()) override; + virtual uint32 GetCategories() override; + +private: + EAssetTypeCategories::Type MyAssetCategory; +}; \ No newline at end of file diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/AutoLayout/AutoLayoutStrategy.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/AutoLayout/AutoLayoutStrategy.h new file mode 100644 index 00000000..52a5efb3 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/AutoLayout/AutoLayoutStrategy.h @@ -0,0 +1,40 @@ +#pragma once + +#include "CoreMinimal.h" +#include "EdGraph/EdGraph.h" +#include "GenericGraph.h" +#include "GenericGraphAssetEditor/EdGraph_GenericGraph.h" +#include "GenericGraphAssetEditor/EdNode_GenericGraphNode.h" +#include "GenericGraphAssetEditor/EdNode_GenericGraphEdge.h" +#include "GenericGraphAssetEditor/Settings_GenericGraphEditor.h" +#include "AutoLayoutStrategy.generated.h" + +UCLASS(abstract) +class GENERICGRAPHEDITOR_API UAutoLayoutStrategy : public UObject +{ + GENERATED_BODY() +public: + UAutoLayoutStrategy(); + virtual ~UAutoLayoutStrategy(); + + virtual void Layout(UEdGraph* G) {}; + + class UGenericGraphEditorSettings* Settings; + +protected: + int32 GetNodeWidth(UEdNode_GenericGraphNode* EdNode); + + int32 GetNodeHeight(UEdNode_GenericGraphNode* EdNode); + + FBox2D GetNodeBound(UEdGraphNode* EdNode); + + FBox2D GetActualBounds(UGenericGraphNode* RootNode); + + virtual void RandomLayoutOneTree(UGenericGraphNode* RootNode, const FBox2D& Bound); + +protected: + UGenericGraph* Graph; + UEdGraph_GenericGraph* EdGraph; + int32 MaxIteration; + int32 OptimalDistance; +}; diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/AutoLayout/ForceDirectedLayoutStrategy.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/AutoLayout/ForceDirectedLayoutStrategy.h new file mode 100644 index 00000000..e5c40c95 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/AutoLayout/ForceDirectedLayoutStrategy.h @@ -0,0 +1,24 @@ +#pragma once + +#include "CoreMinimal.h" +#include "AutoLayoutStrategy.h" +#include "ForceDirectedLayoutStrategy.generated.h" + +UCLASS() +class GENERICGRAPHEDITOR_API UForceDirectedLayoutStrategy : public UAutoLayoutStrategy +{ + GENERATED_BODY() +public: + UForceDirectedLayoutStrategy(); + virtual ~UForceDirectedLayoutStrategy(); + + virtual void Layout(UEdGraph* EdGraph) override; + +protected: + virtual FBox2D LayoutOneTree(UGenericGraphNode* RootNode, const FBox2D& PreTreeBound); + +protected: + bool bRandomInit; + float InitTemperature; + float CoolDownRate; +}; diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/AutoLayout/TreeLayoutStrategy.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/AutoLayout/TreeLayoutStrategy.h new file mode 100644 index 00000000..27c7ff42 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/AutoLayout/TreeLayoutStrategy.h @@ -0,0 +1,29 @@ +#pragma once + +#include "CoreMinimal.h" +#include "AutoLayoutStrategy.h" +#include "TreeLayoutStrategy.generated.h" + +UCLASS() +class GENERICGRAPHEDITOR_API UTreeLayoutStrategy : public UAutoLayoutStrategy +{ + GENERATED_BODY() +public: + UTreeLayoutStrategy(); + virtual ~UTreeLayoutStrategy(); + + virtual void Layout(UEdGraph* EdGraph) override; + +protected: + void InitPass(UGenericGraphNode* RootNode, const FVector2D& Anchor); + bool ResolveConflictPass(UGenericGraphNode* Node); + + bool ResolveConflict(UGenericGraphNode* LRoot, UGenericGraphNode* RRoot); + + void GetLeftContour(UGenericGraphNode* RootNode, int32 Level, TArray& Contour); + void GetRightContour(UGenericGraphNode* RootNode, int32 Level, TArray& Contour); + + void ShiftSubTree(UGenericGraphNode* RootNode, const FVector2D& Offset); + + void UpdateParentNodePosition(UGenericGraphNode* RootNode); +}; diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/AssetEditorToolbar_GenericGraph.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/AssetEditorToolbar_GenericGraph.h new file mode 100644 index 00000000..37e5d092 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/AssetEditorToolbar_GenericGraph.h @@ -0,0 +1,24 @@ + +#pragma once + +#include "CoreMinimal.h" + +class FAssetEditor_GenericGraph; +class FExtender; +class FToolBarBuilder; + +class GENERICGRAPHEDITOR_API FAssetEditorToolbar_GenericGraph : public TSharedFromThis +{ +public: + FAssetEditorToolbar_GenericGraph(TSharedPtr InGenericGraphEditor) + : GenericGraphEditor(InGenericGraphEditor) {} + + void AddGenericGraphToolbar(TSharedPtr Extender); + +private: + void FillGenericGraphToolbar(FToolBarBuilder& ToolbarBuilder); + +protected: + /** Pointer back to the blueprint editor tool that owns us */ + TWeakPtr GenericGraphEditor; +}; diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/AssetEditor_GenericGraph.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/AssetEditor_GenericGraph.h new file mode 100644 index 00000000..f1cc415b --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/AssetEditor_GenericGraph.h @@ -0,0 +1,137 @@ +#pragma once + +#include "CoreMinimal.h" +#include "Settings_GenericGraphEditor.h" +#include "GenericGraph.h" + +#if ENGINE_MAJOR_VERSION == 5 +#include "UObject/ObjectSaveContext.h" +#endif // #if ENGINE_MAJOR_VERSION == 5 + +class FGGAssetEditorToolbar; + +class GENERICGRAPHEDITOR_API FAssetEditor_GenericGraph : public FAssetEditorToolkit, public FNotifyHook, public FGCObject +{ +public: + FAssetEditor_GenericGraph(); + virtual ~FAssetEditor_GenericGraph(); + + void InitGenericGraphAssetEditor(const EToolkitMode::Type Mode, const TSharedPtr< IToolkitHost >& InitToolkitHost, UGenericGraph* Graph); + + // IToolkit interface + virtual void RegisterTabSpawners(const TSharedRef& TabManager) override; + virtual void UnregisterTabSpawners(const TSharedRef& TabManager) override; + // End of IToolkit interface + + // FAssetEditorToolkit + virtual FName GetToolkitFName() const override; + virtual FText GetBaseToolkitName() const override; + virtual FText GetToolkitName() const override; + virtual FText GetToolkitToolTipText() const override; + virtual FLinearColor GetWorldCentricTabColorScale() const override; + virtual FString GetWorldCentricTabPrefix() const override; + virtual FString GetDocumentationLink() const override; + virtual void SaveAsset_Execute() override; + // End of FAssetEditorToolkit + + //Toolbar + void UpdateToolbar(); + TSharedPtr GetToolbarBuilder() { return ToolbarBuilder; } + void RegisterToolbarTab(const TSharedRef& TabManager); + + + // FSerializableObject interface + virtual void AddReferencedObjects(FReferenceCollector& Collector) override; + // End of FSerializableObject interface + +#if ENGINE_MAJOR_VERSION == 5 + // FGCObject interface + virtual FString GetReferencerName() const + { + return TEXT("FAssetEditor_LTGenericGraph"); + } + // ~FGCObject interface +#endif // #if ENGINE_MAJOR_VERSION == 5 + + UGenericGraphEditorSettings* GetSettings() const; + +protected: + TSharedRef SpawnTab_Viewport(const FSpawnTabArgs& Args); + TSharedRef SpawnTab_Details(const FSpawnTabArgs& Args); + TSharedRef SpawnTab_EditorSettings(const FSpawnTabArgs& Args); + + void CreateInternalWidgets(); + TSharedRef CreateViewportWidget(); + + + void BindCommands(); + + void CreateEdGraph(); + + void CreateCommandList(); + + TSharedPtr GetCurrGraphEditor() const; + + FGraphPanelSelectionSet GetSelectedNodes() const; + + void RebuildGenericGraph(); + + // Delegates for graph editor commands + void SelectAllNodes(); + bool CanSelectAllNodes(); + void DeleteSelectedNodes(); + bool CanDeleteNodes(); + void DeleteSelectedDuplicatableNodes(); + void CutSelectedNodes(); + bool CanCutNodes(); + void CopySelectedNodes(); + bool CanCopyNodes(); + void PasteNodes(); + void PasteNodesHere(const FVector2D& Location); + bool CanPasteNodes(); + void DuplicateNodes(); + bool CanDuplicateNodes(); + + void GraphSettings(); + bool CanGraphSettings() const; + + void AutoArrange(); + bool CanAutoArrange() const; + + void OnRenameNode(); + bool CanRenameNodes() const; + + ////////////////////////////////////////////////////////////////////////// + // graph editor event + void OnSelectedNodesChanged(const TSet& NewSelection); + + void OnNodeDoubleClicked(UEdGraphNode* Node); + + void OnFinishedChangingProperties(const FPropertyChangedEvent& PropertyChangedEvent); + +#if ENGINE_MAJOR_VERSION < 5 + void OnPackageSaved(const FString& PackageFileName, UObject* Outer); +#else // #if ENGINE_MAJOR_VERSION < 5 + void OnPackageSavedWithContext(const FString& PackageFileName, UPackage* Package, FObjectPostSaveContext ObjectSaveContext); +#endif // #else // #if ENGINE_MAJOR_VERSION < 5 + +protected: + UGenericGraphEditorSettings* GenricGraphEditorSettings; + + UGenericGraph* EditingGraph; + + //Toolbar + TSharedPtr ToolbarBuilder; + + /** Handle to the registered OnPackageSave delegate */ + FDelegateHandle OnPackageSavedDelegateHandle; + + TSharedPtr ViewportWidget; + TSharedPtr PropertyWidget; + TSharedPtr EditorSettingsWidget; + + /** The command list for this editor */ + TSharedPtr GraphEditorCommands; +}; + + diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/AssetGraphSchema_GenericGraph.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/AssetGraphSchema_GenericGraph.h new file mode 100644 index 00000000..faf74b9c --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/AssetGraphSchema_GenericGraph.h @@ -0,0 +1,90 @@ +#pragma once + +#include "CoreMinimal.h" +#include "GenericGraph.h" +#include "GenericGraphNode.h" +#include "GenericGraphEdge.h" +#include "AssetGraphSchema_GenericGraph.generated.h" + +class UEdNode_GenericGraphNode; +class UEdNode_GenericGraphEdge; +class UAutoLayoutStrategy; + +/** Action to add a node to the graph */ +USTRUCT() +struct GENERICGRAPHEDITOR_API FAssetSchemaAction_GenericGraph_NewNode : public FEdGraphSchemaAction +{ + GENERATED_USTRUCT_BODY(); + +public: + FAssetSchemaAction_GenericGraph_NewNode(): NodeTemplate(nullptr) {} + + FAssetSchemaAction_GenericGraph_NewNode(const FText& InNodeCategory, const FText& InMenuDesc, const FText& InToolTip, const int32 InGrouping) + : FEdGraphSchemaAction(InNodeCategory, InMenuDesc, InToolTip, InGrouping), NodeTemplate(nullptr) {} + + virtual UEdGraphNode* PerformAction(class UEdGraph* ParentGraph, UEdGraphPin* FromPin, const FVector2D Location, bool bSelectNewNode = true) override; + virtual void AddReferencedObjects(FReferenceCollector& Collector) override; + + UEdNode_GenericGraphNode* NodeTemplate; +}; + +USTRUCT() +struct GENERICGRAPHEDITOR_API FAssetSchemaAction_GenericGraph_NewEdge : public FEdGraphSchemaAction +{ + GENERATED_USTRUCT_BODY(); + +public: + FAssetSchemaAction_GenericGraph_NewEdge(): NodeTemplate(nullptr){} + + FAssetSchemaAction_GenericGraph_NewEdge(const FText& InNodeCategory, const FText& InMenuDesc, const FText& InToolTip, const int32 InGrouping) + : FEdGraphSchemaAction(InNodeCategory, InMenuDesc, InToolTip, InGrouping), NodeTemplate(nullptr) {} + + virtual UEdGraphNode* PerformAction(class UEdGraph* ParentGraph, UEdGraphPin* FromPin, const FVector2D Location, bool bSelectNewNode = true) override; + virtual void AddReferencedObjects(FReferenceCollector& Collector) override; + + UEdNode_GenericGraphEdge* NodeTemplate; +}; + +UCLASS(MinimalAPI) +class UAssetGraphSchema_GenericGraph : public UEdGraphSchema +{ + GENERATED_BODY() + +public: + void GetBreakLinkToSubMenuActions(class UToolMenu* Menu, class UEdGraphPin* InGraphPin); + + virtual EGraphType GetGraphType(const UEdGraph* TestEdGraph) const override; + + virtual void GetGraphContextActions(FGraphContextMenuBuilder& ContextMenuBuilder) const override; + + virtual void GetContextMenuActions(class UToolMenu* Menu, class UGraphNodeContextMenuContext* Context) const override; + + virtual const FPinConnectionResponse CanCreateConnection(const UEdGraphPin* A, const UEdGraphPin* B) const override; + + virtual bool TryCreateConnection(UEdGraphPin* A, UEdGraphPin* B) const override; + virtual bool CreateAutomaticConversionNodeAndConnections(UEdGraphPin* A, UEdGraphPin* B) const override; + + virtual class FConnectionDrawingPolicy* CreateConnectionDrawingPolicy(int32 InBackLayerID, int32 InFrontLayerID, float InZoomFactor, const FSlateRect& InClippingRect, class FSlateWindowElementList& InDrawElements, class UEdGraph* InGraphObj) const override; + + virtual FLinearColor GetPinTypeColor(const FEdGraphPinType& PinType) const override; + + virtual void BreakNodeLinks(UEdGraphNode& TargetNode) const override; + + virtual void BreakPinLinks(UEdGraphPin& TargetPin, bool bSendsNodeNotifcation) const override; + + virtual void BreakSinglePinLink(UEdGraphPin* SourcePin, UEdGraphPin* TargetPin) const override; + + virtual UEdGraphPin* DropPinOnNode(UEdGraphNode* InTargetNode, const FName& InSourcePinName, const FEdGraphPinType& InSourcePinType, EEdGraphPinDirection InSourcePinDirection) const override; + + virtual bool SupportsDropPinOnNode(UEdGraphNode* InTargetNode, const FEdGraphPinType& InSourcePinType, EEdGraphPinDirection InSourcePinDirection, FText& OutErrorMessage) const override; + + virtual bool IsCacheVisualizationOutOfDate(int32 InVisualizationCacheID) const override; + + virtual int32 GetCurrentVisualizationCacheID() const override; + + virtual void ForceVisualizationCacheClear() const override; + +private: + static int32 CurrentCacheRefreshID; +}; + diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/Colors_GenericGraph.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/Colors_GenericGraph.h new file mode 100644 index 00000000..5258d1a8 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/Colors_GenericGraph.h @@ -0,0 +1,45 @@ +#pragma once + +#include "CoreMinimal.h" + +namespace GenericGraphColors +{ + namespace NodeBody + { + const FLinearColor Default(0.1f, 0.1f, 0.1f); + const FLinearColor Root(0.5f, 0.5f, 0.5f, 0.1f); + const FLinearColor Error(1.0f, 0.0f, 0.0f); + } + + namespace NodeBorder + { + const FLinearColor Inactive(0.08f, 0.08f, 0.08f); + const FLinearColor Root(0.2f, 0.2f, 0.2f, 0.2f); + const FLinearColor Selected(1.00f, 0.08f, 0.08f); + const FLinearColor ActiveDebugging(1.0f, 1.0f, 0.0f); + const FLinearColor InactiveDebugging(0.4f, 0.4f, 0.0f); + const FLinearColor HighlightAbortRange0(0.0f, 0.22f, 0.4f); + const FLinearColor HighlightAbortRange1(0.0f, 0.4f, 0.22f); + const FLinearColor Disconnected(0.f, 0.f, 0.f); + const FLinearColor BrokenWithParent(1.f, 0.f, 1.f); + const FLinearColor QuickFind(0.f, 0.8f, 0.f); + } + + namespace Pin + { + const FLinearColor Diff(0.9f, 0.2f, 0.15f); + const FLinearColor Hover(1.0f, 0.7f, 0.0f); + const FLinearColor Default(0.02f, 0.02f, 0.02f); + const FLinearColor SingleNode(0.02f, 0.02f, 0.02f); + } + + namespace Connection + { + const FLinearColor Default(1.0f, 1.0f, 1.0f); + } + + namespace Action + { + const FLinearColor DragMarker(1.0f, 1.0f, 0.2f); + } +} diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/ConnectionDrawingPolicy_GenericGraph.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/ConnectionDrawingPolicy_GenericGraph.h new file mode 100644 index 00000000..e375e816 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/ConnectionDrawingPolicy_GenericGraph.h @@ -0,0 +1,27 @@ +#pragma once + +#include "CoreMinimal.h" +#include "ConnectionDrawingPolicy.h" + +class GENERICGRAPHEDITOR_API FConnectionDrawingPolicy_GenericGraph : public FConnectionDrawingPolicy +{ +protected: + UEdGraph* GraphObj; + TMap NodeWidgetMap; + +public: + FConnectionDrawingPolicy_GenericGraph(int32 InBackLayerID, int32 InFrontLayerID, float ZoomFactor, const FSlateRect& InClippingRect, FSlateWindowElementList& InDrawElements, UEdGraph* InGraphObj); + + // FConnectionDrawingPolicy interface + virtual void DetermineWiringStyle(UEdGraphPin* OutputPin, UEdGraphPin* InputPin, /*inout*/ FConnectionParams& Params) override; + virtual void Draw(TMap, FArrangedWidget>& PinGeometries, FArrangedChildren& ArrangedNodes) override; + virtual void DrawSplineWithArrow(const FGeometry& StartGeom, const FGeometry& EndGeom, const FConnectionParams& Params) override; + virtual void DrawSplineWithArrow(const FVector2D& StartPoint, const FVector2D& EndPoint, const FConnectionParams& Params) override; + virtual void DrawPreviewConnector(const FGeometry& PinGeometry, const FVector2D& StartPoint, const FVector2D& EndPoint, UEdGraphPin* Pin) override; + virtual FVector2D ComputeSplineTangent(const FVector2D& Start, const FVector2D& End) const override; + virtual void DetermineLinkGeometry(FArrangedChildren& ArrangedNodes, TSharedRef& OutputPinWidget, UEdGraphPin* OutputPin, UEdGraphPin* InputPin, FArrangedWidget*& StartWidgetGeometry, FArrangedWidget*& EndWidgetGeometry) override; + // End of FConnectionDrawingPolicy interface + +protected: + void Internal_DrawLineWithArrow(const FVector2D& StartAnchorPoint, const FVector2D& EndAnchorPoint, const FConnectionParams& Params); +}; diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/EdGraph_GenericGraph.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/EdGraph_GenericGraph.h new file mode 100644 index 00000000..5cb92af3 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/EdGraph_GenericGraph.h @@ -0,0 +1,39 @@ +#pragma once + +#include "CoreMinimal.h" +#include "EdGraph/EdGraph.h" +#include "EdGraph_GenericGraph.generated.h" + +class UGenericGraph; +class UGenericGraphNode; +class UGenericGraphEdge; +class UEdNode_GenericGraphNode; +class UEdNode_GenericGraphEdge; + +UCLASS() +class GENERICGRAPHEDITOR_API UEdGraph_GenericGraph : public UEdGraph +{ + GENERATED_BODY() + +public: + UEdGraph_GenericGraph(); + virtual ~UEdGraph_GenericGraph(); + + virtual void RebuildGenericGraph(); + + UGenericGraph* GetGenericGraph() const; + + virtual bool Modify(bool bAlwaysMarkDirty = true) override; + virtual void PostEditUndo() override; + + UPROPERTY(Transient) + TMap NodeMap; + + UPROPERTY(Transient) + TMap EdgeMap; + +protected: + void Clear(); + + void SortNodes(UGenericGraphNode* RootNode); +}; diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/EdNode_GenericGraphEdge.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/EdNode_GenericGraphEdge.h new file mode 100644 index 00000000..ac480d8f --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/EdNode_GenericGraphEdge.h @@ -0,0 +1,42 @@ +#pragma once + +#include "CoreMinimal.h" +#include "EdGraph/EdGraphNode.h" +#include "EdNode_GenericGraphEdge.generated.h" + +class UGenericGraphNode; +class UGenericGraphEdge; +class UEdNode_GenericGraphNode; + +UCLASS(MinimalAPI) +class UEdNode_GenericGraphEdge : public UEdGraphNode +{ + GENERATED_BODY() + +public: + UEdNode_GenericGraphEdge(); + + UPROPERTY() + class UEdGraph* Graph; + + UPROPERTY(VisibleAnywhere, Instanced, Category = "GenericGraph") + UGenericGraphEdge* GenericGraphEdge; + + void SetEdge(UGenericGraphEdge* Edge); + + virtual void AllocateDefaultPins() override; + + virtual FText GetNodeTitle(ENodeTitleType::Type TitleType) const override; + + virtual void PinConnectionListChanged(UEdGraphPin* Pin) override; + + virtual void PrepareForCopying() override; + + virtual UEdGraphPin* GetInputPin() const { return Pins[0]; } + virtual UEdGraphPin* GetOutputPin() const { return Pins[1]; } + + void CreateConnections(UEdNode_GenericGraphNode* Start, UEdNode_GenericGraphNode* End); + + UEdNode_GenericGraphNode* GetStartNode(); + UEdNode_GenericGraphNode* GetEndNode(); +}; diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/EdNode_GenericGraphNode.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/EdNode_GenericGraphNode.h new file mode 100644 index 00000000..258a089c --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/EdNode_GenericGraphNode.h @@ -0,0 +1,42 @@ +#pragma once + +#include "CoreMinimal.h" +#include "EdGraph/EdGraphNode.h" +#include "GenericGraphNode.h" +#include "EdNode_GenericGraphNode.generated.h" + +class UEdNode_GenericGraphEdge; +class UEdGraph_GenericGraph; +class SEdNode_GenericGraphNode; + +UCLASS(MinimalAPI) +class UEdNode_GenericGraphNode : public UEdGraphNode +{ + GENERATED_BODY() + +public: + UEdNode_GenericGraphNode(); + virtual ~UEdNode_GenericGraphNode(); + + UPROPERTY(VisibleAnywhere, Instanced, Category = "GenericGraph") + UGenericGraphNode* GenericGraphNode; + + void SetGenericGraphNode(UGenericGraphNode* InNode); + UEdGraph_GenericGraph* GetGenericGraphEdGraph(); + + SEdNode_GenericGraphNode* SEdNode; + + virtual void AllocateDefaultPins() override; + virtual FText GetNodeTitle(ENodeTitleType::Type TitleType) const override; + virtual void PrepareForCopying() override; + virtual void AutowireNewNode(UEdGraphPin* FromPin) override; + + virtual FLinearColor GetBackgroundColor() const; + virtual UEdGraphPin* GetInputPin() const; + virtual UEdGraphPin* GetOutputPin() const; + +#if WITH_EDITOR + virtual void PostEditUndo() override; +#endif + +}; diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/EditorCommands_GenericGraph.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/EditorCommands_GenericGraph.h new file mode 100644 index 00000000..ff6c5bd9 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/EditorCommands_GenericGraph.h @@ -0,0 +1,18 @@ +#pragma once + +#include "CoreMinimal.h" + +class GENERICGRAPHEDITOR_API FEditorCommands_GenericGraph : public TCommands +{ +public: + /** Constructor */ + FEditorCommands_GenericGraph() + : TCommands("GenericGraphEditor", NSLOCTEXT("Contexts", "GenericGraphEditor", "Generic Graph Editor"), NAME_None, FAppStyle::GetAppStyleSetName()) + { + } + + TSharedPtr GraphSettings; + TSharedPtr AutoArrange; + + virtual void RegisterCommands() override; +}; diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/GenericGraphDragConnection.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/GenericGraphDragConnection.h new file mode 100644 index 00000000..bd0a91af --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/GenericGraphDragConnection.h @@ -0,0 +1,52 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#pragma once + +#include "CoreMinimal.h" +#include "Input/DragAndDrop.h" +#include "Input/Reply.h" +#include "Widgets/SWidget.h" +#include "SGraphPin.h" +#include "GraphEditorDragDropAction.h" + +class SGraphPanel; +class UEdGraph; + +class FGenericGraphDragConnection : public FGraphEditorDragDropAction +{ +public: + DRAG_DROP_OPERATOR_TYPE(FDragConnection, FGraphEditorDragDropAction) + + typedef TArray FDraggedPinTable; + static TSharedRef New(const TSharedRef& InGraphPanel, const FDraggedPinTable& InStartingPins); + + // FDragDropOperation interface + virtual void OnDrop(bool bDropWasHandled, const FPointerEvent& MouseEvent) override; + // End of FDragDropOperation interface + + // FGraphEditorDragDropAction interface + virtual void HoverTargetChanged() override; + virtual FReply DroppedOnPin(FVector2D ScreenPosition, FVector2D GraphPosition) override; + virtual FReply DroppedOnNode(FVector2D ScreenPosition, FVector2D GraphPosition) override; + virtual FReply DroppedOnPanel(const TSharedRef< SWidget >& Panel, FVector2D ScreenPosition, FVector2D GraphPosition, UEdGraph& Graph) override; + virtual void OnDragged(const class FDragDropEvent& DragDropEvent) override; + // End of FGraphEditorDragDropAction interface + + /* + * Function to check validity of graph pins in the StartPins list. This check helps to prevent processing graph pins which are outdated. + */ + virtual void ValidateGraphPinList(TArray& OutValidPins); + +protected: + typedef FGraphEditorDragDropAction Super; + + // Constructor: Make sure to call Construct() after factorying one of these + FGenericGraphDragConnection(const TSharedRef& GraphPanel, const FDraggedPinTable& DraggedPins); + +protected: + TSharedPtr GraphPanel; + FDraggedPinTable DraggingPins; + + /** Offset information for the decorator widget */ + FVector2D DecoratorAdjust; +}; diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/GenericGraphEditorStyle.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/GenericGraphEditorStyle.h new file mode 100644 index 00000000..577312f3 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/GenericGraphEditorStyle.h @@ -0,0 +1,16 @@ +#pragma once + +#include "CoreMinimal.h" +#include "Styling/SlateStyle.h" + +class GENERICGRAPHEDITOR_API FGenericGraphEditorStyle +{ +public: + static void Initialize(); + static void Shutdown(); + + static const FName& GetStyleSetName(); + +private: + static TSharedPtr StyleSet; +}; diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/SEdNode_GenericGraphEdge.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/SEdNode_GenericGraphEdge.h new file mode 100644 index 00000000..8505a5f6 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/SEdNode_GenericGraphEdge.h @@ -0,0 +1,40 @@ +#pragma once + +#include "CoreMinimal.h" +#include "Styling/SlateColor.h" +#include "Widgets/DeclarativeSyntaxSupport.h" +#include "Widgets/SWidget.h" +#include "SNodePanel.h" +#include "SGraphNode.h" + +class SToolTip; +class UEdNode_GenericGraphEdge; + +class GENERICGRAPHEDITOR_API SEdNode_GenericGraphEdge : public SGraphNode +{ +public: + SLATE_BEGIN_ARGS(SEdNode_GenericGraphEdge){} + SLATE_END_ARGS() + + void Construct(const FArguments& InArgs, UEdNode_GenericGraphEdge* InNode); + + virtual bool RequiresSecondPassLayout() const override; + virtual void PerformSecondPassLayout(const TMap< UObject*, TSharedRef >& NodeToWidgetLookup) const override; + + virtual void UpdateGraphNode() override; + + // Calculate position for multiple nodes to be placed between a start and end point, by providing this nodes index and max expected nodes + void PositionBetweenTwoNodesWithOffset(const FGeometry& StartGeom, const FGeometry& EndGeom, int32 NodeIndex, int32 MaxNodes) const; + + void OnNameTextCommited(const FText& InText, ETextCommit::Type CommitInfo); + +protected: + FSlateColor GetEdgeColor() const; + + const FSlateBrush* GetEdgeImage() const; + + EVisibility GetEdgeImageVisibility() const; + EVisibility GetEdgeTitleVisbility() const; +private: + TSharedPtr TextEntryWidget; +}; diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/SEdNode_GenericGraphNode.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/SEdNode_GenericGraphNode.h new file mode 100644 index 00000000..1d4d9b99 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/SEdNode_GenericGraphNode.h @@ -0,0 +1,32 @@ +#pragma once + +#include "CoreMinimal.h" +#include "SGraphNode.h" + +class UEdNode_GenericGraphNode; + +class GENERICGRAPHEDITOR_API SEdNode_GenericGraphNode : public SGraphNode +{ +public: + SLATE_BEGIN_ARGS(SEdNode_GenericGraphNode) {} + SLATE_END_ARGS() + + void Construct(const FArguments& InArgs, UEdNode_GenericGraphNode* InNode); + + virtual void UpdateGraphNode() override; + virtual void CreatePinWidgets() override; + virtual void AddPin(const TSharedRef& PinToAdd) override; + virtual bool IsNameReadOnly() const override; + + void OnNameTextCommited(const FText& InText, ETextCommit::Type CommitInfo); + + virtual FSlateColor GetBorderBackgroundColor() const; + virtual FSlateColor GetBackgroundColor() const; + + virtual EVisibility GetDragOverMarkerVisibility() const; + + virtual const FSlateBrush* GetNameIcon() const; + +protected: +}; + diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/Settings_GenericGraphEditor.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/Settings_GenericGraphEditor.h new file mode 100644 index 00000000..c1e39156 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/Settings_GenericGraphEditor.h @@ -0,0 +1,42 @@ +#pragma once + +#include "CoreMinimal.h" +#include "Settings_GenericGraphEditor.generated.h" + +UENUM(BlueprintType) +enum class EAutoLayoutStrategy : uint8 +{ + Tree, + ForceDirected, +}; + +UCLASS() +class GENERICGRAPHEDITOR_API UGenericGraphEditorSettings : public UObject +{ + GENERATED_BODY() + +public: + UGenericGraphEditorSettings(); + virtual ~UGenericGraphEditorSettings(); + + UPROPERTY(EditDefaultsOnly, Category = "AutoArrange") + float OptimalDistance; + + UPROPERTY(EditDefaultsOnly, AdvancedDisplay, Category = "AutoArrange") + EAutoLayoutStrategy AutoLayoutStrategy; + + UPROPERTY(EditDefaultsOnly, AdvancedDisplay, Category = "AutoArrange") + int32 MaxIteration; + + UPROPERTY(EditDefaultsOnly, AdvancedDisplay, Category = "AutoArrange") + bool bFirstPassOnly; + + UPROPERTY(EditDefaultsOnly, AdvancedDisplay, Category = "AutoArrange") + bool bRandomInit; + + UPROPERTY(EditDefaultsOnly, AdvancedDisplay, Category = "AutoArrange") + float InitTemperature; + + UPROPERTY(EditDefaultsOnly, AdvancedDisplay, Category = "AutoArrange") + float CoolDownRate; +}; diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphEditor.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphEditor.h new file mode 100644 index 00000000..f710fc2c --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphEditor.h @@ -0,0 +1,23 @@ +#pragma once +#include "Modules/ModuleManager.h" +#include "GenericGraphEditorModule.h" +#include +#include + +class FGenericGraphEditor : public IGenericGraphEditor +{ + /** IModuleInterface implementation */ + virtual void StartupModule() override; + virtual void ShutdownModule() override; + + +private: + void RegisterAssetTypeAction(IAssetTools& AssetTools, TSharedRef Action); + +private: + TArray< TSharedPtr > CreatedAssetTypeActions; + + EAssetTypeCategories::Type GenericGraphAssetCategoryBit; + + TSharedPtr GraphPanelNodeFactory_GenericGraph; +}; \ No newline at end of file diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphEditorModule.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphEditorModule.h new file mode 100644 index 00000000..c042dc1f --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphEditorModule.h @@ -0,0 +1,34 @@ +#include"Modules/ModuleManager.h" + +DECLARE_LOG_CATEGORY_EXTERN(GenericGraphEditor, Log, All); + +/** + * The public interface to this module + */ +class IGenericGraphEditor : public IModuleInterface +{ + +public: + + /** + * Singleton-like access to this module's interface. This is just for convenience! + * Beware of calling this during the shutdown phase, though. Your module might have been unloaded already. + * + * @return Returns singleton instance, loading the module on demand if needed + */ + static IGenericGraphEditor& Get() + { + return FModuleManager::LoadModuleChecked< IGenericGraphEditor >("GenericGraphEditor"); + } + + /** + * Checks to see if this module is loaded and ready. It is only valid to call Get() if IsAvailable() returns true. + * + * @return True if the module is loaded and ready to use + */ + static bool IsAvailable() + { + return FModuleManager::Get().IsModuleLoaded("GenericGraphEditor"); + } +}; + diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphEditorPCH.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphEditorPCH.h new file mode 100644 index 00000000..f0385f7d --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphEditorPCH.h @@ -0,0 +1,13 @@ +#pragma once + +#include "GenericGraph.h" +#include "GenericGraphNode.h" +#include "GenericGraphEdge.h" + +// You should place include statements to your module's private header files here. You only need to +// add includes for headers that are used in most of your module's source files though. +#include "GenericGraphEditor.h" + +#define LOG_INFO(FMT, ...) UE_LOG(GenericGraphEditor, Display, (FMT), ##__VA_ARGS__) +#define LOG_WARNING(FMT, ...) UE_LOG(GenericGraphEditor, Warning, (FMT), ##__VA_ARGS__) +#define LOG_ERROR(FMT, ...) UE_LOG(GenericGraphEditor, Error, (FMT), ##__VA_ARGS__) diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphFactory.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphFactory.h new file mode 100644 index 00000000..00cc44d4 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphFactory.h @@ -0,0 +1,22 @@ +#pragma once + +#include "CoreMinimal.h" +#include "Factories/Factory.h" +#include "GenericGraph.h" +#include "GenericGraphFactory.generated.h" + +UCLASS() +class GENERICGRAPHEDITOR_API UGenericGraphFactory : public UFactory +{ + GENERATED_BODY() + +public: + UGenericGraphFactory(); + virtual ~UGenericGraphFactory(); + + UPROPERTY(EditAnywhere, Category=DataAsset) + TSubclassOf GenericGraphClass; + + virtual bool ConfigureProperties() override; + virtual UObject* FactoryCreateNew(UClass* Class, UObject* InParent, FName Name, EObjectFlags Flags, UObject* Context, FFeedbackContext* Warn) override; +}; diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphNodeFactory.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphNodeFactory.h new file mode 100644 index 00000000..5feb3345 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphNodeFactory.h @@ -0,0 +1,8 @@ +#pragma once +#include +#include + +class FGraphPanelNodeFactory_GenericGraph : public FGraphPanelNodeFactory +{ + virtual TSharedPtr CreateNode(UEdGraphNode* Node) const override; +}; \ No newline at end of file diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/GenericGraphRuntime.Build.cs b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/GenericGraphRuntime.Build.cs new file mode 100644 index 00000000..e3d5c5d9 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/GenericGraphRuntime.Build.cs @@ -0,0 +1,51 @@ +using UnrealBuildTool; + +public class GenericGraphRuntime : ModuleRules +{ + public GenericGraphRuntime(ReadOnlyTargetRules Target) : base(Target) + { + PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; + bLegacyPublicIncludePaths = false; + ShadowVariableWarningLevel = WarningLevel.Error; + + PublicIncludePaths.AddRange( + new string[] { + // ... add public include paths required here ... + } + ); + + PrivateIncludePaths.AddRange( + new string[] { + "GenericGraphRuntime/Private", + // ... add other private include paths required here ... + } + ); + + PublicDependencyModuleNames.AddRange( + new string[] + { + "Core", + "CoreUObject", + "Engine", + // ... add other public dependencies that you statically link with here ... + } + ); + + PrivateDependencyModuleNames.AddRange( + new string[] + { + // ... add private dependencies that you statically link with here ... + "Slate", + "SlateCore", + "GameplayTags" + } + ); + + DynamicallyLoadedModuleNames.AddRange( + new string[] + { + // ... add any modules that your module loads dynamically here ... + } + ); + } +} \ No newline at end of file diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Private/GenericGraph.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Private/GenericGraph.cpp new file mode 100644 index 00000000..c2bbb302 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Private/GenericGraph.cpp @@ -0,0 +1,136 @@ +#include "GenericGraph.h" +#include "GenericGraphRuntimePCH.h" +#include "Engine/Engine.h" + +#define LOCTEXT_NAMESPACE "GenericGraph" + +UGenericGraph::UGenericGraph() +{ + NodeType = UGenericGraphNode::StaticClass(); + EdgeType = UGenericGraphEdge::StaticClass(); + + bEdgeEnabled = true; + +#if WITH_EDITORONLY_DATA + EdGraph = nullptr; + + bCanRenameNode = true; +#endif +} + +UGenericGraph::~UGenericGraph() +{ + +} + +void UGenericGraph::Print(bool ToConsole /*= true*/, bool ToScreen /*= true*/) +{ + int Level = 0; + TArray CurrLevelNodes = RootNodes; + TArray NextLevelNodes; + + while (CurrLevelNodes.Num() != 0) + { + for (int i = 0; i < CurrLevelNodes.Num(); ++i) + { + UGenericGraphNode* Node = CurrLevelNodes[i]; + check(Node != nullptr); + + FString Message = FString::Printf(TEXT("%s, Level %d"), *Node->GetDescription().ToString(), Level); + + if (ToConsole) + { + LOG_INFO(TEXT("%s"), *Message); + } + + if (ToScreen && GEngine != nullptr) + { + GEngine->AddOnScreenDebugMessage(-1, 15.f, FColor::Blue, Message); + } + + for (int j = 0; j < Node->ChildrenNodes.Num(); ++j) + { + NextLevelNodes.Add(Node->ChildrenNodes[j]); + } + } + + CurrLevelNodes = NextLevelNodes; + NextLevelNodes.Reset(); + ++Level; + } +} + +int UGenericGraph::GetLevelNum() const +{ + int Level = 0; + TArray CurrLevelNodes = RootNodes; + TArray NextLevelNodes; + + while (CurrLevelNodes.Num() != 0) + { + for (int i = 0; i < CurrLevelNodes.Num(); ++i) + { + UGenericGraphNode* Node = CurrLevelNodes[i]; + check(Node != nullptr); + + for (int j = 0; j < Node->ChildrenNodes.Num(); ++j) + { + NextLevelNodes.Add(Node->ChildrenNodes[j]); + } + } + + CurrLevelNodes = NextLevelNodes; + NextLevelNodes.Reset(); + ++Level; + } + + return Level; +} + +void UGenericGraph::GetNodesByLevel(int Level, TArray& Nodes) +{ + int CurrLEvel = 0; + TArray NextLevelNodes; + + Nodes = RootNodes; + + while (Nodes.Num() != 0) + { + if (CurrLEvel == Level) + break; + + for (int i = 0; i < Nodes.Num(); ++i) + { + UGenericGraphNode* Node = Nodes[i]; + check(Node != nullptr); + + for (int j = 0; j < Node->ChildrenNodes.Num(); ++j) + { + NextLevelNodes.Add(Node->ChildrenNodes[j]); + } + } + + Nodes = NextLevelNodes; + NextLevelNodes.Reset(); + ++CurrLEvel; + } +} + +void UGenericGraph::ClearGraph() +{ + for (int i = 0; i < AllNodes.Num(); ++i) + { + UGenericGraphNode* Node = AllNodes[i]; + if (Node) + { + Node->ParentNodes.Empty(); + Node->ChildrenNodes.Empty(); + Node->Edges.Empty(); + } + } + + AllNodes.Empty(); + RootNodes.Empty(); +} + +#undef LOCTEXT_NAMESPACE diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Private/GenericGraphEdge.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Private/GenericGraphEdge.cpp new file mode 100644 index 00000000..6d0118c7 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Private/GenericGraphEdge.cpp @@ -0,0 +1,23 @@ +#include "GenericGraphEdge.h" + +UGenericGraphEdge::UGenericGraphEdge() +{ + +} + +UGenericGraphEdge::~UGenericGraphEdge() +{ + +} + +UGenericGraph* UGenericGraphEdge::GetGraph() const +{ + return Graph; +} + +#if WITH_EDITOR +void UGenericGraphEdge::SetNodeTitle(const FText& NewTitle) +{ + NodeTitle = NewTitle; +} +#endif // #if WITH_EDITOR \ No newline at end of file diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Private/GenericGraphNode.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Private/GenericGraphNode.cpp new file mode 100644 index 00000000..548cdc3b --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Private/GenericGraphNode.cpp @@ -0,0 +1,90 @@ +#include "GenericGraphNode.h" +#include "GenericGraph.h" + +#define LOCTEXT_NAMESPACE "GenericGraphNode" + +UGenericGraphNode::UGenericGraphNode() +{ +#if WITH_EDITORONLY_DATA + CompatibleGraphType = UGenericGraph::StaticClass(); + + BackgroundColor = FLinearColor::Black; +#endif +} + +UGenericGraphNode::~UGenericGraphNode() +{ +} + +UGenericGraphEdge* UGenericGraphNode::GetEdge(UGenericGraphNode* ChildNode) +{ + return Edges.Contains(ChildNode) ? Edges.FindChecked(ChildNode) : nullptr; +} + +FText UGenericGraphNode::GetDescription_Implementation() const +{ + return LOCTEXT("NodeDesc", "Generic Graph Node"); +} + +#if WITH_EDITOR +bool UGenericGraphNode::IsNameEditable() const +{ + return true; +} + +FLinearColor UGenericGraphNode::GetBackgroundColor() const +{ + return BackgroundColor; +} + +FText UGenericGraphNode::GetNodeTitle() const +{ + return NodeTitle.IsEmpty() ? GetDescription() : NodeTitle; +} + +void UGenericGraphNode::SetNodeTitle(const FText& NewTitle) +{ + NodeTitle = NewTitle; +} + +bool UGenericGraphNode::CanCreateConnection(UGenericGraphNode* Other, FText& ErrorMessage) +{ + return true; +} + +bool UGenericGraphNode::CanCreateConnectionTo(UGenericGraphNode* Other, int32 NumberOfChildrenNodes, FText& ErrorMessage) +{ + if (ChildrenLimitType == ENodeLimit::Limited && NumberOfChildrenNodes >= ChildrenLimit) + { + ErrorMessage = FText::FromString("Children limit exceeded"); + return false; + } + + return CanCreateConnection(Other, ErrorMessage); +} + +bool UGenericGraphNode::CanCreateConnectionFrom(UGenericGraphNode* Other, int32 NumberOfParentNodes, FText& ErrorMessage) +{ + if (ParentLimitType == ENodeLimit::Limited && NumberOfParentNodes >= ParentLimit) + { + ErrorMessage = FText::FromString("Parent limit exceeded"); + return false; + } + + return true; +} + + +#endif + +bool UGenericGraphNode::IsLeafNode() const +{ + return ChildrenNodes.Num() == 0; +} + +UGenericGraph* UGenericGraphNode::GetGraph() const +{ + return Graph; +} + +#undef LOCTEXT_NAMESPACE diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Private/GenericGraphRuntime.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Private/GenericGraphRuntime.cpp new file mode 100644 index 00000000..bfc33a53 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Private/GenericGraphRuntime.cpp @@ -0,0 +1,29 @@ +#include "GenericGraphRuntimePCH.h" + +DEFINE_LOG_CATEGORY(GenericGraphRuntime) + +class FGenericGraphRuntime : public IGenericGraphRuntime +{ + /** IModuleInterface implementation */ + virtual void StartupModule() override; + virtual void ShutdownModule() override; +}; + +IMPLEMENT_MODULE( FGenericGraphRuntime, GenericGraphRuntime ) + + + +void FGenericGraphRuntime::StartupModule() +{ + // This code will execute after your module is loaded into memory (but after global variables are initialized, of course.) +} + + +void FGenericGraphRuntime::ShutdownModule() +{ + // This function may be called during shutdown to clean up your module. For modules that support dynamic reloading, + // we call this function before unloading the module. +} + + + diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Private/GenericGraphRuntimePCH.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Private/GenericGraphRuntimePCH.h new file mode 100644 index 00000000..18feed8f --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Private/GenericGraphRuntimePCH.h @@ -0,0 +1,12 @@ +#pragma once + +// #include "CoreUObject.h" +// #include "Engine.h" + +// You should place include statements to your module's private header files here. You only need to +// add includes for headers that are used in most of your module's source files though. +#include "IGenericGraphRuntime.h" + +#define LOG_INFO(FMT, ...) UE_LOG(GenericGraphRuntime, Display, (FMT), ##__VA_ARGS__) +#define LOG_WARNING(FMT, ...) UE_LOG(GenericGraphRuntime, Warning, (FMT), ##__VA_ARGS__) +#define LOG_ERROR(FMT, ...) UE_LOG(GenericGraphRuntime, Error, (FMT), ##__VA_ARGS__) diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Public/GenericGraph.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Public/GenericGraph.h new file mode 100644 index 00000000..1ac0d39d --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Public/GenericGraph.h @@ -0,0 +1,60 @@ +#pragma once + +#include "CoreMinimal.h" +#include "GenericGraphNode.h" +#include "GenericGraphEdge.h" +#include "GameplayTagContainer.h" +#include "GenericGraph.generated.h" + +UCLASS(Blueprintable) +class GENERICGRAPHRUNTIME_API UGenericGraph : public UObject +{ + GENERATED_BODY() + +public: + UGenericGraph(); + virtual ~UGenericGraph(); + + UPROPERTY(EditDefaultsOnly, Category = "GenericGraph") + FString Name; + + UPROPERTY(EditDefaultsOnly, Category = "GenericGraph") + TSubclassOf NodeType; + + UPROPERTY(EditDefaultsOnly, Category = "GenericGraph") + TSubclassOf EdgeType; + + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "GenericGraph") + FGameplayTagContainer GraphTags; + + UPROPERTY(BlueprintReadOnly, Category = "GenericGraph") + TArray RootNodes; + + UPROPERTY(BlueprintReadOnly, Category = "GenericGraph") + TArray AllNodes; + + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "GenericGraph") + bool bEdgeEnabled; + + UFUNCTION(BlueprintCallable, Category = "GenericGraph") + void Print(bool ToConsole = true, bool ToScreen = true); + + UFUNCTION(BlueprintCallable, Category = "GenericGraph") + int GetLevelNum() const; + + UFUNCTION(BlueprintCallable, Category = "GenericGraph") + void GetNodesByLevel(int Level, TArray& Nodes); + + void ClearGraph(); + +#if WITH_EDITORONLY_DATA + UPROPERTY() + class UEdGraph* EdGraph; + + UPROPERTY(EditDefaultsOnly, Category = "GenericGraph_Editor") + bool bCanRenameNode; + + UPROPERTY(EditDefaultsOnly, Category = "GenericGraph_Editor") + bool bCanBeCyclical; +#endif +}; diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Public/GenericGraphEdge.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Public/GenericGraphEdge.h new file mode 100644 index 00000000..3df297b4 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Public/GenericGraphEdge.h @@ -0,0 +1,48 @@ +#pragma once + +#include "CoreMinimal.h" +#include "GenericGraphNode.h" +#include "GenericGraphEdge.generated.h" + +class UGenericGraph; + +UCLASS(Blueprintable) +class GENERICGRAPHRUNTIME_API UGenericGraphEdge : public UObject +{ + GENERATED_BODY() + +public: + UGenericGraphEdge(); + virtual ~UGenericGraphEdge(); + + UPROPERTY(VisibleAnywhere, Category = "GenericGraphNode") + UGenericGraph* Graph; + + UPROPERTY(BlueprintReadOnly, Category = "GenericGraphEdge") + UGenericGraphNode* StartNode; + + UPROPERTY(BlueprintReadOnly, Category = "GenericGraphEdge") + UGenericGraphNode* EndNode; + + UFUNCTION(BlueprintPure, Category = "GenericGraphEdge") + UGenericGraph* GetGraph() const; + +#if WITH_EDITORONLY_DATA + UPROPERTY(EditDefaultsOnly, Category = "GenericGraphNode_Editor") + bool bShouldDrawTitle = false; + + UPROPERTY(EditDefaultsOnly, Category = "GenericGraphNode_Editor") + FText NodeTitle; + + UPROPERTY(EditDefaultsOnly, Category = "GenericGraphEdge") + FLinearColor EdgeColour = FLinearColor(0.9f, 0.9f, 0.9f, 1.0f); +#endif + +#if WITH_EDITOR + virtual FText GetNodeTitle() const { return NodeTitle; } + FLinearColor GetEdgeColour() { return EdgeColour; } + + virtual void SetNodeTitle(const FText& NewTitle); +#endif + +}; diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Public/GenericGraphNode.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Public/GenericGraphNode.h new file mode 100644 index 00000000..965d109e --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Public/GenericGraphNode.h @@ -0,0 +1,94 @@ +#pragma once + +#include "CoreMinimal.h" +#include "Templates/SubclassOf.h" +#include "GenericGraphNode.generated.h" + +class UGenericGraph; +class UGenericGraphEdge; + +UENUM(BlueprintType) +enum class ENodeLimit : uint8 +{ + Unlimited, + Limited +}; + + +UCLASS(Blueprintable) +class GENERICGRAPHRUNTIME_API UGenericGraphNode : public UObject +{ + GENERATED_BODY() + +public: + UGenericGraphNode(); + virtual ~UGenericGraphNode(); + + UPROPERTY(VisibleDefaultsOnly, Category = "GenericGraphNode") + UGenericGraph* Graph; + + UPROPERTY(BlueprintReadOnly, Category = "GenericGraphNode") + TArray ParentNodes; + + UPROPERTY(BlueprintReadOnly, Category = "GenericGraphNode") + TArray ChildrenNodes; + + UPROPERTY(BlueprintReadOnly, Category = "GenericGraphNode") + TMap Edges; + + UFUNCTION(BlueprintCallable, Category = "GenericGraphNode") + virtual UGenericGraphEdge* GetEdge(UGenericGraphNode* ChildNode); + + UFUNCTION(BlueprintCallable, Category = "GenericGraphNode") + bool IsLeafNode() const; + + UFUNCTION(BlueprintCallable, Category = "GenericGraphNode") + UGenericGraph* GetGraph() const; + + UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "GenericGraphNode") + FText GetDescription() const; + virtual FText GetDescription_Implementation() const; + + ////////////////////////////////////////////////////////////////////////// +#if WITH_EDITORONLY_DATA + UPROPERTY(EditDefaultsOnly, Category = "GenericGraphNode_Editor") + FText NodeTitle; + + UPROPERTY(VisibleDefaultsOnly, Category = "GenericGraphNode_Editor") + TSubclassOf CompatibleGraphType; + + UPROPERTY(EditDefaultsOnly, Category = "GenericGraphNode_Editor") + FLinearColor BackgroundColor; + + UPROPERTY(EditDefaultsOnly, Category = "GenericGraphNode_Editor") + FText ContextMenuName; + + UPROPERTY(EditDefaultsOnly, Category = "GenericGraphNode_Editor") + ENodeLimit ParentLimitType; + + UPROPERTY(EditDefaultsOnly, Category = "GenericGraphNode_Editor" ,meta = (ClampMin = "0",EditCondition = "ParentLimitType == ENodeLimit::Limited", EditConditionHides)) + int32 ParentLimit; + + UPROPERTY(EditDefaultsOnly, Category = "GenericGraphNode_Editor") + ENodeLimit ChildrenLimitType; + + UPROPERTY(EditDefaultsOnly, Category = "GenericGraphNode_Editor" ,meta = (ClampMin = "0",EditCondition = "ChildrenLimitType == ENodeLimit::Limited", EditConditionHides)) + int32 ChildrenLimit; + +#endif + +#if WITH_EDITOR + virtual bool IsNameEditable() const; + + virtual FLinearColor GetBackgroundColor() const; + + virtual FText GetNodeTitle() const; + + virtual void SetNodeTitle(const FText& NewTitle); + + virtual bool CanCreateConnection(UGenericGraphNode* Other, FText& ErrorMessage); + + virtual bool CanCreateConnectionTo(UGenericGraphNode* Other, int32 NumberOfChildrenNodes, FText& ErrorMessage); + virtual bool CanCreateConnectionFrom(UGenericGraphNode* Other, int32 NumberOfParentNodes, FText& ErrorMessage); +#endif +}; diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Public/IGenericGraphRuntime.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Public/IGenericGraphRuntime.h new file mode 100644 index 00000000..f978a2b6 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Public/IGenericGraphRuntime.h @@ -0,0 +1,36 @@ +#pragma once + +#include "Modules/ModuleManager.h" + +DECLARE_LOG_CATEGORY_EXTERN(GenericGraphRuntime, Log, All); + +/** + * The public interface to this module + */ +class IGenericGraphRuntime : public IModuleInterface +{ + +public: + + /** + * Singleton-like access to this module's interface. This is just for convenience! + * Beware of calling this during the shutdown phase, though. Your module might have been unloaded already. + * + * @return Returns singleton instance, loading the module on demand if needed + */ + static IGenericGraphRuntime& Get() + { + return FModuleManager::LoadModuleChecked< IGenericGraphRuntime >("GenericGraphRuntime"); + } + + /** + * Checks to see if this module is loaded and ready. It is only valid to call Get() if IsAvailable() returns true. + * + * @return True if the module is loaded and ready to use + */ + static bool IsAvailable() + { + return FModuleManager::Get().IsModuleLoaded( "GenericGraphRuntime" ); + } +}; + diff --git a/EndlessVendetta/Plugins/GenericGraph/docs/images/GenericGraph.png b/EndlessVendetta/Plugins/GenericGraph/docs/images/GenericGraph.png new file mode 100644 index 00000000..0d899979 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/docs/images/GenericGraph.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:092185ad7a9989a69ba9543793326cf0f893fcc1a0895de65db3ca24ee7c970a +size 89534 diff --git a/EndlessVendetta/Plugins/GenericGraph/docs/images/ability-graph.png b/EndlessVendetta/Plugins/GenericGraph/docs/images/ability-graph.png new file mode 100644 index 00000000..b65adf2a --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/docs/images/ability-graph.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e97bb76a079e7e37c685cfa0f480c4028be755577939d8ae3d51be6e5571112c +size 114519 diff --git a/EndlessVendetta/Plugins/GenericGraph/docs/images/dialogue/dialogue01.png b/EndlessVendetta/Plugins/GenericGraph/docs/images/dialogue/dialogue01.png new file mode 100644 index 00000000..7fbb5326 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/docs/images/dialogue/dialogue01.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:95ab320c78c5ed1a79b78686a9e453bf459805b71ca6b855305f2ac328103d9e +size 98959 diff --git a/EndlessVendetta/Plugins/GenericGraph/docs/images/dialogue/dialogue02.png b/EndlessVendetta/Plugins/GenericGraph/docs/images/dialogue/dialogue02.png new file mode 100644 index 00000000..c03fde96 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/docs/images/dialogue/dialogue02.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cbbb01dc0b5af841164b8baeeebfb5aa769cb0710482f6accd984d02e0586eb9 +size 94706 diff --git a/EndlessVendetta/Plugins/GenericGraph/docs/images/dialogue/dialogue03.png b/EndlessVendetta/Plugins/GenericGraph/docs/images/dialogue/dialogue03.png new file mode 100644 index 00000000..ec53962e --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/docs/images/dialogue/dialogue03.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a51f6bd700c3346982c523d3c6e535cadb7ec8f0dc6c806bd5c481e961e8969c +size 95655 diff --git a/EndlessVendetta/Plugins/GenericGraph/readme.rst b/EndlessVendetta/Plugins/GenericGraph/readme.rst new file mode 100644 index 00000000..f76c40ba --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/readme.rst @@ -0,0 +1,51 @@ +GenericGraphPlugin +================== + +Generic graph data structure plugin for ue4 + +.. image:: docs/images/GenericGraph.png + +Feature +------- + +* Custom asset type +* UE4 BehaviorTree-like asset editor +* Extendable graph node type +* Extendable graph edge type +* Extendable graph type(new asset type with generic graph editor, C++ only) + +Usage +----- + +* Ability system +* Dialogue system +* Quest system +* Etc + +Install +------- + +#. Clone this project to ${YourProject}/Plugins/ +#. Generate project file +#. Compile + +Tutorial +-------- + +`Dialogue System`_ (WIP) + +Example +------- + +Dialogue System and ability system: SRPGTemplate_ + +.. image:: docs/images/dialogue/dialogue01.png + +.. image:: docs/images/dialogue/dialogue02.png + +.. image:: docs/images/dialogue/dialogue03.png + +.. image:: docs/images/ability-graph.png + +.. _Dialogue System: https://jinyuliao.github.io/blog/html/2017/12/15/ue4_dialogue_system_part1.html +.. _SRPGTemplate: https://github.com/jinyuliao/SRPGTemplate From d736224daa51c0c7ccead606c42386d4a2ee687b Mon Sep 17 00:00:00 2001 From: PHILIP WHITE Date: Mon, 20 Nov 2023 21:26:49 +0000 Subject: [PATCH 002/112] Add DialogueSystemEditor Module for Tree Factory --- .../DialogueSystemEditor.Build.cs | 36 +++++++++++++++++++ .../Private/DialogueSystemEditor.cpp | 17 +++++++++ .../Private/DialogueTreeFactory.cpp | 28 +++++++++++++++ .../Private/DialogueTreeFactory.h | 18 ++++++++++ .../Public/DialogueSystemEditor.h | 11 ++++++ 5 files changed, 110 insertions(+) create mode 100644 EndlessVendetta/Source/DialogueSystemEditor/DialogueSystemEditor.Build.cs create mode 100644 EndlessVendetta/Source/DialogueSystemEditor/Private/DialogueSystemEditor.cpp create mode 100644 EndlessVendetta/Source/DialogueSystemEditor/Private/DialogueTreeFactory.cpp create mode 100644 EndlessVendetta/Source/DialogueSystemEditor/Private/DialogueTreeFactory.h create mode 100644 EndlessVendetta/Source/DialogueSystemEditor/Public/DialogueSystemEditor.h diff --git a/EndlessVendetta/Source/DialogueSystemEditor/DialogueSystemEditor.Build.cs b/EndlessVendetta/Source/DialogueSystemEditor/DialogueSystemEditor.Build.cs new file mode 100644 index 00000000..63486a00 --- /dev/null +++ b/EndlessVendetta/Source/DialogueSystemEditor/DialogueSystemEditor.Build.cs @@ -0,0 +1,36 @@ +using UnrealBuildTool; + +public class DialogueSystemEditor : ModuleRules +{ + public DialogueSystemEditor(ReadOnlyTargetRules Target) : base(Target) + { + PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; + + PublicIncludePaths.AddRange( + new string[] + { + "EndlessVendetta/DialogueSystem" + } + ); + + PublicDependencyModuleNames.AddRange( + new string[] + { + "Core", + } + ); + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "CoreUObject", + "Engine", + "Slate", + "SlateCore", + "UnrealEd", + "GenericGraphRuntime", + "EndlessVendetta" + } + ); + } +} \ No newline at end of file diff --git a/EndlessVendetta/Source/DialogueSystemEditor/Private/DialogueSystemEditor.cpp b/EndlessVendetta/Source/DialogueSystemEditor/Private/DialogueSystemEditor.cpp new file mode 100644 index 00000000..7a4fad39 --- /dev/null +++ b/EndlessVendetta/Source/DialogueSystemEditor/Private/DialogueSystemEditor.cpp @@ -0,0 +1,17 @@ +#include "DialogueSystemEditor.h" + +#define LOCTEXT_NAMESPACE "FDialogueSystemEditorModule" + +void FDialogueSystemEditorModule::StartupModule() +{ + +} + +void FDialogueSystemEditorModule::ShutdownModule() +{ + +} + +#undef LOCTEXT_NAMESPACE + +IMPLEMENT_MODULE(FDialogueSystemEditorModule, DialogueSystemEditor) \ No newline at end of file diff --git a/EndlessVendetta/Source/DialogueSystemEditor/Private/DialogueTreeFactory.cpp b/EndlessVendetta/Source/DialogueSystemEditor/Private/DialogueTreeFactory.cpp new file mode 100644 index 00000000..a1f39692 --- /dev/null +++ b/EndlessVendetta/Source/DialogueSystemEditor/Private/DialogueTreeFactory.cpp @@ -0,0 +1,28 @@ +#include "DialogueTreeFactory.h" +#include "DialogueTree.h" + +#define LOCTEXT_NAMESPACE "DialogueSessionFactory" + +UDialogueTreeFactory::UDialogueTreeFactory() +{ + bCreateNew = true; + bEditAfterNew = true; + SupportedClass = UDialogueTree::StaticClass(); +} + +UObject* UDialogueTreeFactory::FactoryCreateNew(UClass* Class, UObject* InParent, FName Name, EObjectFlags Flags, UObject* Context, FFeedbackContext* Warn) +{ + return NewObject(InParent, Class, Name, Flags | RF_Transactional); +} + +FText UDialogueTreeFactory::GetDisplayName() const +{ + return LOCTEXT("FactoryName", "Dialogue Tree"); +} + +FString UDialogueTreeFactory::GetDefaultNewAssetName() const +{ + return "DialogueTree"; +} + +#undef LOCTEXT_NAMESPACE \ No newline at end of file diff --git a/EndlessVendetta/Source/DialogueSystemEditor/Private/DialogueTreeFactory.h b/EndlessVendetta/Source/DialogueSystemEditor/Private/DialogueTreeFactory.h new file mode 100644 index 00000000..80d6f49d --- /dev/null +++ b/EndlessVendetta/Source/DialogueSystemEditor/Private/DialogueTreeFactory.h @@ -0,0 +1,18 @@ +#pragma once + +#include "CoreMinimal.h" +#include "Factories/Factory.h" +#include "DialogueTreeFactory.generated.h" + +UCLASS() +class UDialogueTreeFactory : public UFactory +{ + GENERATED_BODY() + +public: + UDialogueTreeFactory(); + + virtual UObject* FactoryCreateNew(UClass* Class, UObject* InParent, FName Name, EObjectFlags Flags, UObject* Context, FFeedbackContext* Warn) override; + virtual FText GetDisplayName() const override; + virtual FString GetDefaultNewAssetName() const override; +}; \ No newline at end of file diff --git a/EndlessVendetta/Source/DialogueSystemEditor/Public/DialogueSystemEditor.h b/EndlessVendetta/Source/DialogueSystemEditor/Public/DialogueSystemEditor.h new file mode 100644 index 00000000..3333f03a --- /dev/null +++ b/EndlessVendetta/Source/DialogueSystemEditor/Public/DialogueSystemEditor.h @@ -0,0 +1,11 @@ +#pragma once + +#include "CoreMinimal.h" +#include "Modules/ModuleManager.h" + +class FDialogueSystemEditorModule : public IModuleInterface +{ +public: + virtual void StartupModule() override; + virtual void ShutdownModule() override; +}; From 74ea72c76caf96b10072f8ccbd52176d24ca768c Mon Sep 17 00:00:00 2001 From: PHILIP WHITE Date: Mon, 20 Nov 2023 21:28:08 +0000 Subject: [PATCH 003/112] Add Custom Dialogue Graph for Dialogue Trees --- EndlessVendetta/EndlessVendetta.uproject | 5 ++ .../Source/EndlessVendetta.Target.cs | 6 +++ .../DialogueSystem/DialogueAddItemNode.cpp | 39 +++++++++++++++ .../DialogueSystem/DialogueAddItemNode.h | 24 ++++++++++ .../DialogueSystem/DialogueEdge.h | 16 +++++++ .../DialogueSystem/DialogueTextNode.cpp | 47 +++++++++++++++++++ .../DialogueSystem/DialogueTextNode.h | 34 ++++++++++++++ .../DialogueSystem/DialogueTree.cpp | 18 +++++++ .../DialogueSystem/DialogueTree.h | 20 ++++++++ .../EndlessVendetta/EndlessVendetta.Build.cs | 2 + .../Source/EndlessVendettaEditor.Target.cs | 6 +++ 11 files changed, 217 insertions(+) create mode 100644 EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueAddItemNode.cpp create mode 100644 EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueAddItemNode.h create mode 100644 EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueEdge.h create mode 100644 EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTextNode.cpp create mode 100644 EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTextNode.h create mode 100644 EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTree.cpp create mode 100644 EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTree.h diff --git a/EndlessVendetta/EndlessVendetta.uproject b/EndlessVendetta/EndlessVendetta.uproject index 340e263e..52239fa2 100644 --- a/EndlessVendetta/EndlessVendetta.uproject +++ b/EndlessVendetta/EndlessVendetta.uproject @@ -14,6 +14,11 @@ "CoreUObject", "UMG" ] + }, + { + "Name": "DialogueSystemEditor", + "Type": "Editor", + "LoadingPhase": "PostEngineInit" } ], "Plugins": [ diff --git a/EndlessVendetta/Source/EndlessVendetta.Target.cs b/EndlessVendetta/Source/EndlessVendetta.Target.cs index b31c5112..0bfa1565 100644 --- a/EndlessVendetta/Source/EndlessVendetta.Target.cs +++ b/EndlessVendetta/Source/EndlessVendetta.Target.cs @@ -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" }); } } diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueAddItemNode.cpp b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueAddItemNode.cpp new file mode 100644 index 00000000..8adadbb7 --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueAddItemNode.cpp @@ -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(GetGraph()); + + if (DialogueTree == nullptr) + return Super::GetBackgroundColor(); + + return FLinearColor::Black; +} + +#endif + +#undef LOCTEXT_NAMESPACE diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueAddItemNode.h b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueAddItemNode.h new file mode 100644 index 00000000..b52856e6 --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueAddItemNode.h @@ -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 +}; \ No newline at end of file diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueEdge.h b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueEdge.h new file mode 100644 index 00000000..72d6491b --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueEdge.h @@ -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; +}; \ No newline at end of file diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTextNode.cpp b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTextNode.cpp new file mode 100644 index 00000000..8b61bba0 --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTextNode.cpp @@ -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(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 \ No newline at end of file diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTextNode.h b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTextNode.h new file mode 100644 index 00000000..6ff78b28 --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTextNode.h @@ -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 +}; \ No newline at end of file diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTree.cpp b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTree.cpp new file mode 100644 index 00000000..903afba3 --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTree.cpp @@ -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 \ No newline at end of file diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTree.h b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTree.h new file mode 100644 index 00000000..8150ba61 --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTree.h @@ -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; +}; \ No newline at end of file diff --git a/EndlessVendetta/Source/EndlessVendetta/EndlessVendetta.Build.cs b/EndlessVendetta/Source/EndlessVendetta/EndlessVendetta.Build.cs index 3149aa96..8edf6d38 100644 --- a/EndlessVendetta/Source/EndlessVendetta/EndlessVendetta.Build.cs +++ b/EndlessVendetta/Source/EndlessVendetta/EndlessVendetta.Build.cs @@ -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" }); } } \ No newline at end of file diff --git a/EndlessVendetta/Source/EndlessVendettaEditor.Target.cs b/EndlessVendetta/Source/EndlessVendettaEditor.Target.cs index 2dc48be0..f57382d6 100644 --- a/EndlessVendetta/Source/EndlessVendettaEditor.Target.cs +++ b/EndlessVendetta/Source/EndlessVendettaEditor.Target.cs @@ -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" }); } } From 88ce6876a6f40ad22219e7c0f66b11c04f99cbca Mon Sep 17 00:00:00 2001 From: PHILIP WHITE Date: Thu, 30 Nov 2023 11:10:05 +0000 Subject: [PATCH 004/112] Add Conthrax & Oxanium Fonts to Engine --- .../Content/Fonts/Conthrax/conthrax-sb.uasset | 3 + .../Fonts/Conthrax/conthrax-sb_Font.uasset | 3 + .../Content/Fonts/Oxanium/Oxanium-Bold.uasset | 3 + .../Fonts/Oxanium/Oxanium-Bold_Font.uasset | 3 + .../Fonts/Oxanium/Oxanium-ExtraBold.uasset | 3 + .../Oxanium/Oxanium-ExtraBold_Font.uasset | 3 + .../Fonts/Oxanium/Oxanium-ExtraLight.uasset | 3 + .../Oxanium/Oxanium-ExtraLight_Font.uasset | 3 + .../Fonts/Oxanium/Oxanium-Light.uasset | 3 + .../Fonts/Oxanium/Oxanium-Light_Font.uasset | 3 + .../Fonts/Oxanium/Oxanium-Medium.uasset | 3 + .../Fonts/Oxanium/Oxanium-Medium_Font.uasset | 3 + .../Fonts/Oxanium/Oxanium-Regular.uasset | 3 + .../Fonts/Oxanium/Oxanium-Regular_Font.uasset | 3 + .../Fonts/Oxanium/Oxanium-SemiBold.uasset | 3 + .../Oxanium/Oxanium-SemiBold_Font.uasset | 3 + .../conthrax/Typodermic Desktop EULA 2023.pdf | 3 + .../Fonts/conthrax/conthrax-sb.otf | 3 + External Assets/Fonts/conthrax/read-this.html | 1699 +++++++++++++++++ External Assets/Fonts/oxanium/FONTLOG.txt | 53 + External Assets/Fonts/oxanium/LICENSE.txt | 93 + .../Fonts/oxanium/Oxanium-Bold.ttf | 3 + .../Fonts/oxanium/Oxanium-ExtraBold.ttf | 3 + .../Fonts/oxanium/Oxanium-ExtraLight.ttf | 3 + .../Fonts/oxanium/Oxanium-Light.ttf | 3 + .../Fonts/oxanium/Oxanium-Medium.ttf | 3 + .../Fonts/oxanium/Oxanium-Regular.ttf | 3 + .../Fonts/oxanium/Oxanium-SemiBold.ttf | 3 + External Assets/Fonts/oxanium/Oxanium.png | 3 + 29 files changed, 1923 insertions(+) create mode 100644 EndlessVendetta/Content/Fonts/Conthrax/conthrax-sb.uasset create mode 100644 EndlessVendetta/Content/Fonts/Conthrax/conthrax-sb_Font.uasset create mode 100644 EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Bold.uasset create mode 100644 EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Bold_Font.uasset create mode 100644 EndlessVendetta/Content/Fonts/Oxanium/Oxanium-ExtraBold.uasset create mode 100644 EndlessVendetta/Content/Fonts/Oxanium/Oxanium-ExtraBold_Font.uasset create mode 100644 EndlessVendetta/Content/Fonts/Oxanium/Oxanium-ExtraLight.uasset create mode 100644 EndlessVendetta/Content/Fonts/Oxanium/Oxanium-ExtraLight_Font.uasset create mode 100644 EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Light.uasset create mode 100644 EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Light_Font.uasset create mode 100644 EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Medium.uasset create mode 100644 EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Medium_Font.uasset create mode 100644 EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Regular.uasset create mode 100644 EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Regular_Font.uasset create mode 100644 EndlessVendetta/Content/Fonts/Oxanium/Oxanium-SemiBold.uasset create mode 100644 EndlessVendetta/Content/Fonts/Oxanium/Oxanium-SemiBold_Font.uasset create mode 100644 External Assets/Fonts/conthrax/Typodermic Desktop EULA 2023.pdf create mode 100644 External Assets/Fonts/conthrax/conthrax-sb.otf create mode 100644 External Assets/Fonts/conthrax/read-this.html create mode 100644 External Assets/Fonts/oxanium/FONTLOG.txt create mode 100644 External Assets/Fonts/oxanium/LICENSE.txt create mode 100644 External Assets/Fonts/oxanium/Oxanium-Bold.ttf create mode 100644 External Assets/Fonts/oxanium/Oxanium-ExtraBold.ttf create mode 100644 External Assets/Fonts/oxanium/Oxanium-ExtraLight.ttf create mode 100644 External Assets/Fonts/oxanium/Oxanium-Light.ttf create mode 100644 External Assets/Fonts/oxanium/Oxanium-Medium.ttf create mode 100644 External Assets/Fonts/oxanium/Oxanium-Regular.ttf create mode 100644 External Assets/Fonts/oxanium/Oxanium-SemiBold.ttf create mode 100644 External Assets/Fonts/oxanium/Oxanium.png diff --git a/EndlessVendetta/Content/Fonts/Conthrax/conthrax-sb.uasset b/EndlessVendetta/Content/Fonts/Conthrax/conthrax-sb.uasset new file mode 100644 index 00000000..61def072 --- /dev/null +++ b/EndlessVendetta/Content/Fonts/Conthrax/conthrax-sb.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d48b68f103c839f484864e16b1c70825eca0272b7658887945efe190eb61a9a +size 154427 diff --git a/EndlessVendetta/Content/Fonts/Conthrax/conthrax-sb_Font.uasset b/EndlessVendetta/Content/Fonts/Conthrax/conthrax-sb_Font.uasset new file mode 100644 index 00000000..0df62046 --- /dev/null +++ b/EndlessVendetta/Content/Fonts/Conthrax/conthrax-sb_Font.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c83f32cb77196ba00771af4c65bafda85ec8cefcc88b79f278623c7ba3c824a +size 6544 diff --git a/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Bold.uasset b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Bold.uasset new file mode 100644 index 00000000..6ccdae65 --- /dev/null +++ b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Bold.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b653e74a78e127d4fc9dd2b86bc02a6f3db120d8ceb5a19164e13dea5ae93b57 +size 57094 diff --git a/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Bold_Font.uasset b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Bold_Font.uasset new file mode 100644 index 00000000..592af238 --- /dev/null +++ b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Bold_Font.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d29c99ed7afe6a7a4ab39261a8a5d47962c510846c56d76499fa820fc4e2ee60 +size 6405 diff --git a/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-ExtraBold.uasset b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-ExtraBold.uasset new file mode 100644 index 00000000..161fff54 --- /dev/null +++ b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-ExtraBold.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dfc9c97c08173fe375d30d4f16ec209499c14a077136050883a4ae27985891b7 +size 57221 diff --git a/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-ExtraBold_Font.uasset b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-ExtraBold_Font.uasset new file mode 100644 index 00000000..4f762266 --- /dev/null +++ b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-ExtraBold_Font.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c4ed01d92f0b771b7bb4d906b094a4be893e4ed48a4a0c36f1a232fa4078a13 +size 6511 diff --git a/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-ExtraLight.uasset b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-ExtraLight.uasset new file mode 100644 index 00000000..57f022dc --- /dev/null +++ b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-ExtraLight.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2a0d57985ba024b3f880f2767ff8b875d70ad3419a6fc163db97435e271b265 +size 57352 diff --git a/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-ExtraLight_Font.uasset b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-ExtraLight_Font.uasset new file mode 100644 index 00000000..8343f26b --- /dev/null +++ b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-ExtraLight_Font.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32ead0bdec890960b8379909515ab973d1a72e8dcfddc1fb83951b0d978c07ac +size 6397 diff --git a/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Light.uasset b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Light.uasset new file mode 100644 index 00000000..c8e8d3c3 --- /dev/null +++ b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Light.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:523ae9c30e94afaec9568627e44082b9ceacecd2a88c3589a520e638b02a73f6 +size 57233 diff --git a/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Light_Font.uasset b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Light_Font.uasset new file mode 100644 index 00000000..f96aabbd --- /dev/null +++ b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Light_Font.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6361409472cd93b6bc9b06a061e275e3bb43e8fb90ac974a0ed279ba1a3c80b7 +size 6320 diff --git a/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Medium.uasset b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Medium.uasset new file mode 100644 index 00000000..13ce41e9 --- /dev/null +++ b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Medium.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b9fb607be1b5aeb2161da1ab2f77d237307e3e2cc2eb9a6bce2ca55a27c8b18 +size 57216 diff --git a/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Medium_Font.uasset b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Medium_Font.uasset new file mode 100644 index 00000000..0d52c0ba --- /dev/null +++ b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Medium_Font.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c764f1fa07a8736117f6c1a6c748cc7604f04b4980f7204b2e4915975e85e43 +size 6485 diff --git a/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Regular.uasset b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Regular.uasset new file mode 100644 index 00000000..83319abe --- /dev/null +++ b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Regular.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:83bdf29373fca452a260331538560971cfc7770ca021cf312955b899f358cf13 +size 57155 diff --git a/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Regular_Font.uasset b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Regular_Font.uasset new file mode 100644 index 00000000..6bef215d --- /dev/null +++ b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Regular_Font.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0981619a0267c6a381b1c9c18e4335ffdb52df11e0e77293771512ab33263aed +size 6479 diff --git a/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-SemiBold.uasset b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-SemiBold.uasset new file mode 100644 index 00000000..5db5b16c --- /dev/null +++ b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-SemiBold.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e3fe22e46ed7b55f8eddab603d0619c96ef21afac64fff1f736c237ee1b37421 +size 57234 diff --git a/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-SemiBold_Font.uasset b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-SemiBold_Font.uasset new file mode 100644 index 00000000..ae0d41cc --- /dev/null +++ b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-SemiBold_Font.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:216d140f81e1f045143e623730dcf07185008cd2e3e800fd81d9149f5a8606e9 +size 6522 diff --git a/External Assets/Fonts/conthrax/Typodermic Desktop EULA 2023.pdf b/External Assets/Fonts/conthrax/Typodermic Desktop EULA 2023.pdf new file mode 100644 index 00000000..cefa23b5 --- /dev/null +++ b/External Assets/Fonts/conthrax/Typodermic Desktop EULA 2023.pdf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1bb2b43ff7702f56eda9db0e18890bcf65de62ab93ddbbe58107fcdd62949b68 +size 145707 diff --git a/External Assets/Fonts/conthrax/conthrax-sb.otf b/External Assets/Fonts/conthrax/conthrax-sb.otf new file mode 100644 index 00000000..163e9d96 --- /dev/null +++ b/External Assets/Fonts/conthrax/conthrax-sb.otf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:09df8d015fbbe7e5e2cc2d0f1b1fba6b14d0ae318ce087621c868b2856ed7756 +size 152848 diff --git a/External Assets/Fonts/conthrax/read-this.html b/External Assets/Fonts/conthrax/read-this.html new file mode 100644 index 00000000..b5fca4eb --- /dev/null +++ b/External Assets/Fonts/conthrax/read-this.html @@ -0,0 +1,1699 @@ + + +Typodermic Fonts Inc. Free Font Instructions 2023 + + + + + +
+ +

+Deutsch +Español +Français +العربية +中国简体 +簡體字 +Čeština +Ελληνικά +עִבְרִית +हिन्दी +Magyar +Íslenska +Indonesia +Italiano +한국말 +日本語 +Norsk +Język Polski +Português +ਪੰਜਾਬੀ +Română +Русский +Svenska +தமிழ் +ภาษาไทย +Türkçe +Українська мова +Tiếng Việt +

+ +

Thank you

+ +

Thanks for downloading a free font from Typodermic Fonts Inc. These fonts included in this ZIP include a free desktop license agreement which permits commercial use. Read the included license agreement for details.

+ + +

Installation

+
  • Windows: Get the font out of the ZIP. Right-click on the font and Install
  • Mac OS X 10.3 or above: Double-click the font file and Install font
+ +

Allowed

+ +
    +
  • art
  • +
  • sign
  • +
  • poster
  • +
  • banner
  • +
  • book
  • +
  • business card
  • +
  • album
  • +
  • movie
  • +
  • television
  • +
  • video/streaming/channels
  • +
  • logo
  • +
  • trademarked logo
  • +
  • clothing
  • +
  • sticker
  • +
  • stamp
  • +
  • product label
  • +
  • web page (not embedded)
  • +
  • app (not embedded)
  • +
  • PDF
  • +
  • eBook cover or images (not embedded)
  • +
+ +

Not allowed

+ +
    +
  • app (embedded)
  • +
  • web page (embedded)
  • +
  • eBook (embedded)
  • +
  • product creation platform
  • +
  • alphabet stamps
  • +
  • advertisment server
  • +
  • web template
  • +
  • OEM
  • +
  • device embedding
  • +
+ +

It’s easy to get a different license agreement. Read the this page for details.

+ +

Other styles

+ +

Many of Typodermic's free fonts have other styles available. Please visit Typodermic Fonts and search for the name of this font in the search bar.

+ +
+ +

Danke dir

+ +

Vielen Dank, dass Sie eine kostenlose Schriftart von heruntergeladen haben Typodermic Fonts Inc. Diese in diesem ZIP enthaltenen Schriftarten beinhalten eine kostenlose Desktop-Lizenzvereinbarung, die eine kommerzielle Nutzung erlaubt. Lesen Sie die beigefügte Lizenzvereinbarung für Details.

+ + +

Installation

+
  • Windows: Holen Sie sich die Schriftart aus dem ZIP. Klicken Sie mit der rechten Maustaste auf die Schriftart und installieren Sie si
  • Mac OS X 10.3 oder höher: Doppelklicken Sie auf die Schriftartdatei und Schriftart installieren
+ +

Erlaubt

+ +
    +
  • Kunst
  • +
  • Zeichen
  • +
  • Poster
  • +
  • Banner
  • +
  • Buchen
  • +
  • Visitenkarte
  • +
  • Album
  • +
  • Film
  • +
  • Fernsehen
  • +
  • Video/Streaming/Kanäle
  • +
  • Logo
  • +
  • markenrechtlich geschütztes Logo
  • +
  • Kleidung
  • +
  • Aufkleber
  • +
  • Briefmarke
  • +
  • Produktetikett
  • +
  • Webseite (nicht eingebettet)
  • +
  • App (nicht eingebettet)
  • +
  • PDF
  • +
  • eBook-Cover oder Bilder (nicht eingebettet)
  • +
+ +

Nicht erlaubt

+ +
    +
  • App (eingebettet)
  • +
  • Webseite (eingebettet)
  • +
  • eBook (eingebettet)
  • +
  • Produkterstellungsplattform
  • +
  • Alphabet-Briefmarken
  • +
  • Werbeserver
  • +
  • Web-Vorlage
  • +
  • Erstausrüster
  • +
  • Geräteeinbettung
  • +
+ +

Es ist einfach, eine andere Lizenzvereinbarung zu erhalten. Lesen Sie diese Seite für Details.

+ +

Andere Stile

+ +

Für viele der kostenlosen Schriftarten von Typodermic sind andere Stile verfügbar. Bitte besuchen Sie Typodermic Fonts und suchen Sie in der Suchleiste nach dem Namen dieser Schriftart.

+ + +
+ +

Gracias

+ +

Gracias por descargar una fuente gratuita de Typodermic Fonts Inc. Estas fuentes incluidas en este ZIP incluyen un acuerdo de licencia de escritorio gratuito que permite el uso comercial. Lea el acuerdo de licencia incluido para más detalles.

+ + +

Instalación

+
  • Windows: Saque la fuente del ZIP. Haga clic derecho en la fuente e instalar
  • Mac OS X 10.3 o superior: haga doble clic en el archivo de fuente e instale la fuente
+ +

Permitido

+ +
    +
  • Arte
  • +
  • signo
  • +
  • póster
  • +
  • bandera
  • +
  • libro
  • +
  • tarjeta de visita
  • +
  • álbum
  • +
  • película
  • +
  • televisión
  • +
  • video/transmisión/canales
  • +
  • logo
  • +
  • logotipo de marca registrada
  • +
  • ropa
  • +
  • pegatina
  • +
  • estampilla
  • +
  • etiqueta del producto
  • +
  • página web (no incrustada)
  • +
  • aplicación (no incrustada)
  • +
  • PDF
  • +
  • Portada del libro electrónico o imágenes (no incrustadas)
  • +
+ + +

No permitido

+ +
    +
  • aplicación (incrustada)
  • +
  • página web (incrustada)
  • +
  • eBook (incrustado)
  • +
  • plataforma de creación de productos
  • +
  • sellos del alfabeto
  • +
  • servidor de anuncios
  • +
  • plantilla web
  • +
  • OEM
  • +
  • incrustación de dispositivo
  • +
+ +

Es fácil obtener un acuerdo de licencia diferente. Lea esta página para más detalles.

+ +

Otros estilos

+ +

Muchas de las fuentes gratuitas de Typodermic tienen otros estilos disponibles. Visite Typodermic Fonts y busque el nombre de esta fuente en la barra de búsqueda.

+ + +
+ +

Merci

+ +

Merci d'avoir téléchargé une police gratuite sur Typodermic Fonts Inc. Ces polices incluses dans ce ZIP incluent un accord de licence de bureau gratuit qui permet une utilisation commerciale. Lisez le contrat de licence inclus pour plus de détails.

+ + +

Installation

+
  • Windows : extrayez la police du ZIP. Faites un clic droit sur la police et installez
  • Mac OS X 10.3 ou supérieur : double-cliquez sur le fichier de police et installez la police
+ + + + +

Autorisé

+ +
    +
  • de l'art
  • +
  • pancarte
  • +
  • affiche
  • +
  • bannière
  • +
  • livre
  • +
  • carte de visite
  • +
  • album
  • +
  • film
  • +
  • télévision
  • +
  • vidéo/streaming/chaînes
  • +
  • logo
  • +
  • logo de marque
  • +
  • Vêtements
  • +
  • autocollant
  • +
  • timbre
  • +
  • étiquette du produit
  • +
  • page Web (non intégrée)
  • +
  • application (non intégrée)
  • +
  • PDF
  • +
  • Couverture ou images d'eBook (non intégrées)
  • +
+ + + +

Interdit

+ +
    +
  • application (intégrée)
  • +
  • page Web (intégrée)
  • +
  • eBook (intégré)
  • +
  • plateforme de création de produits
  • +
  • timbres alphabétiques
  • +
  • serveur de publicité
  • +
  • modèle web
  • +
  • FEO
  • +
  • intégration de l'appareil
  • +
+ +

Il est facile d'obtenir un autre contrat de licence. Lisez cette page pour plus de détails.

+ +

Autres modèles

+ +

De nombreuses polices gratuites de Typodermic proposent d'autres styles. Veuillez visiter Typodermic Fonts et rechercher le nom de cette police dans la barre de recherche.

+ + +
+ +

شكرًا لك

+ +

+ +شكرا لتحميل الخط المجاني من Typodermic Fonts Inc. تتضمن هذه الخطوط المضمنة في ملف ZIP هذا اتفاقية ترخيص سطح مكتب مجانية تسمح بالاستخدام التجاري. اقرأ اتفاقية الترخيص المضمنة للحصول على التفاصيل.

+ + +

التركيب

+
  • Windows: أخرج الخط من ملف ZIP. انقر بزر الماوس الأيمن فوق الخط وتثبيت + نظام التشغيل
  • Mac OS X 10.3 أو إصدار أحدث: انقر نقرًا مزدوجًا فوق ملف الخط وقم بتثبيت الخط
+ +

مسموح

+ +
    +
  • فن
  • +
  • لافتة
  • +
  • ملصق
  • +
  • لافتة
  • +
  • كتاب
  • +
  • بطاقة العمل
  • +
  • الألبوم
  • +
  • فيلم
  • +
  • التلفاز
  • +
  • فيديو / تدفق / قنوات
  • +
  • شعار
  • +
  • شعار مسجّل كعلامة تجارية
  • +
  • ملابس
  • +
  • ملصق
  • +
  • ختم
  • +
  • ملصق المنتج
  • +
  • صفحة ويب (غير مضمنة)
  • +
  • التطبيق (غير مضمن)
  • +
  • بي دي إف
  • +
  • غلاف الكتاب الإلكتروني أو الصور (غير مضمنة)
  • +
+ +

غير مسموح

+ +
    +
  • التطبيق (مضمن)
  • +
  • صفحة الويب (مضمنة)
  • +
  • كتاب إلكتروني (مضمن)
  • +
  • منصة إنشاء المنتجات
  • +
  • طوابع الأبجدية
  • +
  • خادم الإعلان
  • +
  • قالب الويب
  • +
  • OEM
  • +
  • تضمين الجهاز
  • +
+ +

من السهل للحصول على هذه الصفحة اقرأ هذه الصفحة للحصول على التفاصي

+ + +

أنماط أخرى

+ +

العديد من الخطوط المجانية في Typodermic لها أنماط أخرى متاحة. يرجى زيارة TTypodermic Fonts والبحث عن اسم هذا الخط في شريط البحث.

+ + +
+ +

谢谢

+ +

感谢您从以下位置下载免费字体Typodermic Fonts Inc.此 ZIP 中包含的这些字体包括允许商业使用的免费桌面许可协议。阅读随附的许可协议了解详细信息。

+ + +

安装

+
  • Windows:从 ZIP 中获取字体。右键单击字体并安装
  • Mac OS X 10.3 或更高版本:双击字体文件并安装字体
+ +

允许

+ + + + + +
    +
  • 艺术
  • +
  • 符号
  • +
  • 海报
  • +
  • 横幅
  • +
  • +
  • 名片
  • +
  • 专辑
  • +
  • 电影
  • +
  • 电视
  • +
  • 视频/流媒体/频道
  • +
  • 商标
  • +
  • 商标标志
  • +
  • 服装
  • +
  • 贴纸
  • +
  • 邮票
  • +
  • 产品标签
  • +
  • 网页(未嵌入)
  • +
  • 应用程序(未嵌入)
  • +
  • PDF
  • +
  • 电子书封面或图像(未嵌入)
  • +
+ +

不允许

+ +
    +
  • 应用程序(嵌入式)
  • +
  • 网页(嵌入式)
  • +
  • 电子书(嵌入式)
  • +
  • 产品创造平台
  • +
  • 字母邮票
  • +
  • 广告服务器
  • +
  • 网页模板
  • +
  • 贴牌生产
  • +
  • 设备嵌入
  • +
+ +

很容易获得不同的许可协议。阅读此页面了解详情。

+ +

其他款式

+ +

Typodermic 的许多免费字体都有其他可用的样式。请访问Typodermic Fonts并在搜索栏中搜索此字体的名称。

+ + +
+ +

謝謝

+ +

感謝您從以下位置下載免費字體Typodermic Fonts Inc。 此 ZIP 中包含的這些字體包括允許商業使用的免費桌面許可協議。閱讀隨附的許可協議了解詳細信息。

+ + +

安裝

+
  • Windows:從 ZIP 中獲取字體。右鍵單擊字體並安裝
  • Mac OS X 10.3 或更高版本:雙擊字體文件並安裝字體
+ +

允許

+ +
    +
  • 藝術
  • +
  • 符號
  • +
  • 海報
  • +
  • 橫幅
  • +
  • +
  • 名片
  • +
  • 專輯
  • +
  • 電影
  • +
  • 電視
  • +
  • 視頻/流媒體/頻道
  • +
  • 商標
  • +
  • 商標標誌
  • +
  • 服裝
  • +
  • 貼紙
  • +
  • 郵票
  • +
  • 產品標籤
  • +
  • 網頁(未嵌入)
  • +
  • 應用程序(未嵌入)
  • +
  • PDF
  • +
  • 電子書封面或圖像(未嵌入)
  • + + +
+ +

不允許

+ +
    +
  • 應用程序(嵌入式)
  • +
  • 網頁(嵌入式)
  • +
  • 電子書(嵌入式)
  • +
  • 產品創造平台
  • +
  • 字母郵票
  • +
  • 廣告服務器
  • +
  • 網頁模板
  • +
  • 貼牌生產
  • +
  • 設備嵌入
  • +
+ +

很容易獲得不同的許可協議。閱讀此頁面了解詳情。

+ +

其他款式

+ +

Typodermic 的許多免費字體都有其他可用的樣式。請訪問Typodermic Fonts並在搜索欄中搜索此字體的名稱。

+ + +
+ +

Děkuju

+ +

Děkujeme, že jste si zdarma stáhli písmo z Typodermic Fonts Inc. Tato písma obsažená v tomto ZIP zahrnují bezplatnou licenční smlouvu pro stolní počítače, která umožňuje komerční použití. Podrobnosti naleznete v přiložené licenční smlouvě.

+ + +

Instalace

+
  • Windows: Získejte písmo ze ZIP. Klepněte pravým tlačítkem myši na písmo a nainstalujte
  • Mac OS X 10.3 nebo vyšší: Poklepejte na soubor s písmem a vyberte Instalovat písmo
+ +

Povoleno

+ +
    +
  • umění
  • +
  • podepsat
  • +
  • plakát
  • +
  • prapor
  • +
  • rezervovat
  • +
  • vizitka
  • +
  • album
  • +
  • film
  • +
  • televize
  • +
  • video/streaming/kanály
  • +
  • logo
  • +
  • logo s ochrannou známkou
  • +
  • oblečení
  • +
  • nálepka
  • +
  • razítko
  • +
  • štítek produktu
  • +
  • webová stránka (není vložená)
  • +
  • aplikace (není vložená)
  • +
  • PDF
  • +
  • Obálka nebo obrázky elektronické knihy (nevložené)
  • +
+ +

Nepovoleno

+ +
    +
  • aplikace (vložená)
  • +
  • webová stránka (vložená)
  • +
  • e-kniha (vložená)
  • +
  • platforma pro tvorbu produktů
  • +
  • abecední razítka
  • +
  • reklamní server
  • +
  • webová šablona
  • +
  • OEM
  • +
  • zabudování zařízení
  • +
+ +

Je snadné získat jinou licenční smlouvu. Podrobnosti si přečtěte na této stránce. + +

Jiné styly

+ +

Mnoho bezplatných písem Typodermic má k dispozici další styly. Navštivte prosím Typodermic Fonts a vyhledejte název tohoto písma ve vyhledávací liště.

+ +
+ +

Σας ευχαριστώ

+ +

Ευχαριστούμε για τη λήψη μιας δωρεάν γραμματοσειράς από Typodermic Fonts Inc. Αυτές οι γραμματοσειρές που περιλαμβάνονται σε αυτό το ZIP περιλαμβάνουν μια δωρεάν άδεια χρήσης επιτραπέζιου υπολογιστή που επιτρέπει την εμπορική χρήση. Διαβάστε τη συμφωνία άδειας χρήσης που περιλαμβάνεται για λεπτομέρειες.

+ + +

Εγκατάσταση

+
  • Windows: Βγάλτε τη γραμματοσειρά από το ZIP. Κάντε δεξί κλικ στη γραμματοσειρά και Εγκαταστήστε
  • Mac OS X 10.3 ή νεότερη έκδοση: Κάντε διπλό κλικ στο αρχείο γραμματοσειράς και Εγκατάσταση γραμματοσειράς
+ +

Επιτρέπεται

+ +
    +
  • τέχνη
  • +
  • σημάδι
  • +
  • αφίσα
  • +
  • πανό
  • +
  • Βιβλίο
  • +
  • επαγγελματική κάρτα
  • +
  • άλμπουμ
  • +
  • ταινία
  • +
  • τηλεόραση
  • +
  • βίντεο/ροή/κανάλια
  • +
  • λογότυπο
  • +
  • λογότυπο με εμπορικό σήμα
  • +
  • είδη ένδυσης
  • +
  • αυτοκόλλητη ετικέτα
  • +
  • σφραγίδα
  • +
  • ετικέτα προϊόντος
  • +
  • ιστοσελίδα (μη ενσωματωμένη)
  • +
  • εφαρμογή (μη ενσωματωμένη)
  • +
  • PDF
  • +
  • Εξώφυλλο ή εικόνες ebook (όχι ενσωματωμένα)
  • +
+ +

Δεν επιτρέπεται

+ +
    +
  • εφαρμογή (ενσωματωμένη)
  • +
  • ιστοσελίδα (ενσωματωμένη)
  • +
  • eBook (ενσωματωμένο)
  • +
  • πλατφόρμα δημιουργίας προϊόντων
  • +
  • γραμματόσημα αλφαβήτου
  • +
  • διακομιστής διαφήμισης
  • +
  • πρότυπο ιστού
  • +
  • OEM
  • +
  • ενσωμάτωση συσκευής
  • +
+ +

Είναι εύκολο να αποκτήσετε μια διαφορετική συμφωνία άδειας χρήσης. Διαβάστε αυτήν τη σελίδα για λεπτομέρειες.

+ +

Άλλα στυλ

+ +

Πολλές από τις δωρεάν γραμματοσειρές του Typodermic έχουν άλλα στυλ διαθέσιμα. Επισκεφτείτε το Typodermic Fonts και αναζητήστε το όνομα αυτής της γραμματοσειράς στη γραμμή αναζήτησης.

+ + +
+ +

תודה

+ +

תודה שהורדת פונט בחינם מTypodermic Fonts Inc.גופנים אלה הכלולים ב-ZIP זה כוללים הסכם רישיון חינם לשולחן העבודה המאפשר שימוש מסחרי. קרא את הסכם הרישיון הכלול לפרטים.

+ + +

הַתקָנָה

+
  • Windows: הוצא את הגופן מה-ZIP. לחץ לחיצה ימנית על הגופן והתקן
  • Mac OS X 10.3 ומעלה: לחץ פעמיים על קובץ הגופן והתקן גופן
+ + +

מוּתָר

+ +
    +
  • אומנות
  • +
  • סִימָן
  • +
  • פּוֹסטֵר
  • +
  • דֶגֶל
  • +
  • סֵפֶר
  • +
  • כרטיס עסקים
  • +
  • אַלבּוֹם
  • +
  • סרט
  • +
  • טֵלֶוִיזִיָה
  • +
  • וידאו/סטרימינג/ערוצים
  • +
  • סֵמֶל
  • +
  • לוגו סימן מסחרי
  • +
  • הַלבָּשָׁה
  • +
  • מַדבֵּקָה
  • +
  • חותמת
  • +
  • תווית המוצר
  • +
  • דף אינטרנט (לא מוטבע)
  • +
  • אפליקציה (לא משובצת)
  • +
  • PDF
  • +
  • כריכה או תמונות של ספר אלקטרוני (לא משובצים)
  • +
+ +

לא מורשה

+ +
    +
  • אפליקציה (מוטבעת)
  • +
  • דף אינטרנט (מוטבע)
  • +
  • ספר אלקטרוני (מוטבע)
  • +
  • פלטפורמת יצירת מוצר
  • +
  • חותמות אלפבית
  • +
  • שרת פרסומות
  • +
  • תבנית אינטרנט
  • +
  • OEM
  • +
  • הטמעת מכשיר
  • +
+ +

קל להשיג הסכם רישיון אחר. קרא את הדף הזה לפרטים.

+ +

סגנונות אחרים

+ +

לרבים מהגופנים החינמיים של Typodermic יש סגנונות אחרים זמינים. אנא בקר בגופנים מסוג Typodermic וחפש את השם של גופן זה בשורת החיפוש.

+ +
+ +

शुक्रिया

+ +

से निःशुल्क फ़ॉन्ट डाउनलोड करने के लिए धन्यवादTypodermic Fonts Inc.इस जिप में शामिल इन फोंट में एक मुफ्त डेस्कटॉप लाइसेंस समझौता शामिल है जो व्यावसायिक उपयोग की अनुमति देता है। विवरण के लिए शामिल लाइसेंस समझौते को पढ़ें।

+ + +

इंस्टालेशन

+
  • Windows: जिप से फॉन्ट निकालें। फ़ॉन्ट पर राइट-क्लिक करें और इंस्टॉल करें
  • Mac OS X 10.3 या इसके बाद के संस्करण: फ़ॉन्ट फ़ाइल पर डबल-क्लिक करें और फ़ॉन्ट इंस्टॉल करें
+ +

अनुमत

+ +
    +
  • कला
  • +
  • संकेत
  • +
  • पोस्टर
  • +
  • बैनर
  • +
  • किताब
  • +
  • बिज़नेस कार्ड
  • +
  • एल्बम
  • +
  • चलचित्र
  • +
  • टेलीविजन
  • +
  • वीडियो/स्ट्रीमिंग/चैनल
  • +
  • प्रतीक चिन्ह
  • +
  • ट्रेडमार्क लोगो
  • +
  • कपड़े
  • +
  • कँटिया
  • +
  • टिकट
  • +
  • उत्पाद लेबल
  • +
  • वेब पेज (एम्बेडेड नहीं)
  • +
  • ऐप (एम्बेडेड नहीं)
  • +
  • पीडीएफ
  • +
  • ईबुक कवर या छवियां (एम्बेडेड नहीं)
  • +
+ +

अनुमति नहीं

+ +
    +
  • ऐप (एम्बेडेड)
  • +
  • वेब पेज (एम्बेडेड)
  • +
  • ईबुक (एम्बेडेड)
  • +
  • उत्पाद निर्माण मंच
  • +
  • वर्णमाला टिकटें
  • +
  • विज्ञापन सर्वर
  • +
  • वेब टेम्पलेट
  • +
  • ओईएम
  • +
  • डिवाइस एम्बेडिंग
  • +
+ +

एक अलग लाइसेंस अनुबंध प्राप्त करना आसान है। विवरण के लिए इस पेज को पढ़ें ।

+ +

अन्य शैलियाँ

+ +

टाइपोडर्मिक के कई मुफ्त फोंट में अन्य शैलियाँ उपलब्ध हैं। कृपया टाइपोडर्मिक फ़ॉन्ट्स पर जाएं और सर्च बार में इस फ़ॉन्ट का नाम खोजें।

+ + +
+ +

Köszönöm

+ +

Köszönjük, hogy letöltött egy ingyenes betűtípust innen Typodermic Fonts Inc. A ZIP-ben található betűtípusok ingyenes asztali licencszerződést tartalmaznak, amely lehetővé teszi a kereskedelmi felhasználást. A részletekért olvassa el a mellékelt licencszerződést.

+ + +

Telepítés

+
  • Windows: Vegye ki a fontot a ZIP-ből. Kattintson a jobb gombbal a betűtípusra, és telepítse
  • Mac OS X 10.3 vagy újabb: Kattintson duplán a betűtípusfájlra, és kattintson a betűtípus telepítésére
+ +

Engedélyezett

+ +
    +
  • Művészet
  • +
  • jel
  • +
  • poszter
  • +
  • transzparens
  • +
  • könyv
  • +
  • névjegykártya
  • +
  • album
  • +
  • film
  • +
  • televízió
  • +
  • videó/streaming/csatornák
  • +
  • logó
  • +
  • védjegyes logó
  • +
  • ruházat
  • +
  • matrica
  • +
  • bélyeg
  • +
  • termékcímkét
  • +
  • weboldal (nem beágyazott)
  • +
  • alkalmazás (nem beágyazott)
  • +
  • PDF
  • +
  • e-könyv borítója vagy képek (nem beágyazva)
  • +
+ +

Nem megengedett

+ +
    +
  • alkalmazás (beágyazott)
  • +
  • weboldal (beágyazott)
  • +
  • e-könyv (beágyazott)
  • +
  • termékkészítő platform
  • +
  • ábécé bélyegek
  • +
  • hirdetési szerver
  • +
  • web sablon
  • +
  • OEM
  • +
  • eszközbeágyazás
  • +
+ +

Könnyű más licencszerződést kötni. Olvassa el ezt az oldalt a részletekért.

+ +

Egyéb stílusok

+ +

A Typodermic ingyenes betűtípusai közül sok más stílus is elérhető. Kérjük, látogasson el a Typodermic Fonts oldalra , és keresse meg ennek a betűtípusnak a nevét a keresősávban.

+ + +
+ +

Þakka þér fyrir

+ +

Takk fyrir að hlaða niður ókeypis leturgerð frá Typodermic Fonts Inc. Þessar leturgerðir sem fylgja með í þessari ZIP innihalda ókeypis leyfissamning fyrir skrifborð sem leyfir notkun í atvinnuskyni. Lestu meðfylgjandi leyfissamning fyrir frekari upplýsingar.

+ +

Uppsetning

+
  • Windows: Fáðu leturgerðina úr ZIP. Hægrismelltu á leturgerðina og Settu upp
  • Mac OS X 10.3 eða nýrri: Tvísmelltu á leturgerðina og Settu upp leturgerð
+ +

Leyfilegt

+ +
    +
  • list
  • +
  • merki
  • +
  • plakat
  • +
  • borði
  • +
  • bók
  • +
  • nafnspjald
  • +
  • albúm
  • +
  • kvikmynd
  • +
  • sjónvarp
  • +
  • myndband/straumspilun/rásir
  • +
  • lógó
  • +
  • vörumerki
  • +
  • fatnað
  • +
  • límmiða
  • +
  • Stimpill
  • +
  • vörumerki
  • +
  • vefsíðu (ekki innbyggð)
  • +
  • app (ekki innbyggt)
  • +
  • PDF
  • +
  • Rafbókarkápa eða myndir (ekki innfelldar)
  • +
+ +

Ekki leyft

+ +
    +
  • app (innfellt)
  • +
  • vefsíða (innfelld)
  • +
  • Rafbók (innfelld)
  • +
  • vettvangur fyrir vörusköpun
  • +
  • stafrófsfrímerki
  • +
  • auglýsingaþjónn
  • +
  • vefsniðmát
  • +
  • OEM
  • +
  • innfelling tækis
  • +
+ +

Það er auðvelt að fá annan leyfissamning. Lestu þessa síðu fyrir nánari upplýsingar.

+ +

Aðrir stílar

+ +

Margar af ókeypis leturgerðum Typodermic eru með aðra stíla í boði. Vinsamlegast farðu á Typodermic Fonts og leitaðu að nafni þessarar leturgerðar í leitarstikunni.

+ + +
+ +

Terima kasih

+ +

Terima kasih telah mengunduh font gratis dari Typodermic Fonts Inc. Font-font yang disertakan dalam ZIP ini menyertakan perjanjian lisensi desktop gratis yang mengizinkan penggunaan komersial. Baca perjanjian lisensi yang disertakan untuk detailnya.

+ + +

Instalasi

+
  • Windows: Keluarkan font dari ZIP. Klik kanan pada font dan Instal
  • Mac OS X 10.3 atau lebih tinggi: Klik dua kali file font dan Instal font
+ +

Diizinkan

+ +
    +
  • seni
  • +
  • tanda
  • +
  • poster
  • +
  • spanduk
  • +
  • buku
  • +
  • kartu bisnis
  • +
  • album
  • +
  • film
  • +
  • televisi
  • +
  • video/streaming/saluran
  • +
  • logo
  • +
  • logo bermerek dagang
  • +
  • pakaian
  • +
  • stiker
  • +
  • stempel
  • +
  • label produk
  • +
  • halaman web (tidak disematkan)
  • +
  • aplikasi (tidak disematkan)
  • +
  • PDF
  • +
  • Sampul eBook atau gambar (tidak disematkan)
  • +
+ +

Tidak diizinkan

+ +
    +
  • aplikasi (tertanam)
  • +
  • halaman web (tertanam)
  • +
  • eBuku (tertanam)
  • +
  • platform pembuatan produk
  • +
  • perangko alfabet
  • +
  • server iklan
  • +
  • templat web
  • +
  • OEM
  • +
  • penyematan perangkat
  • +
+ +

Sangat mudah untuk mendapatkan perjanjian lisensi yang berbeda. Baca halaman ini untuk detailnya.

+ +

Gaya lain

+ +

Banyak font gratis Typodermic memiliki gaya lain yang tersedia. Silakan kunjungi Typodermic Fonts dan cari nama font ini di bilah pencarian.

+ + +
+ +

Grazie

+ +

Grazie per aver scaricato un font gratuito daTypodermic Fonts Inc.Questi font inclusi in questo ZIP includono un accordo di licenza desktop gratuito che ne consente l'uso commerciale. Leggere il contratto di licenza incluso per i dettagli.

+ + +

Installazione

+
  • Windows: estrai il carattere dallo ZIP. Fare clic con il tasto destro sul carattere e Installa
  • Mac OS X 10.3 o superiore: fare doppio clic sul file del font e Installa font
+ +

Permesso

+ +
    +
  • arte
  • +
  • cartello
  • +
  • manifesto
  • +
  • bandiera
  • +
  • prenotare
  • +
  • biglietto da visita
  • +
  • album
  • +
  • film
  • +
  • televisione
  • +
  • video/streaming/canali
  • +
  • logo
  • +
  • marchio registrato
  • +
  • capi di abbigliamento
  • +
  • etichetta
  • +
  • francobollo
  • +
  • etichetta del prodotto
  • +
  • pagina web (non incorporata)
  • +
  • app (non incorporata)
  • +
  • PDF
  • +
  • Copertina o immagini dell'eBook (non incorporate)
  • +
+ +

Non autorizzato

+ +
    +
  • app (incorporata)
  • +
  • pagina web (incorporata)
  • +
  • eBook (incorporato)
  • +
  • piattaforma di creazione del prodotto
  • +
  • francobolli alfabetici
  • +
  • server pubblicitario
  • +
  • modello web
  • +
  • OEM
  • +
  • incorporamento del dispositivo
  • +
+ +

È facile ottenere un contratto di licenza diverso. Leggi questa pagina per i dettagli.

+ +

Altri stili

+ +

Molti dei font gratuiti di Typodermic hanno altri stili disponibili. Si prega di visitare Typodermic Fonts e cercare il nome di questo font nella barra di ricerca.

+ + +
+ +

고맙습니다

+ +

에서 무료 글꼴을 다운로드해 주셔서 감사합니다 Typodermic Fonts Inc. 이 ZIP에 포함된 이러한 글꼴에는 상업적 사용을 허용하는 무료 데스크톱 라이선스 계약이 포함되어 있습니다. 자세한 내용은 포함된 라이센스 계약을 읽으십시오.

+ + +

설치

+
  • Windows: ZIP에서 글꼴을 가져옵니다. 글꼴을 마우스 오른쪽 버튼으로 클릭하고 설치
  • Mac OS X 10.3 이상: 글꼴 파일을 두 번 클릭하고 글꼴 설치
+ +

허용된

+ +
    +
  • 미술
  • +
  • 징후
  • +
  • 포스터
  • +
  • 배너
  • +
  • 도서
  • +
  • 명함
  • +
  • 앨범
  • +
  • 영화
  • +
  • 텔레비전
  • +
  • 비디오/스트리밍/채널
  • +
  • 심벌 마크
  • +
  • 상표 로고
  • +
  • 의류
  • +
  • 상표
  • +
  • 우표
  • +
  • 제품 라벨
  • +
  • 웹페이지(삽입되지 않음)
  • +
  • 앱(삽입되지 않음)
  • +
  • PDF
  • +
  • eBook 표지 또는 이미지(삽입되지 않음)
  • +
+ +

허용되지 않음

+ +
    +
  • 앱(임베디드)
  • +
  • 웹페이지(임베디드)
  • +
  • 전자책(임베디드)
  • +
  • 제품 제작 플랫폼
  • +
  • 알파벳 우표
  • +
  • 광고 서버
  • +
  • 웹 템플릿
  • +
  • OEM
  • +
  • 장치 임베딩
  • +
+ +

+다른 라이센스 계약을 얻는 것은 쉽습니다. 자세한 내용은 이 페이지 를 읽으십시오.

+ +

다른 스타일

+ +

많은 Typodermic의 무료 글꼴에는 다른 스타일을 사용할 수 있습니다. Typodermic Fonts 를 방문 하여 검색창에서 이 글꼴의 이름을 검색하십시오.

+ + +
+ +

ありがとうございます

+ +

から無料フォントをダウンロードしていただきありがとうございますTypodermic Fonts 株式会社。 この ZIP に含まれるこれらのフォントには、商用利用を許可する無料のデスクトップ ライセンス契約が含まれています。詳細については、同梱のライセンス契約をお読みください。

+ + +

インストール

+
  • Windows: ZIP からフォントを取得します。フォントを右クリックしてインストール
  • Mac OS X 10.3 以降: フォント ファイルをダブルクリックし、フォントをインストールします。
+ +

許可

+ +
    +
  • 美術
  • +
  • サイン
  • +
  • ポスター
  • +
  • バナー
  • +
  • +
  • 名刺
  • +
  • アルバム
  • +
  • 映画
  • +
  • テレビ
  • +
  • ビデオ/ストリーミング/チャンネル
  • +
  • ロゴ
  • +
  • 商標登録されたロゴ
  • +
  • 衣類
  • +
  • ステッカー
  • +
  • 切手
  • +
  • 製品ラベル
  • +
  • Web ページ (埋め込まれていません)
  • +
  • アプリ (埋め込まれていません)
  • +
  • PDF
  • +
  • eBook の表紙または画像 (埋め込まれていないもの)
  • +
+ +

禁止

+ +
    +
  • アプリ (組み込み)
  • +
  • Web ページ (埋め込み)
  • +
  • eBook (埋め込み)
  • +
  • プロダクトクリエーションプラットフォーム
  • +
  • アルファベットスタンプ
  • +
  • 広告サーバー
  • +
  • ウェブ テンプレート
  • +
  • OEM
  • +
  • デバイス埋め込み
  • +
+ +

別のライセンス契約を取得するのは簡単です。詳しくはこちらのページをお読みください。

+ +

その他のスタイル

+ +

Typodermic のフリー フォントの多くには、他のスタイルが用意されています。Typodermic Fontsにアクセスし、検索バーでこのフォントの名前を検索してください。 弊社は日本の会社ですので、お問い合わせフォームに日本語で入力してください。

+ + +
+ +

Takk skal du ha

+ +

Takk for at du lastet ned en gratis font fra Typodermic Fonts Inc. Disse skriftene som er inkludert i denne ZIP-filen inkluderer en gratis lisensavtale for skrivebord som tillater kommersiell bruk. Les den medfølgende lisensavtalen for detaljer.

+ + +

Installasjon

+
  • Windows: Få skriften ut av ZIP. Høyreklikk på skriften og installer
  • Mac OS X 10.3 eller nyere: Dobbeltklikk på skriftfilen og Installer skrift
+ +

Tillatt

+ +
    +
  • Kunst
  • +
  • skilt
  • +
  • plakat
  • +
  • banner
  • +
  • bok
  • +
  • visittkort
  • +
  • album
  • +
  • film
  • +
  • fjernsyn
  • +
  • video/streaming/kanaler
  • +
  • logo
  • +
  • varemerkebeskyttet logo
  • +
  • klær
  • +
  • klistremerke
  • +
  • stemple
  • +
  • produktetikett
  • +
  • nettside (ikke innebygd)
  • +
  • app (ikke innebygd)
  • +
  • PDF
  • +
  • e-bokomslag eller bilder (ikke innebygd)
  • +
+ +

Ikke tillatt

+ +
    +
  • app (innebygd)
  • +
  • nettside (innebygd)
  • +
  • e-bok (innebygd)
  • +
  • plattform for produktskaping
  • +
  • alfabetstempler
  • +
  • annonseserver
  • +
  • nettmal
  • +
  • OEM
  • +
  • innbygging av enheten
  • + +
+ +

Det er enkelt å få en annen lisensavtale. Les denne siden for detaljer.

+ +

Andre stiler

+ +

Mange av Typodermics gratis fonter har andre stiler tilgjengelig. Gå til Typodermic Fonts og søk etter navnet på denne fonten i søkefeltet.

+ + +
+ +

Dziękuję Ci

+ +

Dziękujemy za pobranie darmowej czcionki z Typodermic Fonts Inc. Czcionki zawarte w tym pliku ZIP zawierają umowę licencyjną dotyczącą bezpłatnego komputera stacjonarnego, która zezwala na wykorzystanie komercyjne. Przeczytaj dołączoną umowę licencyjną, aby poznać szczegóły.

+ + +

Dozwolony

+
  • Windows: Pobierz czcionkę z ZIP-a. Kliknij czcionkę prawym przyciskiem myszy i zainstaluj
  • Mac OS X 10.3 lub nowszy: Kliknij dwukrotnie plik czcionki i Zainstaluj czcionkę
+ +

Allowed

+ +
    +
  • sztuka
  • +
  • podpisać
  • +
  • plakat
  • +
  • transparent
  • +
  • książka
  • +
  • wizytówka
  • +
  • album
  • +
  • film
  • +
  • telewizja
  • +
  • wideo/transmisja strumieniowa/kanały
  • +
  • logo
  • +
  • znak firmowy
  • +
  • odzież
  • +
  • naklejka
  • +
  • znaczek
  • +
  • Etykieta produktu
  • +
  • strona internetowa (nie osadzona)
  • +
  • aplikacja (nie osadzona)
  • +
  • PDF
  • +
  • Okładka eBooka lub obrazy (nie osadzone)
  • +
+ +

Nie dozwolony

+ +
    +
  • aplikacja (wbudowana)
  • +
  • strona internetowa (wbudowana)
  • +
  • eBook (wbudowany)
  • +
  • platforma do tworzenia produktów
  • +
  • znaczki alfabetu
  • +
  • serwer reklam
  • +
  • szablon sieciowy
  • +
  • OEM
  • +
  • osadzanie urządzenia
  • +
+ +

Uzyskanie innej umowy licencyjnej jest łatwe. Przeczytaj tę stronę, aby uzyskać szczegółowe informacje.

+ +

Inne style

+ +

Wiele darmowych czcionek Typodermic ma dostępne inne style. Odwiedź stronę Typodermic Fonts i wyszukaj nazwę tej czcionki w pasku wyszukiwania.

+ + +
+ +

Obrigada

+ +

Obrigado por baixar uma fonte gratuita de Typodermic Fonts Inc. Essas fontes incluídas neste ZIP incluem um contrato de licença de desktop gratuito que permite o uso comercial. Leia o contrato de licença incluído para obter detalhes.

+ + +

Instalação

+
  • Windows: Obtenha a fonte do ZIP. Clique com o botão direito na fonte e instale
  • Mac OS X 10.3 ou superior: clique duas vezes no arquivo de fonte e instale a fonte
+ +

Permitido

+ +
    +
  • arte
  • +
  • o sinal
  • +
  • poster
  • +
  • bandeira
  • +
  • livro
  • +
  • cartão de visitas
  • +
  • álbum
  • +
  • filme
  • +
  • televisão
  • +
  • vídeo/streaming/canais
  • +
  • logotipo
  • +
  • logotipo de marca registrada
  • +
  • roupas
  • +
  • adesivo
  • +
  • carimbo
  • +
  • Rótulo do produto
  • +
  • página da web (não incorporada)
  • +
  • aplicativo (não incorporado)
  • +
  • PDF
  • +
  • Capa ou imagens do eBook (não incorporadas)
  • +
+ +

Não permitido

+ +
    +
  • aplicativo (incorporado)
  • +
  • página web (incorporada)
  • +
  • e-book (incorporado)
  • +
  • plataforma de criação de produtos
  • +
  • carimbos do alfabeto
  • +
  • servidor de anúncios
  • +
  • modelo da web
  • +
  • OEM
  • +
  • incorporação de dispositivo
  • +
+ +

É fácil obter um contrato de licença diferente. Leia esta página para obter detalhes.

+ +

Outros estilos

+ +

Muitas das fontes gratuitas do Typodermic têm outros estilos disponíveis. Por favor, visite Typodermic Fonts e procure o nome desta fonte na barra de pesquisa.

+ + +
+ +

ਤੁਹਾਡਾ ਧੰਨਵਾਦ

+ +

ਤੋਂ ਇੱਕ ਮੁਫਤ ਫੌਂਟ ਡਾਊਨਲੋਡ ਕਰਨ ਲਈ ਧੰਨਵਾਦ Typodermic Fonts Inc. ਇਸ ਜ਼ਿਪ ਵਿੱਚ ਸ਼ਾਮਲ ਇਹਨਾਂ ਫੌਂਟਾਂ ਵਿੱਚ ਇੱਕ ਮੁਫਤ ਡੈਸਕਟੌਪ ਲਾਇਸੈਂਸ ਸਮਝੌਤਾ ਸ਼ਾਮਲ ਹੈ ਜੋ ਵਪਾਰਕ ਵਰਤੋਂ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ। ਵੇਰਵਿਆਂ ਲਈ ਸ਼ਾਮਲ ਲਾਇਸੰਸ ਸਮਝੌਤੇ ਨੂੰ ਪੜ੍ਹੋ।

+ + +

ਇੰਸਟਾਲੇਸ਼ਨ

+
  • Windows ਜ਼ਿਪ ਤੋਂ ਫੌਂਟ ਪ੍ਰਾਪਤ ਕਰੋ। ਫੌਂਟ 'ਤੇ ਸੱਜਾ-ਕਲਿਕ ਕਰੋ ਅਤੇ ਇੰਸਟਾਲ ਕਰੋ
  • Mac OS X 10.3 ਜਾਂ ਇਸ ਤੋਂ ਉੱਪਰ: ਫੌਂਟ ਫਾਈਲ 'ਤੇ ਡਬਲ-ਕਲਿਕ ਕਰੋ ਅਤੇ ਫੌਂਟ ਸਥਾਪਿਤ ਕਰੋ
+ +

ਦੀ ਇਜਾਜ਼ਤ ਹੈ

+ +
    +
  • ਕਲਾ
  • +
  • ਚਿੰਨ੍ਹ
  • +
  • ਪੋਸਟਰ
  • +
  • ਬੈਨਰ
  • +
  • ਕਿਤਾਬ
  • +
  • ਕਾਰੋਬਾਰੀ ਕਾਰਡ
  • +
  • ਐਲਬਮ
  • +
  • ਫਿਲਮ
  • +
  • ਟੈਲੀਵਿਜ਼ਨ
  • +
  • ਵੀਡੀਓ/ਸਟ੍ਰੀਮਿੰਗ/ਚੈਨਲ
  • +
  • ਲੋਗੋ
  • +
  • ਟ੍ਰੇਡਮਾਰਕ ਲੋਗੋ
  • +
  • ਕੱਪੜੇ
  • +
  • ਸਟਿੱਕਰ
  • +
  • ਮੋਹਰ
  • +
  • ਉਤਪਾਦ ਲੇਬਲ
  • +
  • ਵੈਬ ਪੇਜ (ਏਮਬੈਡਡ ਨਹੀਂ)
  • +
  • ਐਪ (ਏਮਬੈਡਡ ਨਹੀਂ)
  • +
  • PDF
  • +
  • ਈਬੁੱਕ ਕਵਰ ਜਾਂ ਚਿੱਤਰ (ਏਮਬੈਡਡ ਨਹੀਂ)
  • +
+ +

ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ

+ +
    +
  • ਐਪ (ਏਮਬੈਡਡ)
  • +
  • ਵੈੱਬ ਪੇਜ (ਏਮਬੈਡਡ)
  • +
  • ਈ-ਕਿਤਾਬ (ਏਮਬੈਡਡ)
  • +
  • ਉਤਪਾਦ ਬਣਾਉਣ ਪਲੇਟਫਾਰਮ
  • +
  • ਵਰਣਮਾਲਾ ਸਟਪਸ
  • +
  • ਵਿਗਿਆਪਨ ਸਰਵਰ
  • +
  • ਵੈੱਬ ਟੈਮਪਲੇਟ
  • +
  • OEM
  • +
  • ਡਿਵਾਈਸ ਏਮਬੈਡਿੰਗ
  • +
+ +

ਇੱਕ ਵੱਖਰਾ ਲਾਇਸੰਸ ਸਮਝੌਤਾ ਪ੍ਰਾਪਤ ਕਰਨਾ ਆਸਾਨ ਹੈ। ਵੇਰਵਿਆਂ ਲਈ ਇਸ ਪੰਨੇ ਨੂੰ ਪੜ੍ਹੋ ।

+ +

ਹੋਰ ਸਟਾਈਲ

+ +

ਟਾਈਪੋਡਰਮਿਕ ਦੇ ਬਹੁਤ ਸਾਰੇ ਮੁਫਤ ਫੌਂਟਾਂ ਦੀਆਂ ਹੋਰ ਸ਼ੈਲੀਆਂ ਉਪਲਬਧ ਹਨ। ਕਿਰਪਾ ਕਰਕੇ Typodermic Fonts 'ਤੇ ਜਾਓ ਅਤੇ ਖੋਜ ਪੱਟੀ ਵਿੱਚ ਇਸ ਫੌਂਟ ਦੇ ਨਾਮ ਦੀ ਖੋਜ ਕਰੋ।

+ + +
+ +

Mulțumesc

+ +

Vă mulțumim pentru descărcarea unui font gratuit de la Typodermic Fonts Inc. Aceste fonturi incluse în acest ZIP includ un acord de licență gratuit pentru desktop, care permite utilizarea comercială. Citiți acordul de licență inclus pentru detalii.

+ + +

Instalare

+
  • Windows: scoateți fontul din ZIP. Faceți clic dreapta pe font și Instalați
  • Mac OS X 10.3 sau o versiune ulterioară: Faceți dublu clic pe fișierul fontului și Instalați fontul
+ +

Permis

+ +
    +
  • artă
  • +
  • semn
  • +
  • poster
  • +
  • banner
  • +
  • carte
  • +
  • carte de vizită
  • +
  • album
  • +
  • film
  • +
  • televiziune
  • +
  • video/streaming/canale
  • +
  • siglă
  • +
  • logo-ul mărcii comerciale
  • +
  • îmbrăcăminte
  • +
  • autocolant
  • +
  • timbru
  • +
  • eticheta produsului
  • +
  • pagină web (neîncorporată)
  • +
  • aplicație (nu încorporată)
  • +
  • PDF
  • +
  • Copertă sau imagini de cărți electronice (nu încorporate)
  • +
+ +

Nepermis

+ +
    +
  • aplicație (încorporată)
  • +
  • pagină web (încorporată)
  • +
  • carte electronică (încorporată)
  • +
  • platforma de creare a produselor
  • +
  • timbre cu alfabet
  • +
  • server de publicitate
  • +
  • șablon web
  • +
  • OEM
  • +
  • încorporarea dispozitivului
  • +
+ +

Este ușor să obțineți un alt acord de licență. Citiți această pagină pentru detalii.

+ +

Alte stiluri

+ +

Multe dintre fonturile gratuite ale Typodermic au alte stiluri disponibile. Vă rugăm să vizitați Typodermic Fonts și să căutați numele acestui font în bara de căutare.

+ + +
+ +

Спасибо

+ +

Спасибо за загрузку бесплатного шрифта с Typodermic Fonts Inc. Эти шрифты, включенные в этот ZIP-файл, включают бесплатное лицензионное соглашение для настольных компьютеров, которое разрешает коммерческое использование. Подробнее читайте в прилагаемом лицензионном соглашении.

+ + +

Установка

+
  • Windows: достаньте шрифт из ZIP. Щелкните правой кнопкой мыши шрифт и установите
  • Mac OS X 10.3 или более поздней версии: дважды щелкните файл шрифта и выберите « Установить шрифт» .
+ +

Допустимый

+ +
    +
  • Изобразительное искусство
  • +
  • подписать
  • +
  • плакат
  • +
  • баннер
  • +
  • книга
  • +
  • визитная карточка
  • +
  • альбом
  • +
  • кино
  • +
  • телевидение
  • +
  • видео/стриминг/каналы
  • +
  • логотип
  • +
  • логотип торговой марки
  • +
  • одежда
  • +
  • наклейка
  • +
  • печать
  • +
  • этикетка продукта
  • +
  • веб-страница (не встроенная)
  • +
  • приложение (не встроенное)
  • +
  • PDF
  • +
  • Обложка или изображения электронной книги (не встроенные)
  • +
+ +

Не положено

+ +
    +
  • приложение (встроенное)
  • +
  • веб-страница (встроенная)
  • +
  • электронная книга (встроенная)
  • +
  • платформа для создания продукта
  • +
  • алфавит марки
  • +
  • рекламный сервер
  • +
  • веб-шаблон
  • +
  • ОЕМ
  • +
  • встраивание устройства
  • +
+ +

Легко получить другое лицензионное соглашение. Подробности читайте на этой странице .

+ +

Другие стили

+ +

Для многих бесплатных шрифтов Typodermic доступны другие стили. Пожалуйста, посетите Typodermic Fonts и найдите название этого шрифта в строке поиска.

+ + +
+ +

Tack

+ +

Tack för att du laddar ner ett gratis typsnitt från Typodermic Fonts Inc. Dessa typsnitt som ingår i denna ZIP inkluderar ett gratis licensavtal för skrivbordet som tillåter kommersiell användning. Läs det medföljande licensavtalet för detaljer.

+ + +

Installation

+
  • Windows: Ta bort teckensnittet från ZIP. Högerklicka på typsnittet och installera
  • Mac OS X 10.3 eller senare: Dubbelklicka på teckensnittsfilen och Installera teckensnitt
+ +

Tillåten

+ +
    +
  • konst
  • +
  • skylt
  • +
  • affisch
  • +
  • baner
  • +
  • bok
  • +
  • visitkort
  • +
  • album
  • +
  • film
  • +
  • tv
  • +
  • video/streaming/kanaler
  • +
  • logotyp
  • +
  • varumärkesskyddad logotyp
  • +
  • Kläder
  • +
  • klistermärke
  • +
  • stämpel
  • +
  • produktetikett
  • +
  • webbsida (ej inbäddad)
  • +
  • app (ej inbäddad)
  • +
  • PDF
  • +
  • e-bokomslag eller bilder (ej inbäddade)
  • +
+ +

Inte tillåtet

+ +
    +
  • app (inbäddad)
  • +
  • webbsida (inbäddad)
  • +
  • e-bok (inbäddad)
  • +
  • plattform för att skapa produkter
  • +
  • alfabetet stämplar
  • +
  • annonsserver
  • +
  • webbmall
  • +
  • OEM
  • +
  • enhetsinbäddning
  • +
+ +

Det är lätt att få ett annat licensavtal. Läs den här sidan för detaljer.

+ +

Andra stilar

+ +

Många av Typodermics gratis typsnitt har andra stilar tillgängliga. Besök Typodermic Fonts och sök efter namnet på detta teckensnitt i sökfältet.

+ + +
+ +

நன்றி

+ +

இதிலிருந்து இலவச எழுத்துருவைப் பதிவிறக்கியதற்கு நன்றி Typodermic Fonts Inc. இந்த ஜிப்பில் சேர்க்கப்பட்டுள்ள இந்த எழுத்துருக்கள் வணிகரீதியான பயன்பாட்டை அனுமதிக்கும் இலவச டெஸ்க்டாப் உரிம ஒப்பந்தத்தை உள்ளடக்கியது. விவரங்களுக்கு சேர்க்கப்பட்ட உரிம ஒப்பந்தத்தைப் படிக்கவும்.

+ + +

நிறுவல்

+
  • Windows: ZIP இலிருந்து எழுத்துருவைப் பெறவும். எழுத்துரு மீது வலது கிளிக் செய்து நிறுவவும்
  • அல்லது அதற்கு மேல்: எழுத்துருக் கோப்பை இருமுறை கிளிக் செய்து, எழுத்துருவை நிறுவவும்
+ +

அனுமதிக்கப்பட்டது

+ +
    +
  • கலை
  • +
  • அடையாளம்
  • +
  • சுவரொட்டி
  • +
  • பதாகை
  • +
  • நூல்
  • +
  • வணிக அட்டை
  • +
  • ஆல்பம்
  • +
  • திரைப்படம்
  • +
  • தொலைக்காட்சி
  • +
  • வீடியோ/ஸ்ட்ரீமிங்/சேனல்கள்
  • +
  • சின்னம்
  • +
  • வர்த்தக முத்திரை லோகோ
  • +
  • ஆடை
  • +
  • ஓட்டி
  • +
  • முத்திரை
  • +
  • தயாரிப்பு லேபிள்
  • +
  • வலைப்பக்கம் (உட்பொதிக்கப்படவில்லை)
  • +
  • பயன்பாடு (உட்பொதிக்கப்படவில்லை)
  • +
  • PDF
  • +
  • மின்புத்தக அட்டை அல்லது படங்கள் (உட்பொதிக்கப்படவில்லை)
  • +
+ +

அனுமதி இல்லை

+ +
    +
  • பயன்பாடு (உட்பொதிக்கப்பட்டது)
  • +
  • வலைப்பக்கம் (உட்பொதிக்கப்பட்டது)
  • +
  • மின்புத்தகம் (உட்பொதிக்கப்பட்டது)
  • +
  • தயாரிப்பு உருவாக்கும் தளம்
  • +
  • எழுத்துக்கள் முத்திரைகள்
  • +
  • விளம்பர சர்வர்
  • +
  • வலை டெம்ப்ளேட்
  • +
  • OEM
  • +
  • சாதனம் உட்பொதித்தல்
  • +
+ +

வேறுபட்ட உரிம ஒப்பந்தத்தைப் பெறுவது எளிது. விவரங்களுக்கு இந்தப் பக்கத்தைப் படிக்கவும் .

+ +

பிற பாணிகள்

+ +

Typodermic இன் இலவச எழுத்துருக்கள் பல மற்ற பாணிகளைக் கொண்டுள்ளன. தயவு செய்து Typodermic எழுத்துருக்களைப் பார்வையிடவும் மற்றும் தேடல் பட்டியில் இந்த எழுத்துருவின் பெயரைத் தேடவும்.

+ + +
+ +

ขอขอบคุณ

+ +

Tขอขอบคุณที่ดาวน์โหลดฟอนต์ฟรีจากTypodermic Fonts Inc. แบบอักษรเหล่านี้ที่รวมอยู่ใน ZIP นี้รวมถึงข้อตกลงสิทธิ์การใช้งานเดสก์ท็อปฟรีซึ่งอนุญาตให้ใช้ในเชิงพาณิชย์ อ่านข้อตกลงใบอนุญาตรวมสำหรับรายละเอียด

+ + +

การติดตั้ง

+
  • Windows: รับแบบอักษรจาก ZIP คลิกขวาที่ฟอนต์และติดตั้ง
  • Mac OS X 10.3 ขึ้นไป: ดับเบิลคลิกไฟล์ฟอนต์และติดตั้งฟอนต์
+ +

อนุญาต

+ +
    +
  • ศิลปะ
  • +
  • เข้าสู่ระบบ
  • +
  • โปสเตอร์
  • +
  • แบนเนอร์
  • +
  • หนังสือ
  • +
  • นามบัตร
  • +
  • อัลบั้ม
  • +
  • ภาพยนตร์
  • +
  • โทรทัศน์
  • +
  • วิดีโอ/สตรีมมิ่ง/ช่อง
  • +
  • โลโก้
  • +
  • โลโก้เครื่องหมายการค้า
  • +
  • เสื้อผ้า
  • +
  • สติ๊กเกอร์
  • +
  • ประทับ
  • +
  • ฉลากสินค้า
  • +
  • หน้าเว็บ (ไม่ฝังตัว)
  • +
  • แอพ (ไม่ฝังตัว)
  • +
  • ไฟล์ PDF
  • +
  • หน้าปก eBook หรือรูปภาพ (ไม่ฝัง)
  • +
+ +

ไม่ได้รับอนุญาต

+ +
    +
  • แอพ (ฝังตัว)
  • +
  • หน้าเว็บ (แบบฝัง)
  • +
  • eBook (แบบฝัง)
  • +
  • แพลตฟอร์มการสร้างผลิตภัณฑ์
  • +
  • แสตมป์ตัวอักษร
  • +
  • เซิร์ฟเวอร์โฆษณา
  • +
  • แม่แบบเว็บ
  • +
  • OEM
  • +
  • การฝังอุปกรณ์
  • +
+ +

ง่ายที่จะได้รับข้อตกลงสิทธิ์การใช้งานอื่น อ่านหน้านี้เพื่อดูรายละเอียด

+ +

สไตล์อื่นๆ

+ +

ฟอนต์ฟรีมากมายของ Typodermic มีสไตล์อื่นๆ ให้เลือกใช้ โปรดไปที่ Typodermic Fontsและค้นหาชื่อของแบบอักษรนี้ในแถบค้นหา.

+ + +
+ +

Teşekkür ederim

+ +

Typodermic Fonts Inc.'den ücretsiz bir yazı tipi indirdiğiniz için teşekkür ederiz. Bu ZIP'te bulunan bu yazı tipleri, ticari kullanıma izin veren ücretsiz bir masaüstü lisans sözleşmesi içerir. Ayrıntılar için verilen lisans sözleşmesini okuyun.

+ + +

Kurulum

+
  • Windows: Yazı tipini ZIP dosyasından çıkarın. Yazı tipine sağ tıklayın ve Yükleyin
  • Mac OS X 10.3 veya üstü: Yazı tipi dosyasına çift tıklayın ve Yazı tipini yükle
+ +

İzin verilmiş

+ +
    +
  • sanat
  • +
  • imza
  • +
  • afiş
  • +
  • afiş
  • +
  • kitap
  • +
  • kartvizit
  • +
  • albüm
  • +
  • film
  • +
  • televizyon
  • +
  • video/akış/kanallar
  • +
  • logo
  • +
  • ticari marka logosu
  • +
  • Giyim
  • +
  • etiket
  • +
  • pul
  • +
  • ürün etiketi
  • +
  • web sayfası (gömülü değil)
  • +
  • uygulama (gömülü değil)
  • +
  • PDF
  • +
  • eKitap kapağı veya resimleri (gömülü değil)
  • +
+ +

İzin verilmedi

+ +
    +
  • uygulama (gömülü)
  • +
  • web sayfası (gömülü)
  • +
  • eKitap (gömülü)
  • +
  • ürün oluşturma platformu
  • +
  • alfabe pulları
  • +
  • reklam sunucusu
  • +
  • web şablonu
  • +
  • OEM
  • +
  • cihaz gömme
  • +
+ +

Farklı bir lisans sözleşmesi almak kolaydır. Ayrıntılar için bu sayfayı okuyun .

+ +

Diğer stiller

+ +

Typodermic'in ücretsiz yazı tiplerinin birçoğunda başka stiller mevcuttur. Lütfen Typodermic Fonts'u ziyaret edin ve arama çubuğunda bu fontun adını arayın.

+ +
+ +

Дуже дякую

+ +

Дякуємо за завантаження безкоштовного шрифту з Typodermic Fonts Inc. Ці шрифти, включені в цей ZIP, включають безкоштовну ліцензійну угоду для комп’ютера, яка дозволяє комерційне використання. Прочитайте включену ліцензійну угоду, щоб дізнатися більше.

+ + +

монтаж

+
  • Windows: дістаньте шрифт із ZIP. Клацніть правою кнопкою миші на шрифті та встановіть
  • Mac OS X 10.3 або вище: двічі клацніть файл шрифту та виберіть Установити шрифт
+ +

Дозволено

+ +
    +
  • ст
  • +
  • знак
  • +
  • плакат
  • +
  • банер
  • +
  • книга
  • +
  • бізнес картка
  • +
  • альбом
  • +
  • фільм
  • +
  • телебачення
  • +
  • відео/потокове передавання/канали
  • +
  • логотип
  • +
  • логотип торгової марки
  • +
  • одяг
  • +
  • наклейка
  • +
  • штамп
  • +
  • етикетка продукту
  • +
  • веб-сторінка (не вбудована)
  • +
  • додаток (не вбудований)
  • +
  • PDF
  • +
  • Обкладинка електронної книги або зображення (не вбудовані)
  • +
+ +

Не дозволено

+ +
    +
  • додаток (вбудований)
  • +
  • веб-сторінка (вбудована)
  • +
  • електронна книга (вбудована)
  • +
  • платформа створення продукту
  • +
  • алфавітні марки
  • +
  • сервер реклами
  • +
  • веб-шаблон
  • +
  • OEM
  • +
  • вбудовування пристрою
  • +
+ +

Отримати іншу ліцензійну угоду легко. Прочитайте цю сторінку для отримання деталей.

+ +

Інші стилі

+ +

Багато безкоштовних шрифтів Typodermic мають інші доступні стилі. Відвідайте Typodermic Fonts і знайдіть назву цього шрифту в рядку пошуку.

+ + +
+ + +

Cảm ơn bạn

+ +

Cảm ơn bạn đã tải xuống một phông chữ miễn phí từ Typodermic Fonts Inc. Những phông chữ có trong ZIP này bao gồm thỏa thuận cấp phép máy tính để bàn miễn phí cho phép sử dụng thương mại. Đọc thỏa thuận cấp phép đi kèm để biết chi tiết.

+ + +

Cài đặt

+
  • Windows: Lấy phông chữ ra khỏi ZIP. Nhấp chuột phải vào phông chữ và Cài đặt
  • Mac OS X 10.3 trở lên: Nhấp đúp vào tệp phông chữ và Cài đặt phông chữ
+ + + +
    +
  • Mỹ thuật
  • +
  • bảng hiệu
  • +
  • poster
  • +
  • Ảnh bìa
  • +
  • sách
  • +
  • danh thiếp
  • +
  • album
  • +
  • bộ phim
  • +
  • Tivi
  • +
  • video/phát trực tuyến/kênh
  • +
  • Logo
  • +
  • logo đã đăng ký nhãn hiệu
  • +
  • quần áo
  • +
  • nhãn dán
  • +
  • con tem
  • +
  • nhãn sản phẩm
  • +
  • trang web (không được nhúng)
  • +
  • ứng dụng (không được nhúng)
  • +
  • PDF
  • +
  • Bìa sách điện tử hoặc hình ảnh (không được nhúng)
  • +
+ +

Không cho phép

+ +
    +
  • ứng dụng (nhúng)
  • +
  • trang web (được nhúng)
  • +
  • Sách điện tử (nhúng)
  • +
  • nền tảng tạo sản phẩm
  • +
  • tem bảng chữ cái
  • +
  • máy chủ quảng cáo
  • +
  • mẫu web
  • +
  • OEM
  • +
  • nhúng thiết bị
  • +
+ +

Thật dễ dàng để có được một thỏa thuận cấp phép khác. Đọc trang này để biết chi tiết.

+ +

phong cách khác

+ +

Nhiều phông chữ miễn phí của Typodermic có sẵn các kiểu khác. Vui lòng truy cập Typodermic Fonts và tìm kiếm tên của phông chữ này trong thanh tìm kiếm.

+ +
+ + \ No newline at end of file diff --git a/External Assets/Fonts/oxanium/FONTLOG.txt b/External Assets/Fonts/oxanium/FONTLOG.txt new file mode 100644 index 00000000..61767d65 --- /dev/null +++ b/External Assets/Fonts/oxanium/FONTLOG.txt @@ -0,0 +1,53 @@ +Oxanium font family +https://sev.dev/fonts/oxanium + + +Weights +------- + +200 ExtraLight +300 Light +400 Regular +500 Medium +600 SemiBold +700 Bold +800 ExtraBold + + +OpenType features +----------------- + +kern Provides kerning. +mark Positions combining diacritics relative to base characters. +pnum Replaces monospaced digits with proportional versions. +zero Replaces digit zero with a dotted version. + + +Characters +---------- + +Adobe Latin 3 + +U+0300 Combining grave +U+0301 Combining acute +U+0302 Combining circumflex +U+0303 Combining tilde +U+0304 Combining macron +U+0306 Combining breve +U+0307 Combining dot above +U+0308 Combining diaeresis +U+030A Combining ring above +U+030B Combining double acute +U+030C Combining caron +U+0326 Combining comma below +U+0327 Combining cedilla +U+0328 Combining ogonek +U+1E9E Capital Eszett +U+F000 TrueType hinting marker (up=on, down=off) + + +Changelog +--------- + +Oxanium 1.000 2019-03-20 Severin Meyer hello@sev.dev + Initial release diff --git a/External Assets/Fonts/oxanium/LICENSE.txt b/External Assets/Fonts/oxanium/LICENSE.txt new file mode 100644 index 00000000..1bca71a3 --- /dev/null +++ b/External Assets/Fonts/oxanium/LICENSE.txt @@ -0,0 +1,93 @@ +Copyright 2019 Severin Meyer, with Reserved Font Name Oxanium + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/External Assets/Fonts/oxanium/Oxanium-Bold.ttf b/External Assets/Fonts/oxanium/Oxanium-Bold.ttf new file mode 100644 index 00000000..65fc5e5a --- /dev/null +++ b/External Assets/Fonts/oxanium/Oxanium-Bold.ttf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6690376ac20ddf9ca4e2f01f0769c1ee2b275c05512c69a5de6f92b95d7be679 +size 55512 diff --git a/External Assets/Fonts/oxanium/Oxanium-ExtraBold.ttf b/External Assets/Fonts/oxanium/Oxanium-ExtraBold.ttf new file mode 100644 index 00000000..42ab9c88 --- /dev/null +++ b/External Assets/Fonts/oxanium/Oxanium-ExtraBold.ttf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41b86751635d6a969641b69e3de3f9a520a4a780d50b787d524ca71da1f46f34 +size 55604 diff --git a/External Assets/Fonts/oxanium/Oxanium-ExtraLight.ttf b/External Assets/Fonts/oxanium/Oxanium-ExtraLight.ttf new file mode 100644 index 00000000..74adbc3c --- /dev/null +++ b/External Assets/Fonts/oxanium/Oxanium-ExtraLight.ttf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:43fd82eaaa4b99e4c58683b20e768f3f7ed9c033be8dc3e45af6f5fc77a3ad3e +size 55728 diff --git a/External Assets/Fonts/oxanium/Oxanium-Light.ttf b/External Assets/Fonts/oxanium/Oxanium-Light.ttf new file mode 100644 index 00000000..0d61c9a0 --- /dev/null +++ b/External Assets/Fonts/oxanium/Oxanium-Light.ttf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:435564a4556f789348b4cdcef25ff3c61c59dc1efa300823c3fd3eac6d3808ad +size 55644 diff --git a/External Assets/Fonts/oxanium/Oxanium-Medium.ttf b/External Assets/Fonts/oxanium/Oxanium-Medium.ttf new file mode 100644 index 00000000..9ddaf5bb --- /dev/null +++ b/External Assets/Fonts/oxanium/Oxanium-Medium.ttf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f4099edb1e05797c995fff37e0770e23f74c4f8f88b3294842784efcc7bbaac9 +size 55620 diff --git a/External Assets/Fonts/oxanium/Oxanium-Regular.ttf b/External Assets/Fonts/oxanium/Oxanium-Regular.ttf new file mode 100644 index 00000000..5f09dfa4 --- /dev/null +++ b/External Assets/Fonts/oxanium/Oxanium-Regular.ttf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66a9688339f6d3fcde312660fa193659e6ed13a39aa929308dd17c550352e71d +size 55552 diff --git a/External Assets/Fonts/oxanium/Oxanium-SemiBold.ttf b/External Assets/Fonts/oxanium/Oxanium-SemiBold.ttf new file mode 100644 index 00000000..e64d0349 --- /dev/null +++ b/External Assets/Fonts/oxanium/Oxanium-SemiBold.ttf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b11e06346cdba8718fd20ea31f780612c11c2a1a5f31d35713367bd5ff6b2974 +size 55624 diff --git a/External Assets/Fonts/oxanium/Oxanium.png b/External Assets/Fonts/oxanium/Oxanium.png new file mode 100644 index 00000000..2df0ff01 --- /dev/null +++ b/External Assets/Fonts/oxanium/Oxanium.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4426bdcc85524087105e70456de3fc6c2ce5378c5dce92e68d3c3cd0674a5a1f +size 16928 From ef1b12ecede00c524519e325d4e17c56796b5957 Mon Sep 17 00:00:00 2001 From: PHILIP WHITE Date: Thu, 30 Nov 2023 11:10:43 +0000 Subject: [PATCH 005/112] Add Dialogue UI for Dialgoue Enterpretation --- EndlessVendetta/Content/Dialogue/BP_DialogueUI.uasset | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 EndlessVendetta/Content/Dialogue/BP_DialogueUI.uasset diff --git a/EndlessVendetta/Content/Dialogue/BP_DialogueUI.uasset b/EndlessVendetta/Content/Dialogue/BP_DialogueUI.uasset new file mode 100644 index 00000000..e89ee981 --- /dev/null +++ b/EndlessVendetta/Content/Dialogue/BP_DialogueUI.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:398c0cb689086999133a4c6df05209145d3b95f37cc1be5a2774f22ac14a7f8f +size 64236 From 7791bce833d50dbad86acf2e0bde9939c6d8b55b Mon Sep 17 00:00:00 2001 From: PHILIP WHITE Date: Thu, 30 Nov 2023 11:17:24 +0000 Subject: [PATCH 006/112] Update Dialogue UI for Name Text to Conthrax Font --- EndlessVendetta/Content/Dialogue/BP_DialogueUI.uasset | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/EndlessVendetta/Content/Dialogue/BP_DialogueUI.uasset b/EndlessVendetta/Content/Dialogue/BP_DialogueUI.uasset index e89ee981..7e974392 100644 --- a/EndlessVendetta/Content/Dialogue/BP_DialogueUI.uasset +++ b/EndlessVendetta/Content/Dialogue/BP_DialogueUI.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:398c0cb689086999133a4c6df05209145d3b95f37cc1be5a2774f22ac14a7f8f -size 64236 +oid sha256:29c613509e937218a2a534f000e4cc677b1e4b9600ad42426076af0891913a4f +size 62070 From 1a2a56229998034247b567fc6f81230b10388978 Mon Sep 17 00:00:00 2001 From: PHILIP WHITE Date: Thu, 11 Jan 2024 21:46:48 +0000 Subject: [PATCH 007/112] Add Dialogue Tree Interpreter Basic for Dialogue --- EndlessVendetta/Content/Dialogue/BP_DialogueUI.uasset | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/EndlessVendetta/Content/Dialogue/BP_DialogueUI.uasset b/EndlessVendetta/Content/Dialogue/BP_DialogueUI.uasset index 7e974392..057d634b 100644 --- a/EndlessVendetta/Content/Dialogue/BP_DialogueUI.uasset +++ b/EndlessVendetta/Content/Dialogue/BP_DialogueUI.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:29c613509e937218a2a534f000e4cc677b1e4b9600ad42426076af0891913a4f -size 62070 +oid sha256:c9fd68dea1601223395d64bc68c54d2c6881cb90841e1c841f68155573462ae8 +size 143837 From 94d096dc91595174a030ca5ebd792858d145d32b Mon Sep 17 00:00:00 2001 From: KACPER SZELEST Date: Fri, 12 Jan 2024 13:53:40 +0000 Subject: [PATCH 008/112] Added mayor dialogue tree Added a dialogue tree to the mayor that the player can interact with during the tutorial --- .../Content/Dialogue/Mayor_tutorial_dialogue_tree.uasset | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 EndlessVendetta/Content/Dialogue/Mayor_tutorial_dialogue_tree.uasset diff --git a/EndlessVendetta/Content/Dialogue/Mayor_tutorial_dialogue_tree.uasset b/EndlessVendetta/Content/Dialogue/Mayor_tutorial_dialogue_tree.uasset new file mode 100644 index 00000000..94d07770 --- /dev/null +++ b/EndlessVendetta/Content/Dialogue/Mayor_tutorial_dialogue_tree.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ff24a84d1c042c20b8f3ec95ad35354f71120cae523ef67a0e54a129fb4c738 +size 106796 From eb8f90016f942c20fa24ffb945b51db14bd3ff73 Mon Sep 17 00:00:00 2001 From: PHILIP WHITE Date: Fri, 12 Jan 2024 21:23:44 +0000 Subject: [PATCH 009/112] Update Dialogue Tree to be Able to have Cyclical Graphs --- .../Source/EndlessVendetta/DialogueSystem/DialogueTree.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTree.cpp b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTree.cpp index 903afba3..92569451 100644 --- a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTree.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTree.cpp @@ -11,6 +11,7 @@ UDialogueTree::UDialogueTree() LeftDialogueBgColor = FLinearColor::Black; RightDialogueBgColor = FLinearColor(0.93f, 0.93f, 0.93f, 1.f); + bCanBeCyclical = true; Name = "Dialogue Tree"; } From adc5787b430ad3898b4b9a329e16e9e545a8fbda Mon Sep 17 00:00:00 2001 From: PHILIP WHITE Date: Fri, 12 Jan 2024 21:31:14 +0000 Subject: [PATCH 010/112] Update Dialogue Tree for Text Wrapping & Multiple Speakers --- .../DialogueSystem/DialogueTextNode.cpp | 40 +++++++++++++++---- .../DialogueSystem/DialogueTextNode.h | 16 +++++--- .../DialogueSystem/DialogueTree.cpp | 14 +++++-- .../DialogueSystem/DialogueTree.h | 26 +++++++++--- 4 files changed, 75 insertions(+), 21 deletions(-) diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTextNode.cpp b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTextNode.cpp index 8b61bba0..6d3e3c88 100644 --- a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTextNode.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTextNode.cpp @@ -16,7 +16,29 @@ UDialogueTextNode::UDialogueTextNode() FText UDialogueTextNode::GetNodeTitle() const { - return Text.IsEmpty() ? LOCTEXT("EmptyParagraph", "(Empty paragraph)") : Text; + if (Text.IsEmpty()) return LOCTEXT("EmptyParagraph", "(Empty paragraph)"); + FString WrappedText = Text.ToString(); + WrappedText = WrappedText.TrimStartAndEnd(); + if (Text.ToString().Len() > 20) + { + WrappedText = ""; + int CharCount = 0; + for (int i = 0; i < Text.ToString().Len(); i++) + { + if (CharCount > 20 && Text.ToString()[i] == ' ') + { + WrappedText += "\n"; + CharCount = 0; + } + else + { + WrappedText += Text.ToString()[i]; + CharCount++; + } + } + } + UE_LOG(LogTemp, Warning, TEXT("Wrapped Text: %s"), *WrappedText); + return FText::FromString(WrappedText); } void UDialogueTextNode::SetNodeTitle(const FText& NewTitle) @@ -31,12 +53,16 @@ FLinearColor UDialogueTextNode::GetBackgroundColor() const if (DialogueTree == nullptr) return Super::GetBackgroundColor(); - switch (DialoguePosition) + switch (DialogueCharacterSpeaking) { - case EDialoguePosition::Left: - return DialogueTree->LeftDialogueBgColor; - case EDialoguePosition::Right: - return DialogueTree->RightDialogueBgColor; + case ECharacterSpeaking::Character1: + return DialogueTree->Character1.DialogueNodeBgColor; + case ECharacterSpeaking::Character2: + return DialogueTree->Character2.DialogueNodeBgColor; + case ECharacterSpeaking::Character3: + return DialogueTree->Character3.DialogueNodeBgColor; + case ECharacterSpeaking::Character4: + return DialogueTree->Character4.DialogueNodeBgColor; default: return FLinearColor::Black; } @@ -44,4 +70,4 @@ FLinearColor UDialogueTextNode::GetBackgroundColor() const #endif -#undef LOCTEXT_NAMESPACE \ No newline at end of file +#undef LOCTEXT_NAMESPACE diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTextNode.h b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTextNode.h index 6ff78b28..af556e4b 100644 --- a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTextNode.h +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTextNode.h @@ -2,27 +2,31 @@ #include "CoreMinimal.h" #include "GenericGraphNode.h" +#include "DialogueTree.h" #include "DialogueTextNode.generated.h" UENUM(BlueprintType) -enum class EDialoguePosition : uint8 +enum class ECharacterSpeaking : uint8 { - Left, - Right + Character1, + Character2, + Character3, + Character4 }; UCLASS(Blueprintable) class UDialogueTextNode : public UGenericGraphNode { GENERATED_BODY() + public: UDialogueTextNode(); - UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Dialogue") + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Dialogue", meta = (MultiLine = true)) FText Text; UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Dialogue") - EDialoguePosition DialoguePosition; + ECharacterSpeaking DialogueCharacterSpeaking = ECharacterSpeaking::Character1; #if WITH_EDITOR virtual FText GetNodeTitle() const override; @@ -31,4 +35,4 @@ public: virtual FLinearColor GetBackgroundColor() const override; #endif -}; \ No newline at end of file +}; diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTree.cpp b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTree.cpp index 92569451..fc669ebf 100644 --- a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTree.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTree.cpp @@ -9,11 +9,19 @@ UDialogueTree::UDialogueTree() NodeType = UGenericGraphNode::StaticClass(); EdgeType = UDialogueEdge::StaticClass(); - LeftDialogueBgColor = FLinearColor::Black; - RightDialogueBgColor = FLinearColor(0.93f, 0.93f, 0.93f, 1.f); bCanBeCyclical = true; + Character1.CharacterName = "Character 1"; + Character2.CharacterName = "Character 2"; + Character3.CharacterName = "None"; + Character4.CharacterName = "None"; + + Character1.DialogueNodeBgColor = FLinearColor::Black; + Character2.DialogueNodeBgColor = FLinearColor(0.93f, 0.93f, 0.93f, 1.f); + Character3.DialogueNodeBgColor = FLinearColor::Yellow; + Character4.DialogueNodeBgColor = FLinearColor::Blue; + Name = "Dialogue Tree"; } -#undef LOCTEXT_NAMESPACE \ No newline at end of file +#undef LOCTEXT_NAMESPACE diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTree.h b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTree.h index 8150ba61..ed992455 100644 --- a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTree.h +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTree.h @@ -4,8 +4,21 @@ #include "GenericGraph.h" #include "DialogueTree.generated.h" +USTRUCT(BlueprintType) +struct FDialogueCharacter +{ + GENERATED_BODY() + + UPROPERTY(BlueprintReadOnly, EditDefaultsOnly, Category = "Dialogue") + FName CharacterName; + UPROPERTY(BlueprintReadOnly, EditDefaultsOnly, Category = "Dialogue") + FLinearColor DialogueNodeBgColor; + UPROPERTY(BlueprintReadOnly, EditDefaultsOnly, Category = "Dialogue") + UTexture2D* DialogueCharacterPortrait; +}; + UCLASS(Blueprintable) -class ENDLESSVENDETTA_API UDialogueTree: public UGenericGraph +class ENDLESSVENDETTA_API UDialogueTree : public UGenericGraph { GENERATED_BODY() @@ -13,8 +26,11 @@ public: UDialogueTree(); UPROPERTY(EditDefaultsOnly, Category = "Dialogue") - FLinearColor LeftDialogueBgColor; - + FDialogueCharacter Character1; UPROPERTY(EditDefaultsOnly, Category = "Dialogue") - FLinearColor RightDialogueBgColor; -}; \ No newline at end of file + FDialogueCharacter Character2; + UPROPERTY(EditDefaultsOnly, Category = "Dialogue") + FDialogueCharacter Character3; + UPROPERTY(EditDefaultsOnly, Category = "Dialogue") + FDialogueCharacter Character4; +}; From 5145b6900903a67766e20e0008f404ba723388aa Mon Sep 17 00:00:00 2001 From: PHILIP WHITE Date: Mon, 15 Jan 2024 03:44:09 +0000 Subject: [PATCH 011/112] Update Dialogue Tree for Proper Choice Interpretation --- .../DialogueSystem/AC_Dialogue.h | 19 +++++ .../AC_PlayerDialogueInterpreter.cpp | 75 +++++++++++++++++++ .../AC_PlayerDialogueInterpreter.h | 57 ++++++++++++++ .../DialogueSystem/DialogueChoiceNode.cpp | 29 +++++++ .../DialogueSystem/DialogueChoiceNode.h | 25 +++++++ .../DialogueSystem/DialogueEdge.h | 6 +- 6 files changed, 208 insertions(+), 3 deletions(-) create mode 100644 EndlessVendetta/Source/EndlessVendetta/DialogueSystem/AC_Dialogue.h create mode 100644 EndlessVendetta/Source/EndlessVendetta/DialogueSystem/AC_PlayerDialogueInterpreter.cpp create mode 100644 EndlessVendetta/Source/EndlessVendetta/DialogueSystem/AC_PlayerDialogueInterpreter.h create mode 100644 EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueChoiceNode.cpp create mode 100644 EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueChoiceNode.h diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/AC_Dialogue.h b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/AC_Dialogue.h new file mode 100644 index 00000000..5d8635c0 --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/AC_Dialogue.h @@ -0,0 +1,19 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "DialogueTree.h" +#include "Components/ActorComponent.h" +#include "AC_Dialogue.generated.h" + + +UCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent)) +class ENDLESSVENDETTA_API UAC_Dialogue : public UActorComponent +{ + GENERATED_BODY() + +public: + UPROPERTY(BlueprintReadOnly, EditDefaultsOnly, Category = "Dialogue") + UDialogueTree* DialogueTree; +}; diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/AC_PlayerDialogueInterpreter.cpp b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/AC_PlayerDialogueInterpreter.cpp new file mode 100644 index 00000000..72be7b3a --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/AC_PlayerDialogueInterpreter.cpp @@ -0,0 +1,75 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "AC_PlayerDialogueInterpreter.h" + + +// Sets default values for this component's properties +UAC_PlayerDialogueInterpreter::UAC_PlayerDialogueInterpreter() +{ + // Set this component to be initialized when the game starts, and to be ticked every frame. You can turn these features + // off to improve performance if you don't need them. + PrimaryComponentTick.bCanEverTick = false; + + // ... +} + + +// Called when the game starts +void UAC_PlayerDialogueInterpreter::BeginPlay() +{ + Super::BeginPlay(); + + // ... +} + + +// Called every frame +void UAC_PlayerDialogueInterpreter::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) +{ + Super::TickComponent(DeltaTime, TickType, ThisTickFunction); + + // ... +} + +void UAC_PlayerDialogueInterpreter::StartDialogue(UDialogueTree* DialogueTree) +{ + CurrentDialogueTree = DialogueTree; + CurrentTextNode = Cast(DialogueTree->RootNodes[0]->ChildrenNodes[0]); + OnStartDialogue.Broadcast(CurrentTextNode); +} + +void UAC_PlayerDialogueInterpreter::NextDialogue() +{ + if (IsValid(CurrentTextNode)) + { + if (Cast(CurrentTextNode->ChildrenNodes[0])) + { + CurrentTextNode = nullptr; + CurrentChoiceNode = Cast(CurrentTextNode->ChildrenNodes[0]); + OnChoiceDialogue.Broadcast(CurrentChoiceNode); + } + else + { + CurrentChoiceNode = nullptr; + CurrentTextNode = Cast(CurrentTextNode->ChildrenNodes[0]); + OnNextDialogue.Broadcast(CurrentTextNode); + } + } +} + +void UAC_PlayerDialogueInterpreter::MakeChoiceDialogue(const int Choice) +{ + if (Cast(CurrentTextNode->ChildrenNodes[Choice])) + { + CurrentTextNode = nullptr; + CurrentChoiceNode = Cast(CurrentTextNode->ChildrenNodes[Choice]); + OnChoiceDialogue.Broadcast(CurrentChoiceNode); + } + else + { + CurrentChoiceNode = nullptr; + CurrentTextNode = Cast(CurrentTextNode->ChildrenNodes[Choice]); + OnNextDialogue.Broadcast(CurrentTextNode); + } +} diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/AC_PlayerDialogueInterpreter.h b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/AC_PlayerDialogueInterpreter.h new file mode 100644 index 00000000..3f449ced --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/AC_PlayerDialogueInterpreter.h @@ -0,0 +1,57 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "DialogueChoiceNode.h" +#include "DialogueTextNode.h" +#include "Components/ActorComponent.h" +#include "AC_PlayerDialogueInterpreter.generated.h" + + +UCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent)) +class ENDLESSVENDETTA_API UAC_PlayerDialogueInterpreter : public UActorComponent +{ + GENERATED_BODY() + +public: + // Sets default values for this component's properties + UAC_PlayerDialogueInterpreter(); + + DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnStartDialogue, UDialogueTextNode*, StartingNode); + + DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnNextDialogue, UDialogueTextNode*, NextNode); + + DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnChoiceDialogue, UDialogueChoiceNode*, ChoiceNode); + + UPROPERTY(BlueprintAssignable, Category = "Dialogue") + FOnStartDialogue OnStartDialogue; + UPROPERTY(BlueprintAssignable, Category = "Dialogue") + FOnNextDialogue OnNextDialogue; + UPROPERTY(BlueprintAssignable, Category = "Dialogue") + FOnChoiceDialogue OnChoiceDialogue; + + UPROPERTY(BlueprintReadOnly, EditDefaultsOnly, Category = "Dialogue") + UDialogueTree* CurrentDialogueTree; + +protected: + // Called when the game starts + virtual void BeginPlay() override; + +private: + UPROPERTY() + UDialogueTextNode* CurrentTextNode; + UPROPERTY() + UDialogueChoiceNode* CurrentChoiceNode; + +public: + // Called every frame + virtual void TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override; + + UFUNCTION(BlueprintCallable, Category = "Dialogue") + void StartDialogue(UDialogueTree* DialogueTree); + UFUNCTION(BlueprintCallable, Category = "Dialogue") + void NextDialogue(); + UFUNCTION(BlueprintCallable, Category = "Dialogue") + void MakeChoiceDialogue(int Choice); +}; diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueChoiceNode.cpp b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueChoiceNode.cpp new file mode 100644 index 00000000..2758d6af --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueChoiceNode.cpp @@ -0,0 +1,29 @@ +#include "DialogueChoiceNode.h" +#include "DialogueTree.h" + +#define LOCTEXT_NAMESPACE "UDialogueChoiceNode" + +UDialogueChoiceNode::UDialogueChoiceNode() +{ +#if WITH_EDITORONLY_DATA + CompatibleGraphType = UDialogueTree::StaticClass(); + + ContextMenuName = LOCTEXT("ConextMenuName", "Choice Node"); +#endif +} + +#if WITH_EDITOR + +FLinearColor UDialogueChoiceNode::GetBackgroundColor() const +{ + const UDialogueTree* DialogueTree = Cast(GetGraph()); + + if (DialogueTree == nullptr) + return Super::GetBackgroundColor(); + + return FLinearColor(1.f, 0.5f, 0.f, 1.f); +} + +#endif + +#undef LOCTEXT_NAMESPACE diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueChoiceNode.h b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueChoiceNode.h new file mode 100644 index 00000000..0b0550b2 --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueChoiceNode.h @@ -0,0 +1,25 @@ +#pragma once + +#include "CoreMinimal.h" +#include "GenericGraphNode.h" +#include "DialogueChoiceNode.generated.h" + +UCLASS(Blueprintable) +class UDialogueChoiceNode : public UGenericGraphNode +{ + GENERATED_BODY() + +public: + UDialogueChoiceNode(); + + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Dialogue") + FString Choice1Text = "None"; + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Dialogue") + FString Choice2Text = "None"; + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Dialogue") + FString Choice3Text = "None"; + +#if WITH_EDITOR + virtual FLinearColor GetBackgroundColor() const override; +#endif +}; diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueEdge.h b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueEdge.h index 72d6491b..ef92beff 100644 --- a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueEdge.h +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueEdge.h @@ -10,7 +10,7 @@ class UDialogueEdge: public UGenericGraphEdge { GENERATED_BODY() -public: - UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Dialogue") - FText Selection; + // public: + // UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Dialogue") + // FText Selection; }; \ No newline at end of file From 9458d574e3d3d6ef5101343a088af166642ba06f Mon Sep 17 00:00:00 2001 From: PHILIP WHITE Date: Mon, 15 Jan 2024 03:44:31 +0000 Subject: [PATCH 012/112] Update Dialogue for Choices UI & Events --- EndlessVendetta/Content/Dialogue/BP_DialogueUI.uasset | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/EndlessVendetta/Content/Dialogue/BP_DialogueUI.uasset b/EndlessVendetta/Content/Dialogue/BP_DialogueUI.uasset index 057d634b..eadef84b 100644 --- a/EndlessVendetta/Content/Dialogue/BP_DialogueUI.uasset +++ b/EndlessVendetta/Content/Dialogue/BP_DialogueUI.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c9fd68dea1601223395d64bc68c54d2c6881cb90841e1c841f68155573462ae8 -size 143837 +oid sha256:4030e57c1b966dfdb126958edaf4372bb098c41c034292d54fab657ec6c914b0 +size 223792 From a84391c377754fdbf17f6cf02232cb5813ff35f6 Mon Sep 17 00:00:00 2001 From: Rafal Swierczek Date: Sat, 20 Jan 2024 13:33:48 +0000 Subject: [PATCH 013/112] Disabled Motion Blur --- .../FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset index 1ab24b43..abd8b1ad 100644 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c182872cb17e069eefba39d0dcef2e3b70854cffe669e8192658b1b529b96c8c -size 135928 +oid sha256:d3f3f6f6425c892d4dabb3e7c586d7c619dbb2ba877616b83824c0752d8625ca +size 132776 From 542b09012b3b67b0b053eb544bf5cd00b3b937c6 Mon Sep 17 00:00:00 2001 From: Rafal Swierczek Date: Sat, 20 Jan 2024 14:21:46 +0000 Subject: [PATCH 014/112] Implemented Sensitivity Settings for Devs --- .../FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset | 4 ++-- .../Source/EndlessVendetta/EndlessVendettaCharacter.cpp | 4 ++-- .../Source/EndlessVendetta/EndlessVendettaCharacter.h | 3 +++ 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset index abd8b1ad..ccadb20d 100644 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d3f3f6f6425c892d4dabb3e7c586d7c619dbb2ba877616b83824c0752d8625ca -size 132776 +oid sha256:ffeaf82a7decde92c259f80ff3253372f5659e0c4008a59b40b774fdc67fba50 +size 133260 diff --git a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp index dbbfc50b..c2c87400 100644 --- a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp @@ -633,8 +633,8 @@ void AEndlessVendettaCharacter::Look(const FInputActionValue& Value) if (Controller != nullptr) { // add yaw and pitch input to controller - AddControllerYawInput(LookAxisVector.X); - AddControllerPitchInput(LookAxisVector.Y); + AddControllerYawInput(LookAxisVector.X * MouseSens); + AddControllerPitchInput(LookAxisVector.Y * MouseSens); } } diff --git a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.h b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.h index 03830587..ca279fa5 100644 --- a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.h +++ b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.h @@ -80,6 +80,9 @@ private: UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Input, meta = (AllowPrivateAccess = "true")) UInputAction* SprintAction; + UPROPERTY(EditAnywhere, Category = "Sensitivity") + float MouseSens = 1; + public: AEndlessVendettaCharacter(); From b167dcca01c2c5836f2dbda72ed40e2ca618b1f5 Mon Sep 17 00:00:00 2001 From: Rafal Swierczek Date: Sat, 20 Jan 2024 14:23:05 +0000 Subject: [PATCH 015/112] Optimised LandingZone Waypoint Transform Update from BP to C++ --- .../.idea.EndlessVendetta/.idea/workspace.xml | 56 ++++++++++--------- .../Content/Levels/ControlTutorialLevel.umap | 2 +- .../Content/Ships/LandingZone.uasset | 4 +- .../HDRI/HDRI_Epic_Courtyard_Daylight.uasset | 2 +- .../EndlessVendetta/SpaceShip/LandingZone.cpp | 39 +++++++++++++ .../EndlessVendetta/SpaceShip/LandingZone.h | 35 ++++++++++-- 6 files changed, 102 insertions(+), 36 deletions(-) diff --git a/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml b/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml index 85b48aee..637c88c3 100644 --- a/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml +++ b/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml @@ -8,12 +8,15 @@ - + - + + + + - - - - - - - diff --git a/EndlessVendetta/Content/Levels/ControlTutorialLevel.umap b/EndlessVendetta/Content/Levels/ControlTutorialLevel.umap index 6449d0d1..4f4aaccb 100644 --- a/EndlessVendetta/Content/Levels/ControlTutorialLevel.umap +++ b/EndlessVendetta/Content/Levels/ControlTutorialLevel.umap @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:87ded271db185716c349cea0bd2ac856fd48d2c679e24688ed62db7fa3c98b22 +oid sha256:9cc11b4482663330968715a10161603027626a2f4a43c4ad8fdd169cf38d9248 size 17667011 From 701e42bcf50d3d8ee7480006255e4a883e5f7cf8 Mon Sep 17 00:00:00 2001 From: PHILIP WHITE Date: Mon, 22 Jan 2024 09:16:01 +0000 Subject: [PATCH 020/112] Update Tutorial Target Material for Targets --- .../GunRangeMechanics/GadgetRoom/BP_GadgetWall.uasset | 4 ++-- .../GunRangeMechanics/Parkour/BP_SprintWall1.uasset | 4 ++-- .../GunRangeMechanics/Parkour/BP_SprintWall2.uasset | 4 ++-- .../GunRangeMechanics/Parkour/BP_SprintWall3.uasset | 4 ++-- .../GunRangeMechanics/Target/BP_NonShootableTarget.uasset | 4 ++-- .../GunRangeMechanics/Target/BP_Target.uasset | 4 ++-- .../ControlsTutorial/GunRangeMechanics/Target/M_Target.uasset | 3 +++ .../GunRangeMechanics/Target/standardSurface1.uasset | 4 ++-- .../Content/BountySystem/Waypoint/MainBountyIcon.uasset | 4 ++-- EndlessVendetta/Content/Levels/ControlTutorialLevel.umap | 4 ++-- EndlessVendetta/Content/Ships/BP_SpaceShip.uasset | 2 +- EndlessVendetta/Content/Ships/LZ_HomeHubIcon.uasset | 4 ++-- EndlessVendetta/Content/Ships/LandingZone.uasset | 4 ++-- EndlessVendetta/Content/Ships/LandingZoneIcon.uasset | 4 ++-- EndlessVendetta/Content/Ships/LandingZone_HomeHub.uasset | 4 ++-- 15 files changed, 30 insertions(+), 27 deletions(-) create mode 100644 EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Target/M_Target.uasset diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/GadgetRoom/BP_GadgetWall.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/GadgetRoom/BP_GadgetWall.uasset index 66bf5551..3f517d13 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/GadgetRoom/BP_GadgetWall.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/GadgetRoom/BP_GadgetWall.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:370cad49c42aa8322993053abfa0955b5aeb9c6035392c82a01d7bf12c7e6e3f -size 93912 +oid sha256:3c859bb215d97febc85b455dacc27fdb6f7b74f9c1f1ec4e647baaa178ed90e2 +size 92902 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Parkour/BP_SprintWall1.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Parkour/BP_SprintWall1.uasset index e63ad1c3..b496db84 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Parkour/BP_SprintWall1.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Parkour/BP_SprintWall1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:007c41e02175f5148b70e70402ff985c1d343b0ce85f5b5845f82351aeb6c8b6 -size 105113 +oid sha256:2324c9c772bc0e0a4114507855329265fe0accc0ea5449e5b459dc77291c0f33 +size 105072 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Parkour/BP_SprintWall2.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Parkour/BP_SprintWall2.uasset index ad3cfd25..0525bd46 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Parkour/BP_SprintWall2.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Parkour/BP_SprintWall2.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2b24b7285a71d441bb8813d55db2341fe7e99b97fb25b33a84ca1e1c4a7bee0f -size 111590 +oid sha256:526bb663885432228aa8a9a767effbf84cd4aaac5d7900afaf1ba345587f1803 +size 110706 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Parkour/BP_SprintWall3.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Parkour/BP_SprintWall3.uasset index 9905d716..935a38f4 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Parkour/BP_SprintWall3.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Parkour/BP_SprintWall3.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ed77e01ce92927b44b11dc1b5515bdac53fe8c0669c02884850972d491a74381 -size 110924 +oid sha256:cad92e57f786c962858bdca6a44e2a123b5eda0443592dbacffd0487cae8d55d +size 109928 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Target/BP_NonShootableTarget.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Target/BP_NonShootableTarget.uasset index 2f3a6471..3cbc8128 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Target/BP_NonShootableTarget.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Target/BP_NonShootableTarget.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9da4b09d534f6e2890b12d0dbaacba8204da954d9c88f454395070346a61c993 -size 63628 +oid sha256:7d195c14ffcbabf84b66202c1a1e8c2575fc2a528fef5785084f76c99198e4ca +size 63790 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Target/BP_Target.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Target/BP_Target.uasset index 4e299b9e..50e84f33 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Target/BP_Target.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Target/BP_Target.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e333e91573e1d36e39ad1e52eb0da38a11aefc23ed219427acfc9ffe3a3160f0 -size 99655 +oid sha256:6fc7c50381ecef344c02fce37526cf44de06d07d0bdc4e697ef4ec30e8f0e8f4 +size 98315 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Target/M_Target.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Target/M_Target.uasset new file mode 100644 index 00000000..38743b98 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Target/M_Target.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:13e2f623f9de1a599a75178637b756a7081b59fa03e5f3eced51cca1836a9423 +size 15545 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Target/standardSurface1.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Target/standardSurface1.uasset index f02b0cc5..d9f2948d 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Target/standardSurface1.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Target/standardSurface1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1d04d6fd6e9dc14ff6f65a890367b8165bf8e9db049cd1cd7339f2e999dd8833 -size 8260 +oid sha256:5964328a707ccd0d44172ddefc1dce4ae9159c3ec8b8146b3eda19d3097d3664 +size 1642 diff --git a/EndlessVendetta/Content/BountySystem/Waypoint/MainBountyIcon.uasset b/EndlessVendetta/Content/BountySystem/Waypoint/MainBountyIcon.uasset index 561dd6cf..805b8a75 100644 --- a/EndlessVendetta/Content/BountySystem/Waypoint/MainBountyIcon.uasset +++ b/EndlessVendetta/Content/BountySystem/Waypoint/MainBountyIcon.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5409b5bc191d06c00a91f120b311bd11dcc8fd56de9c9a4b98756466f87b99e1 -size 84521 +oid sha256:47deb8998ce928b6448dcbd1a22e3309e144cf43cc5440ac286024dd3aa83167 +size 84616 diff --git a/EndlessVendetta/Content/Levels/ControlTutorialLevel.umap b/EndlessVendetta/Content/Levels/ControlTutorialLevel.umap index 4f4aaccb..c0c12b84 100644 --- a/EndlessVendetta/Content/Levels/ControlTutorialLevel.umap +++ b/EndlessVendetta/Content/Levels/ControlTutorialLevel.umap @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9cc11b4482663330968715a10161603027626a2f4a43c4ad8fdd169cf38d9248 -size 17667011 +oid sha256:d3f6cebb45b19113ee7c91a643037ab20952d1de0e1ca64fd2744367c7201121 +size 17666914 diff --git a/EndlessVendetta/Content/Ships/BP_SpaceShip.uasset b/EndlessVendetta/Content/Ships/BP_SpaceShip.uasset index 414ee7d9..acf865f3 100644 --- a/EndlessVendetta/Content/Ships/BP_SpaceShip.uasset +++ b/EndlessVendetta/Content/Ships/BP_SpaceShip.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4c424148a2d3ebc876cb27453c51f1383792430536cde08915c4114a366e77bc +oid sha256:80de0a9f910a75664907fbc1251ed21beae0cb7620e150d13b133c2f6ff419e9 size 37169 diff --git a/EndlessVendetta/Content/Ships/LZ_HomeHubIcon.uasset b/EndlessVendetta/Content/Ships/LZ_HomeHubIcon.uasset index 6f07f9f7..f91d508f 100644 --- a/EndlessVendetta/Content/Ships/LZ_HomeHubIcon.uasset +++ b/EndlessVendetta/Content/Ships/LZ_HomeHubIcon.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ba9c3a61cb5e23646b1f44af7524d70f4c7f51e893b11def420606cc7e6b278d -size 318884 +oid sha256:e492db2251e6e8a8ccd0fa57f4ecbb86d19662484b74a4a52ed1a84943fc3783 +size 318979 diff --git a/EndlessVendetta/Content/Ships/LandingZone.uasset b/EndlessVendetta/Content/Ships/LandingZone.uasset index a517def6..1222dc71 100644 --- a/EndlessVendetta/Content/Ships/LandingZone.uasset +++ b/EndlessVendetta/Content/Ships/LandingZone.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:10ccd1f7f4d028784682a255753d4fdbfff3e8a63a31148e9b104a825e18ae2d -size 89115 +oid sha256:34b9361527fc8f8f0a40f66136ce8aae347295bd70ce71f1f0932e78edf9fcf8 +size 91522 diff --git a/EndlessVendetta/Content/Ships/LandingZoneIcon.uasset b/EndlessVendetta/Content/Ships/LandingZoneIcon.uasset index 6b72119b..3de4997f 100644 --- a/EndlessVendetta/Content/Ships/LandingZoneIcon.uasset +++ b/EndlessVendetta/Content/Ships/LandingZoneIcon.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:527d04b00b383864abd28aae52fb9dfede2f807c6f4900973b18ee6eaf83c576 -size 161938 +oid sha256:ea65d4aa723707110e27c6765eadd3cd8bbdf3902cfb12e67b76b3e01f5992e2 +size 162033 diff --git a/EndlessVendetta/Content/Ships/LandingZone_HomeHub.uasset b/EndlessVendetta/Content/Ships/LandingZone_HomeHub.uasset index 1fd62190..e06dfbe9 100644 --- a/EndlessVendetta/Content/Ships/LandingZone_HomeHub.uasset +++ b/EndlessVendetta/Content/Ships/LandingZone_HomeHub.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a61991e6545a475024003fae4b496ead48cf5531896515b028b7268b001d68fd -size 93423 +oid sha256:5e7dabbf82d2e50819ed43d959720ad63a0e4cbac1e050a4f4d3739be20f578f +size 93269 From 9f6607d31aaecffac9d9d38d0fb5beaab08453a1 Mon Sep 17 00:00:00 2001 From: LOUIS HORNE Date: Mon, 22 Jan 2024 14:28:34 +0000 Subject: [PATCH 021/112] Added more Modular Wall Textures --- .../Textures/M_WallPiece02/M_wallpiece02.uasset | 3 +++ .../M_WallPiece02/Wall01_WallPiece02_BaseColor.uasset | 3 +++ .../Textures/M_WallPiece02/Wall01_WallPiece02_Normal.uasset | 3 +++ .../Wall01_WallPiece02_OcclusionRoughnessMetallic.uasset | 3 +++ EndlessVendetta/Content/Levels/Apartment_hit.umap | 4 ++-- .../StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset | 2 +- 6 files changed, 15 insertions(+), 3 deletions(-) create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_WallPiece02/M_wallpiece02.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_WallPiece02/Wall01_WallPiece02_BaseColor.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_WallPiece02/Wall01_WallPiece02_Normal.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_WallPiece02/Wall01_WallPiece02_OcclusionRoughnessMetallic.uasset diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_WallPiece02/M_wallpiece02.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_WallPiece02/M_wallpiece02.uasset new file mode 100644 index 00000000..6f9e3bdb --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_WallPiece02/M_wallpiece02.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:187f33689a3d833e4a0c5c5eda6c01ade8201a06fdab3aadc5e275cdbc1425fc +size 18029 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_WallPiece02/Wall01_WallPiece02_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_WallPiece02/Wall01_WallPiece02_BaseColor.uasset new file mode 100644 index 00000000..92afd9a7 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_WallPiece02/Wall01_WallPiece02_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6cba085b6aacbf0a721780bd87ddbe7da3f54c796feef62da0b61f3ab6b982d2 +size 1741132 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_WallPiece02/Wall01_WallPiece02_Normal.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_WallPiece02/Wall01_WallPiece02_Normal.uasset new file mode 100644 index 00000000..f4c2009b --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_WallPiece02/Wall01_WallPiece02_Normal.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dbc63f4b055caceb16eb6e3c31fa688fce07fbdd96b31b4f8a096a2882813fa7 +size 1830742 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_WallPiece02/Wall01_WallPiece02_OcclusionRoughnessMetallic.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_WallPiece02/Wall01_WallPiece02_OcclusionRoughnessMetallic.uasset new file mode 100644 index 00000000..0917c433 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_WallPiece02/Wall01_WallPiece02_OcclusionRoughnessMetallic.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7efd9884c740716555c130a9911856dde53a2915f9f1f18f49bcb5ab2796b48 +size 270472 diff --git a/EndlessVendetta/Content/Levels/Apartment_hit.umap b/EndlessVendetta/Content/Levels/Apartment_hit.umap index 3699de65..26c44a02 100644 --- a/EndlessVendetta/Content/Levels/Apartment_hit.umap +++ b/EndlessVendetta/Content/Levels/Apartment_hit.umap @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fa51241ae1af23456e7f888143053bb9725a7b23a368ba22605845f0c9990797 -size 234051 +oid sha256:9e3b04cd5a3f4b0c8a316f58cd38b7108fc964f8ce204da0bb164132ce2d399d +size 243977 diff --git a/EndlessVendetta/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset b/EndlessVendetta/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset index 1c0675e1..91469759 100644 --- a/EndlessVendetta/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset +++ b/EndlessVendetta/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2b1214c2656169689002a1b8976a3ae6c3287520fae9ca08f71889c57690c775 +oid sha256:f27e436bf4cf91ec283bc05a59e6fdaedcb87f60759ce96b2860f1af034fd195 size 66790690 From 81a3fe895fb23fbb83841ce42077e98b1a329d38 Mon Sep 17 00:00:00 2001 From: MH261677 Date: Mon, 22 Jan 2024 17:10:53 +0000 Subject: [PATCH 022/112] Added Weapon Aiming for all primary and secondary weapons --- .../Blueprints/BP_FirstPersonCharacter.uasset | 4 +-- .../BaseWeapons/BP_BaseWeapon.uasset | 4 +-- .../Pistols/BP_BasePistolWeapon.uasset | 4 +-- .../Shotguns/BP_BaseShotgun.uasset | 4 +-- .../BaseWeapons/Snipers/BaseSniper.uasset | 4 +-- .../0/24/JBARER4CBJ0QZT5CZY8ID6.uasset | 4 +-- .../0/GQ/QPISORMXEPSB0MNOUMBIZ4.uasset | 3 ++ .../2/ZU/URNIY7YZNRDH4QY14A8BN4.uasset | 3 ++ .../EndlessVendettaCharacter.cpp | 28 ++++++------------- .../EndlessVendettaCharacter.h | 9 ++++++ 10 files changed, 35 insertions(+), 32 deletions(-) create mode 100644 EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/0/GQ/QPISORMXEPSB0MNOUMBIZ4.uasset create mode 100644 EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/2/ZU/URNIY7YZNRDH4QY14A8BN4.uasset diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset index ccadb20d..6b39a895 100644 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ffeaf82a7decde92c259f80ff3253372f5659e0c4008a59b40b774fdc67fba50 -size 133260 +oid sha256:f359d7134293a9a70d4e307b1376b8db280adcc9b05732bac0df0312eac3907b +size 372831 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/BP_BaseWeapon.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/BP_BaseWeapon.uasset index d5d8a380..a67cfd74 100644 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/BP_BaseWeapon.uasset +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/BP_BaseWeapon.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0e23dc0f3a3090c3b7bcca01e9123e96b564867646215f48b4871eeb8fc157b5 -size 127141 +oid sha256:ddfeb9078755b405062e9752c733edef8a3ffbb8b12189ef5aee0e306dbf83ac +size 127463 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/BP_BasePistolWeapon.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/BP_BasePistolWeapon.uasset index f516b5b6..b601e4d1 100644 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/BP_BasePistolWeapon.uasset +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/BP_BasePistolWeapon.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f9b033aff080a0e32f37aed5b6a02c7e31aa216dc029b70518a5754cd12feb70 -size 127890 +oid sha256:5cf8e448165a2383133d02027abec6c7eb114a93420066f346004ecb9eba0a06 +size 128604 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Shotguns/BP_BaseShotgun.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Shotguns/BP_BaseShotgun.uasset index bcb197a6..b82510b8 100644 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Shotguns/BP_BaseShotgun.uasset +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Shotguns/BP_BaseShotgun.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:678f82f6a80f2cf13d5d74b24d768045b58bb9b030f70510a095a90f40fb0d29 -size 126463 +oid sha256:77fc87f2895edafaa9d2192aae11f1d401bd041ac27c83283bcacee09e495bf1 +size 127352 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Snipers/BaseSniper.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Snipers/BaseSniper.uasset index deebf3b8..160e1ccd 100644 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Snipers/BaseSniper.uasset +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Snipers/BaseSniper.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:02029898c211501ff276d6996d6fddb8fdbb470aebc1f7f4bb26bfcfbd1928a0 -size 126654 +oid sha256:dca631cf0e3babb62af456d05321d4ae0718d803bfdd136fd6e571b873b4293f +size 127334 diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/0/24/JBARER4CBJ0QZT5CZY8ID6.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/0/24/JBARER4CBJ0QZT5CZY8ID6.uasset index 60e887d3..994f751d 100644 --- a/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/0/24/JBARER4CBJ0QZT5CZY8ID6.uasset +++ b/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/0/24/JBARER4CBJ0QZT5CZY8ID6.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:461d223dbbabb2824e1ad8bac0d5732bb55d731e0b74285715f207e458b609f4 -size 6878 +oid sha256:38a124733a66571be53cf1da2c13425bd30c042d6b609cca325fc630bf0de323 +size 6992 diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/0/GQ/QPISORMXEPSB0MNOUMBIZ4.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/0/GQ/QPISORMXEPSB0MNOUMBIZ4.uasset new file mode 100644 index 00000000..eae0f773 --- /dev/null +++ b/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/0/GQ/QPISORMXEPSB0MNOUMBIZ4.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e1d15b8a2648519fcec0059b248d90fc57e5a576bad5418d6c81220017272b7 +size 7082 diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/2/ZU/URNIY7YZNRDH4QY14A8BN4.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/2/ZU/URNIY7YZNRDH4QY14A8BN4.uasset new file mode 100644 index 00000000..667b9993 --- /dev/null +++ b/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/2/ZU/URNIY7YZNRDH4QY14A8BN4.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a9b1da883f91278772e9215096e70c10d298b9416f1b392476303d0f8235dbe1 +size 6952 diff --git a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp index c2c87400..8d5021e9 100644 --- a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp @@ -491,29 +491,17 @@ void AEndlessVendettaCharacter::GunRightClick() { if (IsValid(PrimaryWeapon) && !bIsScoped) { - for (UActorComponent* actorComp : this->GetComponentsByTag(UArrowComponent::StaticClass(), FName("ScopedLocationArrow"))) - { - ScopedLocationArrow = Cast(actorComp); - break; - } - if (!IsValid(ScopedLocationArrow)) return; - PrimaryWeapon->SetActorLocation(ScopedLocationArrow->GetComponentLocation()); bIsScoped = true; PrimaryWeapon->WeaponScopedFire(); - this->GetFirstPersonCameraComponent()->SetFieldOfView(50); //change this number to a number you can change in editor eventually + StartPrimaryWeaponADS(); + //this->GetFirstPersonCameraComponent()->SetFieldOfView(50); //change this number to a number you can change in editor eventually } if (IsValid(SecondaryWeapon) && !bIsScoped) { - for (UActorComponent* actorComp : this->GetComponentsByTag(UArrowComponent::StaticClass(), FName("ScopedLocationArrow"))) - { - ScopedLocationArrow = Cast(actorComp); - break; - } - if (!IsValid(ScopedLocationArrow)) return; bIsScoped = true; SecondaryWeapon->WeaponScopedFire(); - SecondaryWeapon->SetActorLocation(ScopedLocationArrow->GetComponentLocation()); - this->GetFirstPersonCameraComponent()->SetFieldOfView(50); //change this number to a number you can change in editor eventually + StartSecondaryWeaponADS(); + //this->GetFirstPersonCameraComponent()->SetFieldOfView(50); //change this number to a number you can change in editor eventually } } @@ -523,15 +511,15 @@ void AEndlessVendettaCharacter::StopGunRightClick() { bIsScoped = false; PrimaryWeapon->WeaponScopedFire(); - PrimaryWeapon->SetActorRelativeLocation(FVector(0, 0, 0)); - this->GetFirstPersonCameraComponent()->SetFieldOfView(90); + StopPrimaryWeaponADS(); + //this->GetFirstPersonCameraComponent()->SetFieldOfView(90); } if (IsValid(SecondaryWeapon)) { bIsScoped = false; SecondaryWeapon->WeaponScopedFire(); - SecondaryWeapon->SetActorRelativeLocation(FVector(0, 0, 0)); - this->GetFirstPersonCameraComponent()->SetFieldOfView(90); + StopSecondaryWeaponADS(); + //this->GetFirstPersonCameraComponent()->SetFieldOfView(90); } } diff --git a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.h b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.h index ca279fa5..29d4767a 100644 --- a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.h +++ b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.h @@ -118,6 +118,15 @@ public: bool bIsSecondaryWeaponCreated = false; bool bIsWeaponPickedUp = false; + UFUNCTION(BlueprintImplementableEvent) + void StartPrimaryWeaponADS(); + UFUNCTION(BlueprintImplementableEvent) + void StopPrimaryWeaponADS(); + UFUNCTION(BlueprintImplementableEvent) + void StartSecondaryWeaponADS(); + UFUNCTION(BlueprintImplementableEvent) + void StopSecondaryWeaponADS(); + protected: virtual void BeginPlay() override; virtual void Tick(float DeltaTime) override; From 31e492e026e68e6eaa61434306bec013da1b0b45 Mon Sep 17 00:00:00 2001 From: MH261677 Date: Mon, 22 Jan 2024 17:14:48 +0000 Subject: [PATCH 023/112] Added Un-ADS for all Primary Weapons --- .../FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset index 6b39a895..3b8b2d2c 100644 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f359d7134293a9a70d4e307b1376b8db280adcc9b05732bac0df0312eac3907b -size 372831 +oid sha256:bdefcaf89570725cefe5d142e1c194bcca925ba9779346ac45a27f883fa5bb72 +size 427534 From fb003af73f2d721765d549469dfb925d09fb620d Mon Sep 17 00:00:00 2001 From: MH261677 Date: Mon, 22 Jan 2024 17:46:04 +0000 Subject: [PATCH 024/112] Added FOV Changes back for proper zooming --- .../EndlessVendetta/EndlessVendettaCharacter.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp index 8d5021e9..0db4c81f 100644 --- a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp @@ -430,7 +430,7 @@ void AEndlessVendettaCharacter::EquipSecondary() //UE_LOG(LogTemp, Warning, TEXT("Secondary Weapon Is Hidden: %hhd"), SecondaryWeapon->IsHidden()); GLog->Log("Secondary Weapon Equipped"); } - SecondaryWeaponActor->AttachToComponent(Mesh1P, AttachmentRules, FName("GripPoint")); + SecondaryWeaponActor->AttachToComponent(Mesh1P, AttachmentRules, FName("PistolGripPoint")); SecondaryWeapon = Cast(SecondaryWeaponActor); SecondaryWeapon->SetActorHiddenInGame(false); GetWorldTimerManager().ClearTimer(SecondaryWeapon->reloadTimerHandle); @@ -494,14 +494,14 @@ void AEndlessVendettaCharacter::GunRightClick() bIsScoped = true; PrimaryWeapon->WeaponScopedFire(); StartPrimaryWeaponADS(); - //this->GetFirstPersonCameraComponent()->SetFieldOfView(50); //change this number to a number you can change in editor eventually + this->GetFirstPersonCameraComponent()->SetFieldOfView(50); //change this number to a number you can change in editor eventually } if (IsValid(SecondaryWeapon) && !bIsScoped) { bIsScoped = true; SecondaryWeapon->WeaponScopedFire(); StartSecondaryWeaponADS(); - //this->GetFirstPersonCameraComponent()->SetFieldOfView(50); //change this number to a number you can change in editor eventually + this->GetFirstPersonCameraComponent()->SetFieldOfView(50); //change this number to a number you can change in editor eventually } } @@ -512,14 +512,14 @@ void AEndlessVendettaCharacter::StopGunRightClick() bIsScoped = false; PrimaryWeapon->WeaponScopedFire(); StopPrimaryWeaponADS(); - //this->GetFirstPersonCameraComponent()->SetFieldOfView(90); + this->GetFirstPersonCameraComponent()->SetFieldOfView(90); } if (IsValid(SecondaryWeapon)) { bIsScoped = false; SecondaryWeapon->WeaponScopedFire(); StopSecondaryWeaponADS(); - //this->GetFirstPersonCameraComponent()->SetFieldOfView(90); + this->GetFirstPersonCameraComponent()->SetFieldOfView(90); } } From 091b60cbe9aec5672a1f352e062f838db2807d4c Mon Sep 17 00:00:00 2001 From: MH261677 Date: Mon, 22 Jan 2024 17:46:14 +0000 Subject: [PATCH 025/112] Imported Pistol asset from artist --- .../BaseWeapons/Pistols/Pistol_Assets/SM_HandGun.uasset | 3 +++ .../Pistols/Pistol_Assets/SM_HandGun_PhysicsAsset.uasset | 3 +++ .../Pistols/Pistol_Assets/SM_HandGun_Skeleton.uasset | 3 +++ .../BaseWeapons/Pistols/Pistol_Assets/SM_gun_A.uasset | 3 +++ .../BaseWeapons/Pistols/Pistol_Assets/SM_gun_N.uasset | 3 +++ .../BaseWeapons/Pistols/Pistol_Assets/SM_gun_ORM.uasset | 3 +++ 6 files changed, 18 insertions(+) create mode 100644 EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_HandGun.uasset create mode 100644 EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_HandGun_PhysicsAsset.uasset create mode 100644 EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_HandGun_Skeleton.uasset create mode 100644 EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_gun_A.uasset create mode 100644 EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_gun_N.uasset create mode 100644 EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_gun_ORM.uasset diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_HandGun.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_HandGun.uasset new file mode 100644 index 00000000..9df6634f --- /dev/null +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_HandGun.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de2933666cc939d964639b58e5bf9e846486cdeb275977e0112b8e28299168ba +size 964821 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_HandGun_PhysicsAsset.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_HandGun_PhysicsAsset.uasset new file mode 100644 index 00000000..f38a4924 --- /dev/null +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_HandGun_PhysicsAsset.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d65a0223ea0c6fdc4c9be73cf9f1b4b9be6a0a74e416e198ea002a014a79313 +size 7534 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_HandGun_Skeleton.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_HandGun_Skeleton.uasset new file mode 100644 index 00000000..cc8853fa --- /dev/null +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_HandGun_Skeleton.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:014ad9c5325cbb86903bde65b93706b130e86ca2fef712a46486f1a58c6ca43d +size 6330 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_gun_A.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_gun_A.uasset new file mode 100644 index 00000000..95ca8f4f --- /dev/null +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_gun_A.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f31ef8fe90ab7b57893b0b8167d8a1bc5b6df8aa9d73832fe1cbf7c0effc9314 +size 1004195 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_gun_N.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_gun_N.uasset new file mode 100644 index 00000000..86aec470 --- /dev/null +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_gun_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:72bc48c594152df6409f6eed91ca4ee8518d641f8528171a54a3d925d1041a41 +size 6552237 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_gun_ORM.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_gun_ORM.uasset new file mode 100644 index 00000000..cd6200ad --- /dev/null +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_gun_ORM.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d2d3d737a5f330587a3c60a2c3f904e6c0c33ef540e39e7eda196bf995a1ee2 +size 2765283 From 7a68f52979c8d600051557bd5ee3afa293969cba Mon Sep 17 00:00:00 2001 From: MH261677 Date: Mon, 22 Jan 2024 17:46:24 +0000 Subject: [PATCH 026/112] Added all weapons to test level for testing --- .../Levels/DoorTestLevel/0/24/JBARER4CBJ0QZT5CZY8ID6.uasset | 4 ++-- .../Levels/DoorTestLevel/9/V5/00HOTT7GJB6N5M6TZHPJO5.uasset | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/9/V5/00HOTT7GJB6N5M6TZHPJO5.uasset diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/0/24/JBARER4CBJ0QZT5CZY8ID6.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/0/24/JBARER4CBJ0QZT5CZY8ID6.uasset index 994f751d..41482363 100644 --- a/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/0/24/JBARER4CBJ0QZT5CZY8ID6.uasset +++ b/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/0/24/JBARER4CBJ0QZT5CZY8ID6.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:38a124733a66571be53cf1da2c13425bd30c042d6b609cca325fc630bf0de323 -size 6992 +oid sha256:adb0b3b612c415be152c10d92ec58dbfa8df4952f4622b860dbba22b58b2068d +size 7069 diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/9/V5/00HOTT7GJB6N5M6TZHPJO5.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/9/V5/00HOTT7GJB6N5M6TZHPJO5.uasset new file mode 100644 index 00000000..1223f3df --- /dev/null +++ b/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/9/V5/00HOTT7GJB6N5M6TZHPJO5.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af82917550c1296b8e6c0a341e235d8311f06d5fecbef1ce3a902b627f6a6fe3 +size 7159 From 086c187ca57f5e10b6b9cbef80097c8d97e635cf Mon Sep 17 00:00:00 2001 From: MH261677 Date: Mon, 22 Jan 2024 17:46:39 +0000 Subject: [PATCH 027/112] Created a new pistol socket on character skeleton --- .../Character/Mesh/SK_Mannequin_Arms_Skeleton.uasset | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/EndlessVendetta/Content/FirstPersonArms/Character/Mesh/SK_Mannequin_Arms_Skeleton.uasset b/EndlessVendetta/Content/FirstPersonArms/Character/Mesh/SK_Mannequin_Arms_Skeleton.uasset index 91e47258..a1590c6f 100644 --- a/EndlessVendetta/Content/FirstPersonArms/Character/Mesh/SK_Mannequin_Arms_Skeleton.uasset +++ b/EndlessVendetta/Content/FirstPersonArms/Character/Mesh/SK_Mannequin_Arms_Skeleton.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f4e7da19e1c7c367caadb1bf513b3f7353b8ae90bf24428e0418487ec339670b -size 22171 +oid sha256:3e87ba3269dc65b8d3dd5024eaeb7bd23f9645fdb6626293ecdc212a0d0778b6 +size 22438 From 27b27699d6d909699c67f992530197b31fbd97a5 Mon Sep 17 00:00:00 2001 From: MH261677 Date: Mon, 22 Jan 2024 17:47:43 +0000 Subject: [PATCH 028/112] Edited and changed pistol to have art asset --- .../Content/FPWeapon/Mesh/SK_FPGun_Skeleton.uasset | 4 ++-- .../FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset | 4 ++-- .../Blueprints/BaseWeapons/Pistols/BP_BasePistolWeapon.uasset | 4 ++-- .../Blueprints/BaseWeapons/Snipers/BaseSniper.uasset | 4 ++-- .../Levels/DoorTestLevel/0/24/JBARER4CBJ0QZT5CZY8ID6.uasset | 2 +- .../Levels/DoorTestLevel/9/V5/00HOTT7GJB6N5M6TZHPJO5.uasset | 2 +- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/EndlessVendetta/Content/FPWeapon/Mesh/SK_FPGun_Skeleton.uasset b/EndlessVendetta/Content/FPWeapon/Mesh/SK_FPGun_Skeleton.uasset index c6396a47..3a6c6898 100644 --- a/EndlessVendetta/Content/FPWeapon/Mesh/SK_FPGun_Skeleton.uasset +++ b/EndlessVendetta/Content/FPWeapon/Mesh/SK_FPGun_Skeleton.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f9c7063e48c0b3c23194a6a2fc3625da96d20bbd92fece19210001cf0cac8964 -size 8568 +oid sha256:af19d0a66ac93ccb5502fa57f0fa608709a59cffe2cc9157e8aa8bed3d43b5f9 +size 7712 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset index 3b8b2d2c..118caf96 100644 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bdefcaf89570725cefe5d142e1c194bcca925ba9779346ac45a27f883fa5bb72 -size 427534 +oid sha256:8b07c22c5982ff1a27d17117a146925e4cfc92dcb8e8cfd64de14cd61ab916b6 +size 429301 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/BP_BasePistolWeapon.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/BP_BasePistolWeapon.uasset index b601e4d1..d493546a 100644 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/BP_BasePistolWeapon.uasset +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/BP_BasePistolWeapon.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5cf8e448165a2383133d02027abec6c7eb114a93420066f346004ecb9eba0a06 -size 128604 +oid sha256:ce09071644a22e6b7450df39c54ef3c4741209a5401376534740dc7d76298276 +size 128111 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Snipers/BaseSniper.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Snipers/BaseSniper.uasset index 160e1ccd..9c558f37 100644 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Snipers/BaseSniper.uasset +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Snipers/BaseSniper.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dca631cf0e3babb62af456d05321d4ae0718d803bfdd136fd6e571b873b4293f -size 127334 +oid sha256:f96592b4b4a601faa17cc21653226506c222259441097ed328b9775d5f12a37b +size 127654 diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/0/24/JBARER4CBJ0QZT5CZY8ID6.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/0/24/JBARER4CBJ0QZT5CZY8ID6.uasset index 41482363..acadf3cb 100644 --- a/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/0/24/JBARER4CBJ0QZT5CZY8ID6.uasset +++ b/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/0/24/JBARER4CBJ0QZT5CZY8ID6.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:adb0b3b612c415be152c10d92ec58dbfa8df4952f4622b860dbba22b58b2068d +oid sha256:dd163ab11d986d221c1b1ce955970bdf5df7a4ee26a0c3cd0fa374c1bab5574e size 7069 diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/9/V5/00HOTT7GJB6N5M6TZHPJO5.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/9/V5/00HOTT7GJB6N5M6TZHPJO5.uasset index 1223f3df..35a7b628 100644 --- a/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/9/V5/00HOTT7GJB6N5M6TZHPJO5.uasset +++ b/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/9/V5/00HOTT7GJB6N5M6TZHPJO5.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:af82917550c1296b8e6c0a341e235d8311f06d5fecbef1ce3a902b627f6a6fe3 +oid sha256:b51d0369a65741c96d3499c1feac5146358708f5dc169e0f26d829accc474e91 size 7159 From e6b7edcf8c3695875c64e1ad7b5a280704155154 Mon Sep 17 00:00:00 2001 From: PHILIP WHITE Date: Mon, 22 Jan 2024 23:04:39 +0000 Subject: [PATCH 029/112] Update Character Interact to Include Dialogue --- EndlessVendetta/.gitignore | 1 + .../Blueprints/BP_FirstPersonCharacter.uasset | 4 +- .../DialogueSystem/AC_Dialogue.h | 16 +++++ .../AC_PlayerDialogueInterpreter.cpp | 64 +++++++++++++------ .../AC_PlayerDialogueInterpreter.h | 8 ++- .../DialogueSystem/DialogueRootNode.cpp | 31 +++++++++ .../DialogueSystem/DialogueRootNode.h | 20 ++++++ .../DialogueSystem/DialogueTextNode.cpp | 1 - .../EndlessVendettaCharacter.cpp | 45 +++++++------ .../EndlessVendettaCharacter.h | 15 +++-- 10 files changed, 158 insertions(+), 47 deletions(-) create mode 100644 EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueRootNode.cpp create mode 100644 EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueRootNode.h diff --git a/EndlessVendetta/.gitignore b/EndlessVendetta/.gitignore index 24acec7a..54c50950 100644 --- a/EndlessVendetta/.gitignore +++ b/EndlessVendetta/.gitignore @@ -16,6 +16,7 @@ ### UnrealEngine ### # Visual Studio 2015 user specific files .vs/ +.idea/ # Compiled Object files *.slo diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset index ccadb20d..8aba01af 100644 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ffeaf82a7decde92c259f80ff3253372f5659e0c4008a59b40b774fdc67fba50 -size 133260 +oid sha256:b50275292dee542bd0bb47e42fdc5d4d4b84ede65f96356b50ff0b8cc5c8def8 +size 173192 diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/AC_Dialogue.h b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/AC_Dialogue.h index 5d8635c0..80681856 100644 --- a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/AC_Dialogue.h +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/AC_Dialogue.h @@ -3,8 +3,12 @@ #pragma once #include "CoreMinimal.h" +#include "AC_PlayerDialogueInterpreter.h" #include "DialogueTree.h" #include "Components/ActorComponent.h" +#include "EndlessVendetta/EndlessVendettaCharacter.h" +#include "EndlessVendetta/InteractionInterface.h" +#include "Kismet/GameplayStatics.h" #include "AC_Dialogue.generated.h" @@ -14,6 +18,18 @@ class ENDLESSVENDETTA_API UAC_Dialogue : public UActorComponent GENERATED_BODY() public: + void Interact() const; + UPROPERTY(BlueprintReadOnly, EditDefaultsOnly, Category = "Dialogue") UDialogueTree* DialogueTree; }; + +inline void UAC_Dialogue::Interact() const +{ + GLog->Log("Interacting with dialogue"); + if (!IsValid(DialogueTree)) return; + AEndlessVendettaCharacter* Character = Cast(UGameplayStatics::GetPlayerCharacter(GetWorld(), 0)); + if (!IsValid(Cast(Character->GetComponentByClass(UAC_PlayerDialogueInterpreter::StaticClass())))) return; + Cast(Character->GetComponentByClass(UAC_PlayerDialogueInterpreter::StaticClass()))->StartDialogue(DialogueTree); + Character->bIsInDialogue = true; +} diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/AC_PlayerDialogueInterpreter.cpp b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/AC_PlayerDialogueInterpreter.cpp index 72be7b3a..f87077dc 100644 --- a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/AC_PlayerDialogueInterpreter.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/AC_PlayerDialogueInterpreter.cpp @@ -3,6 +3,8 @@ #include "AC_PlayerDialogueInterpreter.h" +#include "EndlessVendetta/EndlessVendettaCharacter.h" + // Sets default values for this component's properties UAC_PlayerDialogueInterpreter::UAC_PlayerDialogueInterpreter() @@ -37,39 +39,65 @@ void UAC_PlayerDialogueInterpreter::StartDialogue(UDialogueTree* DialogueTree) CurrentDialogueTree = DialogueTree; CurrentTextNode = Cast(DialogueTree->RootNodes[0]->ChildrenNodes[0]); OnStartDialogue.Broadcast(CurrentTextNode); + + if (APlayerController* PlayerController = GetWorld()->GetFirstPlayerController()) + { + FInputModeUIOnly InputModeData; + InputModeData.SetLockMouseToViewportBehavior(EMouseLockMode::DoNotLock); + PlayerController->SetInputMode(InputModeData); + PlayerController->bShowMouseCursor = true; + } } void UAC_PlayerDialogueInterpreter::NextDialogue() { - if (IsValid(CurrentTextNode)) + if (!IsValid(CurrentTextNode)) return; + if (CurrentTextNode->ChildrenNodes.Num() == 0) { - if (Cast(CurrentTextNode->ChildrenNodes[0])) - { - CurrentTextNode = nullptr; - CurrentChoiceNode = Cast(CurrentTextNode->ChildrenNodes[0]); - OnChoiceDialogue.Broadcast(CurrentChoiceNode); - } - else - { - CurrentChoiceNode = nullptr; - CurrentTextNode = Cast(CurrentTextNode->ChildrenNodes[0]); - OnNextDialogue.Broadcast(CurrentTextNode); - } + EndDialogue(); + return; + } + if (Cast(CurrentTextNode->ChildrenNodes[0])) + { + CurrentChoiceNode = Cast(CurrentTextNode->ChildrenNodes[0]); + OnChoiceDialogue.Broadcast(CurrentChoiceNode); + CurrentTextNode = nullptr; + } + else + { + CurrentTextNode = Cast(CurrentTextNode->ChildrenNodes[0]); + OnNextDialogue.Broadcast(CurrentTextNode); + CurrentChoiceNode = nullptr; } } void UAC_PlayerDialogueInterpreter::MakeChoiceDialogue(const int Choice) { - if (Cast(CurrentTextNode->ChildrenNodes[Choice])) + if (!IsValid(CurrentChoiceNode)) return; + if (Cast(CurrentChoiceNode->ChildrenNodes[Choice])) { - CurrentTextNode = nullptr; - CurrentChoiceNode = Cast(CurrentTextNode->ChildrenNodes[Choice]); + CurrentChoiceNode = Cast(CurrentChoiceNode->ChildrenNodes[Choice]); OnChoiceDialogue.Broadcast(CurrentChoiceNode); + CurrentTextNode = nullptr; } else { - CurrentChoiceNode = nullptr; - CurrentTextNode = Cast(CurrentTextNode->ChildrenNodes[Choice]); + CurrentTextNode = Cast(CurrentChoiceNode->ChildrenNodes[Choice]); OnNextDialogue.Broadcast(CurrentTextNode); + CurrentChoiceNode = nullptr; + } +} + +void UAC_PlayerDialogueInterpreter::EndDialogue() +{ + CurrentChoiceNode = nullptr; + CurrentTextNode = nullptr; + OnEndDialogue.Broadcast(); + + if (APlayerController* PlayerController = GetWorld()->GetFirstPlayerController()) + { + const FInputModeGameAndUI InputModeData; + PlayerController->SetInputMode(InputModeData); + PlayerController->bShowMouseCursor = false; } } diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/AC_PlayerDialogueInterpreter.h b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/AC_PlayerDialogueInterpreter.h index 3f449ced..31da0195 100644 --- a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/AC_PlayerDialogueInterpreter.h +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/AC_PlayerDialogueInterpreter.h @@ -24,14 +24,18 @@ public: DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnChoiceDialogue, UDialogueChoiceNode*, ChoiceNode); + DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnEndDialogue); + UPROPERTY(BlueprintAssignable, Category = "Dialogue") FOnStartDialogue OnStartDialogue; UPROPERTY(BlueprintAssignable, Category = "Dialogue") FOnNextDialogue OnNextDialogue; UPROPERTY(BlueprintAssignable, Category = "Dialogue") FOnChoiceDialogue OnChoiceDialogue; + UPROPERTY(BlueprintAssignable, Category = "Dialogue") + FOnEndDialogue OnEndDialogue; - UPROPERTY(BlueprintReadOnly, EditDefaultsOnly, Category = "Dialogue") + UPROPERTY(BlueprintReadOnly, VisibleAnywhere, Category = "Dialogue") UDialogueTree* CurrentDialogueTree; protected: @@ -54,4 +58,6 @@ public: void NextDialogue(); UFUNCTION(BlueprintCallable, Category = "Dialogue") void MakeChoiceDialogue(int Choice); + UFUNCTION(BlueprintCallable, Category = "Dialogue") + void EndDialogue(); }; diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueRootNode.cpp b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueRootNode.cpp new file mode 100644 index 00000000..43a8ab4b --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueRootNode.cpp @@ -0,0 +1,31 @@ +#include "DialogueRootNode.h" +#include "DialogueTree.h" + +#define LOCTEXT_NAMESPACE "UDialogueChoiceNode" + +UDialogueRootNode::UDialogueRootNode() +{ +#if WITH_EDITORONLY_DATA + CompatibleGraphType = UDialogueTree::StaticClass(); + + ContextMenuName = LOCTEXT("ConextMenuName", "Root Node"); +#endif +} + +#if WITH_EDITOR +FText UDialogueRootNode::GetNodeTitle() const +{ + return LOCTEXT("Root Node", "ROOT"); +} + +FLinearColor UDialogueRootNode::GetBackgroundColor() const +{ + if (const UDialogueTree* DialogueTree = Cast(GetGraph()); DialogueTree == nullptr) + return Super::GetBackgroundColor(); + + return FLinearColor(1.f, 1.f, 1.f, 1.f); +} + +#endif + +#undef LOCTEXT_NAMESPACE diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueRootNode.h b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueRootNode.h new file mode 100644 index 00000000..38e6f2c0 --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueRootNode.h @@ -0,0 +1,20 @@ +#pragma once + +#include "CoreMinimal.h" +#include "GenericGraphNode.h" +#include "DialogueRootNode.generated.h" + +UCLASS(Blueprintable) +class UDialogueRootNode : public UGenericGraphNode +{ + GENERATED_BODY() + +public: + UDialogueRootNode();; + +#if WITH_EDITOR + virtual FText GetNodeTitle() const override; + + virtual FLinearColor GetBackgroundColor() const override; +#endif +}; diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTextNode.cpp b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTextNode.cpp index 6d3e3c88..bc9c2e95 100644 --- a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTextNode.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTextNode.cpp @@ -37,7 +37,6 @@ FText UDialogueTextNode::GetNodeTitle() const } } } - UE_LOG(LogTemp, Warning, TEXT("Wrapped Text: %s"), *WrappedText); return FText::FromString(WrappedText); } diff --git a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp index c2c87400..807aa0b4 100644 --- a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp @@ -14,6 +14,7 @@ #include "GameFramework/MovementComponent.h" #include "Inventory/InventoryComponent.h" #include "EndlessVendettaGameMode.h" +#include "DialogueSystem/AC_Dialogue.h" ////////////////////////////////////////////////////////////////////////// @@ -102,7 +103,7 @@ void AEndlessVendettaCharacter::Tick(float DeltaTime) } if (bPressedJump) { - if(CurrentStamina <= 0.0f) + if (CurrentStamina <= 0.0f) { CurrentStamina -= 20.0f; } @@ -123,7 +124,7 @@ void AEndlessVendettaCharacter::Tick(float DeltaTime) } if (!bIsPlayerSprinting) { - if(CurrentStamina >= 100.0f) + if (CurrentStamina >= 100.0f) { CurrentStamina = 100.0f; return; @@ -174,7 +175,7 @@ void AEndlessVendettaCharacter::SetupPlayerInputComponent(class UInputComponent* //Jumping EnhancedInputComponent->BindAction(JumpAction, ETriggerEvent::Started, this, &ACharacter::Jump); EnhancedInputComponent->BindAction(JumpAction, ETriggerEvent::Completed, this, &ACharacter::StopJumping); - + //Moving EnhancedInputComponent->BindAction(MoveAction, ETriggerEvent::Triggered, this, &AEndlessVendettaCharacter::Move); EnhancedInputComponent->BindAction(SprintAction, ETriggerEvent::Started, this, &AEndlessVendettaCharacter::Sprint); @@ -211,6 +212,11 @@ void AEndlessVendettaCharacter::SetupPlayerInputComponent(class UInputComponent* void AEndlessVendettaCharacter::Interact() { + if (bIsInDialogue) + { + Cast(GetComponentByClass(UAC_PlayerDialogueInterpreter::StaticClass()))->NextDialogue(); + return; + } if (PlayerOnShip) { SpaceShip->PlayerInteracting(); @@ -234,6 +240,10 @@ void AEndlessVendettaCharacter::Interact() UE_LOG(LogTemp, Warning, TEXT("Hit actor: %s"), *HitActor->GetName()); IInteractionInterface* InteractableActor = Cast(HitActor); if (InteractableActor) InteractableActor->Interact(); + if (UAC_Dialogue* Dialogue = Cast(HitActor->GetComponentByClass(UAC_Dialogue::StaticClass()))) + { + Dialogue->Interact(); + } } @@ -341,7 +351,7 @@ void AEndlessVendettaCharacter::EquipPrimary() if (IsValid(PrimaryWeapon)) { PrimaryWeapon->DetachFromActor(DetatchRules); - PrimaryWeapon->SetActorLocation(FVector(0,0,0), false, nullptr, ETeleportType::None); + PrimaryWeapon->SetActorLocation(FVector(0, 0, 0), false, nullptr, ETeleportType::None); PrimaryWeapon->SetActorHiddenInGame(true); this->GetFirstPersonCameraComponent()->SetFieldOfView(90); UE_LOG(LogTemp, Warning, TEXT("Primary Weapon Is Hidden: %hhd"), PrimaryWeapon->IsHidden()); @@ -351,7 +361,7 @@ void AEndlessVendettaCharacter::EquipPrimary() Cast(GetWorld()->GetAuthGameMode())->SendEvent("DeEquip", "Pri"); return; } - if(bIsWeaponPickedUp) + if (bIsWeaponPickedUp) { PrimaryWeaponActor = GetWorld()->SpawnActor(PrimaryWeaponClass, spawnParams); bIsWeaponPickedUp = false; @@ -390,12 +400,12 @@ void AEndlessVendettaCharacter::EquipSecondary() spawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn; FAttachmentTransformRules AttachmentRules(EAttachmentRule::SnapToTarget, true); FDetachmentTransformRules DetatchRules(EDetachmentRule::KeepWorld, false); - + if (bIsReloading) return; if (IsValid(SecondaryWeapon)) { SecondaryWeapon->DetachFromActor(DetatchRules); - SecondaryWeapon->SetActorLocation(FVector(0,0,0), false, nullptr, ETeleportType::None); + SecondaryWeapon->SetActorLocation(FVector(0, 0, 0), false, nullptr, ETeleportType::None); SecondaryWeapon->SetActorHiddenInGame(true); this->GetFirstPersonCameraComponent()->SetFieldOfView(90); UE_LOG(LogTemp, Warning, TEXT("Secondary Weapon Is Hidden: %hhd"), SecondaryWeapon->IsHidden()); @@ -404,8 +414,8 @@ void AEndlessVendettaCharacter::EquipSecondary() GLog->Log("Secondary Weapon Put Away"); return; } - - if(bIsWeaponPickedUp) + + if (bIsWeaponPickedUp) { PrimaryWeaponActor = GetWorld()->SpawnActor(PrimaryWeaponClass, spawnParams); bIsWeaponPickedUp = false; @@ -415,11 +425,11 @@ void AEndlessVendettaCharacter::EquipSecondary() if (GadgetManager->IsValidReconGadget() && GadgetManager->IsReconEquipped() && !GadgetManager->TryToUnequipRecon()) return; if (GadgetManager->IsValidCombatGadget() && GadgetManager->IsCombatEquipped() && !GadgetManager->TryToUnequipCombat()) return; - - if(!IsValid(SecondaryWeapon)) + + if (!IsValid(SecondaryWeapon)) { bHasRifle = true; - if(!bIsSecondaryWeaponCreated) + if (!bIsSecondaryWeaponCreated) { SecondaryWeaponActor = GetWorld()->SpawnActor(SecondaryWeaponClass, spawnParams); SecondaryWeaponActor->AttachToComponent(Mesh1P, AttachmentRules, FName("GripPoint")); @@ -438,7 +448,7 @@ void AEndlessVendettaCharacter::EquipSecondary() void AEndlessVendettaCharacter::WeaponSwitcher(AActor* Outhit) { - if(Outhit->ActorHasTag("PrimaryWeapon")) + if (Outhit->ActorHasTag("PrimaryWeapon")) { if (IsValid(PrimaryWeapon)) { @@ -449,7 +459,7 @@ void AEndlessVendettaCharacter::WeaponSwitcher(AActor* Outhit) Outhit->Destroy(); EquipPrimary(); } - if(Outhit->ActorHasTag("SecondaryWeapon")) + if (Outhit->ActorHasTag("SecondaryWeapon")) { if (IsValid(SecondaryWeapon)) { @@ -565,7 +575,7 @@ void AEndlessVendettaCharacter::Move(const FInputActionValue& Value) SpaceShip->MoveShip(MovementVector); return; } - + if (Controller != nullptr) { // add movement @@ -669,7 +679,7 @@ void AEndlessVendettaCharacter::UpdateInventorySize(int Cols, int Rows) { Inventory->UpdateInventorySize(Cols, Rows); } - else + else { UE_LOG(LogTemp, Warning, TEXT("No Vaild Inventory")); } @@ -690,6 +700,5 @@ void AEndlessVendettaCharacter::ExitShip(FTransform ExitLoc) SetActorLocation(ExitLoc.GetLocation()); GetController()->SetControlRotation(ExitLoc.Rotator()); SpaceShip->Destroy(); - PlayerOnShip = false; + PlayerOnShip = false; } - diff --git a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.h b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.h index ca279fa5..1afe5a32 100644 --- a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.h +++ b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.h @@ -26,12 +26,12 @@ UCLASS(config=Game) class AEndlessVendettaCharacter : public ACharacter { GENERATED_BODY() - + protected: /** Pawn mesh: 1st person view (arms; seen only by self) */ UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category=Mesh) USkeletalMeshComponent* Mesh1P; - + private: /** First person camera */ UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Camera, meta = (AllowPrivateAccess = "true")) @@ -95,7 +95,7 @@ public: //STAMINA AND SPRINT SPEED UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Stats") - float MaxStamina = 100; + float MaxStamina = 100; UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Stats") float CurrentStamina; UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Stats") @@ -118,6 +118,9 @@ public: bool bIsSecondaryWeaponCreated = false; bool bIsWeaponPickedUp = false; + UPROPERTY(BlueprintReadWrite) + bool bIsInDialogue = false; + protected: virtual void BeginPlay() override; virtual void Tick(float DeltaTime) override; @@ -217,7 +220,6 @@ protected: void Interact(); protected: - // Used by vault it plugin to run vaulting animations USkeletalMeshComponent* FP_SkeletalMesh = nullptr; @@ -226,8 +228,6 @@ protected: // End of APawn interface public: - - UFUNCTION(BlueprintCallable, Category = "Stealth") void SetCrouch(); UFUNCTION(BlueprintCallable, Category = "Stealth") @@ -264,7 +264,8 @@ private: UPROPERTY(EditDefaultsOnly, Category = "Space Ship") TSubclassOf SpaceShipClass; ASpaceShip* SpaceShip; -public: + +public: void ExitShip(FTransform ExitLoc); void EnterShip(FTransform TakeoffLoc); }; From 649c364c2796eb207bf024aec3b98638bbd4a676 Mon Sep 17 00:00:00 2001 From: PHILIP WHITE Date: Mon, 22 Jan 2024 23:04:56 +0000 Subject: [PATCH 030/112] Update Dialogue UI for Interact Events --- EndlessVendetta/Content/Dialogue/BP_DialogueUI.uasset | 4 ++-- EndlessVendetta/Content/Dialogue/test.uasset | 3 +++ .../Levels/EnemyAITest/4/EH/H0RJG09BGRG4TA8B6P9SKL.uasset | 4 ++-- 3 files changed, 7 insertions(+), 4 deletions(-) create mode 100644 EndlessVendetta/Content/Dialogue/test.uasset diff --git a/EndlessVendetta/Content/Dialogue/BP_DialogueUI.uasset b/EndlessVendetta/Content/Dialogue/BP_DialogueUI.uasset index eadef84b..5a865577 100644 --- a/EndlessVendetta/Content/Dialogue/BP_DialogueUI.uasset +++ b/EndlessVendetta/Content/Dialogue/BP_DialogueUI.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4030e57c1b966dfdb126958edaf4372bb098c41c034292d54fab657ec6c914b0 -size 223792 +oid sha256:6d51f9881a6133d0034410344d0809ed18ed108981b46507868b51c2bcacd7b6 +size 287864 diff --git a/EndlessVendetta/Content/Dialogue/test.uasset b/EndlessVendetta/Content/Dialogue/test.uasset new file mode 100644 index 00000000..c8e7f317 --- /dev/null +++ b/EndlessVendetta/Content/Dialogue/test.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af6de724c9c9f4c366b93b385ebe76dc85d3dbfdde418ecc65fe7492d76c6c4f +size 16429 diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/4/EH/H0RJG09BGRG4TA8B6P9SKL.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/4/EH/H0RJG09BGRG4TA8B6P9SKL.uasset index 76ff7bba..f99c95bc 100644 --- a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/4/EH/H0RJG09BGRG4TA8B6P9SKL.uasset +++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/4/EH/H0RJG09BGRG4TA8B6P9SKL.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3ded950368a5368f3187fcdae9b883ab92a7b57840a28a3613a0024df71d2098 -size 27121 +oid sha256:ca5b42f11542b515ca1b651d50754be68ce0bdc4fefe264a2993b01e6e7a9506 +size 16757 From 5072095e652f1d1268e6ac992ac4b5f040d93dbc Mon Sep 17 00:00:00 2001 From: Rafal Swierczek Date: Tue, 23 Jan 2024 19:54:30 +0000 Subject: [PATCH 031/112] Added Characters Directory --- .../.idea.EndlessVendetta/.idea/workspace.xml | 47 +++++++++++-------- .../HDRI/HDRI_Epic_Courtyard_Daylight.uasset | 4 +- .../Props/MaterialSphere.uasset | 4 +- .../{ => Characters}/MyVICharacter.cpp | 0 .../{ => Characters}/MyVICharacter.h | 0 .../MyVICharacterAbilityBase.cpp | 0 .../MyVICharacterAbilityBase.h | 0 .../{ => Characters}/MyVICharacterBase.cpp | 2 +- .../{ => Characters}/MyVICharacterBase.h | 2 +- 9 files changed, 33 insertions(+), 26 deletions(-) rename EndlessVendetta/Source/EndlessVendetta/{ => Characters}/MyVICharacter.cpp (100%) rename EndlessVendetta/Source/EndlessVendetta/{ => Characters}/MyVICharacter.h (100%) rename EndlessVendetta/Source/EndlessVendetta/{ => Characters}/MyVICharacterAbilityBase.cpp (100%) rename EndlessVendetta/Source/EndlessVendetta/{ => Characters}/MyVICharacterAbilityBase.h (100%) rename EndlessVendetta/Source/EndlessVendetta/{ => Characters}/MyVICharacterBase.cpp (98%) rename EndlessVendetta/Source/EndlessVendetta/{ => Characters}/MyVICharacterBase.h (98%) diff --git a/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml b/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml index 8fc20d53..46053cca 100644 --- a/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml +++ b/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml @@ -8,7 +8,13 @@ - + + + + + + + - { - "keyToString": { - "C++ Project.EndlessVendetta.executor": "Run", - "RunOnceActivity.OpenProjectViewOnStart": "true", - "RunOnceActivity.ShowReadmeOnStart": "true", - "git-widget-placeholder": "HomeHub-Tutorial", - "ignore.virus.scanning.warn.message": "true", - "node.js.detected.package.eslint": "true", - "node.js.detected.package.tslint": "true", - "node.js.selected.package.eslint": "(autodetect)", - "node.js.selected.package.tslint": "(autodetect)", - "nodejs_package_manager_path": "npm", - "vue.rearranger.settings.migration": "true" + +}]]> @@ -126,6 +132,7 @@ + diff --git a/EndlessVendetta/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset b/EndlessVendetta/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset index 0f990580..eeab0777 100644 --- a/EndlessVendetta/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset +++ b/EndlessVendetta/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bc35eb2d43a47427d30aba0196f9eac90d089dd3abca319528c5d25c83510d0d -size 72364642 +oid sha256:182506285a655d7471891aaf2dee76ab8e318751a47466fbe53ff333b46d6e20 +size 66790690 diff --git a/EndlessVendetta/Content/StarterContent/Props/MaterialSphere.uasset b/EndlessVendetta/Content/StarterContent/Props/MaterialSphere.uasset index 2b39b316..56bddfc9 100644 --- a/EndlessVendetta/Content/StarterContent/Props/MaterialSphere.uasset +++ b/EndlessVendetta/Content/StarterContent/Props/MaterialSphere.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9832eb25780c5b708bc83a7162412745945be1c9a66822dbfc547ea46fba15a2 -size 47710 +oid sha256:3a8777c01491888bba9f40eda9d2bed76a611f0e80f75917501ce69c1a321342 +size 47333 diff --git a/EndlessVendetta/Source/EndlessVendetta/MyVICharacter.cpp b/EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacter.cpp similarity index 100% rename from EndlessVendetta/Source/EndlessVendetta/MyVICharacter.cpp rename to EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacter.cpp diff --git a/EndlessVendetta/Source/EndlessVendetta/MyVICharacter.h b/EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacter.h similarity index 100% rename from EndlessVendetta/Source/EndlessVendetta/MyVICharacter.h rename to EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacter.h diff --git a/EndlessVendetta/Source/EndlessVendetta/MyVICharacterAbilityBase.cpp b/EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacterAbilityBase.cpp similarity index 100% rename from EndlessVendetta/Source/EndlessVendetta/MyVICharacterAbilityBase.cpp rename to EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacterAbilityBase.cpp diff --git a/EndlessVendetta/Source/EndlessVendetta/MyVICharacterAbilityBase.h b/EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacterAbilityBase.h similarity index 100% rename from EndlessVendetta/Source/EndlessVendetta/MyVICharacterAbilityBase.h rename to EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacterAbilityBase.h diff --git a/EndlessVendetta/Source/EndlessVendetta/MyVICharacterBase.cpp b/EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacterBase.cpp similarity index 98% rename from EndlessVendetta/Source/EndlessVendetta/MyVICharacterBase.cpp rename to EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacterBase.cpp index 8127dea2..93d83d2f 100644 --- a/EndlessVendetta/Source/EndlessVendetta/MyVICharacterBase.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacterBase.cpp @@ -1,6 +1,6 @@ // Copyright (c) 2019-2022 Drowning Dragons Limited. All Rights Reserved. -#include "EndlessVendetta/MyVICharacterBase.h" +#include "EndlessVendetta/Characters/MyVICharacterBase.h" #include "Pawn/VICharacterBase.h" #include "Net/UnrealNetwork.h" #include "GameFramework/CharacterMovementComponent.h" diff --git a/EndlessVendetta/Source/EndlessVendetta/MyVICharacterBase.h b/EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacterBase.h similarity index 98% rename from EndlessVendetta/Source/EndlessVendetta/MyVICharacterBase.h rename to EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacterBase.h index 40ae3f7f..e65950eb 100644 --- a/EndlessVendetta/Source/EndlessVendetta/MyVICharacterBase.h +++ b/EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacterBase.h @@ -3,7 +3,7 @@ #pragma once #include "CoreMinimal.h" -#include "EndlessVendettaCharacter.h" +#include "EndlessVendetta/EndlessVendettaCharacter.h" #include "VITypes.h" #include "Pawn/VIPawnInterface.h" #include "MyVICharacterBase.generated.h" From 0f4950135b6671629492b562c5cd76f8a48ac78f Mon Sep 17 00:00:00 2001 From: Rafal Swierczek Date: Tue, 23 Jan 2024 20:05:54 +0000 Subject: [PATCH 032/112] Fixed Target Material on Walls --- .../GunRangeMechanics/GadgetRoom/BP_GadgetWall.uasset | 4 ++-- .../GunRangeMechanics/Parkour/BP_SprintWall1.uasset | 4 ++-- .../GunRangeMechanics/Parkour/BP_SprintWall2.uasset | 4 ++-- .../GunRangeMechanics/Parkour/BP_SprintWall3.uasset | 4 ++-- EndlessVendetta/Content/Levels/ControlTutorialLevel.umap | 4 ++-- EndlessVendetta/Content/Ships/BP_SpaceShip.uasset | 4 ++-- EndlessVendetta/Content/Ships/LandingZone.uasset | 4 ++-- EndlessVendetta/Content/Ships/LandingZone_HomeHub.uasset | 4 ++-- 8 files changed, 16 insertions(+), 16 deletions(-) diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/GadgetRoom/BP_GadgetWall.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/GadgetRoom/BP_GadgetWall.uasset index 3f517d13..7a992806 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/GadgetRoom/BP_GadgetWall.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/GadgetRoom/BP_GadgetWall.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3c859bb215d97febc85b455dacc27fdb6f7b74f9c1f1ec4e647baaa178ed90e2 -size 92902 +oid sha256:0f58fe8846e4dfd57ddd385a05c04f0dfbbdf342829567375efd75e1aad361fc +size 92072 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Parkour/BP_SprintWall1.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Parkour/BP_SprintWall1.uasset index b496db84..4562a026 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Parkour/BP_SprintWall1.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Parkour/BP_SprintWall1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2324c9c772bc0e0a4114507855329265fe0accc0ea5449e5b459dc77291c0f33 -size 105072 +oid sha256:f9efcb82f57b17b3a9bc48530ba28334fbbad9c2220784a68275972634c5946d +size 102503 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Parkour/BP_SprintWall2.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Parkour/BP_SprintWall2.uasset index 0525bd46..58eaf6e3 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Parkour/BP_SprintWall2.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Parkour/BP_SprintWall2.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:526bb663885432228aa8a9a767effbf84cd4aaac5d7900afaf1ba345587f1803 -size 110706 +oid sha256:d69e435f092b24d3e1e71b2016f5b331f16c3a1c03c0bfb78c1a1e4c65c253c3 +size 108370 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Parkour/BP_SprintWall3.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Parkour/BP_SprintWall3.uasset index 935a38f4..625e8c0d 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Parkour/BP_SprintWall3.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Parkour/BP_SprintWall3.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cad92e57f786c962858bdca6a44e2a123b5eda0443592dbacffd0487cae8d55d -size 109928 +oid sha256:cc730be68f2ab24f99721d5a4a07dc3bbccd048b08eb244c5d8c0a3e2fa13543 +size 107933 diff --git a/EndlessVendetta/Content/Levels/ControlTutorialLevel.umap b/EndlessVendetta/Content/Levels/ControlTutorialLevel.umap index c0c12b84..7fc04321 100644 --- a/EndlessVendetta/Content/Levels/ControlTutorialLevel.umap +++ b/EndlessVendetta/Content/Levels/ControlTutorialLevel.umap @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d3f6cebb45b19113ee7c91a643037ab20952d1de0e1ca64fd2744367c7201121 -size 17666914 +oid sha256:653d1ede8a612cbcaea8aa78b865e433376f5bcb835b5f3df4bc2004cca55e2e +size 17667138 diff --git a/EndlessVendetta/Content/Ships/BP_SpaceShip.uasset b/EndlessVendetta/Content/Ships/BP_SpaceShip.uasset index acf865f3..71994809 100644 --- a/EndlessVendetta/Content/Ships/BP_SpaceShip.uasset +++ b/EndlessVendetta/Content/Ships/BP_SpaceShip.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:80de0a9f910a75664907fbc1251ed21beae0cb7620e150d13b133c2f6ff419e9 -size 37169 +oid sha256:e278fce27c3ac05506781357ed5235d16e8f371a9ad242cebd374f17c20bb338 +size 37016 diff --git a/EndlessVendetta/Content/Ships/LandingZone.uasset b/EndlessVendetta/Content/Ships/LandingZone.uasset index 1222dc71..cdffb78b 100644 --- a/EndlessVendetta/Content/Ships/LandingZone.uasset +++ b/EndlessVendetta/Content/Ships/LandingZone.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:34b9361527fc8f8f0a40f66136ce8aae347295bd70ce71f1f0932e78edf9fcf8 -size 91522 +oid sha256:d996a836e1ad72307a3f43490e4b8ac9958cef1af776de25773aca5e74506822 +size 88748 diff --git a/EndlessVendetta/Content/Ships/LandingZone_HomeHub.uasset b/EndlessVendetta/Content/Ships/LandingZone_HomeHub.uasset index e06dfbe9..1ed70fe2 100644 --- a/EndlessVendetta/Content/Ships/LandingZone_HomeHub.uasset +++ b/EndlessVendetta/Content/Ships/LandingZone_HomeHub.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5e7dabbf82d2e50819ed43d959720ad63a0e4cbac1e050a4f4d3739be20f578f -size 93269 +oid sha256:abbb67678dc0d1cac94a866d1604c7658d787b8c4e2f8d8f69b1dfd85ac763d1 +size 92831 From 075aecf82a7b6786a336371fc907df66d0c874fd Mon Sep 17 00:00:00 2001 From: Rafal Swierczek Date: Tue, 23 Jan 2024 20:24:56 +0000 Subject: [PATCH 033/112] Created BountyHunterCharacter Class Inherits from EndlessVendettaClass and is the new parent of MyVICharacterBase --- .../.idea.EndlessVendetta/.idea/workspace.xml | 11 +++------- .../Content/Levels/ControlTutorialLevel.umap | 4 ++-- .../HDRI/HDRI_Epic_Courtyard_Daylight.uasset | 2 +- .../Characters/BountyHunterCharacter.cpp | 9 +++++++++ .../Characters/BountyHunterCharacter.h | 20 +++++++++++++++++++ .../Characters/MyVICharacterBase.h | 3 ++- 6 files changed, 37 insertions(+), 12 deletions(-) create mode 100644 EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.cpp create mode 100644 EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.h diff --git a/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml b/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml index 46053cca..a6a97e90 100644 --- a/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml +++ b/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml @@ -8,13 +8,8 @@ - - - - - - - + + diff --git a/EndlessVendetta/Content/Levels/ControlTutorialLevel.umap b/EndlessVendetta/Content/Levels/ControlTutorialLevel.umap index 7fc04321..61ed65db 100644 --- a/EndlessVendetta/Content/Levels/ControlTutorialLevel.umap +++ b/EndlessVendetta/Content/Levels/ControlTutorialLevel.umap @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:653d1ede8a612cbcaea8aa78b865e433376f5bcb835b5f3df4bc2004cca55e2e -size 17667138 +oid sha256:4e163b387d84ec92405f0e0a24ed573ebf6052c2d1a2c060bbbd6b5ecb357871 +size 17667160 diff --git a/EndlessVendetta/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset b/EndlessVendetta/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset index eeab0777..18f8607f 100644 --- a/EndlessVendetta/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset +++ b/EndlessVendetta/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:182506285a655d7471891aaf2dee76ab8e318751a47466fbe53ff333b46d6e20 +oid sha256:5157054a7a77739110951ad6d64e24c93647e7665eef16e6944fd1481d4d750a size 66790690 diff --git a/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.cpp b/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.cpp new file mode 100644 index 00000000..c5825e33 --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.cpp @@ -0,0 +1,9 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "BountyHunterCharacter.h" + +void ABountyHunterCharacter::BeginPlay() +{ + Super::BeginPlay(); +} diff --git a/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.h b/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.h new file mode 100644 index 00000000..5d4ea5e1 --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.h @@ -0,0 +1,20 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "EndlessVendetta/EndlessVendettaCharacter.h" +#include "BountyHunterCharacter.generated.h" + +/** + * + */ +UCLASS() +class ENDLESSVENDETTA_API ABountyHunterCharacter : public AEndlessVendettaCharacter +{ + GENERATED_BODY() + +protected: + virtual void BeginPlay() override; + +}; diff --git a/EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacterBase.h b/EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacterBase.h index e65950eb..11f60fa6 100644 --- a/EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacterBase.h +++ b/EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacterBase.h @@ -3,6 +3,7 @@ #pragma once #include "CoreMinimal.h" +#include "BountyHunterCharacter.h" #include "EndlessVendetta/EndlessVendettaCharacter.h" #include "VITypes.h" #include "Pawn/VIPawnInterface.h" @@ -19,7 +20,7 @@ class UVIPawnVaultComponent; * Requires multiple overrides which will cause errors if not correctly performed */ UCLASS(abstract) -class ENDLESSVENDETTA_API AMyVICharacterBase : public AEndlessVendettaCharacter, public IVIPawnInterface +class ENDLESSVENDETTA_API AMyVICharacterBase : public ABountyHunterCharacter, public IVIPawnInterface { GENERATED_BODY() From 2f1fe1c0ca0d2092a4f79583f282efe81f165302 Mon Sep 17 00:00:00 2001 From: PHILIP WHITE Date: Tue, 23 Jan 2024 21:21:56 +0000 Subject: [PATCH 034/112] Update Dialogue System for Changing Speaker --- .../Content/Dialogue/BP_DialogueUI.uasset | 4 ++-- .../Content/Dialogue/D_Mayor_Tutorial.uasset | 3 +++ .../Content/Dialogue/TestDialogueCube.uasset | 3 +++ .../Dialogue/Testing/TestDialogueCube.uasset | 3 +++ .../Dialogue/Testing/TestDialogueTree.uasset | 3 +++ EndlessVendetta/Content/Dialogue/test.uasset | 3 --- .../E/WM/7S8OEF1ALOX6NKI759UPUB.uasset | 3 +++ .../AC_PlayerDialogueInterpreter.cpp | 20 +++++++++++++++++++ .../AC_PlayerDialogueInterpreter.h | 3 +++ .../DialogueSystem/DialogueChoiceNode.cpp | 5 +++++ .../DialogueSystem/DialogueChoiceNode.h | 1 + .../DialogueSystem/DialogueRootNode.cpp | 2 +- .../DialogueSystem/DialogueTextNode.h | 2 -- .../DialogueSystem/DialogueTree.h | 4 ++-- 14 files changed, 49 insertions(+), 10 deletions(-) create mode 100644 EndlessVendetta/Content/Dialogue/D_Mayor_Tutorial.uasset create mode 100644 EndlessVendetta/Content/Dialogue/TestDialogueCube.uasset create mode 100644 EndlessVendetta/Content/Dialogue/Testing/TestDialogueCube.uasset create mode 100644 EndlessVendetta/Content/Dialogue/Testing/TestDialogueTree.uasset delete mode 100644 EndlessVendetta/Content/Dialogue/test.uasset create mode 100644 EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/E/WM/7S8OEF1ALOX6NKI759UPUB.uasset diff --git a/EndlessVendetta/Content/Dialogue/BP_DialogueUI.uasset b/EndlessVendetta/Content/Dialogue/BP_DialogueUI.uasset index 5a865577..9f3915c0 100644 --- a/EndlessVendetta/Content/Dialogue/BP_DialogueUI.uasset +++ b/EndlessVendetta/Content/Dialogue/BP_DialogueUI.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6d51f9881a6133d0034410344d0809ed18ed108981b46507868b51c2bcacd7b6 -size 287864 +oid sha256:047d1379f4ccba4e09d8a17663400ec72aa8143be0404993b4195c6e707683ed +size 294565 diff --git a/EndlessVendetta/Content/Dialogue/D_Mayor_Tutorial.uasset b/EndlessVendetta/Content/Dialogue/D_Mayor_Tutorial.uasset new file mode 100644 index 00000000..d4bbebf6 --- /dev/null +++ b/EndlessVendetta/Content/Dialogue/D_Mayor_Tutorial.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec928f3868dc58bd404ba1745a960d964039c2a2a4140ccad7f94b08ae1fd3a8 +size 4013 diff --git a/EndlessVendetta/Content/Dialogue/TestDialogueCube.uasset b/EndlessVendetta/Content/Dialogue/TestDialogueCube.uasset new file mode 100644 index 00000000..c527979a --- /dev/null +++ b/EndlessVendetta/Content/Dialogue/TestDialogueCube.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f02a139ca0765bc88152d89b253c76f11837193aaaaf1822f950d38578cc5e1 +size 2455 diff --git a/EndlessVendetta/Content/Dialogue/Testing/TestDialogueCube.uasset b/EndlessVendetta/Content/Dialogue/Testing/TestDialogueCube.uasset new file mode 100644 index 00000000..c12313ff --- /dev/null +++ b/EndlessVendetta/Content/Dialogue/Testing/TestDialogueCube.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7323a610767b1f1cc758dd6fa1c9cb34407545561ad153e0ad0ac12cb78f894 +size 28384 diff --git a/EndlessVendetta/Content/Dialogue/Testing/TestDialogueTree.uasset b/EndlessVendetta/Content/Dialogue/Testing/TestDialogueTree.uasset new file mode 100644 index 00000000..f225d161 --- /dev/null +++ b/EndlessVendetta/Content/Dialogue/Testing/TestDialogueTree.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85744af1e8b9b15150bb480251591069d637cca3792bb42111744a77347ddc06 +size 17581 diff --git a/EndlessVendetta/Content/Dialogue/test.uasset b/EndlessVendetta/Content/Dialogue/test.uasset deleted file mode 100644 index c8e7f317..00000000 --- a/EndlessVendetta/Content/Dialogue/test.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:af6de724c9c9f4c366b93b385ebe76dc85d3dbfdde418ecc65fe7492d76c6c4f -size 16429 diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/E/WM/7S8OEF1ALOX6NKI759UPUB.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/E/WM/7S8OEF1ALOX6NKI759UPUB.uasset new file mode 100644 index 00000000..33189d8b --- /dev/null +++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/E/WM/7S8OEF1ALOX6NKI759UPUB.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e230c10405edc83911b7a264e397dfa14d304c5492cfdd64add703df2b758b6 +size 4769 diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/AC_PlayerDialogueInterpreter.cpp b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/AC_PlayerDialogueInterpreter.cpp index f87077dc..f11997ca 100644 --- a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/AC_PlayerDialogueInterpreter.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/AC_PlayerDialogueInterpreter.cpp @@ -25,6 +25,21 @@ void UAC_PlayerDialogueInterpreter::BeginPlay() // ... } +FDialogueCharacter* UAC_PlayerDialogueInterpreter::GetCharacterSpeakingFromEnum(ECharacterSpeaking CharacterSpeakingEnum) const +{ + switch (CharacterSpeakingEnum) + { + case ECharacterSpeaking::Character1: + return &CurrentDialogueTree->Character1; + case ECharacterSpeaking::Character2: + return &CurrentDialogueTree->Character2; + case ECharacterSpeaking::Character3: + return &CurrentDialogueTree->Character3; + case ECharacterSpeaking::Character4: + return &CurrentDialogueTree->Character4; + } + return nullptr; +} // Called every frame void UAC_PlayerDialogueInterpreter::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) @@ -38,6 +53,8 @@ void UAC_PlayerDialogueInterpreter::StartDialogue(UDialogueTree* DialogueTree) { CurrentDialogueTree = DialogueTree; CurrentTextNode = Cast(DialogueTree->RootNodes[0]->ChildrenNodes[0]); + if (!IsValid(CurrentTextNode)) return; + CurrentCharacterSpeaking = *GetCharacterSpeakingFromEnum(CurrentTextNode->DialogueCharacterSpeaking); OnStartDialogue.Broadcast(CurrentTextNode); if (APlayerController* PlayerController = GetWorld()->GetFirstPlayerController()) @@ -66,6 +83,7 @@ void UAC_PlayerDialogueInterpreter::NextDialogue() else { CurrentTextNode = Cast(CurrentTextNode->ChildrenNodes[0]); + CurrentCharacterSpeaking = *GetCharacterSpeakingFromEnum(CurrentTextNode->DialogueCharacterSpeaking); OnNextDialogue.Broadcast(CurrentTextNode); CurrentChoiceNode = nullptr; } @@ -83,6 +101,7 @@ void UAC_PlayerDialogueInterpreter::MakeChoiceDialogue(const int Choice) else { CurrentTextNode = Cast(CurrentChoiceNode->ChildrenNodes[Choice]); + CurrentCharacterSpeaking = *GetCharacterSpeakingFromEnum(CurrentTextNode->DialogueCharacterSpeaking); OnNextDialogue.Broadcast(CurrentTextNode); CurrentChoiceNode = nullptr; } @@ -92,6 +111,7 @@ void UAC_PlayerDialogueInterpreter::EndDialogue() { CurrentChoiceNode = nullptr; CurrentTextNode = nullptr; + CurrentCharacterSpeaking = FDialogueCharacter(); OnEndDialogue.Broadcast(); if (APlayerController* PlayerController = GetWorld()->GetFirstPlayerController()) diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/AC_PlayerDialogueInterpreter.h b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/AC_PlayerDialogueInterpreter.h index 31da0195..4da84a18 100644 --- a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/AC_PlayerDialogueInterpreter.h +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/AC_PlayerDialogueInterpreter.h @@ -37,6 +37,8 @@ public: UPROPERTY(BlueprintReadOnly, VisibleAnywhere, Category = "Dialogue") UDialogueTree* CurrentDialogueTree; + UPROPERTY(BlueprintReadOnly, VisibleAnywhere, Category = "Dialogue") + FDialogueCharacter CurrentCharacterSpeaking; protected: // Called when the game starts @@ -47,6 +49,7 @@ private: UDialogueTextNode* CurrentTextNode; UPROPERTY() UDialogueChoiceNode* CurrentChoiceNode; + FDialogueCharacter* GetCharacterSpeakingFromEnum(ECharacterSpeaking CharacterSpeakingEnum) const; public: // Called every frame diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueChoiceNode.cpp b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueChoiceNode.cpp index 2758d6af..a36202da 100644 --- a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueChoiceNode.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueChoiceNode.cpp @@ -14,6 +14,11 @@ UDialogueChoiceNode::UDialogueChoiceNode() #if WITH_EDITOR +FText UDialogueChoiceNode::GetNodeTitle() const +{ + return NodeTitle.IsEmpty() ? LOCTEXT("Choice Node", "Choice Node") : NodeTitle; +} + FLinearColor UDialogueChoiceNode::GetBackgroundColor() const { const UDialogueTree* DialogueTree = Cast(GetGraph()); diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueChoiceNode.h b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueChoiceNode.h index 0b0550b2..e0d0512c 100644 --- a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueChoiceNode.h +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueChoiceNode.h @@ -20,6 +20,7 @@ public: FString Choice3Text = "None"; #if WITH_EDITOR + virtual FText GetNodeTitle() const override; virtual FLinearColor GetBackgroundColor() const override; #endif }; diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueRootNode.cpp b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueRootNode.cpp index 43a8ab4b..a4981347 100644 --- a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueRootNode.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueRootNode.cpp @@ -23,7 +23,7 @@ FLinearColor UDialogueRootNode::GetBackgroundColor() const if (const UDialogueTree* DialogueTree = Cast(GetGraph()); DialogueTree == nullptr) return Super::GetBackgroundColor(); - return FLinearColor(1.f, 1.f, 1.f, 1.f); + return FLinearColor(0.f, 1.f, 0.f, 1.f); } #endif diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTextNode.h b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTextNode.h index af556e4b..4eb9f33d 100644 --- a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTextNode.h +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTextNode.h @@ -30,9 +30,7 @@ public: #if WITH_EDITOR virtual FText GetNodeTitle() const override; - virtual void SetNodeTitle(const FText& NewTitle) override; - virtual FLinearColor GetBackgroundColor() const override; #endif }; diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTree.h b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTree.h index ed992455..92f3f1bd 100644 --- a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTree.h +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTree.h @@ -12,9 +12,9 @@ struct FDialogueCharacter UPROPERTY(BlueprintReadOnly, EditDefaultsOnly, Category = "Dialogue") FName CharacterName; UPROPERTY(BlueprintReadOnly, EditDefaultsOnly, Category = "Dialogue") - FLinearColor DialogueNodeBgColor; - UPROPERTY(BlueprintReadOnly, EditDefaultsOnly, Category = "Dialogue") UTexture2D* DialogueCharacterPortrait; + UPROPERTY(BlueprintReadOnly, EditDefaultsOnly, Category = "Node") + FLinearColor DialogueNodeBgColor; }; UCLASS(Blueprintable) From c0e942ef7fdfac7d8f4ffebb1114de249ddf91fd Mon Sep 17 00:00:00 2001 From: Rafal Swierczek Date: Tue, 23 Jan 2024 21:39:20 +0000 Subject: [PATCH 035/112] Created a Template for Bounty Hunter Character basic Bounty Directing Functionality --- .../.idea.EndlessVendetta/.idea/workspace.xml | 3 +- .../Characters/BountyHunterCharacter.cpp | 16 +++++++++ .../Characters/BountyHunterCharacter.h | 35 ++++++++++++++++++- 3 files changed, 52 insertions(+), 2 deletions(-) diff --git a/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml b/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml index a6a97e90..0712731c 100644 --- a/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml +++ b/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml @@ -8,6 +8,7 @@ + @@ -127,7 +128,7 @@ - + diff --git a/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.cpp b/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.cpp index c5825e33..2e412a0f 100644 --- a/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.cpp @@ -3,7 +3,23 @@ #include "BountyHunterCharacter.h" +void ABountyHunterCharacter::SpawnBounties() +{ + +} + +void ABountyHunterCharacter::CompleteCurrentMainBounty() +{ + +} + void ABountyHunterCharacter::BeginPlay() { Super::BeginPlay(); } + +void ABountyHunterCharacter::Tick(float DeltaTime) +{ + Super::Tick(DeltaTime); +} + diff --git a/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.h b/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.h index 5d4ea5e1..1a0f9d3c 100644 --- a/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.h +++ b/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.h @@ -13,8 +13,41 @@ UCLASS() class ENDLESSVENDETTA_API ABountyHunterCharacter : public AEndlessVendettaCharacter { GENERATED_BODY() +// ------------------- ATTRIBUTES ------------------------------ -protected: + // Array of Main Bounties' Classes in Order + UPROPERTY(EditDefaultsOnly, Category = "Bounty Hunter") + TArray> MainBountyClasses; + + // Reference to the Currently Active Main Bounty + UPROPERTY(VisibleAnywhere, Category = "Bounty Hunter") + AMainBountyClass* ActiveMainBounty; + + // Index of Currently Active Main Bounty, Used for MainBountyClasses + int CurrentMainBountyIndex = 0; + +protected: + + +public: + + +// ------------------- METHODS --------------------------------- +private: + // Spawns Main Bounty from MainBountyClasses at the CurrentMainBountyIndex, along with its Side Bounties + UFUNCTION(BlueprintCallable, Category = "Bounty Hunter") + void SpawnBounties(); + + // Checks if Player Completed Current Main Bounty, if so Collects Reward and Tries to Move onto Next Main Bounty + UFUNCTION(BlueprintCallable, Category = "Bounty Hunter") + void CompleteCurrentMainBounty(); + +protected: + // Called When Player Spawns virtual void BeginPlay() override; + + // Called every frame + virtual void Tick(float DeltaTime) override; +public: }; From 773c69a99bf6d34906758b2fe591d54630c855e8 Mon Sep 17 00:00:00 2001 From: PHILIP WHITE Date: Tue, 23 Jan 2024 22:03:06 +0000 Subject: [PATCH 036/112] Update Dialogue System for Unlimited Choices --- EndlessVendetta/Content/Dialogue/BP_ChoiceButton.uasset | 3 +++ EndlessVendetta/Content/Dialogue/BP_DialogueUI.uasset | 4 ++-- .../Content/Dialogue/Testing/TestDialogueTree.uasset | 4 ++-- .../EndlessVendetta/DialogueSystem/DialogueChoiceNode.cpp | 3 ++- .../EndlessVendetta/DialogueSystem/DialogueChoiceNode.h | 6 +----- 5 files changed, 10 insertions(+), 10 deletions(-) create mode 100644 EndlessVendetta/Content/Dialogue/BP_ChoiceButton.uasset diff --git a/EndlessVendetta/Content/Dialogue/BP_ChoiceButton.uasset b/EndlessVendetta/Content/Dialogue/BP_ChoiceButton.uasset new file mode 100644 index 00000000..99fe8f57 --- /dev/null +++ b/EndlessVendetta/Content/Dialogue/BP_ChoiceButton.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:92491ea67e7c30c15a81fb5f3f5ea677337f308489c06b92509a99b0fc6ad5bb +size 47654 diff --git a/EndlessVendetta/Content/Dialogue/BP_DialogueUI.uasset b/EndlessVendetta/Content/Dialogue/BP_DialogueUI.uasset index 9f3915c0..085864ef 100644 --- a/EndlessVendetta/Content/Dialogue/BP_DialogueUI.uasset +++ b/EndlessVendetta/Content/Dialogue/BP_DialogueUI.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:047d1379f4ccba4e09d8a17663400ec72aa8143be0404993b4195c6e707683ed -size 294565 +oid sha256:35908c5dcdb5143afd98a83341d8cb46d90ab1430b3d365f1b4707d85c793c70 +size 224018 diff --git a/EndlessVendetta/Content/Dialogue/Testing/TestDialogueTree.uasset b/EndlessVendetta/Content/Dialogue/Testing/TestDialogueTree.uasset index f225d161..7fb3c240 100644 --- a/EndlessVendetta/Content/Dialogue/Testing/TestDialogueTree.uasset +++ b/EndlessVendetta/Content/Dialogue/Testing/TestDialogueTree.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:85744af1e8b9b15150bb480251591069d637cca3792bb42111744a77347ddc06 -size 17581 +oid sha256:bc2cc9b626876c809e9b28673d8aefcf1a83071621cd270863751b61c5b2ae53 +size 22144 diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueChoiceNode.cpp b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueChoiceNode.cpp index a36202da..6fa8ff9d 100644 --- a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueChoiceNode.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueChoiceNode.cpp @@ -16,7 +16,8 @@ UDialogueChoiceNode::UDialogueChoiceNode() FText UDialogueChoiceNode::GetNodeTitle() const { - return NodeTitle.IsEmpty() ? LOCTEXT("Choice Node", "Choice Node") : NodeTitle; + const FText ChoiceNodeTitle = NodeTitle.IsEmpty() ? LOCTEXT("Choice Node", "Choice Node") : NodeTitle; + return FText::Format(LOCTEXT("Choice Node Title", "{0} [{1}]"), ChoiceNodeTitle, FText::AsNumber(Choices.Num())); } FLinearColor UDialogueChoiceNode::GetBackgroundColor() const diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueChoiceNode.h b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueChoiceNode.h index e0d0512c..9f38ede7 100644 --- a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueChoiceNode.h +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueChoiceNode.h @@ -13,11 +13,7 @@ public: UDialogueChoiceNode(); UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Dialogue") - FString Choice1Text = "None"; - UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Dialogue") - FString Choice2Text = "None"; - UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Dialogue") - FString Choice3Text = "None"; + TArray Choices; #if WITH_EDITOR virtual FText GetNodeTitle() const override; From c3c1eee87dd7feae983ce827d33a3dde5efb93e0 Mon Sep 17 00:00:00 2001 From: MH261677 Date: Wed, 24 Jan 2024 16:03:03 +0000 Subject: [PATCH 037/112] Fixed sniper model being gone --- .../.idea.EndlessVendetta/.idea/workspace.xml | 41 ++++++++++--------- .../BaseWeapons/Snipers/BaseSniper.uasset | 4 +- 2 files changed, 23 insertions(+), 22 deletions(-) diff --git a/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml b/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml index 8fc20d53..9af72f96 100644 --- a/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml +++ b/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml @@ -8,7 +8,7 @@ - + - { - "keyToString": { - "C++ Project.EndlessVendetta.executor": "Run", - "RunOnceActivity.OpenProjectViewOnStart": "true", - "RunOnceActivity.ShowReadmeOnStart": "true", - "git-widget-placeholder": "HomeHub-Tutorial", - "ignore.virus.scanning.warn.message": "true", - "node.js.detected.package.eslint": "true", - "node.js.detected.package.tslint": "true", - "node.js.selected.package.eslint": "(autodetect)", - "node.js.selected.package.tslint": "(autodetect)", - "nodejs_package_manager_path": "npm", - "vue.rearranger.settings.migration": "true" + +}]]> @@ -126,6 +126,7 @@ + diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Snipers/BaseSniper.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Snipers/BaseSniper.uasset index 9c558f37..658f6c74 100644 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Snipers/BaseSniper.uasset +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Snipers/BaseSniper.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f96592b4b4a601faa17cc21653226506c222259441097ed328b9775d5f12a37b -size 127654 +oid sha256:cf3cb3f1c18d9cef57e27220662bc04a7cfb0de1aff48d810eaefeed37c29d20 +size 127332 From 9c48ae94657f96ce72adc8bbc91539fffdb1fdf6 Mon Sep 17 00:00:00 2001 From: Rafal Swierczek Date: Wed, 24 Jan 2024 20:51:56 +0000 Subject: [PATCH 038/112] Seperated Tutorial Facility from Open World --- EndlessVendetta/Content/Levels/ControlTutorialLevel.umap | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/EndlessVendetta/Content/Levels/ControlTutorialLevel.umap b/EndlessVendetta/Content/Levels/ControlTutorialLevel.umap index 61ed65db..23faf0e1 100644 --- a/EndlessVendetta/Content/Levels/ControlTutorialLevel.umap +++ b/EndlessVendetta/Content/Levels/ControlTutorialLevel.umap @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4e163b387d84ec92405f0e0a24ed573ebf6052c2d1a2c060bbbd6b5ecb357871 -size 17667160 +oid sha256:924ade82fb0a438d9bc4dcfd060169432df9be4026eb3d47c5e3c24e2caf8eb5 +size 3452050 From 3558936f869ae6d9982a2331559f87b6983c0ce7 Mon Sep 17 00:00:00 2001 From: Rafal Swierczek Date: Wed, 24 Jan 2024 20:52:44 +0000 Subject: [PATCH 039/112] WIP Refactoring Main Bounty and Bounty Classes to Fit New Save System --- .../.idea.EndlessVendetta/.idea/workspace.xml | 49 +++++++----- .../Content/Ships/BP_HomeShip.uasset | 4 +- .../HDRI/HDRI_Epic_Courtyard_Daylight.uasset | 4 +- .../Props/MaterialSphere.uasset | 4 +- .../BountySystem/BountyClass.cpp | 76 +++++++++---------- .../BountySystem/BountyClass.h | 65 +++++++++++----- .../BountySystem/MainBountyClass.cpp | 2 +- .../BountySystem/MainBountyClass.h | 40 ++++++++++ .../Characters/BountyHunterCharacter.cpp | 15 +++- .../Characters/BountyHunterCharacter.h | 9 ++- 10 files changed, 175 insertions(+), 93 deletions(-) diff --git a/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml b/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml index 0712731c..077ae932 100644 --- a/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml +++ b/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml @@ -9,6 +9,14 @@ + + + + + + + + @@ -32,28 +40,28 @@ - { + "keyToString": { + "C++ Project.EndlessVendetta.executor": "Run", + "RunOnceActivity.OpenProjectViewOnStart": "true", + "RunOnceActivity.ShowReadmeOnStart": "true", + "git-widget-placeholder": "Bounty-System-Rework", + "ignore.virus.scanning.warn.message": "true", + "node.js.detected.package.eslint": "true", + "node.js.detected.package.tslint": "true", + "node.js.selected.package.eslint": "(autodetect)", + "node.js.selected.package.tslint": "(autodetect)", + "nodejs_package_manager_path": "npm", + "vue.rearranger.settings.migration": "true" }, - "keyToStringList": { - "rider.external.source.directories": [ - "C:\\Users\\Rafal\\AppData\\Roaming\\JetBrains\\Rider2023.3\\resharper-host\\DecompilerCache", - "C:\\Users\\Rafal\\AppData\\Roaming\\JetBrains\\Rider2023.3\\resharper-host\\SourcesCache", - "C:\\Users\\Rafal\\AppData\\Local\\Symbols\\src" + "keyToStringList": { + "rider.external.source.directories": [ + "C:\\Users\\Rafal\\AppData\\Roaming\\JetBrains\\Rider2023.3\\resharper-host\\DecompilerCache", + "C:\\Users\\Rafal\\AppData\\Roaming\\JetBrains\\Rider2023.3\\resharper-host\\SourcesCache", + "C:\\Users\\Rafal\\AppData\\Local\\Symbols\\src" ] } -}]]> +} @@ -128,7 +136,8 @@ - + + diff --git a/EndlessVendetta/Content/Ships/BP_HomeShip.uasset b/EndlessVendetta/Content/Ships/BP_HomeShip.uasset index 2fcb8256..f47c8e96 100644 --- a/EndlessVendetta/Content/Ships/BP_HomeShip.uasset +++ b/EndlessVendetta/Content/Ships/BP_HomeShip.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5adf54f06d91186e171b05251396919a7994ee9c88964a4a49a4743058b2df8b -size 38469 +oid sha256:9b365fc235303095ae9a94177656b3e5294012ada186a2f0d89de08cb38bf2d3 +size 38349 diff --git a/EndlessVendetta/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset b/EndlessVendetta/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset index 18f8607f..0f990580 100644 --- a/EndlessVendetta/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset +++ b/EndlessVendetta/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5157054a7a77739110951ad6d64e24c93647e7665eef16e6944fd1481d4d750a -size 66790690 +oid sha256:bc35eb2d43a47427d30aba0196f9eac90d089dd3abca319528c5d25c83510d0d +size 72364642 diff --git a/EndlessVendetta/Content/StarterContent/Props/MaterialSphere.uasset b/EndlessVendetta/Content/StarterContent/Props/MaterialSphere.uasset index 56bddfc9..9e0086d5 100644 --- a/EndlessVendetta/Content/StarterContent/Props/MaterialSphere.uasset +++ b/EndlessVendetta/Content/StarterContent/Props/MaterialSphere.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3a8777c01491888bba9f40eda9d2bed76a611f0e80f75917501ce69c1a321342 -size 47333 +oid sha256:15d4eb8d338ada66c517c7456f15f4382c8b63ccb2bb10170cd5b6b9a7fae19e +size 47710 diff --git a/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyClass.cpp b/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyClass.cpp index 7ef3ff9d..e96b02ca 100644 --- a/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyClass.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyClass.cpp @@ -11,18 +11,14 @@ ABountyClass::ABountyClass() } -void ABountyClass::BeginPlay() +void ABountyClass::ActivateFirstCheckpoint() { - Super::BeginPlay(); - - SpawnCheckpoints(); + if (BountyCheckpoints.IsEmpty() || BountyCheckpoints[0] == nullptr) return; -} - -void ABountyClass::Tick(float DeltaTime) -{ - Super::Tick(DeltaTime); - + BountyCheckpoints[0]->Active = true; + BountyCheckpoints[0]->SpawnWaypoint(BountyTitle); + BountyCheckpoints[0]->CheckpointActivated(); + BountyCheckpoints[0]->CompletedCheckpoint.AddDynamic(this, &ABountyClass::IncrementBountyCheckpoint); } void ABountyClass::SpawnCheckpoints() @@ -46,49 +42,45 @@ void ABountyClass::SpawnCheckpoints() BountyCheckpoints.Add(SpawnedCheckpoint); } - // Activate the first checkpoint and listen for its completion - BountyCheckpoints[0]->Active = true; - BountyCheckpoints[0]->SpawnWaypoint(BountyTitle); - BountyCheckpoints[0]->CheckpointActivated(); - BountyCheckpoints[0]->CompletedCheckpoint.AddDynamic(this, &ABountyClass::IncrementBountyCheckpoint); + ActivateFirstCheckpoint(); } void ABountyClass::IncrementBountyCheckpoint() { + // --------------------------------------------------------------------------------------------------------------------- // Broadcast that the first Checkpoint has been completed so that side bounties can be destroyed - if (!BountyStarted) - { - BountyStarted = true; - CompletedFirstCheckpoint.Broadcast(); - } - - // Bounty Completion Condition - if (BountyCheckpoints.Num() <= 1) - { - Completed = true; - BountyCheckpoints[0]->Active = false; - BountyCheckpoints[0]->Destroy(); - BountyCheckpoints.RemoveAt(0); - UE_LOG(LogTemp, Warning, TEXT(" You've Completed the Bounty!! Well done")); - return; - } - - if (BountyCheckpoints[0] == nullptr) - { - UE_LOG(LogTemp, Fatal, TEXT("Missing checkpoint in bounty checkpoints, could've failed to spawn or cast")); - return; - } + // if (!BountyStarted) + // { + // BountyStarted = true; + // CompletedFirstCheckpoint.Broadcast(); + // } + // + // // Bounty Completion Condition + // if (BountyCheckpoints.Num() <= 1) + // { + // Completed = true; + // BountyCheckpoints[0]->Active = false; + // BountyCheckpoints[0]->Destroy(); + // BountyCheckpoints.RemoveAt(0); + // UE_LOG(LogTemp, Warning, TEXT(" You've Completed the Bounty!! Well done")); + // return; + // } + // + // if (BountyCheckpoints[0] == nullptr) + // { + // UE_LOG(LogTemp, Fatal, TEXT("Missing checkpoint in bounty checkpoints, could've failed to spawn or cast")); + // return; + // } + //--------------------------------------------------------------------------------------------------------------------- + if (BountyCheckpoints.IsEmpty() || BountyCheckpoints[0] == nullptr) return; + // Destroy Actor and Shrink Array BountyCheckpoints[0]->Active = false; BountyCheckpoints[0]->Destroy(); BountyCheckpoints.RemoveAt(0); - // Set the new checkpoint in pos 0 to be active and listen for it's completion - BountyCheckpoints[0]->Active = true; - BountyCheckpoints[0]->SpawnWaypoint(BountyTitle); - BountyCheckpoints[0]->CheckpointActivated(); - BountyCheckpoints[0]->CompletedCheckpoint.AddDynamic(this, &ABountyClass::IncrementBountyCheckpoint); + ActivateFirstCheckpoint(); } void ABountyClass::CollectRewards_Implementation() diff --git a/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyClass.h b/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyClass.h index 35b33288..a0216f7d 100644 --- a/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyClass.h +++ b/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyClass.h @@ -14,15 +14,53 @@ class ENDLESSVENDETTA_API ABountyClass : public AActor { GENERATED_BODY() - // Used to temp store value of incoming replacement checkpoint class - TSubclassOf ReplacementCheckpointClass; +// ------------------- ATTRIBUTES ------------------------------ + + // Array of Checkpoint Classes to Spawn for this Bounty + UPROPERTY(EditDefaultsOnly, Category = "Bounty") + TArray> CheckpointsToSpawn; + +protected: + // Has a Get Func, Used for Identifying if the Bounty has been Completed + bool Completed = false; + + // Array of References to the Spawned in Checkpoints for this Bounty + TArray BountyCheckpoints; + +public: + + +// ------------------- METHODS --------------------------------- +private: + // Activate the First Checkpoint in Bounty Checkpoints and Listen for its Completion + void ActivateFirstCheckpoint(); + +protected: + // Called when a checkpoint is completed, handles moving onto next checkpoint and discarding the old one + UFUNCTION() + virtual void IncrementBountyCheckpoint(); + +public: + // Sets default values for this actor's properties + ABountyClass(); + + // Spawns and stores this Bounties Checkpoints in order + void SpawnCheckpoints(); + + + + + + + +// ------------------- LEGACY CODE TO BE REWORKED --------------------------------- + bool BountyStarted = false; protected: // ------- Properties Set in Editor -------------- - UPROPERTY(EditDefaultsOnly, Category = "Bounty") - TArray> CheckpointsToSpawn; + UPROPERTY(EditDefaultsOnly, Category = "Bounty") int RewardMoney = 0; @@ -34,22 +72,16 @@ protected: FString BountyDesc; // ----------------------------------------------- - bool Completed = false; - // Spawned in Checkpoints for this Bounty - TArray BountyCheckpoints; - - // Spawns and stores this Bounties Checkpoints in order - void SpawnCheckpoints(); - // Called when the game starts or when spawned - virtual void BeginPlay() override; public: // Broadcast when first checkpoint from this bounty is completed FCompletedFirstCheckpoint CompletedFirstCheckpoint; + + // ------ Getters for Bounty and Checkpoint Properties ------ bool IsCompleted() { @@ -102,16 +134,7 @@ public: } // ---------------------------------------------------------- - - // Sets default values for this actor's properties - ABountyClass(); - - // Called every frame - virtual void Tick(float DeltaTime) override; - // Called when a checkpoint is completed, handles moving onto next checkpoint and discarding the old one - UFUNCTION() - virtual void IncrementBountyCheckpoint(); // Collect Money in C++, any other special reward will be implemented in BP if neccessary UFUNCTION(BlueprintCallable, BlueprintNativeEvent) diff --git a/EndlessVendetta/Source/EndlessVendetta/BountySystem/MainBountyClass.cpp b/EndlessVendetta/Source/EndlessVendetta/BountySystem/MainBountyClass.cpp index cab4f924..71fd48fc 100644 --- a/EndlessVendetta/Source/EndlessVendetta/BountySystem/MainBountyClass.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/BountySystem/MainBountyClass.cpp @@ -1,4 +1,4 @@ -// Fill out your copyright notice in the Description page of Project Settings. + // Fill out your copyright notice in the Description page of Project Settings. #include "MainBountyClass.h" diff --git a/EndlessVendetta/Source/EndlessVendetta/BountySystem/MainBountyClass.h b/EndlessVendetta/Source/EndlessVendetta/BountySystem/MainBountyClass.h index 6ec84be1..c4021f06 100644 --- a/EndlessVendetta/Source/EndlessVendetta/BountySystem/MainBountyClass.h +++ b/EndlessVendetta/Source/EndlessVendetta/BountySystem/MainBountyClass.h @@ -15,8 +15,46 @@ class ENDLESSVENDETTA_API AMainBountyClass : public ABountyClass { GENERATED_BODY() +// ------------------- ATTRIBUTES ------------------------------ + // Used to Spawn Open World Checkpoint for this Main Bounty + UPROPERTY(EditDefaultsOnly, Category = "Bounty") + TSubclassOf OpenWorldCheckpointClass; + + // Only Function of this Checkpoint is to Guide the Player to the Bounty Start Area + ACheckpointClass* OpenWorldCheckpointRef; + +protected: + + +public: + + +// ------------------- METHODS --------------------------------- +private: + // Overrides to Display Correct Tip for Checkpoint void IncrementBountyCheckpoint() override; +protected: + // Sets completed to true when last checkpoint broadcasts completion + UFUNCTION() + void CompletedMainBounty() + { + Completed = true; + } + +public: + // Spawns the Single Checkpoint in the Open World for this Main Bounty + void SpawnOpenWorldCheckpoint() + { + UE_LOG(LogTemp, Warning, TEXT("Spawning Open World Checkpoint")); + } + + + + + + +// ------------------- LEGACY CODE TO BE REWORKED --------------------------------- protected: UPROPERTY(EditDefaultsOnly, Category = "Bounty") TArray> SideBountiesToSpawn; @@ -47,6 +85,8 @@ public: { return SideBountiesToSpawn; } + + // ------------- Custom Bounty Alterations ------------- UFUNCTION(BlueprintImplementableEvent, Category = "Bounty") diff --git a/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.cpp b/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.cpp index 2e412a0f..61d9e08f 100644 --- a/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.cpp @@ -3,9 +3,21 @@ #include "BountyHunterCharacter.h" +#include "Kismet/GameplayStatics.h" + void ABountyHunterCharacter::SpawnBounties() { + if (MainBountyClasses.IsEmpty() || !IsValid(MainBountyClasses[CurrentMainBountyIndex])) return; + + UE_LOG(LogTemp, Warning, TEXT("Spawning Bounty...")); + + UGameplayStatics::save + CurrentMainBounty = GetWorld()->SpawnActor(MainBountyClasses[CurrentMainBountyIndex]); + const FAttachmentTransformRules AttachmentTransformRules(EAttachmentRule::SnapToTarget, true); + AttachToComponent(GetRootComponent(), AttachmentTransformRules); + + UGameplayStatics::GetCurrentLevelName(GetWorld()) == OpenWorldLevelName ? CurrentMainBounty->SpawnOpenWorldCheckpoint() : CurrentMainBounty->SpawnCheckpoints(); } void ABountyHunterCharacter::CompleteCurrentMainBounty() @@ -15,7 +27,8 @@ void ABountyHunterCharacter::CompleteCurrentMainBounty() void ABountyHunterCharacter::BeginPlay() { - Super::BeginPlay(); + SpawnBounties(); + Super::BeginPlay(); } void ABountyHunterCharacter::Tick(float DeltaTime) diff --git a/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.h b/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.h index 1a0f9d3c..f3a4eacf 100644 --- a/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.h +++ b/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.h @@ -4,6 +4,7 @@ #include "CoreMinimal.h" #include "EndlessVendetta/EndlessVendettaCharacter.h" +#include "EndlessVendetta/BountySystem/MainBountyClass.h" #include "BountyHunterCharacter.generated.h" /** @@ -21,10 +22,14 @@ class ENDLESSVENDETTA_API ABountyHunterCharacter : public AEndlessVendettaCharac // Reference to the Currently Active Main Bounty UPROPERTY(VisibleAnywhere, Category = "Bounty Hunter") - AMainBountyClass* ActiveMainBounty; + AMainBountyClass* CurrentMainBounty; // Index of Currently Active Main Bounty, Used for MainBountyClasses int CurrentMainBountyIndex = 0; + + // Name of open world, so that the correct bounties can be spawned based on level + UPROPERTY(EditDefaultsOnly, Category = "Bounty Hunter") + FString OpenWorldLevelName = "ControlTutorialLevel"; protected: @@ -34,7 +39,7 @@ public: // ------------------- METHODS --------------------------------- private: - // Spawns Main Bounty from MainBountyClasses at the CurrentMainBountyIndex, along with its Side Bounties + // Spawns Current Main Bounty along with its Side Bounties, and spawns its appropriate CP's based on level UFUNCTION(BlueprintCallable, Category = "Bounty Hunter") void SpawnBounties(); From 999460c3e10ee74a7cd2f8443b64c5dc75f94dc4 Mon Sep 17 00:00:00 2001 From: Rafal Swierczek Date: Thu, 25 Jan 2024 02:42:19 +0000 Subject: [PATCH 040/112] Implemented Main Menu Level with a Cinematic Level Sequence --- .../.idea/.idea.EndlessVendetta/.idea/workspace.xml | 12 +----------- EndlessVendetta/Config/DefaultEngine.ini | 4 ++-- EndlessVendetta/Config/DefaultGame.ini | 1 + EndlessVendetta/Content/Levels/MainMenuLevel.umap | 3 +++ .../MainMenu/Gameplay/MainMenuCharacter.uasset | 3 +++ .../MainMenu/Gameplay/MainMenuGameMode.uasset | 3 +++ .../Gameplay/MainMenuPlayerController.uasset | 3 +++ .../Content/MainMenu/MainMenuGameMode.uasset | 3 +++ .../Content/MainMenu/MainMenuLevelSequence.uasset | 3 +++ .../Content/MainMenu/Widgets/WBP_MainMenu.uasset | 3 +++ .../MainMenu/Widgets/WBP_MainMenuSequenceFade.uasset | 3 +++ .../Content/MainMenu/Widgets/WBP_StudioIntro.uasset | 3 +++ 12 files changed, 31 insertions(+), 13 deletions(-) create mode 100644 EndlessVendetta/Content/Levels/MainMenuLevel.umap create mode 100644 EndlessVendetta/Content/MainMenu/Gameplay/MainMenuCharacter.uasset create mode 100644 EndlessVendetta/Content/MainMenu/Gameplay/MainMenuGameMode.uasset create mode 100644 EndlessVendetta/Content/MainMenu/Gameplay/MainMenuPlayerController.uasset create mode 100644 EndlessVendetta/Content/MainMenu/MainMenuGameMode.uasset create mode 100644 EndlessVendetta/Content/MainMenu/MainMenuLevelSequence.uasset create mode 100644 EndlessVendetta/Content/MainMenu/Widgets/WBP_MainMenu.uasset create mode 100644 EndlessVendetta/Content/MainMenu/Widgets/WBP_MainMenuSequenceFade.uasset create mode 100644 EndlessVendetta/Content/MainMenu/Widgets/WBP_StudioIntro.uasset diff --git a/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml b/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml index 077ae932..25236c1e 100644 --- a/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml +++ b/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml @@ -9,16 +9,6 @@ - - - - - - - - - - diff --git a/EndlessVendetta/Config/DefaultEngine.ini b/EndlessVendetta/Config/DefaultEngine.ini index 43b2de20..fb4f7741 100644 --- a/EndlessVendetta/Config/DefaultEngine.ini +++ b/EndlessVendetta/Config/DefaultEngine.ini @@ -60,7 +60,7 @@ +CollisionChannelRedirects=(OldName="PawnMovement",NewName="Pawn") [/Script/EngineSettings.GameMapsSettings] -EditorStartupMap=/Game/Levels/ControlTutorialLevel.ControlTutorialLevel +EditorStartupMap=/Game/Levels/MainMenuLevel.MainMenuLevel LocalMapOptions= TransitionMap=None bUseSplitscreen=True @@ -69,7 +69,7 @@ ThreePlayerSplitscreenLayout=FavorTop FourPlayerSplitscreenLayout=Grid bOffsetPlayerGamepadIds=False GameInstanceClass=/Script/EndlessVendetta.EVGameInstance -GameDefaultMap=/Game/Levels/ControlTutorialLevel.ControlTutorialLevel +GameDefaultMap=/Game/Levels/MainMenuLevel.MainMenuLevel ServerDefaultMap=/Engine/Maps/Entry.Entry GlobalDefaultGameMode=/Script/EndlessVendetta.EndlessVendettaGameMode GlobalDefaultServerGameMode=None diff --git a/EndlessVendetta/Config/DefaultGame.ini b/EndlessVendetta/Config/DefaultGame.ini index 224486bc..74c62984 100644 --- a/EndlessVendetta/Config/DefaultGame.ini +++ b/EndlessVendetta/Config/DefaultGame.ini @@ -101,6 +101,7 @@ bSkipMovies=False +IniSectionDenylist=StorageServers +MapsToCook=(FilePath="/Game/Levels/ControlTutorialLevel") +MapsToCook=(FilePath="/Game/Levels/Apartment_hit") ++MapsToCook=(FilePath="/Game/Levels/MainMenuLevel") +DirectoriesToAlwaysCook=(Path="/Interchange/Functions") +DirectoriesToAlwaysCook=(Path="/Interchange/gltf") +DirectoriesToAlwaysCook=(Path="/Interchange/Materials") diff --git a/EndlessVendetta/Content/Levels/MainMenuLevel.umap b/EndlessVendetta/Content/Levels/MainMenuLevel.umap new file mode 100644 index 00000000..c19bf88e --- /dev/null +++ b/EndlessVendetta/Content/Levels/MainMenuLevel.umap @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e8ae028917d26ffb15ff94dda3d501eddcb38c696f249fc2f109a96724bc981 +size 298322 diff --git a/EndlessVendetta/Content/MainMenu/Gameplay/MainMenuCharacter.uasset b/EndlessVendetta/Content/MainMenu/Gameplay/MainMenuCharacter.uasset new file mode 100644 index 00000000..51e22328 --- /dev/null +++ b/EndlessVendetta/Content/MainMenu/Gameplay/MainMenuCharacter.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:402426e80078bade413ec8c155d3b75b527978e2364d7e38c6b7dfb7edc104e2 +size 23103 diff --git a/EndlessVendetta/Content/MainMenu/Gameplay/MainMenuGameMode.uasset b/EndlessVendetta/Content/MainMenu/Gameplay/MainMenuGameMode.uasset new file mode 100644 index 00000000..2aa1f19e --- /dev/null +++ b/EndlessVendetta/Content/MainMenu/Gameplay/MainMenuGameMode.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77f694765327ae7ced9a163d61f69472fcd8b629eda7649b0cab4936ab36c07d +size 19647 diff --git a/EndlessVendetta/Content/MainMenu/Gameplay/MainMenuPlayerController.uasset b/EndlessVendetta/Content/MainMenu/Gameplay/MainMenuPlayerController.uasset new file mode 100644 index 00000000..4e642092 --- /dev/null +++ b/EndlessVendetta/Content/MainMenu/Gameplay/MainMenuPlayerController.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f49c60c63de3be4242a3358e1667cea86891ac46198994c30ff70881643ca3b3 +size 61135 diff --git a/EndlessVendetta/Content/MainMenu/MainMenuGameMode.uasset b/EndlessVendetta/Content/MainMenu/MainMenuGameMode.uasset new file mode 100644 index 00000000..120877b5 --- /dev/null +++ b/EndlessVendetta/Content/MainMenu/MainMenuGameMode.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:02c10b675c4a29abf6f9b7a4da2be54839783e3b31fa9ccefbd8b98784480c23 +size 2460 diff --git a/EndlessVendetta/Content/MainMenu/MainMenuLevelSequence.uasset b/EndlessVendetta/Content/MainMenu/MainMenuLevelSequence.uasset new file mode 100644 index 00000000..7cb23377 --- /dev/null +++ b/EndlessVendetta/Content/MainMenu/MainMenuLevelSequence.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:40b6fe4997aac2fb85d7adae23cdece606540e7e0c4f2922de025d98e20a1f7f +size 102280 diff --git a/EndlessVendetta/Content/MainMenu/Widgets/WBP_MainMenu.uasset b/EndlessVendetta/Content/MainMenu/Widgets/WBP_MainMenu.uasset new file mode 100644 index 00000000..31cb3809 --- /dev/null +++ b/EndlessVendetta/Content/MainMenu/Widgets/WBP_MainMenu.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6181603ee2ba0d5e1635ef3b538ab44505ad772121a3ab9cb92ff8d9ce5f8224 +size 41056 diff --git a/EndlessVendetta/Content/MainMenu/Widgets/WBP_MainMenuSequenceFade.uasset b/EndlessVendetta/Content/MainMenu/Widgets/WBP_MainMenuSequenceFade.uasset new file mode 100644 index 00000000..31ab59b2 --- /dev/null +++ b/EndlessVendetta/Content/MainMenu/Widgets/WBP_MainMenuSequenceFade.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3db0e8cde21f61ee69a8556a7e4091ef9dfadc39679eaace9185918351dd2bcf +size 57284 diff --git a/EndlessVendetta/Content/MainMenu/Widgets/WBP_StudioIntro.uasset b/EndlessVendetta/Content/MainMenu/Widgets/WBP_StudioIntro.uasset new file mode 100644 index 00000000..802b2be3 --- /dev/null +++ b/EndlessVendetta/Content/MainMenu/Widgets/WBP_StudioIntro.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2fc9e802496b96fce577dd02600d98755c0eb2499d038b7a7b1f14cbc7226999 +size 68533 From c72eb741234ab1338a6dfc087192e71ab50e34f4 Mon Sep 17 00:00:00 2001 From: Rafal Swierczek Date: Thu, 25 Jan 2024 03:19:44 +0000 Subject: [PATCH 041/112] Added Buttons and Audio to Main Menu --- .../RingModule/Ringtones/TempRingTone_Cue_1.uasset | 4 ++-- EndlessVendetta/Content/Levels/MainMenuLevel.umap | 2 +- .../Content/MainMenu/Gameplay/MainMenuPlayerController.uasset | 4 ++-- EndlessVendetta/Content/MainMenu/Widgets/WBP_MainMenu.uasset | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/Ringtones/TempRingTone_Cue_1.uasset b/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/Ringtones/TempRingTone_Cue_1.uasset index d69e0e6a..47972023 100644 --- a/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/Ringtones/TempRingTone_Cue_1.uasset +++ b/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/Ringtones/TempRingTone_Cue_1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:00265bc01e803ae78c9486a50cdb2fe60b93de0d265a599dec052b079cc724c8 -size 4272 +oid sha256:a59d5848a9889747f69cfc80ff33d051308070c9764d0836994374b37c6038c5 +size 5353 diff --git a/EndlessVendetta/Content/Levels/MainMenuLevel.umap b/EndlessVendetta/Content/Levels/MainMenuLevel.umap index c19bf88e..ee514e21 100644 --- a/EndlessVendetta/Content/Levels/MainMenuLevel.umap +++ b/EndlessVendetta/Content/Levels/MainMenuLevel.umap @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4e8ae028917d26ffb15ff94dda3d501eddcb38c696f249fc2f109a96724bc981 +oid sha256:dd3739eda1c2496b7c5dc172fff7a588154fdcd821c612726eb87f03056f4d59 size 298322 diff --git a/EndlessVendetta/Content/MainMenu/Gameplay/MainMenuPlayerController.uasset b/EndlessVendetta/Content/MainMenu/Gameplay/MainMenuPlayerController.uasset index 4e642092..b92e3904 100644 --- a/EndlessVendetta/Content/MainMenu/Gameplay/MainMenuPlayerController.uasset +++ b/EndlessVendetta/Content/MainMenu/Gameplay/MainMenuPlayerController.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f49c60c63de3be4242a3358e1667cea86891ac46198994c30ff70881643ca3b3 -size 61135 +oid sha256:7e43597b76b2e65851699082975c5d4d329bf07743e22ac19089e90b7c72b0a0 +size 81778 diff --git a/EndlessVendetta/Content/MainMenu/Widgets/WBP_MainMenu.uasset b/EndlessVendetta/Content/MainMenu/Widgets/WBP_MainMenu.uasset index 31cb3809..a0aa11a1 100644 --- a/EndlessVendetta/Content/MainMenu/Widgets/WBP_MainMenu.uasset +++ b/EndlessVendetta/Content/MainMenu/Widgets/WBP_MainMenu.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6181603ee2ba0d5e1635ef3b538ab44505ad772121a3ab9cb92ff8d9ce5f8224 -size 41056 +oid sha256:ad2145bd0966472427ae089a6cd1bb36889010361d292d8db90663410e96e909 +size 76701 From fd5b82693adf4e94dafdefd715dfda492e13facc Mon Sep 17 00:00:00 2001 From: Rafal Swierczek Date: Thu, 25 Jan 2024 03:56:29 +0000 Subject: [PATCH 042/112] Created TempOpenWorld Level for Testing Save System --- EndlessVendetta/Content/Levels/TempOpenWorld.umap | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 EndlessVendetta/Content/Levels/TempOpenWorld.umap diff --git a/EndlessVendetta/Content/Levels/TempOpenWorld.umap b/EndlessVendetta/Content/Levels/TempOpenWorld.umap new file mode 100644 index 00000000..eb20bf8b --- /dev/null +++ b/EndlessVendetta/Content/Levels/TempOpenWorld.umap @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:72268ce2c312e91ebe26900c51cd832b04ab9575f17ebcf77940391fcbb5f1ec +size 13860483 From 1e5afffcd817b79401a5e3b5077d5ec47d524153 Mon Sep 17 00:00:00 2001 From: Rafal Swierczek Date: Thu, 25 Jan 2024 04:24:10 +0000 Subject: [PATCH 043/112] Implemented MainSaveGameClass into Main Menu Buttons --- .../.idea.EndlessVendetta/.idea/workspace.xml | 9 +++++++- .../Blueprints/BP_FirstPersonCharacter.uasset | 4 ++-- .../Content/Levels/MainMenuLevel.umap | 4 ++-- .../Content/Levels/TempOpenWorld.umap | 4 ++-- .../Content/MainMenu/BP_MainSaveGame.uasset | 3 +++ .../Gameplay/MainMenuPlayerController.uasset | 4 ++-- .../MainMenu/Widgets/WBP_MainMenu.uasset | 4 ++-- .../StarterContent/Audio/Collapse01.uasset | 4 ++-- .../Props/MaterialSphere.uasset | 4 ++-- .../Characters/BountyHunterCharacter.cpp | 2 -- .../EndlessVendetta/MainSaveGameClass.cpp | 5 +++++ .../EndlessVendetta/MainSaveGameClass.h | 22 +++++++++++++++++++ 12 files changed, 52 insertions(+), 17 deletions(-) create mode 100644 EndlessVendetta/Content/MainMenu/BP_MainSaveGame.uasset create mode 100644 EndlessVendetta/Source/EndlessVendetta/MainSaveGameClass.cpp create mode 100644 EndlessVendetta/Source/EndlessVendetta/MainSaveGameClass.h diff --git a/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml b/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml index 25236c1e..49e89891 100644 --- a/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml +++ b/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml @@ -9,6 +9,13 @@ + + + + + + + diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset index 173b36fe..8a5364f1 100644 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6b0713a508a47897e5751ea178e02c2d9627e12f34565f3a08f9a605b4ea2736 -size 455809 +oid sha256:4eb5c92180442aaa9dae7586d0d0effec22d5dc4ca432330aac7899e893ba608 +size 458530 diff --git a/EndlessVendetta/Content/Levels/MainMenuLevel.umap b/EndlessVendetta/Content/Levels/MainMenuLevel.umap index ee514e21..3680fc8b 100644 --- a/EndlessVendetta/Content/Levels/MainMenuLevel.umap +++ b/EndlessVendetta/Content/Levels/MainMenuLevel.umap @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dd3739eda1c2496b7c5dc172fff7a588154fdcd821c612726eb87f03056f4d59 -size 298322 +oid sha256:fb7901ee6817276134b5a654dd76bdffbeec528eb8c6d20e2632dc2109b84a1b +size 299666 diff --git a/EndlessVendetta/Content/Levels/TempOpenWorld.umap b/EndlessVendetta/Content/Levels/TempOpenWorld.umap index eb20bf8b..5f12a7eb 100644 --- a/EndlessVendetta/Content/Levels/TempOpenWorld.umap +++ b/EndlessVendetta/Content/Levels/TempOpenWorld.umap @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:72268ce2c312e91ebe26900c51cd832b04ab9575f17ebcf77940391fcbb5f1ec -size 13860483 +oid sha256:6aa987a4adaa4132382a1af348224f2ba5f444a7b030773bf82793802838143b +size 13860728 diff --git a/EndlessVendetta/Content/MainMenu/BP_MainSaveGame.uasset b/EndlessVendetta/Content/MainMenu/BP_MainSaveGame.uasset new file mode 100644 index 00000000..7293f3ec --- /dev/null +++ b/EndlessVendetta/Content/MainMenu/BP_MainSaveGame.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b13376b6f65cf5b384ddd7fed1bf5e9493e3781fdf90fab77ac437d77400f8ea +size 6083 diff --git a/EndlessVendetta/Content/MainMenu/Gameplay/MainMenuPlayerController.uasset b/EndlessVendetta/Content/MainMenu/Gameplay/MainMenuPlayerController.uasset index b92e3904..b4ff8728 100644 --- a/EndlessVendetta/Content/MainMenu/Gameplay/MainMenuPlayerController.uasset +++ b/EndlessVendetta/Content/MainMenu/Gameplay/MainMenuPlayerController.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7e43597b76b2e65851699082975c5d4d329bf07743e22ac19089e90b7c72b0a0 -size 81778 +oid sha256:e53b5a7db63663ecc7aa6f67855b9933f0a7e19b00d5f828c45e44e44729a0ca +size 138439 diff --git a/EndlessVendetta/Content/MainMenu/Widgets/WBP_MainMenu.uasset b/EndlessVendetta/Content/MainMenu/Widgets/WBP_MainMenu.uasset index a0aa11a1..289edced 100644 --- a/EndlessVendetta/Content/MainMenu/Widgets/WBP_MainMenu.uasset +++ b/EndlessVendetta/Content/MainMenu/Widgets/WBP_MainMenu.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ad2145bd0966472427ae089a6cd1bb36889010361d292d8db90663410e96e909 -size 76701 +oid sha256:bb7364e8bc0576814cbb1332a7dc1c0468f3a04d683b98e4b117b2cab0033bf1 +size 114749 diff --git a/EndlessVendetta/Content/StarterContent/Audio/Collapse01.uasset b/EndlessVendetta/Content/StarterContent/Audio/Collapse01.uasset index 5e3ff30e..77bff400 100644 --- a/EndlessVendetta/Content/StarterContent/Audio/Collapse01.uasset +++ b/EndlessVendetta/Content/StarterContent/Audio/Collapse01.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:85c827023ee4b466228ec65e92b4b4a0415a106de041ac1c2cab481a2a5dfa8d -size 348532 +oid sha256:daf33f5c8c538d4454a1c4e29006d0c94de0bdb68e394a4364edf543b61905d3 +size 353648 diff --git a/EndlessVendetta/Content/StarterContent/Props/MaterialSphere.uasset b/EndlessVendetta/Content/StarterContent/Props/MaterialSphere.uasset index 9e0086d5..56bddfc9 100644 --- a/EndlessVendetta/Content/StarterContent/Props/MaterialSphere.uasset +++ b/EndlessVendetta/Content/StarterContent/Props/MaterialSphere.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:15d4eb8d338ada66c517c7456f15f4382c8b63ccb2bb10170cd5b6b9a7fae19e -size 47710 +oid sha256:3a8777c01491888bba9f40eda9d2bed76a611f0e80f75917501ce69c1a321342 +size 47333 diff --git a/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.cpp b/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.cpp index 61d9e08f..c43e3494 100644 --- a/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.cpp @@ -10,8 +10,6 @@ void ABountyHunterCharacter::SpawnBounties() if (MainBountyClasses.IsEmpty() || !IsValid(MainBountyClasses[CurrentMainBountyIndex])) return; UE_LOG(LogTemp, Warning, TEXT("Spawning Bounty...")); - - UGameplayStatics::save CurrentMainBounty = GetWorld()->SpawnActor(MainBountyClasses[CurrentMainBountyIndex]); const FAttachmentTransformRules AttachmentTransformRules(EAttachmentRule::SnapToTarget, true); diff --git a/EndlessVendetta/Source/EndlessVendetta/MainSaveGameClass.cpp b/EndlessVendetta/Source/EndlessVendetta/MainSaveGameClass.cpp new file mode 100644 index 00000000..dc698695 --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/MainSaveGameClass.cpp @@ -0,0 +1,5 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "MainSaveGameClass.h" + diff --git a/EndlessVendetta/Source/EndlessVendetta/MainSaveGameClass.h b/EndlessVendetta/Source/EndlessVendetta/MainSaveGameClass.h new file mode 100644 index 00000000..3f9d5606 --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/MainSaveGameClass.h @@ -0,0 +1,22 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/SaveGame.h" +#include "MainSaveGameClass.generated.h" + +/** + * + */ +UCLASS() +class ENDLESSVENDETTA_API UMainSaveGameClass : public USaveGame +{ + GENERATED_BODY() + +public: + bool HasCompletedCurrentMainBounty_Save; + + int CurrentMainBountyIndex_Save; + +}; From a2a8e53df40d63cf96360c765f1ea214556f2692 Mon Sep 17 00:00:00 2001 From: LOUIS HORNE Date: Thu, 25 Jan 2024 16:02:16 +0000 Subject: [PATCH 044/112] Added wardrobe and scaled some assets --- .../Tutorial-Level/Textures/Wardrobe/M_Wardrobe.uasset | 3 +++ .../Textures/Wardrobe/Wardrobe_low_Wardrobe_BaseColor.uasset | 3 +++ .../Textures/Wardrobe/Wardrobe_low_Wardrobe_Normal.uasset | 3 +++ .../Wardrobe_low_Wardrobe_OcclusionRoughnessMetallic.uasset | 3 +++ .../Content/Assets/Objects/Tutorial-Level/Wardrobe_low.uasset | 3 +++ .../Assets/Objects/Tutorial-Level/standardSurface2.uasset | 3 +++ EndlessVendetta/Content/Levels/Apartment_hit.umap | 4 ++-- .../StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset | 2 +- 8 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Wardrobe/M_Wardrobe.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Wardrobe/Wardrobe_low_Wardrobe_BaseColor.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Wardrobe/Wardrobe_low_Wardrobe_Normal.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Wardrobe/Wardrobe_low_Wardrobe_OcclusionRoughnessMetallic.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Wardrobe_low.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/standardSurface2.uasset diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Wardrobe/M_Wardrobe.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Wardrobe/M_Wardrobe.uasset new file mode 100644 index 00000000..7279972c --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Wardrobe/M_Wardrobe.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e4ffb500a0b827f13cdaba798e64971dc56bbdcdadef92a48c0965b780051fa +size 12974 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Wardrobe/Wardrobe_low_Wardrobe_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Wardrobe/Wardrobe_low_Wardrobe_BaseColor.uasset new file mode 100644 index 00000000..9048b98b --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Wardrobe/Wardrobe_low_Wardrobe_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0e6e63429af968cdf97ebe1095f2e18e582af470eb2587d97add2e10335e130 +size 1043460 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Wardrobe/Wardrobe_low_Wardrobe_Normal.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Wardrobe/Wardrobe_low_Wardrobe_Normal.uasset new file mode 100644 index 00000000..ffd1b378 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Wardrobe/Wardrobe_low_Wardrobe_Normal.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c3c9410dc53302d4b675ff55e503c3122d28c420e22060b16d86b4044bee8f22 +size 956753 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Wardrobe/Wardrobe_low_Wardrobe_OcclusionRoughnessMetallic.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Wardrobe/Wardrobe_low_Wardrobe_OcclusionRoughnessMetallic.uasset new file mode 100644 index 00000000..d6092aa5 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Wardrobe/Wardrobe_low_Wardrobe_OcclusionRoughnessMetallic.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1fc6777d6326d08fb20610e30b6a29d5b727eb54fd701f8d177714e28ab694c7 +size 635629 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Wardrobe_low.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Wardrobe_low.uasset new file mode 100644 index 00000000..e39721b5 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Wardrobe_low.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:052e33f77ccd7185c8c5c0d2e0d5e9b23e4ac6050c1c66f496bd06b74863e399 +size 49396 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/standardSurface2.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/standardSurface2.uasset new file mode 100644 index 00000000..ce102d54 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/standardSurface2.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18862c1d7476da86e4d63ffcc8eaeff682de37973f9953f574c8fd86a66900b8 +size 8215 diff --git a/EndlessVendetta/Content/Levels/Apartment_hit.umap b/EndlessVendetta/Content/Levels/Apartment_hit.umap index 26c44a02..4277681e 100644 --- a/EndlessVendetta/Content/Levels/Apartment_hit.umap +++ b/EndlessVendetta/Content/Levels/Apartment_hit.umap @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9e3b04cd5a3f4b0c8a316f58cd38b7108fc964f8ce204da0bb164132ce2d399d -size 243977 +oid sha256:3526588b3bfe0a40406386ff13435a7b113eeeb13902b3aed4b3c20016d0aa39 +size 245570 diff --git a/EndlessVendetta/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset b/EndlessVendetta/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset index 91469759..e745e9d0 100644 --- a/EndlessVendetta/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset +++ b/EndlessVendetta/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f27e436bf4cf91ec283bc05a59e6fdaedcb87f60759ce96b2860f1af034fd195 +oid sha256:25a2a4fdbaece9785f0166467f454d7b6e230fc1248084e36a7811cfc97899fb size 66790690 From 75a2b43ef24793f3a45e31b665cc346724db8dc5 Mon Sep 17 00:00:00 2001 From: Rafal Swierczek Date: Thu, 25 Jan 2024 17:50:17 +0000 Subject: [PATCH 045/112] Created BP Version of EVGameMode --- EndlessVendetta/Content/Levels/BP_EVGameMode.uasset | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 EndlessVendetta/Content/Levels/BP_EVGameMode.uasset diff --git a/EndlessVendetta/Content/Levels/BP_EVGameMode.uasset b/EndlessVendetta/Content/Levels/BP_EVGameMode.uasset new file mode 100644 index 00000000..5071a49d --- /dev/null +++ b/EndlessVendetta/Content/Levels/BP_EVGameMode.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:15c54b4347648ffc36e88cb70a4ab7496f81c85300b8856d30b24dbbb57abc8b +size 19500 From 50650aa7964be38d6ab4f73f24e21f3e2a66ad09 Mon Sep 17 00:00:00 2001 From: Rafal Swierczek Date: Fri, 26 Jan 2024 02:22:54 +0000 Subject: [PATCH 046/112] Implemented Working Save System without Gameplay Functionality --- .../.idea.EndlessVendetta/.idea/workspace.xml | 17 +++++++----- .../Content/Levels/MainMenuLevel.umap | 4 +-- .../Content/Levels/TempOpenWorld.umap | 4 +-- .../Content/MainMenu/BP_MainSaveGame.uasset | 4 +-- .../Gameplay/MainMenuPlayerController.uasset | 4 +-- .../Architecture/Floor_400x400.uasset | 4 +-- .../StarterContent/Audio/Collapse01.uasset | 4 +-- .../BountySystem/MainBountyClass.h | 1 - .../Characters/BountyHunterCharacter.cpp | 26 +++++++++++++++---- .../Characters/BountyHunterCharacter.h | 2 +- .../Source/EndlessVendetta/EVGameInstance.cpp | 19 ++++++++++++++ .../Source/EndlessVendetta/EVGameInstance.h | 10 +++++++ .../EndlessVendetta/MainSaveGameClass.h | 5 ++-- 13 files changed, 76 insertions(+), 28 deletions(-) diff --git a/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml b/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml index 49e89891..36cea23c 100644 --- a/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml +++ b/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml @@ -9,13 +9,17 @@ - - + + - - - + + + + + + + diff --git a/EndlessVendetta/Content/Levels/MainMenuLevel.umap b/EndlessVendetta/Content/Levels/MainMenuLevel.umap index 3680fc8b..410d9bd5 100644 --- a/EndlessVendetta/Content/Levels/MainMenuLevel.umap +++ b/EndlessVendetta/Content/Levels/MainMenuLevel.umap @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fb7901ee6817276134b5a654dd76bdffbeec528eb8c6d20e2632dc2109b84a1b -size 299666 +oid sha256:4e347eab07faf7d90209e7e64ba12694fe4804e27f840b4e171fd428466e9803 +size 299618 diff --git a/EndlessVendetta/Content/Levels/TempOpenWorld.umap b/EndlessVendetta/Content/Levels/TempOpenWorld.umap index 5f12a7eb..1c06f05b 100644 --- a/EndlessVendetta/Content/Levels/TempOpenWorld.umap +++ b/EndlessVendetta/Content/Levels/TempOpenWorld.umap @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6aa987a4adaa4132382a1af348224f2ba5f444a7b030773bf82793802838143b -size 13860728 +oid sha256:dfdc199106ad2fca8d90af627e6c092483714378c3e4014dd6124fb5538b36b5 +size 13860679 diff --git a/EndlessVendetta/Content/MainMenu/BP_MainSaveGame.uasset b/EndlessVendetta/Content/MainMenu/BP_MainSaveGame.uasset index 7293f3ec..c0d71a60 100644 --- a/EndlessVendetta/Content/MainMenu/BP_MainSaveGame.uasset +++ b/EndlessVendetta/Content/MainMenu/BP_MainSaveGame.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b13376b6f65cf5b384ddd7fed1bf5e9493e3781fdf90fab77ac437d77400f8ea -size 6083 +oid sha256:c9d27472d220a66dded1121bfbd0e985360e88d0a86dc6f88894db11aa2e117a +size 9426 diff --git a/EndlessVendetta/Content/MainMenu/Gameplay/MainMenuPlayerController.uasset b/EndlessVendetta/Content/MainMenu/Gameplay/MainMenuPlayerController.uasset index b4ff8728..78014c4e 100644 --- a/EndlessVendetta/Content/MainMenu/Gameplay/MainMenuPlayerController.uasset +++ b/EndlessVendetta/Content/MainMenu/Gameplay/MainMenuPlayerController.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e53b5a7db63663ecc7aa6f67855b9933f0a7e19b00d5f828c45e44e44729a0ca -size 138439 +oid sha256:97f269934ce59b24b2c67b91559683c19b2f22cbcc081c843655f7dc3320fe2f +size 146848 diff --git a/EndlessVendetta/Content/StarterContent/Architecture/Floor_400x400.uasset b/EndlessVendetta/Content/StarterContent/Architecture/Floor_400x400.uasset index c2a34afc..8d790d9a 100644 --- a/EndlessVendetta/Content/StarterContent/Architecture/Floor_400x400.uasset +++ b/EndlessVendetta/Content/StarterContent/Architecture/Floor_400x400.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4c0ecf0ac0702cc2bd355ec050232a61c49e10f102448efbeb735a51824adef6 -size 14948 +oid sha256:6038bf29408d4c5be111de70be0878efba11fba22cfe715ed745704d48e6c243 +size 14831 diff --git a/EndlessVendetta/Content/StarterContent/Audio/Collapse01.uasset b/EndlessVendetta/Content/StarterContent/Audio/Collapse01.uasset index 77bff400..5e3ff30e 100644 --- a/EndlessVendetta/Content/StarterContent/Audio/Collapse01.uasset +++ b/EndlessVendetta/Content/StarterContent/Audio/Collapse01.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:daf33f5c8c538d4454a1c4e29006d0c94de0bdb68e394a4364edf543b61905d3 -size 353648 +oid sha256:85c827023ee4b466228ec65e92b4b4a0415a106de041ac1c2cab481a2a5dfa8d +size 348532 diff --git a/EndlessVendetta/Source/EndlessVendetta/BountySystem/MainBountyClass.h b/EndlessVendetta/Source/EndlessVendetta/BountySystem/MainBountyClass.h index c4021f06..bd7f8016 100644 --- a/EndlessVendetta/Source/EndlessVendetta/BountySystem/MainBountyClass.h +++ b/EndlessVendetta/Source/EndlessVendetta/BountySystem/MainBountyClass.h @@ -27,7 +27,6 @@ protected: public: - // ------------------- METHODS --------------------------------- private: diff --git a/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.cpp b/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.cpp index c43e3494..cf60bf68 100644 --- a/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.cpp @@ -3,14 +3,30 @@ #include "BountyHunterCharacter.h" +#include "EndlessVendetta/EVGameInstance.h" #include "Kismet/GameplayStatics.h" void ABountyHunterCharacter::SpawnBounties() { + UE_LOG(LogTemp, Warning, TEXT("Spawning Bounty...")); + + UEVGameInstance* GI = Cast(GetGameInstance()); + + if (!IsValid(GI->MainSaveGameInstanceRef)) + { + UE_LOG(LogTemp, Warning, TEXT("Main save Game Object isnt initialized in GI")); + return; + } + + int TestNum = GI->MainSaveGameInstanceRef->CurrentMainBountyIndexSave; + UE_LOG(LogTemp, Warning, TEXT("Current Index is set to....%d"), TestNum); + + GI->MainSaveGameInstanceRef->CurrentMainBountyIndexSave = 40; + + UGameplayStatics::SaveGameToSlot(GI->MainSaveGameInstanceRef, "MainSave", 0); + if (MainBountyClasses.IsEmpty() || !IsValid(MainBountyClasses[CurrentMainBountyIndex])) return; - UE_LOG(LogTemp, Warning, TEXT("Spawning Bounty...")); - CurrentMainBounty = GetWorld()->SpawnActor(MainBountyClasses[CurrentMainBountyIndex]); const FAttachmentTransformRules AttachmentTransformRules(EAttachmentRule::SnapToTarget, true); AttachToComponent(GetRootComponent(), AttachmentTransformRules); @@ -20,13 +36,13 @@ void ABountyHunterCharacter::SpawnBounties() void ABountyHunterCharacter::CompleteCurrentMainBounty() { - + UE_LOG(LogTemp, Warning, TEXT("Would be collecting reward for completing bounty and moving onto next if possible")); } void ABountyHunterCharacter::BeginPlay() { - SpawnBounties(); - Super::BeginPlay(); + if (UGameplayStatics::DoesSaveGameExist("MainSave", 0)) SpawnBounties(); + Super::BeginPlay(); } void ABountyHunterCharacter::Tick(float DeltaTime) diff --git a/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.h b/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.h index f3a4eacf..6001ab9b 100644 --- a/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.h +++ b/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.h @@ -4,6 +4,7 @@ #include "CoreMinimal.h" #include "EndlessVendetta/EndlessVendettaCharacter.h" +#include "EndlessVendetta/MainSaveGameClass.h" #include "EndlessVendetta/BountySystem/MainBountyClass.h" #include "BountyHunterCharacter.generated.h" @@ -35,7 +36,6 @@ protected: public: - // ------------------- METHODS --------------------------------- private: diff --git a/EndlessVendetta/Source/EndlessVendetta/EVGameInstance.cpp b/EndlessVendetta/Source/EndlessVendetta/EVGameInstance.cpp index bdaaddab..0dee7d08 100644 --- a/EndlessVendetta/Source/EndlessVendetta/EVGameInstance.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/EVGameInstance.cpp @@ -3,6 +3,25 @@ #include "EVGameInstance.h" +#include "Kismet/GameplayStatics.h" + +void UEVGameInstance::CreateNewSaveGameInstance() +{ + if (UGameplayStatics::DoesSaveGameExist("MainSave", 0)) UGameplayStatics::DeleteGameInSlot("MainSave", 0); + + UE_LOG(LogTemp, Warning, TEXT("Creating new save game instance")); + MainSaveGameInstanceRef = Cast(UGameplayStatics::CreateSaveGameObject(UMainSaveGameClass::StaticClass())); + MainSaveGameInstanceRef->CurrentMainBountyIndexSave = 20; + UGameplayStatics::SaveGameToSlot(MainSaveGameInstanceRef, "MainSave", 0); +} + +void UEVGameInstance::LoadSaveGameInstance() +{ + if (!UGameplayStatics::DoesSaveGameExist("MainSave", 0)) return; + UE_LOG(LogTemp, Warning, TEXT("Loading Game Save into GI")); + MainSaveGameInstanceRef = Cast(UGameplayStatics::LoadGameFromSlot("MainSave", 0)); +} + void UEVGameInstance::OnStart() { Super::OnStart(); diff --git a/EndlessVendetta/Source/EndlessVendetta/EVGameInstance.h b/EndlessVendetta/Source/EndlessVendetta/EVGameInstance.h index ec749839..208cf308 100644 --- a/EndlessVendetta/Source/EndlessVendetta/EVGameInstance.h +++ b/EndlessVendetta/Source/EndlessVendetta/EVGameInstance.h @@ -5,6 +5,7 @@ #include "CoreMinimal.h" #include "Engine/GameInstance.h" #include "Http.h" +#include "MainSaveGameClass.h" #include "EVGameInstance.generated.h" /** @@ -19,6 +20,15 @@ public: UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Telemetry") FString GlobalSessionID = "AAAAA"; + UPROPERTY() + UMainSaveGameClass* MainSaveGameInstanceRef; + + UFUNCTION(BlueprintCallable) + void CreateNewSaveGameInstance(); + + UFUNCTION(BlueprintCallable) + void LoadSaveGameInstance(); + protected: virtual void OnStart() override; diff --git a/EndlessVendetta/Source/EndlessVendetta/MainSaveGameClass.h b/EndlessVendetta/Source/EndlessVendetta/MainSaveGameClass.h index 3f9d5606..8059f8d7 100644 --- a/EndlessVendetta/Source/EndlessVendetta/MainSaveGameClass.h +++ b/EndlessVendetta/Source/EndlessVendetta/MainSaveGameClass.h @@ -15,8 +15,7 @@ class ENDLESSVENDETTA_API UMainSaveGameClass : public USaveGame GENERATED_BODY() public: - bool HasCompletedCurrentMainBounty_Save; - - int CurrentMainBountyIndex_Save; + UPROPERTY() + int CurrentMainBountyIndexSave; }; From dd9156e1fc1e462af17764645cd6654f4ac192e6 Mon Sep 17 00:00:00 2001 From: PHILIP WHITE Date: Fri, 26 Jan 2024 11:37:21 +0000 Subject: [PATCH 047/112] Update Dialogue to Validate Choice Structure --- .../Dialogue/Testing/TestDialogueTree.uasset | 4 ++-- .../DialogueSystem/DialogueChoiceNode.cpp | 23 +++++++++++++++++++ .../DialogueSystem/DialogueEdge.h | 13 +++++++---- 3 files changed, 33 insertions(+), 7 deletions(-) diff --git a/EndlessVendetta/Content/Dialogue/Testing/TestDialogueTree.uasset b/EndlessVendetta/Content/Dialogue/Testing/TestDialogueTree.uasset index 7fb3c240..edec184b 100644 --- a/EndlessVendetta/Content/Dialogue/Testing/TestDialogueTree.uasset +++ b/EndlessVendetta/Content/Dialogue/Testing/TestDialogueTree.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bc2cc9b626876c809e9b28673d8aefcf1a83071621cd270863751b61c5b2ae53 -size 22144 +oid sha256:ae77647d592ad3c7affe1b638ba623e02456851dcf3071f11565fdcec2a3d58d +size 23072 diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueChoiceNode.cpp b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueChoiceNode.cpp index 6fa8ff9d..00c3b94f 100644 --- a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueChoiceNode.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueChoiceNode.cpp @@ -1,4 +1,6 @@ #include "DialogueChoiceNode.h" + +#include "DialogueEdge.h" #include "DialogueTree.h" #define LOCTEXT_NAMESPACE "UDialogueChoiceNode" @@ -16,6 +18,27 @@ UDialogueChoiceNode::UDialogueChoiceNode() FText UDialogueChoiceNode::GetNodeTitle() const { + bool bHasValidNumberOfChoices = false; + if (Choices.Num() == ChildrenNodes.Num()) bHasValidNumberOfChoices = true; + for (int i = 0; i < Edges.Num(); i++) + { + if (!bHasValidNumberOfChoices) + { + Cast(Edges[ChildrenNodes[i]])->EdgeColour = FLinearColor::Red; + Cast(Edges[ChildrenNodes[i]])->SetNodeTitle(FText::FromString("INVALID")); + } + else if (Choices[i].Len() > 15) + { + FString Substring = Choices[i].Left(15); + Substring.Append("..."); + Cast(Edges[ChildrenNodes[i]])->SetNodeTitle(FText::FromString(Substring)); + } + else + { + Cast(Edges[ChildrenNodes[i]])->SetNodeTitle(FText::FromString(Choices[i])); + Cast(Edges[ChildrenNodes[i]])->EdgeColour = FLinearColor::White; + } + } const FText ChoiceNodeTitle = NodeTitle.IsEmpty() ? LOCTEXT("Choice Node", "Choice Node") : NodeTitle; return FText::Format(LOCTEXT("Choice Node Title", "{0} [{1}]"), ChoiceNodeTitle, FText::AsNumber(Choices.Num())); } diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueEdge.h b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueEdge.h index ef92beff..3613f00d 100644 --- a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueEdge.h +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueEdge.h @@ -6,11 +6,14 @@ UCLASS(Blueprintable) -class UDialogueEdge: public UGenericGraphEdge +class UDialogueEdge : public UGenericGraphEdge { GENERATED_BODY() - // public: - // UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Dialogue") - // FText Selection; -}; \ No newline at end of file + UDialogueEdge(); +}; + +inline UDialogueEdge::UDialogueEdge() +{ + bShouldDrawTitle = true; +} From 8de17be88e8c7db80f912b320f580ad2724e35e8 Mon Sep 17 00:00:00 2001 From: REBECCA WYNN Date: Fri, 26 Jan 2024 14:41:08 +0000 Subject: [PATCH 048/112] added all boiler room assets everything for the boiler room (incl. textures) placed into new scene --- .../Objects/Tutorial-Level/Textures/boiler/boiler.uasset | 3 +++ .../boiler/boiler_low_standardSurface1_BaseColor.uasset | 3 +++ .../boiler/boiler_low_standardSurface1_Emissive.uasset | 3 +++ .../Textures/boiler/boiler_low_standardSurface1_Normal.uasset | 3 +++ ...ler_low_standardSurface1_OcclusionRoughnessMetallic.uasset | 3 +++ .../Textures/ironing_board/ironing_board.uasset | 3 +++ .../ironingboard_low_standardSurface1_BaseColor.uasset | 3 +++ .../ironingboard_low_standardSurface1_Normal.uasset | 3 +++ ...ard_low_standardSurface1_OcclusionRoughnessMetallic.uasset | 3 +++ .../Tutorial-Level/Textures/laundry/laundry_basket.uasset | 3 +++ .../Textures/laundry/laundry_basket_BaseColor.uasset | 3 +++ .../Textures/laundry/laundry_basket_Normal.uasset | 3 +++ .../laundry/laundry_basket_OcclusionRoughnessMetallic.uasset | 3 +++ .../Tutorial-Level/Textures/laundry/laundry_rails.uasset | 3 +++ .../Textures/laundry/laundry_rails_BaseColor.uasset | 3 +++ .../Textures/laundry/laundry_rails_Normal.uasset | 3 +++ .../laundry/laundry_rails_OcclusionRoughnessMetallic.uasset | 3 +++ .../Tutorial-Level/Textures/laundry/laundry_table.uasset | 3 +++ .../Textures/laundry/laundry_table_BaseColor.uasset | 3 +++ .../Textures/laundry/laundry_table_Normal.uasset | 3 +++ .../laundry/laundry_table_OcclusionRoughnessMetallic.uasset | 3 +++ .../Textures/shelf_laundry/shelf_laundry.uasset | 3 +++ .../shelf_laundry/shelf_low_standardSurface1_BaseColor.uasset | 3 +++ .../shelf_laundry/shelf_low_standardSurface1_Normal.uasset | 3 +++ ...elf_low_standardSurface1_OcclusionRoughnessMetallic.uasset | 3 +++ .../Tutorial-Level/Textures/washer_n_dryer/dryer.uasset | 3 +++ .../dryer_low_standardSurface1_BaseColor.uasset | 3 +++ .../washer_n_dryer/dryer_low_standardSurface1_Emissive.uasset | 3 +++ .../washer_n_dryer/dryer_low_standardSurface1_Normal.uasset | 3 +++ ...yer_low_standardSurface1_OcclusionRoughnessMetallic.uasset | 3 +++ .../Tutorial-Level/Textures/washer_n_dryer/washer.uasset | 3 +++ .../washer_low_standardSurface1_BaseColor.uasset | 3 +++ .../washer_low_standardSurface1_Emissive.uasset | 3 +++ .../washer_n_dryer/washer_low_standardSurface1_Normal.uasset | 3 +++ ...her_low_standardSurface1_OcclusionRoughnessMetallic.uasset | 3 +++ .../Objects/Tutorial-Level/boiler_room/boiler_low.uasset | 3 +++ .../Objects/Tutorial-Level/boiler_room/dryer_low.uasset | 3 +++ .../Tutorial-Level/boiler_room/ironingboard_low.uasset | 3 +++ .../Objects/Tutorial-Level/boiler_room/laundry_low.uasset | 3 +++ .../Objects/Tutorial-Level/boiler_room/shelf_low.uasset | 3 +++ EndlessVendetta/Content/Levels/Apartment_hit.umap | 4 ++-- .../Content/StarterContent/Architecture/Floor_400x400.uasset | 4 ++-- 42 files changed, 124 insertions(+), 4 deletions(-) create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/boiler/boiler.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/boiler/boiler_low_standardSurface1_BaseColor.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/boiler/boiler_low_standardSurface1_Emissive.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/boiler/boiler_low_standardSurface1_Normal.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/boiler/boiler_low_standardSurface1_OcclusionRoughnessMetallic.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/ironing_board/ironing_board.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/ironing_board/ironingboard_low_standardSurface1_BaseColor.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/ironing_board/ironingboard_low_standardSurface1_Normal.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/ironing_board/ironingboard_low_standardSurface1_OcclusionRoughnessMetallic.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_basket.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_basket_BaseColor.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_basket_Normal.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_basket_OcclusionRoughnessMetallic.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_rails.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_rails_BaseColor.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_rails_Normal.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_rails_OcclusionRoughnessMetallic.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_table.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_table_BaseColor.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_table_Normal.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_table_OcclusionRoughnessMetallic.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/shelf_laundry/shelf_laundry.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/shelf_laundry/shelf_low_standardSurface1_BaseColor.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/shelf_laundry/shelf_low_standardSurface1_Normal.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/shelf_laundry/shelf_low_standardSurface1_OcclusionRoughnessMetallic.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/dryer.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/dryer_low_standardSurface1_BaseColor.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/dryer_low_standardSurface1_Emissive.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/dryer_low_standardSurface1_Normal.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/dryer_low_standardSurface1_OcclusionRoughnessMetallic.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/washer.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/washer_low_standardSurface1_BaseColor.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/washer_low_standardSurface1_Emissive.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/washer_low_standardSurface1_Normal.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/washer_low_standardSurface1_OcclusionRoughnessMetallic.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/boiler_low.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/dryer_low.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/ironingboard_low.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/laundry_low.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/shelf_low.uasset diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/boiler/boiler.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/boiler/boiler.uasset new file mode 100644 index 00000000..8e9ebd2f --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/boiler/boiler.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:654110b3f9e035f5bb609e094fc8b10d640e006277feb69c613cfd95087ada48 +size 14251 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/boiler/boiler_low_standardSurface1_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/boiler/boiler_low_standardSurface1_BaseColor.uasset new file mode 100644 index 00000000..fe1454a1 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/boiler/boiler_low_standardSurface1_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b7c59d4afaa6ba9b0976c2e6356e305366c2efc342f0d56c7c97024ccba83b7 +size 3767275 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/boiler/boiler_low_standardSurface1_Emissive.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/boiler/boiler_low_standardSurface1_Emissive.uasset new file mode 100644 index 00000000..995c4851 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/boiler/boiler_low_standardSurface1_Emissive.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:43b80c0e78584e591ea8843aa6e2df8edf71869b52e1e0421f0360b1e01afe37 +size 138730 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/boiler/boiler_low_standardSurface1_Normal.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/boiler/boiler_low_standardSurface1_Normal.uasset new file mode 100644 index 00000000..fcf4ad64 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/boiler/boiler_low_standardSurface1_Normal.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:654d8e3c9ac7086299f3e8811c3098e675e2fdd2bd3d091f02e5c35ff929f730 +size 1923526 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/boiler/boiler_low_standardSurface1_OcclusionRoughnessMetallic.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/boiler/boiler_low_standardSurface1_OcclusionRoughnessMetallic.uasset new file mode 100644 index 00000000..e8795e6f --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/boiler/boiler_low_standardSurface1_OcclusionRoughnessMetallic.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae800e08efa72490a4afd21673b63c0282016adf79ed7ed5a78e45304af335c3 +size 4754523 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/ironing_board/ironing_board.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/ironing_board/ironing_board.uasset new file mode 100644 index 00000000..6faefc4d --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/ironing_board/ironing_board.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b0e3178e71e3469480c413f429014d00393da20cf70e478f445ae27b5c57217 +size 15969 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/ironing_board/ironingboard_low_standardSurface1_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/ironing_board/ironingboard_low_standardSurface1_BaseColor.uasset new file mode 100644 index 00000000..7e76d0df --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/ironing_board/ironingboard_low_standardSurface1_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a48a317c04e4c6d4e77e05d8471f29eb2fb0ee199d7c007ab001b4fcdcff754e +size 857423 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/ironing_board/ironingboard_low_standardSurface1_Normal.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/ironing_board/ironingboard_low_standardSurface1_Normal.uasset new file mode 100644 index 00000000..27081fe7 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/ironing_board/ironingboard_low_standardSurface1_Normal.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2513aa75002329ec59d9a06092de3190915db72e87742a4698dde35291803e69 +size 962924 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/ironing_board/ironingboard_low_standardSurface1_OcclusionRoughnessMetallic.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/ironing_board/ironingboard_low_standardSurface1_OcclusionRoughnessMetallic.uasset new file mode 100644 index 00000000..447a6505 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/ironing_board/ironingboard_low_standardSurface1_OcclusionRoughnessMetallic.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:663c1dae8ef9a7195aa6712b05a65299d0273a15a7cd9b190c031e20b066d3b8 +size 1294633 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_basket.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_basket.uasset new file mode 100644 index 00000000..ccd1f3ad --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_basket.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d738cb6bdba34fb53097094d0c61789c94efd0307534c010a9deb03bdf144585 +size 13465 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_basket_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_basket_BaseColor.uasset new file mode 100644 index 00000000..1dcf7480 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_basket_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5dd08ea8e9ca73c031ae0505442f461d8df1da952ab50d6865c889fc9527dce +size 1147505 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_basket_Normal.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_basket_Normal.uasset new file mode 100644 index 00000000..3b717570 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_basket_Normal.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:641f2bc733f40b74d21284bd24edb5ad6321a494ebb5f6b58b056411f0a6bd77 +size 1216299 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_basket_OcclusionRoughnessMetallic.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_basket_OcclusionRoughnessMetallic.uasset new file mode 100644 index 00000000..3b8d9f68 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_basket_OcclusionRoughnessMetallic.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:00980642a2810606d2ced631960e9349fb639f6d30bb1e44c418e8903de22c61 +size 414692 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_rails.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_rails.uasset new file mode 100644 index 00000000..329e0682 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_rails.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e6cc89409f5912b85bf16b161ec51442b413b521bec6f928fcd4d942e0cf29c +size 11912 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_rails_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_rails_BaseColor.uasset new file mode 100644 index 00000000..7f7e5de0 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_rails_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b5c9b81c0c4c20d7bad195633dacc312ae2da85bfdf222d0f1dd4c2b249a33ef +size 503220 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_rails_Normal.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_rails_Normal.uasset new file mode 100644 index 00000000..7c950997 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_rails_Normal.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3bbd96250d6e923da0868173a0e2e8e3f62078fcb4b1188509ab8bdd6598a45b +size 542511 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_rails_OcclusionRoughnessMetallic.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_rails_OcclusionRoughnessMetallic.uasset new file mode 100644 index 00000000..41df9933 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_rails_OcclusionRoughnessMetallic.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e765485e41b662ccb510d1e99a8ebb0b974dc485f26051a0251dfac5e4a6c140 +size 510869 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_table.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_table.uasset new file mode 100644 index 00000000..cec4ab52 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_table.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:23349db6d151dfd7641a231c21c73d01a9c327c88b1d387d3f35d0218177d506 +size 13900 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_table_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_table_BaseColor.uasset new file mode 100644 index 00000000..bd13df62 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_table_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:58211274320f6064d34d955823e2d40dc3ea7fa5bd7df29221aa74a086d2202f +size 913203 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_table_Normal.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_table_Normal.uasset new file mode 100644 index 00000000..6e7439db --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_table_Normal.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc590f166a85600189856e3219208adf480bb78a2139348564ae37f8aadbefe1 +size 107662 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_table_OcclusionRoughnessMetallic.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_table_OcclusionRoughnessMetallic.uasset new file mode 100644 index 00000000..cc76bdf6 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_table_OcclusionRoughnessMetallic.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0f9ade9d917ae6747204c1f8951e4e46cb7cc7198de340331ebad40f2f29429 +size 217686 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/shelf_laundry/shelf_laundry.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/shelf_laundry/shelf_laundry.uasset new file mode 100644 index 00000000..a53a68e5 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/shelf_laundry/shelf_laundry.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32bc6a16a1ceace189afe78cdc3f1e3b5355fa1764ea0bc0a5c72ca6ca737134 +size 14432 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/shelf_laundry/shelf_low_standardSurface1_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/shelf_laundry/shelf_low_standardSurface1_BaseColor.uasset new file mode 100644 index 00000000..1808477a --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/shelf_laundry/shelf_low_standardSurface1_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b462d582854e81408c989a328fd29d7678447ea23fa3fa5665ca5b349dcd6921 +size 398780 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/shelf_laundry/shelf_low_standardSurface1_Normal.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/shelf_laundry/shelf_low_standardSurface1_Normal.uasset new file mode 100644 index 00000000..cf68873f --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/shelf_laundry/shelf_low_standardSurface1_Normal.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1825c4cd12193d837ff477d02ee9fe4c68a81a64f49aeb8338139f28d13adb5 +size 167212 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/shelf_laundry/shelf_low_standardSurface1_OcclusionRoughnessMetallic.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/shelf_laundry/shelf_low_standardSurface1_OcclusionRoughnessMetallic.uasset new file mode 100644 index 00000000..6ed11450 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/shelf_laundry/shelf_low_standardSurface1_OcclusionRoughnessMetallic.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:acd5ec3e132fa0f3f5122f55326bd4c01d219a71991a48464d2b60b0d42ac584 +size 73230 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/dryer.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/dryer.uasset new file mode 100644 index 00000000..250ef5d6 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/dryer.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d5e01cd668ac0bbec6d460ca5f4779f4c2a5b9358c9d98dbb562220deb10e13d +size 14682 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/dryer_low_standardSurface1_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/dryer_low_standardSurface1_BaseColor.uasset new file mode 100644 index 00000000..456be651 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/dryer_low_standardSurface1_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3a55c2066663d2d0c54206f95341f561407635ed9838bcbe375f867b3e55976c +size 962040 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/dryer_low_standardSurface1_Emissive.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/dryer_low_standardSurface1_Emissive.uasset new file mode 100644 index 00000000..7b4526da --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/dryer_low_standardSurface1_Emissive.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b3d3abc730ca16f51a7a441571c0d5bae687009e20dc6fec505031314faed3b +size 35869 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/dryer_low_standardSurface1_Normal.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/dryer_low_standardSurface1_Normal.uasset new file mode 100644 index 00000000..71294bd7 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/dryer_low_standardSurface1_Normal.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a1b590770b8ff0493ba21819c746dfbcc6c371cc5f063724533dcc0e7599449e +size 965295 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/dryer_low_standardSurface1_OcclusionRoughnessMetallic.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/dryer_low_standardSurface1_OcclusionRoughnessMetallic.uasset new file mode 100644 index 00000000..8fe1474e --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/dryer_low_standardSurface1_OcclusionRoughnessMetallic.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:47abc04c38ce07a9cc1a4b441287f35900ee9cfc0e111724b2101a4de469f876 +size 174265 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/washer.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/washer.uasset new file mode 100644 index 00000000..add2204c --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/washer.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c47d548981b20a60e9df956fb0676956fa9a8cbdbcdb93ab5d825908ab3f9fd0 +size 14237 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/washer_low_standardSurface1_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/washer_low_standardSurface1_BaseColor.uasset new file mode 100644 index 00000000..ffc5cca6 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/washer_low_standardSurface1_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c271e51e4bb62ba49d6e3debfebcc9eac7488b06126bf750574385dd4a372eff +size 1050958 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/washer_low_standardSurface1_Emissive.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/washer_low_standardSurface1_Emissive.uasset new file mode 100644 index 00000000..93d575e4 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/washer_low_standardSurface1_Emissive.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:99d9c6edb0ede55b687afca95bf7aab2e47e0006d521ab4b1ed03e7a17af3f1a +size 34536 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/washer_low_standardSurface1_Normal.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/washer_low_standardSurface1_Normal.uasset new file mode 100644 index 00000000..eda8fb8b --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/washer_low_standardSurface1_Normal.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:092eb1e2e86cbec6f7f1a56d89a611a7311eabf1588c7ed920889f0284b9e1c0 +size 965328 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/washer_low_standardSurface1_OcclusionRoughnessMetallic.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/washer_low_standardSurface1_OcclusionRoughnessMetallic.uasset new file mode 100644 index 00000000..9e03c57d --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/washer_low_standardSurface1_OcclusionRoughnessMetallic.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e143983eb11a8ec57e52b4597dd34a1ecd4077d212c927732dec92bb89fdd454 +size 174298 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/boiler_low.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/boiler_low.uasset new file mode 100644 index 00000000..50f21ddb --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/boiler_low.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:73bbf1ae727e6b76480fde6f60a72eb66177a99a0da8e79978f6212b47c1541b +size 177145 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/dryer_low.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/dryer_low.uasset new file mode 100644 index 00000000..2c10cfab --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/dryer_low.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:28236549a9dfc3fec74c440e94c80919ccbeabd3f99c0367b45621d3b5663445 +size 113260 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/ironingboard_low.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/ironingboard_low.uasset new file mode 100644 index 00000000..d650fefc --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/ironingboard_low.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e76052ed1456fc8fb9cec40c6fbabf6645392e39356bb1e6d1a7801eac69dba0 +size 120476 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/laundry_low.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/laundry_low.uasset new file mode 100644 index 00000000..c868de54 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/laundry_low.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a8af264a994db050885905860d98afda46dfb3bd026f5e9ad205e78208e731a4 +size 178531 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/shelf_low.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/shelf_low.uasset new file mode 100644 index 00000000..1b5e9fa4 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/shelf_low.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eea02aecd9280cf26002dfb8e5acb63c65276c271a221a5bcdc47147b304388a +size 38141 diff --git a/EndlessVendetta/Content/Levels/Apartment_hit.umap b/EndlessVendetta/Content/Levels/Apartment_hit.umap index 4277681e..85ddfb3a 100644 --- a/EndlessVendetta/Content/Levels/Apartment_hit.umap +++ b/EndlessVendetta/Content/Levels/Apartment_hit.umap @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3526588b3bfe0a40406386ff13435a7b113eeeb13902b3aed4b3c20016d0aa39 -size 245570 +oid sha256:f40619720d881ad1956a1888b5e60a0390ec99ab53ad84b201c2a239d0a5d9b1 +size 264536 diff --git a/EndlessVendetta/Content/StarterContent/Architecture/Floor_400x400.uasset b/EndlessVendetta/Content/StarterContent/Architecture/Floor_400x400.uasset index c2a34afc..7c0fecd0 100644 --- a/EndlessVendetta/Content/StarterContent/Architecture/Floor_400x400.uasset +++ b/EndlessVendetta/Content/StarterContent/Architecture/Floor_400x400.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4c0ecf0ac0702cc2bd355ec050232a61c49e10f102448efbeb735a51824adef6 -size 14948 +oid sha256:f2c31f01c3f39dd737942572f50ca36014af30a261fe9ef1f72bc8e527e508b8 +size 14831 From f402fde148683b6002e61b4fe04464d6cb90dd53 Mon Sep 17 00:00:00 2001 From: MARCEL HARA Date: Fri, 26 Jan 2024 18:34:14 +0000 Subject: [PATCH 049/112] Created Temp Silencer Mesh --- .../Content/StarterContent/Architecture/Floor_400x400.uasset | 4 ++-- .../Content/StarterContent/Props/MaterialSphere.uasset | 4 ++-- .../Content/StarterContent/Shapes/TempSilencer.uasset | 3 +++ .../Levels/DoorTestLevel/0/24/JBARER4CBJ0QZT5CZY8ID6.uasset | 4 ++-- .../Levels/DoorTestLevel/9/V5/00HOTT7GJB6N5M6TZHPJO5.uasset | 4 ++-- .../Levels/DoorTestLevel/D/HT/HCK94DMZ442FV8M21GRO0Q.uasset | 4 ++-- 6 files changed, 13 insertions(+), 10 deletions(-) create mode 100644 EndlessVendetta/Content/StarterContent/Shapes/TempSilencer.uasset diff --git a/EndlessVendetta/Content/StarterContent/Architecture/Floor_400x400.uasset b/EndlessVendetta/Content/StarterContent/Architecture/Floor_400x400.uasset index c2a34afc..a2222591 100644 --- a/EndlessVendetta/Content/StarterContent/Architecture/Floor_400x400.uasset +++ b/EndlessVendetta/Content/StarterContent/Architecture/Floor_400x400.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4c0ecf0ac0702cc2bd355ec050232a61c49e10f102448efbeb735a51824adef6 -size 14948 +oid sha256:61d130e2bfe7d6048f25eb87b7a0936a887ed73ad7fdc29737bbd57569345cac +size 14831 diff --git a/EndlessVendetta/Content/StarterContent/Props/MaterialSphere.uasset b/EndlessVendetta/Content/StarterContent/Props/MaterialSphere.uasset index 2b39b316..56bddfc9 100644 --- a/EndlessVendetta/Content/StarterContent/Props/MaterialSphere.uasset +++ b/EndlessVendetta/Content/StarterContent/Props/MaterialSphere.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9832eb25780c5b708bc83a7162412745945be1c9a66822dbfc547ea46fba15a2 -size 47710 +oid sha256:3a8777c01491888bba9f40eda9d2bed76a611f0e80f75917501ce69c1a321342 +size 47333 diff --git a/EndlessVendetta/Content/StarterContent/Shapes/TempSilencer.uasset b/EndlessVendetta/Content/StarterContent/Shapes/TempSilencer.uasset new file mode 100644 index 00000000..fbc6d821 --- /dev/null +++ b/EndlessVendetta/Content/StarterContent/Shapes/TempSilencer.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:61c0b03ac13ff095d5e52f5551a54cadb54e669e33e5a6a1ee4f8e4e233e50f2 +size 26923 diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/0/24/JBARER4CBJ0QZT5CZY8ID6.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/0/24/JBARER4CBJ0QZT5CZY8ID6.uasset index acadf3cb..a5e2facf 100644 --- a/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/0/24/JBARER4CBJ0QZT5CZY8ID6.uasset +++ b/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/0/24/JBARER4CBJ0QZT5CZY8ID6.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dd163ab11d986d221c1b1ce955970bdf5df7a4ee26a0c3cd0fa374c1bab5574e -size 7069 +oid sha256:84b30818e9bae891d6c94279a7ca4f0fc7de1ef3432141d4a7adc9057459595e +size 6503 diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/9/V5/00HOTT7GJB6N5M6TZHPJO5.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/9/V5/00HOTT7GJB6N5M6TZHPJO5.uasset index 35a7b628..0d782ca2 100644 --- a/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/9/V5/00HOTT7GJB6N5M6TZHPJO5.uasset +++ b/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/9/V5/00HOTT7GJB6N5M6TZHPJO5.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b51d0369a65741c96d3499c1feac5146358708f5dc169e0f26d829accc474e91 -size 7159 +oid sha256:f97293c8252b81250776e74e7637a467ec93628edeac54773472326b7bd45303 +size 6593 diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/D/HT/HCK94DMZ442FV8M21GRO0Q.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/D/HT/HCK94DMZ442FV8M21GRO0Q.uasset index b8758f85..3932fca7 100644 --- a/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/D/HT/HCK94DMZ442FV8M21GRO0Q.uasset +++ b/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/D/HT/HCK94DMZ442FV8M21GRO0Q.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4eba44b03ff058bd86a49a05814cbb134bd5c24beb99148a7b8e7c2c7e71eb21 -size 5152 +oid sha256:78fd95a6d4b39f9f33ff776202ca1ffd9c24e4bc7fed9dd1ebf7e8bb596667ec +size 5213 From 1edfa037a150ce2ad0b17e04a240c3eb4bb3bf24 Mon Sep 17 00:00:00 2001 From: MARCEL HARA Date: Fri, 26 Jan 2024 18:35:03 +0000 Subject: [PATCH 050/112] Changed Actor Tags & Removed Manual Mesh Attachment --- .../Blueprints/BaseWeapons/AssaultRifles/BP_ARTEST1.uasset | 4 ++-- .../FirstPerson/Blueprints/BaseWeapons/BP_BaseWeapon.uasset | 4 ++-- .../Blueprints/BaseWeapons/Pistols/BP_BasePistolWeapon.uasset | 4 ++-- .../BaseWeapons/Pistols/Pistol_Assets/SM_HandGun.uasset | 4 ++-- .../Pistols/Pistol_Assets/SM_HandGun_Skeleton.uasset | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/AssaultRifles/BP_ARTEST1.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/AssaultRifles/BP_ARTEST1.uasset index 5cd48aa7..8aa30a2f 100644 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/AssaultRifles/BP_ARTEST1.uasset +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/AssaultRifles/BP_ARTEST1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:55d9774b1be0067976e247efb9c0924028d8e6f104a2356fc3c244d0ca0bcbab -size 40721 +oid sha256:5dd6f9f711da54c221a1be010a47ff7bb53d5f37f0afa26a30cfde85d9d8d8d9 +size 41696 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/BP_BaseWeapon.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/BP_BaseWeapon.uasset index a67cfd74..23e228bc 100644 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/BP_BaseWeapon.uasset +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/BP_BaseWeapon.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ddfeb9078755b405062e9752c733edef8a3ffbb8b12189ef5aee0e306dbf83ac -size 127463 +oid sha256:1e0ab8a1e0763724c9f778d26fc39f9e2ec80dc2a63cc99d23a4edf1d5ceb6c6 +size 126609 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/BP_BasePistolWeapon.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/BP_BasePistolWeapon.uasset index d493546a..bcdca35f 100644 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/BP_BasePistolWeapon.uasset +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/BP_BasePistolWeapon.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ce09071644a22e6b7450df39c54ef3c4741209a5401376534740dc7d76298276 -size 128111 +oid sha256:27baa0566dff77e1a10c6ad16334355882c66dc68bddb90cd8790af23918a24c +size 126225 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_HandGun.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_HandGun.uasset index 9df6634f..b98fc270 100644 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_HandGun.uasset +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_HandGun.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:de2933666cc939d964639b58e5bf9e846486cdeb275977e0112b8e28299168ba -size 964821 +oid sha256:7c875b5a56660d1175d197651084a60f82e244678cb44b7ed2354937caced1c0 +size 964880 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_HandGun_Skeleton.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_HandGun_Skeleton.uasset index cc8853fa..48081b3a 100644 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_HandGun_Skeleton.uasset +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_HandGun_Skeleton.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:014ad9c5325cbb86903bde65b93706b130e86ca2fef712a46486f1a58c6ca43d -size 6330 +oid sha256:79ec958f43b4dbf811aa3ba3b8f419f0644a0cb05134c87e0c6f8e9ac5ad7fdc +size 6852 From 57c55fb7628685bd447acc44c608ee398fd15522 Mon Sep 17 00:00:00 2001 From: MARCEL HARA Date: Fri, 26 Jan 2024 18:35:24 +0000 Subject: [PATCH 051/112] Fixed Bench Not recognizing secondary weapon only --- .../Workbench_UI/WBP_Workbench.uasset | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/Workbench_WeaponAttachments/Workbench_UI/WBP_Workbench.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/Workbench_WeaponAttachments/Workbench_UI/WBP_Workbench.uasset index 26b8081a..c66d079d 100644 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/Workbench_WeaponAttachments/Workbench_UI/WBP_Workbench.uasset +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/Workbench_WeaponAttachments/Workbench_UI/WBP_Workbench.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8b0b18849fe2fb41c53b6835e8c1d882a5ed56dfa96a403797277280ffd3067b -size 136669 +oid sha256:42b23c0682e4a1b831dd351463fd812cc9e445143e2c0857327ae8c38acc458f +size 203702 From e3af853bdd69ac672e521535f3b42c5a574f7acb Mon Sep 17 00:00:00 2001 From: MARCEL HARA Date: Fri, 26 Jan 2024 18:35:44 +0000 Subject: [PATCH 052/112] Re-Worked Workbench code to use sockets instead of mesh loc --- .../WeaponSystem/BaseWeaponClass.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.cpp b/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.cpp index dde8cb8c..891eabc8 100644 --- a/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.cpp @@ -257,13 +257,20 @@ void ABaseWeaponClass::InteractPrompt() void ABaseWeaponClass::SetupSilencerAttachment(UStaticMesh* SilencerMesh) { + GEngine->AddOnScreenDebugMessage(-1, 15.f, FColor::Red, TEXT("SETTING UP SILENCER ATTACHMENTS")); FTransform emptytransform; UActorComponent* SilencerComponent = AddComponentByClass(USilencerAttachmentClass::StaticClass(), true, emptytransform, false); - Cast(SilencerComponent)->AttachToComponent(RootComponent, FAttachmentTransformRules::SnapToTargetIncludingScale); - TArray SilencerMeshSocketArray (GetComponentsByTag(UStaticMeshComponent::StaticClass(), FName("SilencerMeshSocket"))); - Cast(SilencerMeshSocketArray[0])->SetStaticMesh(SilencerMesh); + UStaticMeshComponent* SilencerMeshComponent = Cast(AddComponentByClass(UStaticMeshComponent::StaticClass(), true, emptytransform, false)); + SilencerMeshComponent->SetStaticMesh(SilencerMesh); + SilencerMeshComponent->AttachToComponent(Cast(GetComponentByClass(USkeletalMeshComponent::StaticClass())), FAttachmentTransformRules::SnapToTargetIncludingScale, FName(TEXT("SilencerMeshSocket"))); + Cast(SilencerComponent)->AttachToComponent(SilencerMeshComponent, FAttachmentTransformRules::SnapToTargetIncludingScale); + FTransform SilencerSocketTransform = SilencerMeshComponent->GetSocketTransform(FName(TEXT("SilencerMeshSocket")), RTS_Component); + FRotator SilencerSocketRotation = SilencerMeshComponent->GetSocketRotation(FName(TEXT("SilencerMeshSocket"))); + SilencerMeshComponent->SetRelativeTransform(SilencerSocketTransform); + SilencerMeshComponent->SetRelativeRotation(this->GetActorRotation()); + } - + \ No newline at end of file From 3990cefbc0addd73d80fb26784d88c671e45744f Mon Sep 17 00:00:00 2001 From: MARCEL HARA Date: Fri, 26 Jan 2024 18:36:03 +0000 Subject: [PATCH 053/112] Added Sockets to weapons for Silencer Attachment --- EndlessVendetta/Content/FPWeapon/Mesh/SK_FPGun.uasset | 4 ++-- .../Content/FPWeapon/Mesh/SK_FPGun_Skeleton.uasset | 4 ++-- .../FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/EndlessVendetta/Content/FPWeapon/Mesh/SK_FPGun.uasset b/EndlessVendetta/Content/FPWeapon/Mesh/SK_FPGun.uasset index 0f1eb268..ecd32d01 100644 --- a/EndlessVendetta/Content/FPWeapon/Mesh/SK_FPGun.uasset +++ b/EndlessVendetta/Content/FPWeapon/Mesh/SK_FPGun.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:67c8259a243d5c66d35b91458da2dd7e9e860224052098ba554eba470cee4a2a -size 2162660 +oid sha256:e5172de6da2ddc3a299ae29807f3c468faa1f5eadd7202e6e94688b92206faa8 +size 2113814 diff --git a/EndlessVendetta/Content/FPWeapon/Mesh/SK_FPGun_Skeleton.uasset b/EndlessVendetta/Content/FPWeapon/Mesh/SK_FPGun_Skeleton.uasset index 3a6c6898..aa861853 100644 --- a/EndlessVendetta/Content/FPWeapon/Mesh/SK_FPGun_Skeleton.uasset +++ b/EndlessVendetta/Content/FPWeapon/Mesh/SK_FPGun_Skeleton.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:af19d0a66ac93ccb5502fa57f0fa608709a59cffe2cc9157e8aa8bed3d43b5f9 -size 7712 +oid sha256:e1a0785430701e8ad4da18841226e2e18dd72d825c6a10cf28e7d73f1216ed28 +size 9013 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset index 173b36fe..8c7852ab 100644 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6b0713a508a47897e5751ea178e02c2d9627e12f34565f3a08f9a605b4ea2736 -size 455809 +oid sha256:de066ac492c967521893c0a1b64f49a4872fd72e09e68a230b50100e3a22a2cc +size 469312 From 5b63d14d88cd3a282f24ccb1e58014a2a419fcc0 Mon Sep 17 00:00:00 2001 From: LOUIS HORNE Date: Fri, 26 Jan 2024 18:52:17 +0000 Subject: [PATCH 054/112] added door frame sttarted replacing walls with modular kit --- .../Content/Assets/Objects/Tutorial-Level/DoorFrame.uasset | 3 +++ .../Textures/DoorFrame/Frame_low_DoorFrame_BaseColor.uasset | 3 +++ .../Textures/DoorFrame/Frame_low_DoorFrame_Normal.uasset | 3 +++ .../Frame_low_DoorFrame_OcclusionRoughnessMetallic.uasset | 3 +++ .../Tutorial-Level/Textures/DoorFrame/M_DoorFrame.uasset | 3 +++ .../FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset | 4 ++-- EndlessVendetta/Content/Levels/Apartment_hit.umap | 4 ++-- .../Content/StarterContent/Architecture/Floor_400x400.uasset | 2 +- .../Content/StarterContent/Audio/Collapse01.uasset | 4 ++-- .../StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset | 4 ++-- 10 files changed, 24 insertions(+), 9 deletions(-) create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/DoorFrame.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/DoorFrame/Frame_low_DoorFrame_BaseColor.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/DoorFrame/Frame_low_DoorFrame_Normal.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/DoorFrame/Frame_low_DoorFrame_OcclusionRoughnessMetallic.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/DoorFrame/M_DoorFrame.uasset diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/DoorFrame.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/DoorFrame.uasset new file mode 100644 index 00000000..593155ab --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/DoorFrame.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c578908cc14d1ff8cddf68cf6ec41cc630569fbf6f810f654fbffb7109a5f8d4 +size 29796 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/DoorFrame/Frame_low_DoorFrame_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/DoorFrame/Frame_low_DoorFrame_BaseColor.uasset new file mode 100644 index 00000000..6473e0dc --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/DoorFrame/Frame_low_DoorFrame_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:247843d01f8be1b0d647a49372a1fe01276f823764d0b9e285e29fae5ac07579 +size 481691 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/DoorFrame/Frame_low_DoorFrame_Normal.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/DoorFrame/Frame_low_DoorFrame_Normal.uasset new file mode 100644 index 00000000..daa40dc7 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/DoorFrame/Frame_low_DoorFrame_Normal.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b9deae910bd3154a8545c334d13e5359044ce9d5b9a0547970b25d6d0396fdf +size 1607262 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/DoorFrame/Frame_low_DoorFrame_OcclusionRoughnessMetallic.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/DoorFrame/Frame_low_DoorFrame_OcclusionRoughnessMetallic.uasset new file mode 100644 index 00000000..74770c2a --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/DoorFrame/Frame_low_DoorFrame_OcclusionRoughnessMetallic.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:844c55e59d814ded847c070eb8e5dae5477db61c60cb4a62a1f17ca24b91ab3b +size 316640 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/DoorFrame/M_DoorFrame.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/DoorFrame/M_DoorFrame.uasset new file mode 100644 index 00000000..2de71c2e --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/DoorFrame/M_DoorFrame.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:28016347c8277940b8c6958005aeb78207be2c7b42439dea51af1c7ba39a5142 +size 12229 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset index 9e824917..cc078950 100644 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c99ec2b828cf671d0d33afa160e745375f0b82d79a8b49f2e9e74c0b68aedd7f -size 76231 +oid sha256:bc93b8260decd80cc65e9b75b277bae54a3ff7fbbe14edeaaf1059f28ec6cfc4 +size 76001 diff --git a/EndlessVendetta/Content/Levels/Apartment_hit.umap b/EndlessVendetta/Content/Levels/Apartment_hit.umap index 85ddfb3a..a3b78a7d 100644 --- a/EndlessVendetta/Content/Levels/Apartment_hit.umap +++ b/EndlessVendetta/Content/Levels/Apartment_hit.umap @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f40619720d881ad1956a1888b5e60a0390ec99ab53ad84b201c2a239d0a5d9b1 -size 264536 +oid sha256:c29278a46414b693b8124df0c46a5c9d4521ea21a93b1500df9041f3eee58b1b +size 306664 diff --git a/EndlessVendetta/Content/StarterContent/Architecture/Floor_400x400.uasset b/EndlessVendetta/Content/StarterContent/Architecture/Floor_400x400.uasset index 7c0fecd0..90c58b4e 100644 --- a/EndlessVendetta/Content/StarterContent/Architecture/Floor_400x400.uasset +++ b/EndlessVendetta/Content/StarterContent/Architecture/Floor_400x400.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f2c31f01c3f39dd737942572f50ca36014af30a261fe9ef1f72bc8e527e508b8 +oid sha256:6ac46aed88503f33b8396f9d6b50b197754146a2542c17febbac023182704532 size 14831 diff --git a/EndlessVendetta/Content/StarterContent/Audio/Collapse01.uasset b/EndlessVendetta/Content/StarterContent/Audio/Collapse01.uasset index 5e3ff30e..ffa6b093 100644 --- a/EndlessVendetta/Content/StarterContent/Audio/Collapse01.uasset +++ b/EndlessVendetta/Content/StarterContent/Audio/Collapse01.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:85c827023ee4b466228ec65e92b4b4a0415a106de041ac1c2cab481a2a5dfa8d -size 348532 +oid sha256:9d4bd362fc54dfb32444f11153f827099620d7e9d10615679bb4a6c551fa41a3 +size 353935 diff --git a/EndlessVendetta/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset b/EndlessVendetta/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset index e745e9d0..0f990580 100644 --- a/EndlessVendetta/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset +++ b/EndlessVendetta/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:25a2a4fdbaece9785f0166467f454d7b6e230fc1248084e36a7811cfc97899fb -size 66790690 +oid sha256:bc35eb2d43a47427d30aba0196f9eac90d089dd3abca319528c5d25c83510d0d +size 72364642 From 8c4793a6174c2c7100a8512c364a2dce9e2474bc Mon Sep 17 00:00:00 2001 From: LOUIS HORNE Date: Fri, 26 Jan 2024 20:08:23 +0000 Subject: [PATCH 055/112] Updated bed textures --- .../Textures/Bed01/bed1_low_Bed_BaseColor.uasset | 4 ++-- .../Tutorial-Level/Textures/Bed01/bed1_low_Bed_Normal.uasset | 4 ++-- .../Bed01/bed1_low_Bed_OcclusionRoughnessMetallic.uasset | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Bed01/bed1_low_Bed_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Bed01/bed1_low_Bed_BaseColor.uasset index f8f91a92..83cbe85d 100644 --- a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Bed01/bed1_low_Bed_BaseColor.uasset +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Bed01/bed1_low_Bed_BaseColor.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:016706ad2a87a09dcbeeed286891a73c8384b62021abc5fb4b1f36e3f0f37399 -size 617426 +oid sha256:9dd1272c8b07fa191733f94b8f6b39419156fd4bd32af5cd614b0c2e1b78467b +size 642872 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Bed01/bed1_low_Bed_Normal.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Bed01/bed1_low_Bed_Normal.uasset index db454649..1ce61f4b 100644 --- a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Bed01/bed1_low_Bed_Normal.uasset +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Bed01/bed1_low_Bed_Normal.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f5636d8962414a67bb9535bdc4570d93b7cdb398ecba3a90c9fea261c66c4ca0 -size 1090483 +oid sha256:503302dc11a3434a82972bfca6bbfd4c9bc97234b3f28d3552a99db5d71e650a +size 1085295 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Bed01/bed1_low_Bed_OcclusionRoughnessMetallic.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Bed01/bed1_low_Bed_OcclusionRoughnessMetallic.uasset index 4038185b..b8052cfa 100644 --- a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Bed01/bed1_low_Bed_OcclusionRoughnessMetallic.uasset +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Bed01/bed1_low_Bed_OcclusionRoughnessMetallic.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1168a7a90dd257178ce0e4fb92bedb23e817dc43d862e461110fc26a2eb49143 -size 307929 +oid sha256:f17969000533ad280a1c4aa7202751941f0c018db003ea52b8f103557a4fd2e4 +size 288426 From fa7bf26c93acc718579c25f9b626e0a55f92e0e2 Mon Sep 17 00:00:00 2001 From: REBECCA WYNN Date: Mon, 29 Jan 2024 12:03:19 +0000 Subject: [PATCH 056/112] Added posters w/ textures not decorated level with them yet --- .../Objects/Tutorial-Level/Textures/posters/fame_glass.uasset | 3 +++ .../Textures/posters/frame_KOMET_poster1_BaseColor.uasset | 3 +++ .../Textures/posters/frame_KOMET_poster2_BaseColor.uasset | 3 +++ .../Textures/posters/frame_KOMET_poster3_BaseColor.uasset | 3 +++ .../Textures/posters/frame_SPACESHI10_BaseColor.uasset | 3 +++ .../Textures/posters/frame_SPACESHIP6_BaseColor.uasset | 3 +++ .../Textures/posters/frame_SPACESHIP7_BaseColor.uasset | 3 +++ .../Textures/posters/frame_SPACESHIP8_BaseColor.uasset | 3 +++ .../Textures/posters/frame_SPACESHIP9_BaseColor.uasset | 3 +++ .../Textures/posters/frame_TORIO_poster2_BaseColor.uasset | 3 +++ .../Textures/posters/frame_TORIO_poster4_BaseColor.uasset | 3 +++ .../Textures/posters/frame_TORIO_poster_BaseColor.uasset | 3 +++ .../Textures/posters/frame_VLAST_poster1_BaseColor.uasset | 3 +++ .../Textures/posters/frame_VLAST_poster2_BaseColor.uasset | 3 +++ .../Textures/posters/frame_VLAST_poster3_BaseColor.uasset | 3 +++ .../Textures/posters/frame_glass_BaseColor.uasset | 3 +++ .../Tutorial-Level/Textures/posters/frame_glass_Normal.uasset | 3 +++ .../posters/frame_glass_OcclusionRoughnessMetallic.uasset | 3 +++ .../Tutorial-Level/Textures/posters/frame_metal.uasset | 3 +++ .../Textures/posters/frame_metal_BaseColor.uasset | 3 +++ .../Tutorial-Level/Textures/posters/frame_metal_Normal.uasset | 3 +++ .../posters/frame_metal_OcclusionRoughnessMetallic.uasset | 3 +++ .../Textures/posters/frame_poster_Normal.uasset | 3 +++ .../posters/frame_poster_OcclusionRoughnessMetallic.uasset | 3 +++ .../Textures/posters/poster_KOMET_poster1.uasset | 3 +++ .../Textures/posters/poster_KOMET_poster2.uasset | 3 +++ .../Textures/posters/poster_KOMET_poster3.uasset | 3 +++ .../Tutorial-Level/Textures/posters/poster_SPACESHIP10.uasset | 3 +++ .../Tutorial-Level/Textures/posters/poster_SPACESHIP6.uasset | 3 +++ .../Tutorial-Level/Textures/posters/poster_SPACESHIP7.uasset | 3 +++ .../Tutorial-Level/Textures/posters/poster_SPACESHIP8.uasset | 3 +++ .../Tutorial-Level/Textures/posters/poster_SPACESHIP9.uasset | 3 +++ .../Textures/posters/poster_TORIO_poster.uasset | 3 +++ .../Textures/posters/poster_TORIO_poster2.uasset | 3 +++ .../Textures/posters/poster_TORIO_poster4.uasset | 3 +++ .../Textures/posters/poster_VLAST_poster1.uasset | 3 +++ .../Textures/posters/poster_VLAST_poster2.uasset | 3 +++ .../Textures/posters/poster_VLAST_poster3.uasset | 3 +++ .../Content/Assets/Objects/Tutorial-Level/frame.uasset | 3 +++ EndlessVendetta/Content/Levels/Apartment_hit.umap | 4 ++-- 40 files changed, 119 insertions(+), 2 deletions(-) create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/fame_glass.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_KOMET_poster1_BaseColor.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_KOMET_poster2_BaseColor.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_KOMET_poster3_BaseColor.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_SPACESHI10_BaseColor.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_SPACESHIP6_BaseColor.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_SPACESHIP7_BaseColor.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_SPACESHIP8_BaseColor.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_SPACESHIP9_BaseColor.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_TORIO_poster2_BaseColor.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_TORIO_poster4_BaseColor.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_TORIO_poster_BaseColor.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_VLAST_poster1_BaseColor.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_VLAST_poster2_BaseColor.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_VLAST_poster3_BaseColor.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_glass_BaseColor.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_glass_Normal.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_glass_OcclusionRoughnessMetallic.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_metal.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_metal_BaseColor.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_metal_Normal.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_metal_OcclusionRoughnessMetallic.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_poster_Normal.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_poster_OcclusionRoughnessMetallic.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_KOMET_poster1.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_KOMET_poster2.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_KOMET_poster3.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_SPACESHIP10.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_SPACESHIP6.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_SPACESHIP7.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_SPACESHIP8.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_SPACESHIP9.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_TORIO_poster.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_TORIO_poster2.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_TORIO_poster4.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_VLAST_poster1.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_VLAST_poster2.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_VLAST_poster3.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/frame.uasset diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/fame_glass.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/fame_glass.uasset new file mode 100644 index 00000000..d534808b --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/fame_glass.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d0b2fcc8046d34fc876a7714109c2e598fdb8b0be7d35dfada954b2a906c430e +size 10872 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_KOMET_poster1_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_KOMET_poster1_BaseColor.uasset new file mode 100644 index 00000000..203ebd51 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_KOMET_poster1_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d49bcc75b362399dce7110c11637d50fc69bd76a9116f0d87e365eadf868b835 +size 1024498 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_KOMET_poster2_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_KOMET_poster2_BaseColor.uasset new file mode 100644 index 00000000..d880822a --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_KOMET_poster2_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ca1708ff419c1d3a23dc2679f227cbe66d50f7af5d2aea20400043064e7ad23 +size 1255793 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_KOMET_poster3_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_KOMET_poster3_BaseColor.uasset new file mode 100644 index 00000000..e1675560 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_KOMET_poster3_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eeea66bbdec2ffa13fa3d66c0f707789434776a74149d087568491ecfd6ad132 +size 2405785 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_SPACESHI10_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_SPACESHI10_BaseColor.uasset new file mode 100644 index 00000000..d0c7453e --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_SPACESHI10_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:63ceaf4ea439c2ed41fdc36fd731f339dae2770c7c3f7800d82139e713879c1c +size 684518 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_SPACESHIP6_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_SPACESHIP6_BaseColor.uasset new file mode 100644 index 00000000..fbc470c9 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_SPACESHIP6_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35b25a4f4e5e7de446c7cbb807f6d2f5c08ccdf81c7656d51248b767e2a7caaa +size 742020 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_SPACESHIP7_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_SPACESHIP7_BaseColor.uasset new file mode 100644 index 00000000..79ba955c --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_SPACESHIP7_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12528bf29236e1bbe23b4461b462e1d45fee92679547ff47f1aac383b36651d8 +size 696543 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_SPACESHIP8_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_SPACESHIP8_BaseColor.uasset new file mode 100644 index 00000000..b0b98d18 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_SPACESHIP8_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3549e3c6529fe1fa4d7ef5788c08f2ddd6288df91242d2716f6950030fa1b3c6 +size 775789 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_SPACESHIP9_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_SPACESHIP9_BaseColor.uasset new file mode 100644 index 00000000..64f0932e --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_SPACESHIP9_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cbc5d30b238ab45da6455e15efcb00fbacf00104cc240477d672e3cd1f404147 +size 1209879 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_TORIO_poster2_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_TORIO_poster2_BaseColor.uasset new file mode 100644 index 00000000..5628b0fe --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_TORIO_poster2_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6960e3be0602cb4f2402f2c968a7013e6aefe2046b96b0339fd9b1463549babf +size 660020 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_TORIO_poster4_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_TORIO_poster4_BaseColor.uasset new file mode 100644 index 00000000..0b3eb84d --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_TORIO_poster4_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:65433a769bd8db7d46f21cb116830ce76f552878795e2f00306d39e7a137a6db +size 972832 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_TORIO_poster_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_TORIO_poster_BaseColor.uasset new file mode 100644 index 00000000..1307875f --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_TORIO_poster_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f85ed02c46920db994acf195227128c0fcc477124e0570848d1341d765b95d8 +size 782218 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_VLAST_poster1_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_VLAST_poster1_BaseColor.uasset new file mode 100644 index 00000000..0a9030ea --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_VLAST_poster1_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:86dcce3d342f517ae909de507b2c05c5973320a1ebb71f9952f919c96fd39142 +size 355738 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_VLAST_poster2_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_VLAST_poster2_BaseColor.uasset new file mode 100644 index 00000000..bf1c32b2 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_VLAST_poster2_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:49b63c2357aed34afea1c4907fbab7248a56d3be6efe3e0ce644b5f65c1ebaa6 +size 344956 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_VLAST_poster3_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_VLAST_poster3_BaseColor.uasset new file mode 100644 index 00000000..708ea245 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_VLAST_poster3_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2f1fd6118ab23963eb6ff32414e8366ffe2f18e7856ddb315b76ddf8bb7e552 +size 783831 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_glass_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_glass_BaseColor.uasset new file mode 100644 index 00000000..ba909d39 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_glass_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:962f09adcf0c1aa1e8079d81a48ff7ab3304b08a42176aa9597a63339ad936e8 +size 3969349 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_glass_Normal.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_glass_Normal.uasset new file mode 100644 index 00000000..33952e6d --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_glass_Normal.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db7caf6e4b8b4645eaad1ad20a13b264508661a29eab4e18bbfb2d6b39c25e39 +size 56251 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_glass_OcclusionRoughnessMetallic.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_glass_OcclusionRoughnessMetallic.uasset new file mode 100644 index 00000000..af0f20e6 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_glass_OcclusionRoughnessMetallic.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2d721c04eda225ced7d43febbea0f9a1fdf5707b19be0615e579078a4d09db9 +size 2183900 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_metal.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_metal.uasset new file mode 100644 index 00000000..c886db6a --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_metal.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fbcd3168bcf4817d5882ca9d3f9939a6b257401b9e596773bc17e79923f3c66c +size 12696 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_metal_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_metal_BaseColor.uasset new file mode 100644 index 00000000..2f5e5e8b --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_metal_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed4fe169d38d58f2c12803dffe9eefbb6a1f38a3575bfb801524a29f1ca0693b +size 1843961 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_metal_Normal.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_metal_Normal.uasset new file mode 100644 index 00000000..68d5de11 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_metal_Normal.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:379677ee86b33f564c967091753ab36cc016e6711492e080c911ac7754a4916a +size 3104123 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_metal_OcclusionRoughnessMetallic.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_metal_OcclusionRoughnessMetallic.uasset new file mode 100644 index 00000000..3bb8b092 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_metal_OcclusionRoughnessMetallic.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ce3c8bb5233b10ac7427a9f3ac3a3451d2446137f381041dd8d473f5507d0d6 +size 3442594 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_poster_Normal.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_poster_Normal.uasset new file mode 100644 index 00000000..31ae574b --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_poster_Normal.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1435f2ab43364c3c8f7e9a30f0932706c9ff816794b8bdbeb3fa50bbc8a63ae7 +size 1912620 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_poster_OcclusionRoughnessMetallic.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_poster_OcclusionRoughnessMetallic.uasset new file mode 100644 index 00000000..503a598a --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_poster_OcclusionRoughnessMetallic.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e9ebd6d9f38883bed33518fabab6b900bd919377f7b631eaa317e53c58cc3b92 +size 1429535 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_KOMET_poster1.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_KOMET_poster1.uasset new file mode 100644 index 00000000..af5782f8 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_KOMET_poster1.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:880252cad78514366bf7932e60d4cebce3bcc5393a0eb135a8c931dd3cb297d4 +size 14306 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_KOMET_poster2.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_KOMET_poster2.uasset new file mode 100644 index 00000000..2b8b9d4a --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_KOMET_poster2.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2270c17e8e92fda32343505f80bd3e67657f5c4cbda75f0dd95098a8ea8a1890 +size 13497 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_KOMET_poster3.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_KOMET_poster3.uasset new file mode 100644 index 00000000..d014f4d3 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_KOMET_poster3.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0b50d5e98f3324998ea0fa03418941868bebd92c22b00d1db0c92537cfa6eef +size 16667 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_SPACESHIP10.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_SPACESHIP10.uasset new file mode 100644 index 00000000..02380191 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_SPACESHIP10.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b12932dc517f5415aeee17258b81be468bdfe609638cba89a3778a39275162d +size 13836 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_SPACESHIP6.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_SPACESHIP6.uasset new file mode 100644 index 00000000..9a3e656a --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_SPACESHIP6.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:52727988bfbb81122d315f0d01916e2ba494fb86d69694c660faaf92b071cff3 +size 13055 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_SPACESHIP7.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_SPACESHIP7.uasset new file mode 100644 index 00000000..4f20d28f --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_SPACESHIP7.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85a0f86530805696f7e8dda40bb16fd2c50d360f68a24f93839e6f15d9a9d2c4 +size 12403 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_SPACESHIP8.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_SPACESHIP8.uasset new file mode 100644 index 00000000..64de6e27 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_SPACESHIP8.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3bfc2ec418e58c749dba041328d4ecb4273e7f81cfd4d31c93f48de553eb9d89 +size 12903 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_SPACESHIP9.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_SPACESHIP9.uasset new file mode 100644 index 00000000..323a02df --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_SPACESHIP9.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3454ac32000a1a68eec6a71d78f8426299339c3f48857e161ec210d5d4b4f0dd +size 13948 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_TORIO_poster.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_TORIO_poster.uasset new file mode 100644 index 00000000..da28cf76 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_TORIO_poster.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7af3f7d2ec8f08760f6f712fb863e09ec856f085ea2e0ab675ccbc4070a93ec +size 15382 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_TORIO_poster2.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_TORIO_poster2.uasset new file mode 100644 index 00000000..bf2adc69 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_TORIO_poster2.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e0bf0dd26ac167b535ee566023c54461c68ca99c9e676a53ad0f5c60fef3c032 +size 16021 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_TORIO_poster4.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_TORIO_poster4.uasset new file mode 100644 index 00000000..6d40d30e --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_TORIO_poster4.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0bb1d4d532f7acc15eb48f7f89dd8e6389bd6d6eab90d5a79695e5a4aac63721 +size 15218 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_VLAST_poster1.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_VLAST_poster1.uasset new file mode 100644 index 00000000..5211e053 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_VLAST_poster1.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b5ce74e3d45ee1f7487be3db0259484a74be92402d1767edd8110d58e8e0d29f +size 12365 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_VLAST_poster2.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_VLAST_poster2.uasset new file mode 100644 index 00000000..41635cd1 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_VLAST_poster2.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a1d16d52e9385d16be2bd29c596c61bd28d509fab367784203184ab7895ce8d +size 11878 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_VLAST_poster3.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_VLAST_poster3.uasset new file mode 100644 index 00000000..015e3a7d --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_VLAST_poster3.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2b24c2cb7ada4f2e5ff4e6c4caf7c3cd89ccd6b2fc6bb5985b41c780931938e +size 12885 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/frame.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/frame.uasset new file mode 100644 index 00000000..765c200b --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/frame.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6331a1642afb4c7bf37ffeb290b055acbc45fac82703acf899e7a6d245e56206 +size 27140 diff --git a/EndlessVendetta/Content/Levels/Apartment_hit.umap b/EndlessVendetta/Content/Levels/Apartment_hit.umap index a3b78a7d..dcdadba6 100644 --- a/EndlessVendetta/Content/Levels/Apartment_hit.umap +++ b/EndlessVendetta/Content/Levels/Apartment_hit.umap @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c29278a46414b693b8124df0c46a5c9d4521ea21a93b1500df9041f3eee58b1b -size 306664 +oid sha256:6103f050079a52d2bce26a3d38afedfa97369d2a371ee07733723ea60adf3744 +size 308315 From 2b559ff268e6df28a5ee96bca330d2eb6f69f416 Mon Sep 17 00:00:00 2001 From: LOUIS HORNE Date: Wed, 31 Jan 2024 12:59:00 +0000 Subject: [PATCH 057/112] Added Rugs --- .../Content/Assets/Objects/Tutorial-Level/Rug01.uasset | 3 +++ .../Content/Assets/Objects/Tutorial-Level/Rug02.uasset | 3 +++ .../Content/Assets/Objects/Tutorial-Level/Rug03.uasset | 3 +++ .../Assets/Objects/Tutorial-Level/Rug_graph_basecolor.uasset | 3 +++ .../Objects/Tutorial-Level/Textures/Rug01/M_RugTrim01.uasset | 3 +++ .../Textures/Rug01/Panel_Rug01_BaseColor.uasset | 3 +++ .../Tutorial-Level/Textures/Rug01/Panel_Rug01_Normal.uasset | 3 +++ .../Rug01/Panel_Rug01_OcclusionRoughnessMetallic.uasset | 3 +++ EndlessVendetta/Content/Levels/Apartment_hit.umap | 4 ++-- 9 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Rug01.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Rug02.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Rug03.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Rug_graph_basecolor.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Rug01/M_RugTrim01.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Rug01/Panel_Rug01_BaseColor.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Rug01/Panel_Rug01_Normal.uasset create mode 100644 EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Rug01/Panel_Rug01_OcclusionRoughnessMetallic.uasset diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Rug01.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Rug01.uasset new file mode 100644 index 00000000..c49c2b09 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Rug01.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c598ad12df877a5e0476cff03b380258dca3e05017bf415edea3e63e76c53288 +size 18752 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Rug02.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Rug02.uasset new file mode 100644 index 00000000..c16e0826 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Rug02.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c3667128a04932f62aa1235b4a6b4587224d7f818e7aae0e1259e46ad6d0322 +size 15908 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Rug03.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Rug03.uasset new file mode 100644 index 00000000..f730dc20 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Rug03.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:997d095144c3bb1b18e73755df8adcadc2318bca7aa59ecc9b00c2e236e665ab +size 16422 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Rug_graph_basecolor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Rug_graph_basecolor.uasset new file mode 100644 index 00000000..88003fd9 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Rug_graph_basecolor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:94d72647b4d8f51e3d79b84e34289b8ca60694ec303e32b30d0ca2568c68cbdd +size 23195321 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Rug01/M_RugTrim01.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Rug01/M_RugTrim01.uasset new file mode 100644 index 00000000..aa2b0c72 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Rug01/M_RugTrim01.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d4d4ed190fd5c11eef8d97f53c0b9a1bec4f3e394285d1929a8735da42671ff0 +size 18401 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Rug01/Panel_Rug01_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Rug01/Panel_Rug01_BaseColor.uasset new file mode 100644 index 00000000..6c98fc02 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Rug01/Panel_Rug01_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f88f51c8b4f45b84184569bc2fb688876c71bf9bc2b4f1224369cbb96fbaf96c +size 2075587 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Rug01/Panel_Rug01_Normal.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Rug01/Panel_Rug01_Normal.uasset new file mode 100644 index 00000000..daab4707 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Rug01/Panel_Rug01_Normal.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a640efef6ebae2faefc853184f891226237d0f84844505827be87150c2373a1 +size 3341437 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Rug01/Panel_Rug01_OcclusionRoughnessMetallic.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Rug01/Panel_Rug01_OcclusionRoughnessMetallic.uasset new file mode 100644 index 00000000..99028e10 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Rug01/Panel_Rug01_OcclusionRoughnessMetallic.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12bfea5270f1a724a6b54428de415eea226104579f1bbfbc536a612a63a53e8c +size 531484 diff --git a/EndlessVendetta/Content/Levels/Apartment_hit.umap b/EndlessVendetta/Content/Levels/Apartment_hit.umap index dcdadba6..6f14f48c 100644 --- a/EndlessVendetta/Content/Levels/Apartment_hit.umap +++ b/EndlessVendetta/Content/Levels/Apartment_hit.umap @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6103f050079a52d2bce26a3d38afedfa97369d2a371ee07733723ea60adf3744 -size 308315 +oid sha256:45295a3ee523689403fe925e0b81c8a41d14383dae867668716829835aa0c463 +size 312493 From 3354a804cbb4e0ba9bf7451d15f2a6fe6954cf39 Mon Sep 17 00:00:00 2001 From: Rafal Swierczek Date: Thu, 1 Feb 2024 03:58:11 +0000 Subject: [PATCH 058/112] Added Temp Hover Bike and Implemented Lean Functionality --- .../Content/Ships/BP_SpaceShip.uasset | 4 +-- .../Content/Ships/LandingZone.uasset | 4 +-- .../EndlessVendetta/SpaceShip/SpaceShip.cpp | 28 ++++++++++++++++++- .../EndlessVendetta/SpaceShip/SpaceShip.h | 12 ++++++++ 4 files changed, 43 insertions(+), 5 deletions(-) diff --git a/EndlessVendetta/Content/Ships/BP_SpaceShip.uasset b/EndlessVendetta/Content/Ships/BP_SpaceShip.uasset index 71994809..92ea4e0b 100644 --- a/EndlessVendetta/Content/Ships/BP_SpaceShip.uasset +++ b/EndlessVendetta/Content/Ships/BP_SpaceShip.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e278fce27c3ac05506781357ed5235d16e8f371a9ad242cebd374f17c20bb338 -size 37016 +oid sha256:b44f822f5c6482c3351c981ff00819af201f59f73a9f8a4a84e2eb6ba0bd9d72 +size 59373 diff --git a/EndlessVendetta/Content/Ships/LandingZone.uasset b/EndlessVendetta/Content/Ships/LandingZone.uasset index cdffb78b..d8d6f2ba 100644 --- a/EndlessVendetta/Content/Ships/LandingZone.uasset +++ b/EndlessVendetta/Content/Ships/LandingZone.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d996a836e1ad72307a3f43490e4b8ac9958cef1af776de25773aca5e74506822 -size 88748 +oid sha256:dfde55ec08a338b74108a49afc1af5c2f689d323773b9cc4719adcacce033a03 +size 77058 diff --git a/EndlessVendetta/Source/EndlessVendetta/SpaceShip/SpaceShip.cpp b/EndlessVendetta/Source/EndlessVendetta/SpaceShip/SpaceShip.cpp index a12d3bcf..735a6222 100644 --- a/EndlessVendetta/Source/EndlessVendetta/SpaceShip/SpaceShip.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/SpaceShip/SpaceShip.cpp @@ -4,6 +4,9 @@ #include "SpaceShip.h" #include "Components/ArrowComponent.h" +#include "GameFramework/CharacterMovementComponent.h" +#include "Kismet/GameplayStatics.h" +#include "Kismet/KismetMathLibrary.h" // Sets default values ASpaceShip::ASpaceShip() @@ -32,12 +35,32 @@ void ASpaceShip::BeginPlay() { Super::BeginPlay(); + BikeParentComp = Cast(GetComponentByClass(USpringArmComponent::StaticClass())); + PlayersCharacter = GetWorld()->GetFirstPlayerController()->GetCharacter(); PlayersController = PlayersCharacter->GetController(); TArray SeatComps = GetComponentsByTag(UArrowComponent::StaticClass(), FName("Seat")); SeatComponent = Cast(SeatComps[0]); } +void ASpaceShip::BikeSwayBasedOnAcc(float DeltaTime) +{ + float LeanSpeed = 90.f; + float ForwardLeanIncrement = LeanSpeed * DeltaTime * MovementVec.Y; + float RightLeanIncrement = LeanSpeed * DeltaTime * MovementVec.X; + + FRotator BikeRelativeRot = BikeParentComp->GetRelativeRotation(); + float BikePitch = BikeRelativeRot.Pitch; + float BikeRoll = BikeRelativeRot.Roll; + BikeRelativeRot.Pitch = FMath::Clamp(BikePitch + ForwardLeanIncrement, -5.f, 5.f); + BikeRelativeRot.Roll = FMath::Clamp(BikeRoll + RightLeanIncrement, -30.f, 30.f); + + if (MovementVec.Y == 0) BikeRelativeRot.Pitch = BikePitch > 0 ? FMath::Clamp(BikePitch - ((LeanSpeed / 2.f) * DeltaTime), 0.f, 99.f) : FMath::Clamp(BikePitch + ((LeanSpeed / 2.f) * DeltaTime), -99, 0.f); + if (MovementVec.X == 0) BikeRelativeRot.Roll = BikeRoll > 0 ? FMath::Clamp(BikeRoll - ((LeanSpeed / 2.f) * DeltaTime), 0.f, 99.f) : FMath::Clamp(BikeRoll + ((LeanSpeed / 2.f) * DeltaTime), -99, 0.f); + + BikeParentComp->SetRelativeRotation(BikeRelativeRot); +} + // Called every frame void ASpaceShip::Tick(float DeltaTime) { @@ -45,7 +68,8 @@ void ASpaceShip::Tick(float DeltaTime) PlayersCharacter->SetActorLocation(SeatComponent->GetComponentLocation()); PlayersController->SetControlRotation(GetActorRotation()); - + BikeSwayBasedOnAcc(DeltaTime); + SightCheck(); } @@ -64,6 +88,8 @@ void ASpaceShip::PlayerInteracting() void ASpaceShip::MoveShip(FVector2D MovementVector) { + MovementVec = MovementVector; + GetWorld()->GetTimerManager().SetTimer(BikeLeanResetTimer, this, &ASpaceShip::ResetBikeLean, 0.2f); // Get ships direction vectors, and ignore their pitch FVector ForwardVector = GetActorForwardVector(); ForwardVector.Z = 0; diff --git a/EndlessVendetta/Source/EndlessVendetta/SpaceShip/SpaceShip.h b/EndlessVendetta/Source/EndlessVendetta/SpaceShip/SpaceShip.h index 78f0ed03..87ee3d63 100644 --- a/EndlessVendetta/Source/EndlessVendetta/SpaceShip/SpaceShip.h +++ b/EndlessVendetta/Source/EndlessVendetta/SpaceShip/SpaceShip.h @@ -5,6 +5,7 @@ #include "CoreMinimal.h" #include "LandingZone.h" #include "GameFramework/Character.h" +#include "GameFramework/SpringArmComponent.h" #include "SpaceShip.generated.h" @@ -21,10 +22,21 @@ class ENDLESSVENDETTA_API ASpaceShip : public ACharacter void SightCheck(); + void BikeSwayBasedOnAcc(float DeltaTime); + + FVector2D MovementVec; + USpringArmComponent* BikeParentComp; + FTimerHandle BikeLeanResetTimer; + void ResetBikeLean() + { + MovementVec.X = 0; + MovementVec.Y = 0; + } protected: // Called when the game starts or when spawned virtual void BeginPlay() override; + public: // Sets default values for this pawn's properties ASpaceShip(); From 486753b814c9875f3870201e68022f279b12278b Mon Sep 17 00:00:00 2001 From: Rafal Swierczek Date: Thu, 1 Feb 2024 03:59:07 +0000 Subject: [PATCH 059/112] Reorganised Bounty System File Structure --- .../Content/BountySystem/ApartmentBounty/MB_Apartment.uasset | 3 +++ .../Content/BountySystem/BountyDirector/BountyDirector.uasset | 3 --- .../Content/BountySystem/BountyDirector/PC_Background.uasset | 3 --- .../Content/BountySystem/BountyDirector/WBP_PC_Display.uasset | 3 --- .../Content/BountySystem/BountyDirector/WBP_StaticPCBG.uasset | 3 --- .../Content/BountySystem/CP_FinalCheckpoint.uasset | 3 +++ .../BountySystem/ControlsTutorial/BD_ControlsTutorial.uasset | 4 ++-- .../Content/BountySystem/ControlsTutorial/BP_FakePC.uasset | 4 ++-- .../BountySystem/ControlsTutorial/Bounty/MB_Training.uasset | 4 ++-- .../BountySystem/ControlsTutorial/Bounty/OWCP_Training.uasset | 3 +++ .../GunRangeMechanics/GadgetRoom/BP_CombatWorkbench.uasset | 4 ++-- .../GunRangeMechanics/GadgetRoom/BP_ReconWorkbench.uasset | 4 ++-- .../BountySystem/Legacy/BountyDirector/BountyDirector.uasset | 3 +++ .../{ => Legacy}/BountyDirector/PC_Background.jpg | 0 .../BountySystem/Legacy/BountyDirector/PC_Background.uasset | 3 +++ .../BountySystem/Legacy/BountyDirector/WBP_PC_Display.uasset | 3 +++ .../BountySystem/Legacy/BountyDirector/WBP_StaticPCBG.uasset | 3 +++ .../FavourSystemBountyTest/MainBounty/CP_MB.uasset | 3 +++ .../FavourSystemBountyTest/MainBounty/MB_TestBounty.uasset | 3 +++ .../FavourSystemBountyTest/SideBounties/CP_1.uasset | 3 +++ .../FavourSystemBountyTest/SideBounties/CP_2.uasset | 3 +++ .../FavourSystemBountyTest/SideBounties/CP_3.uasset | 3 +++ .../FavourSystemBountyTest/SideBounties/SB_1.uasset | 3 +++ .../FavourSystemBountyTest/SideBounties/SB_2.uasset | 3 +++ .../FavourSystemBountyTest/SideBounties/SB_3.uasset | 3 +++ .../Legacy/TutorialFacility/Checkpoints/BP_WeaponTable.uasset | 3 +++ .../Checkpoints/BountySimulation/CP_ElimTutorialTarget.uasset | 3 +++ .../BountySimulation/CP_EnterBountySimulationFacility.uasset | 3 +++ .../BountySimulation/CP_ExitBountySimulationFacility.uasset | 3 +++ .../TutorialFacility/Checkpoints/CP_IntroCinematic.uasset | 3 +++ .../TutorialFacility/Checkpoints/CP_ParkourTutorial.uasset | 3 +++ .../TutorialFacility/Checkpoints/CP_PickUpWeapon.uasset | 3 +++ .../Checkpoints/FiringRanges/BP_CQCRange.uasset | 3 +++ .../Checkpoints/FiringRanges/BP_LongRange.uasset | 3 +++ .../Checkpoints/FiringRanges/CP_CheckOutCQCRange.uasset | 3 +++ .../Checkpoints/FiringRanges/CP_CheckOutLongRange.uasset | 3 +++ .../Checkpoints/GadgetTutorial/BP_InfiniteHealthEnemy.uasset | 3 +++ .../GadgetTutorial/Combat/CP_CombatTraining.uasset | 3 +++ .../GadgetTutorial/Combat/GT_OverloadModule.uasset | 3 +++ .../Checkpoints/GadgetTutorial/GadgetTutorialIcon.png | 0 .../Checkpoints/GadgetTutorial/GadgetTutorialIcon.uasset | 3 +++ .../Checkpoints/GadgetTutorial/Recon/CP_GoDownstairs.uasset | 3 +++ .../Checkpoints/GadgetTutorial/Recon/CP_ReconTraining.uasset | 3 +++ .../Checkpoints/GadgetTutorial/Recon/GT_RingModule.uasset | 3 +++ .../Checkpoints/GadgetTutorial/Recon/GT_VisionLink.uasset | 3 +++ .../Checkpoints/GadgetTutorial/WBP_GadgetMenu.uasset | 3 +++ .../Checkpoints/WBP_EnterSimulationCutscene.uasset | 3 +++ .../TutorialFacility/Checkpoints/WBP_HiredCutscene.uasset | 3 +++ .../Enemies/BedroomEnemy/BE_TF_Bedroom.uasset | 3 +++ .../Enemies/BedroomEnemy/PP_TF_Bedroom.uasset | 3 +++ .../Enemies/DiningRoomEnemy/BE_TF_Dining.uasset | 3 +++ .../Enemies/DiningRoomEnemy/PP_TF_DiningRoom.uasset | 3 +++ .../Enemies/LivingRoomEnemy/BE_TF_Living.uasset | 3 +++ .../Enemies/LivingRoomEnemy/PP_TF_LivingRoom.uasset | 3 +++ .../Enemies/OutsidePatrolEnemy/BE_TF_Outside.uasset | 3 +++ .../Enemies/OutsidePatrolEnemy/PP_TF_Outside.uasset | 3 +++ .../Enemies/RoamingEnemy/BE_TF_Roaming.uasset | 3 +++ .../Enemies/RoamingEnemy/PP_TF_Roaming.uasset | 3 +++ .../TutorialFacility/Enemies/TargetEnemy/BE_TF_Target.uasset | 3 +++ .../TutorialFacility/Enemies/TargetEnemy/PP_TF_Target.uasset | 3 +++ .../Enemies/UpstairsPatrolEnemy/BE_TF_Upstairs.uasset | 3 +++ .../Enemies/UpstairsPatrolEnemy/PP_TF_Upstairs.uasset | 3 +++ .../{ => Legacy}/TutorialFacility/IntroCutscene/IntroF1.jpg | 0 .../Legacy/TutorialFacility/IntroCutscene/IntroF1.uasset | 3 +++ .../{ => Legacy}/TutorialFacility/IntroCutscene/IntroF10.jpg | 0 .../Legacy/TutorialFacility/IntroCutscene/IntroF10.uasset | 3 +++ .../{ => Legacy}/TutorialFacility/IntroCutscene/IntroF11.jpg | 0 .../Legacy/TutorialFacility/IntroCutscene/IntroF11.uasset | 3 +++ .../{ => Legacy}/TutorialFacility/IntroCutscene/IntroF12.jpg | 0 .../Legacy/TutorialFacility/IntroCutscene/IntroF12.uasset | 3 +++ .../{ => Legacy}/TutorialFacility/IntroCutscene/IntroF13.jpg | 0 .../Legacy/TutorialFacility/IntroCutscene/IntroF13.uasset | 3 +++ .../{ => Legacy}/TutorialFacility/IntroCutscene/IntroF14.jpg | 0 .../Legacy/TutorialFacility/IntroCutscene/IntroF14.uasset | 3 +++ .../{ => Legacy}/TutorialFacility/IntroCutscene/IntroF15.jpg | 0 .../Legacy/TutorialFacility/IntroCutscene/IntroF15.uasset | 3 +++ .../{ => Legacy}/TutorialFacility/IntroCutscene/IntroF16.jpg | 0 .../Legacy/TutorialFacility/IntroCutscene/IntroF16.uasset | 3 +++ .../{ => Legacy}/TutorialFacility/IntroCutscene/IntroF17.jpg | 0 .../Legacy/TutorialFacility/IntroCutscene/IntroF17.uasset | 3 +++ .../{ => Legacy}/TutorialFacility/IntroCutscene/IntroF18.jpg | 0 .../Legacy/TutorialFacility/IntroCutscene/IntroF18.uasset | 3 +++ .../{ => Legacy}/TutorialFacility/IntroCutscene/IntroF19.jpg | 0 .../Legacy/TutorialFacility/IntroCutscene/IntroF19.uasset | 3 +++ .../{ => Legacy}/TutorialFacility/IntroCutscene/IntroF2.jpg | 0 .../Legacy/TutorialFacility/IntroCutscene/IntroF2.uasset | 3 +++ .../{ => Legacy}/TutorialFacility/IntroCutscene/IntroF20.jpg | 0 .../Legacy/TutorialFacility/IntroCutscene/IntroF20.uasset | 3 +++ .../{ => Legacy}/TutorialFacility/IntroCutscene/IntroF21.jpg | 0 .../Legacy/TutorialFacility/IntroCutscene/IntroF21.uasset | 3 +++ .../{ => Legacy}/TutorialFacility/IntroCutscene/IntroF22.jpg | 0 .../Legacy/TutorialFacility/IntroCutscene/IntroF22.uasset | 3 +++ .../{ => Legacy}/TutorialFacility/IntroCutscene/IntroF23.jpg | 0 .../Legacy/TutorialFacility/IntroCutscene/IntroF23.uasset | 3 +++ .../{ => Legacy}/TutorialFacility/IntroCutscene/IntroF24.jpg | 0 .../Legacy/TutorialFacility/IntroCutscene/IntroF24.uasset | 3 +++ .../{ => Legacy}/TutorialFacility/IntroCutscene/IntroF3.jpg | 0 .../Legacy/TutorialFacility/IntroCutscene/IntroF3.uasset | 3 +++ .../{ => Legacy}/TutorialFacility/IntroCutscene/IntroF4.jpg | 0 .../Legacy/TutorialFacility/IntroCutscene/IntroF4.uasset | 3 +++ .../{ => Legacy}/TutorialFacility/IntroCutscene/IntroF5.jpg | 0 .../Legacy/TutorialFacility/IntroCutscene/IntroF5.uasset | 3 +++ .../{ => Legacy}/TutorialFacility/IntroCutscene/IntroF6.jpg | 0 .../Legacy/TutorialFacility/IntroCutscene/IntroF6.uasset | 3 +++ .../{ => Legacy}/TutorialFacility/IntroCutscene/IntroF7.jpg | 0 .../Legacy/TutorialFacility/IntroCutscene/IntroF7.uasset | 3 +++ .../{ => Legacy}/TutorialFacility/IntroCutscene/IntroF8.jpg | 0 .../Legacy/TutorialFacility/IntroCutscene/IntroF8.uasset | 3 +++ .../{ => Legacy}/TutorialFacility/IntroCutscene/IntroF9.jpg | 0 .../Legacy/TutorialFacility/IntroCutscene/IntroF9.uasset | 3 +++ .../TutorialFacility/IntroCutscene/PlayersHomeShipImage.jpg | 0 .../IntroCutscene/PlayersHomeShipImage.uasset | 3 +++ .../TutorialFacility/IntroCutscene/WBP_IntroCutscene.uasset | 3 +++ .../Legacy/TutorialFacility/MB_TutorialFacility.uasset | 3 +++ .../BountySystem/Legacy/TutorialFacility/RespawnPoint.uasset | 3 +++ .../TutorialFacility/TrainingFacilityBountyDirector.uasset | 3 +++ .../Content/BountySystem/Legacy/testintesting.uasset | 3 +++ .../FavourSystemBountyTest/MainBounty/CP_MB.uasset | 3 --- .../FavourSystemBountyTest/MainBounty/MB_TestBounty.uasset | 3 --- .../FavourSystemBountyTest/SideBounties/CP_1.uasset | 3 --- .../FavourSystemBountyTest/SideBounties/CP_2.uasset | 3 --- .../FavourSystemBountyTest/SideBounties/CP_3.uasset | 3 --- .../FavourSystemBountyTest/SideBounties/SB_1.uasset | 3 --- .../FavourSystemBountyTest/SideBounties/SB_2.uasset | 3 --- .../FavourSystemBountyTest/SideBounties/SB_3.uasset | 3 --- .../TutorialFacility/Checkpoints/BP_WeaponTable.uasset | 3 --- .../Checkpoints/BountySimulation/CP_ElimTutorialTarget.uasset | 3 --- .../BountySimulation/CP_EnterBountySimulationFacility.uasset | 3 --- .../BountySimulation/CP_ExitBountySimulationFacility.uasset | 3 --- .../TutorialFacility/Checkpoints/CP_IntroCinematic.uasset | 3 --- .../TutorialFacility/Checkpoints/CP_ParkourTutorial.uasset | 3 --- .../TutorialFacility/Checkpoints/CP_PickUpWeapon.uasset | 3 --- .../Checkpoints/FiringRanges/BP_CQCRange.uasset | 3 --- .../Checkpoints/FiringRanges/BP_LongRange.uasset | 3 --- .../Checkpoints/FiringRanges/CP_CheckOutCQCRange.uasset | 3 --- .../Checkpoints/FiringRanges/CP_CheckOutLongRange.uasset | 3 --- .../Checkpoints/GadgetTutorial/BP_GadgetTutorial.uasset | 3 --- .../Checkpoints/GadgetTutorial/BP_InfiniteHealthEnemy.uasset | 3 --- .../Checkpoints/GadgetTutorial/BP_Recon.uasset | 3 --- .../Checkpoints/GadgetTutorial/BP_ReconWorkbench.uasset | 3 --- .../GadgetTutorial/Combat/BP_CombatWorkbench.uasset | 3 --- .../GadgetTutorial/Combat/CP_CombatTraining.uasset | 3 --- .../GadgetTutorial/Combat/GT_OverloadModule.uasset | 3 --- .../Checkpoints/GadgetTutorial/GadgetTutorialIcon.uasset | 3 --- .../Checkpoints/GadgetTutorial/Recon/BP_ReconWorkbench.uasset | 3 --- .../Checkpoints/GadgetTutorial/Recon/CP_GoDownstairs.uasset | 3 --- .../Checkpoints/GadgetTutorial/Recon/CP_ReconTraining.uasset | 3 --- .../Checkpoints/GadgetTutorial/Recon/GT_RingModule.uasset | 3 --- .../Checkpoints/GadgetTutorial/Recon/GT_VisionLink.uasset | 3 --- .../Checkpoints/GadgetTutorial/WBP_GadgetMenu.uasset | 3 --- .../Checkpoints/WBP_EnterSimulationCutscene.uasset | 3 --- .../TutorialFacility/Checkpoints/WBP_HiredCutscene.uasset | 3 --- .../Enemies/BedroomEnemy/BE_TF_Bedroom.uasset | 3 --- .../Enemies/BedroomEnemy/PP_TF_Bedroom.uasset | 3 --- .../Enemies/DiningRoomEnemy/BE_TF_Dining.uasset | 3 --- .../Enemies/DiningRoomEnemy/PP_TF_DiningRoom.uasset | 3 --- .../Enemies/LivingRoomEnemy/BE_TF_Living.uasset | 3 --- .../Enemies/LivingRoomEnemy/PP_TF_LivingRoom.uasset | 3 --- .../Enemies/OutsidePatrolEnemy/BE_TF_Outside.uasset | 3 --- .../TutorialFacility/Enemies/OutsidePatrolEnemy/PP_TF.uasset | 3 --- .../Enemies/OutsidePatrolEnemy/PP_TF_OutBack.uasset | 3 --- .../Enemies/OutsidePatrolEnemy/PP_TF_Outside.uasset | 3 --- .../Enemies/RoamingEnemy/BE_TF_Roaming.uasset | 3 --- .../Enemies/RoamingEnemy/PP_TF_Roaming.uasset | 3 --- .../TutorialFacility/Enemies/TargetEnemy/BE_TF_Target.uasset | 3 --- .../TutorialFacility/Enemies/TargetEnemy/PP_TF_Target.uasset | 3 --- .../Enemies/UpstairsPatrolEnemy/BE_TF_Upstairs.uasset | 3 --- .../Enemies/UpstairsPatrolEnemy/PP_TF_Upstairs.uasset | 3 --- .../TutorialFacility/IntroCutscene/IntroF1.uasset | 3 --- .../TutorialFacility/IntroCutscene/IntroF10.uasset | 3 --- .../TutorialFacility/IntroCutscene/IntroF11.uasset | 3 --- .../TutorialFacility/IntroCutscene/IntroF12.uasset | 3 --- .../TutorialFacility/IntroCutscene/IntroF13.uasset | 3 --- .../TutorialFacility/IntroCutscene/IntroF14.uasset | 3 --- .../TutorialFacility/IntroCutscene/IntroF15.uasset | 3 --- .../TutorialFacility/IntroCutscene/IntroF16.uasset | 3 --- .../TutorialFacility/IntroCutscene/IntroF17.uasset | 3 --- .../TutorialFacility/IntroCutscene/IntroF18.uasset | 3 --- .../TutorialFacility/IntroCutscene/IntroF19.uasset | 3 --- .../TutorialFacility/IntroCutscene/IntroF2.uasset | 3 --- .../TutorialFacility/IntroCutscene/IntroF20.uasset | 3 --- .../TutorialFacility/IntroCutscene/IntroF21.uasset | 3 --- .../TutorialFacility/IntroCutscene/IntroF22.uasset | 3 --- .../TutorialFacility/IntroCutscene/IntroF23.uasset | 3 --- .../TutorialFacility/IntroCutscene/IntroF24.uasset | 3 --- .../TutorialFacility/IntroCutscene/IntroF3.uasset | 3 --- .../TutorialFacility/IntroCutscene/IntroF4.uasset | 3 --- .../TutorialFacility/IntroCutscene/IntroF5.uasset | 3 --- .../TutorialFacility/IntroCutscene/IntroF6.uasset | 3 --- .../TutorialFacility/IntroCutscene/IntroF7.uasset | 3 --- .../TutorialFacility/IntroCutscene/IntroF8.uasset | 3 --- .../TutorialFacility/IntroCutscene/IntroF9.uasset | 3 --- .../IntroCutscene/PlayersHomeShipImage.uasset | 3 --- .../TutorialFacility/IntroCutscene/WBP_IntroCutscene.uasset | 3 --- .../BountySystem/TutorialFacility/MB_TutorialFacility.uasset | 3 --- .../Content/BountySystem/TutorialFacility/RespawnPoint.uasset | 3 --- .../TutorialFacility/TrainingFacilityBountyDirector.uasset | 3 --- EndlessVendetta/Content/BountySystem/testintesting.uasset | 3 --- 198 files changed, 253 insertions(+), 265 deletions(-) create mode 100644 EndlessVendetta/Content/BountySystem/ApartmentBounty/MB_Apartment.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/BountyDirector/BountyDirector.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/BountyDirector/PC_Background.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/BountyDirector/WBP_PC_Display.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/BountyDirector/WBP_StaticPCBG.uasset create mode 100644 EndlessVendetta/Content/BountySystem/CP_FinalCheckpoint.uasset create mode 100644 EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/OWCP_Training.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/BountyDirector/BountyDirector.uasset rename EndlessVendetta/Content/BountySystem/{ => Legacy}/BountyDirector/PC_Background.jpg (100%) create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/BountyDirector/PC_Background.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/BountyDirector/WBP_PC_Display.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/BountyDirector/WBP_StaticPCBG.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/MainBounty/CP_MB.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/MainBounty/MB_TestBounty.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/SideBounties/CP_1.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/SideBounties/CP_2.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/SideBounties/CP_3.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/SideBounties/SB_1.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/SideBounties/SB_2.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/SideBounties/SB_3.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/BP_WeaponTable.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/BountySimulation/CP_ElimTutorialTarget.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/BountySimulation/CP_EnterBountySimulationFacility.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/BountySimulation/CP_ExitBountySimulationFacility.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/CP_IntroCinematic.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/CP_ParkourTutorial.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/CP_PickUpWeapon.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/FiringRanges/BP_CQCRange.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/FiringRanges/BP_LongRange.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/FiringRanges/CP_CheckOutCQCRange.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/FiringRanges/CP_CheckOutLongRange.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/BP_InfiniteHealthEnemy.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/Combat/CP_CombatTraining.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/Combat/GT_OverloadModule.uasset rename EndlessVendetta/Content/BountySystem/{ => Legacy}/TutorialFacility/Checkpoints/GadgetTutorial/GadgetTutorialIcon.png (100%) create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/GadgetTutorialIcon.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/Recon/CP_GoDownstairs.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/Recon/CP_ReconTraining.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/Recon/GT_RingModule.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/Recon/GT_VisionLink.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/WBP_GadgetMenu.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/WBP_EnterSimulationCutscene.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/WBP_HiredCutscene.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/BedroomEnemy/BE_TF_Bedroom.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/BedroomEnemy/PP_TF_Bedroom.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/DiningRoomEnemy/BE_TF_Dining.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/DiningRoomEnemy/PP_TF_DiningRoom.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/LivingRoomEnemy/BE_TF_Living.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/LivingRoomEnemy/PP_TF_LivingRoom.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/OutsidePatrolEnemy/BE_TF_Outside.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/OutsidePatrolEnemy/PP_TF_Outside.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/RoamingEnemy/BE_TF_Roaming.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/RoamingEnemy/PP_TF_Roaming.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/TargetEnemy/BE_TF_Target.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/TargetEnemy/PP_TF_Target.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/UpstairsPatrolEnemy/BE_TF_Upstairs.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/UpstairsPatrolEnemy/PP_TF_Upstairs.uasset rename EndlessVendetta/Content/BountySystem/{ => Legacy}/TutorialFacility/IntroCutscene/IntroF1.jpg (100%) create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF1.uasset rename EndlessVendetta/Content/BountySystem/{ => Legacy}/TutorialFacility/IntroCutscene/IntroF10.jpg (100%) create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF10.uasset rename EndlessVendetta/Content/BountySystem/{ => Legacy}/TutorialFacility/IntroCutscene/IntroF11.jpg (100%) create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF11.uasset rename EndlessVendetta/Content/BountySystem/{ => Legacy}/TutorialFacility/IntroCutscene/IntroF12.jpg (100%) create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF12.uasset rename EndlessVendetta/Content/BountySystem/{ => Legacy}/TutorialFacility/IntroCutscene/IntroF13.jpg (100%) create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF13.uasset rename EndlessVendetta/Content/BountySystem/{ => Legacy}/TutorialFacility/IntroCutscene/IntroF14.jpg (100%) create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF14.uasset rename EndlessVendetta/Content/BountySystem/{ => Legacy}/TutorialFacility/IntroCutscene/IntroF15.jpg (100%) create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF15.uasset rename EndlessVendetta/Content/BountySystem/{ => Legacy}/TutorialFacility/IntroCutscene/IntroF16.jpg (100%) create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF16.uasset rename EndlessVendetta/Content/BountySystem/{ => Legacy}/TutorialFacility/IntroCutscene/IntroF17.jpg (100%) create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF17.uasset rename EndlessVendetta/Content/BountySystem/{ => Legacy}/TutorialFacility/IntroCutscene/IntroF18.jpg (100%) create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF18.uasset rename EndlessVendetta/Content/BountySystem/{ => Legacy}/TutorialFacility/IntroCutscene/IntroF19.jpg (100%) create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF19.uasset rename EndlessVendetta/Content/BountySystem/{ => Legacy}/TutorialFacility/IntroCutscene/IntroF2.jpg (100%) create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF2.uasset rename EndlessVendetta/Content/BountySystem/{ => Legacy}/TutorialFacility/IntroCutscene/IntroF20.jpg (100%) create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF20.uasset rename EndlessVendetta/Content/BountySystem/{ => Legacy}/TutorialFacility/IntroCutscene/IntroF21.jpg (100%) create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF21.uasset rename EndlessVendetta/Content/BountySystem/{ => Legacy}/TutorialFacility/IntroCutscene/IntroF22.jpg (100%) create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF22.uasset rename EndlessVendetta/Content/BountySystem/{ => Legacy}/TutorialFacility/IntroCutscene/IntroF23.jpg (100%) create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF23.uasset rename EndlessVendetta/Content/BountySystem/{ => Legacy}/TutorialFacility/IntroCutscene/IntroF24.jpg (100%) create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF24.uasset rename EndlessVendetta/Content/BountySystem/{ => Legacy}/TutorialFacility/IntroCutscene/IntroF3.jpg (100%) create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF3.uasset rename EndlessVendetta/Content/BountySystem/{ => Legacy}/TutorialFacility/IntroCutscene/IntroF4.jpg (100%) create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF4.uasset rename EndlessVendetta/Content/BountySystem/{ => Legacy}/TutorialFacility/IntroCutscene/IntroF5.jpg (100%) create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF5.uasset rename EndlessVendetta/Content/BountySystem/{ => Legacy}/TutorialFacility/IntroCutscene/IntroF6.jpg (100%) create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF6.uasset rename EndlessVendetta/Content/BountySystem/{ => Legacy}/TutorialFacility/IntroCutscene/IntroF7.jpg (100%) create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF7.uasset rename EndlessVendetta/Content/BountySystem/{ => Legacy}/TutorialFacility/IntroCutscene/IntroF8.jpg (100%) create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF8.uasset rename EndlessVendetta/Content/BountySystem/{ => Legacy}/TutorialFacility/IntroCutscene/IntroF9.jpg (100%) create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF9.uasset rename EndlessVendetta/Content/BountySystem/{ => Legacy}/TutorialFacility/IntroCutscene/PlayersHomeShipImage.jpg (100%) create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/PlayersHomeShipImage.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/WBP_IntroCutscene.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/MB_TutorialFacility.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/RespawnPoint.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/TrainingFacilityBountyDirector.uasset create mode 100644 EndlessVendetta/Content/BountySystem/Legacy/testintesting.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/MainBounty/CP_MB.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/MainBounty/MB_TestBounty.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/SideBounties/CP_1.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/SideBounties/CP_2.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/SideBounties/CP_3.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/SideBounties/SB_1.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/SideBounties/SB_2.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/SideBounties/SB_3.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/BP_WeaponTable.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/BountySimulation/CP_ElimTutorialTarget.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/BountySimulation/CP_EnterBountySimulationFacility.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/BountySimulation/CP_ExitBountySimulationFacility.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/CP_IntroCinematic.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/CP_ParkourTutorial.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/CP_PickUpWeapon.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/FiringRanges/BP_CQCRange.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/FiringRanges/BP_LongRange.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/FiringRanges/CP_CheckOutCQCRange.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/FiringRanges/CP_CheckOutLongRange.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/BP_GadgetTutorial.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/BP_InfiniteHealthEnemy.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/BP_Recon.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/BP_ReconWorkbench.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Combat/BP_CombatWorkbench.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Combat/CP_CombatTraining.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Combat/GT_OverloadModule.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/GadgetTutorialIcon.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Recon/BP_ReconWorkbench.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Recon/CP_GoDownstairs.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Recon/CP_ReconTraining.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Recon/GT_RingModule.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Recon/GT_VisionLink.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/WBP_GadgetMenu.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/WBP_EnterSimulationCutscene.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/WBP_HiredCutscene.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/BedroomEnemy/BE_TF_Bedroom.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/BedroomEnemy/PP_TF_Bedroom.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/DiningRoomEnemy/BE_TF_Dining.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/DiningRoomEnemy/PP_TF_DiningRoom.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/LivingRoomEnemy/BE_TF_Living.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/LivingRoomEnemy/PP_TF_LivingRoom.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/OutsidePatrolEnemy/BE_TF_Outside.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/OutsidePatrolEnemy/PP_TF.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/OutsidePatrolEnemy/PP_TF_OutBack.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/OutsidePatrolEnemy/PP_TF_Outside.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/RoamingEnemy/BE_TF_Roaming.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/RoamingEnemy/PP_TF_Roaming.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/TargetEnemy/BE_TF_Target.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/TargetEnemy/PP_TF_Target.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/UpstairsPatrolEnemy/BE_TF_Upstairs.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/UpstairsPatrolEnemy/PP_TF_Upstairs.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF1.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF10.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF11.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF12.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF13.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF14.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF15.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF16.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF17.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF18.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF19.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF2.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF20.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF21.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF22.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF23.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF24.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF3.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF4.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF5.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF6.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF7.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF8.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF9.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/PlayersHomeShipImage.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/WBP_IntroCutscene.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/MB_TutorialFacility.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/RespawnPoint.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/TutorialFacility/TrainingFacilityBountyDirector.uasset delete mode 100644 EndlessVendetta/Content/BountySystem/testintesting.uasset diff --git a/EndlessVendetta/Content/BountySystem/ApartmentBounty/MB_Apartment.uasset b/EndlessVendetta/Content/BountySystem/ApartmentBounty/MB_Apartment.uasset new file mode 100644 index 00000000..9110e2c0 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/ApartmentBounty/MB_Apartment.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8bf06e49f17ab25c9dc3262bca893f73ef07c79a7ec7535d77a8228abe61b14b +size 22201 diff --git a/EndlessVendetta/Content/BountySystem/BountyDirector/BountyDirector.uasset b/EndlessVendetta/Content/BountySystem/BountyDirector/BountyDirector.uasset deleted file mode 100644 index 2bf1b703..00000000 --- a/EndlessVendetta/Content/BountySystem/BountyDirector/BountyDirector.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cb434bd86f5440300a97827c0043b25f804e7648ac189615a90fb0ba61978060 -size 22149 diff --git a/EndlessVendetta/Content/BountySystem/BountyDirector/PC_Background.uasset b/EndlessVendetta/Content/BountySystem/BountyDirector/PC_Background.uasset deleted file mode 100644 index cbb194b6..00000000 --- a/EndlessVendetta/Content/BountySystem/BountyDirector/PC_Background.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:168c4766d0d0686ae57a992b6b59db7ff0bf98e75547d37623910aa3d8c3649b -size 247653 diff --git a/EndlessVendetta/Content/BountySystem/BountyDirector/WBP_PC_Display.uasset b/EndlessVendetta/Content/BountySystem/BountyDirector/WBP_PC_Display.uasset deleted file mode 100644 index 5e266442..00000000 --- a/EndlessVendetta/Content/BountySystem/BountyDirector/WBP_PC_Display.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:acab50641ebfd8ec73bda00d7ce661f23e7773e4b88863de1982b34b52ebc114 -size 1026639 diff --git a/EndlessVendetta/Content/BountySystem/BountyDirector/WBP_StaticPCBG.uasset b/EndlessVendetta/Content/BountySystem/BountyDirector/WBP_StaticPCBG.uasset deleted file mode 100644 index 02a4c8b4..00000000 --- a/EndlessVendetta/Content/BountySystem/BountyDirector/WBP_StaticPCBG.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1fd8cfefdb9488ee066675e784fe4fe0ec31f689d82741b5cc8d5cfdbf0b64e4 -size 29059 diff --git a/EndlessVendetta/Content/BountySystem/CP_FinalCheckpoint.uasset b/EndlessVendetta/Content/BountySystem/CP_FinalCheckpoint.uasset new file mode 100644 index 00000000..d83eaa94 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/CP_FinalCheckpoint.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2bff7e06faefe4d69d867d3c24fe024f6c2f4756865de9f78175303cb7c2c29a +size 29080 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/BD_ControlsTutorial.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/BD_ControlsTutorial.uasset index 3d6c48db..efcbde67 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/BD_ControlsTutorial.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/BD_ControlsTutorial.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9f3597890b5bb1c549a16055f610a107a9f8e05c797ab946bb4ed85d781c79cd -size 21518 +oid sha256:2a9f8a712306da06c1d52eca49f38b700757456c7de80e65a955f34b4d30ae5d +size 21612 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/BP_FakePC.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/BP_FakePC.uasset index 58851687..dcb8b4a8 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/BP_FakePC.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/BP_FakePC.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:344ee11e0bef8351a5864ff640c6683b671b770618d874e7176520acf7ce28d4 -size 31613 +oid sha256:b71c8e03553562e61f578505293ae2d566f9cb7aa3e4807ca2e12238f684711e +size 31703 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/MB_Training.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/MB_Training.uasset index db0e450f..11607e4e 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/MB_Training.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/MB_Training.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f41891574194825f9b7d5abb02ed49660085013b6da3640f2e67c91f60308aa1 -size 25930 +oid sha256:14fd53a50ee9b233156dd4e8ff06c7a92800afbe4934bb067d7fe94c28d2cdda +size 26131 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/OWCP_Training.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/OWCP_Training.uasset new file mode 100644 index 00000000..e89aa1e7 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/OWCP_Training.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e717b215281004fe89c222daa442d2ac163443e08a7b66f485f8cf43d4adddee +size 24792 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/GadgetRoom/BP_CombatWorkbench.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/GadgetRoom/BP_CombatWorkbench.uasset index ac8bd1a3..7318d3fe 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/GadgetRoom/BP_CombatWorkbench.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/GadgetRoom/BP_CombatWorkbench.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bba29d903bd71cd8616cb0d7fac5d27b6f96532ca0f79a8ec153e2de884045c3 -size 22827 +oid sha256:4a8d81ddcd99e038c7e5e087ad382fb0c3d9fb5685316366ba152b07ff86f9f2 +size 22698 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/GadgetRoom/BP_ReconWorkbench.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/GadgetRoom/BP_ReconWorkbench.uasset index 4161fe1b..c6f71fc5 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/GadgetRoom/BP_ReconWorkbench.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/GadgetRoom/BP_ReconWorkbench.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:589125c0e5dd3e531117df471dc16a549d3ef6f72ddd7ceed1b6832b9f75371a -size 22912 +oid sha256:11a7c980f59dd567c5f59e3963537536bd3f2dd69d43067ac1f84bf228e48983 +size 22967 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/BountyDirector/BountyDirector.uasset b/EndlessVendetta/Content/BountySystem/Legacy/BountyDirector/BountyDirector.uasset new file mode 100644 index 00000000..64387264 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/BountyDirector/BountyDirector.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f10c06825d0044b2d4be64e29bcddb66f8cbbff423ee7c4d3e8fdd0f1fbf00fc +size 22219 diff --git a/EndlessVendetta/Content/BountySystem/BountyDirector/PC_Background.jpg b/EndlessVendetta/Content/BountySystem/Legacy/BountyDirector/PC_Background.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/BountyDirector/PC_Background.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/BountyDirector/PC_Background.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/BountyDirector/PC_Background.uasset b/EndlessVendetta/Content/BountySystem/Legacy/BountyDirector/PC_Background.uasset new file mode 100644 index 00000000..41d69c17 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/BountyDirector/PC_Background.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:658a104a86c28d2c666caa71db206093bd5345567a2e8ab5c11f5a177bd5d639 +size 247667 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/BountyDirector/WBP_PC_Display.uasset b/EndlessVendetta/Content/BountySystem/Legacy/BountyDirector/WBP_PC_Display.uasset new file mode 100644 index 00000000..16bb4a81 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/BountyDirector/WBP_PC_Display.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a478e964b2a600c91f592778049e1f6011049f76555225f9e7a6de26832daec +size 1024136 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/BountyDirector/WBP_StaticPCBG.uasset b/EndlessVendetta/Content/BountySystem/Legacy/BountyDirector/WBP_StaticPCBG.uasset new file mode 100644 index 00000000..b2603fb1 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/BountyDirector/WBP_StaticPCBG.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e1b83c38a21515446e89c93b1c52d3544b78c66c709ac8b3a1f90f4fe15d5ee8 +size 28610 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/MainBounty/CP_MB.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/MainBounty/CP_MB.uasset new file mode 100644 index 00000000..7307ab77 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/MainBounty/CP_MB.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7f07405491766078ac280ee603e56e23e1c8fb67bab131368aa6c9e59dd3b2c +size 63586 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/MainBounty/MB_TestBounty.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/MainBounty/MB_TestBounty.uasset new file mode 100644 index 00000000..315558fe --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/MainBounty/MB_TestBounty.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d3dcedd3c3121a883ccd1f32979bb75c505962763d35fa2d56eeb45e22f48bc +size 36512 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/SideBounties/CP_1.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/SideBounties/CP_1.uasset new file mode 100644 index 00000000..9f8bdb01 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/SideBounties/CP_1.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:84d921ae3f886b7982cd7cd3bd3220bbe0684ed02a4c29917e18feaffb921e79 +size 63625 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/SideBounties/CP_2.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/SideBounties/CP_2.uasset new file mode 100644 index 00000000..2745e6b8 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/SideBounties/CP_2.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d2698a2ae2b1292052cf3305d6f13ff650feb019e96d6661707cc6f2d7e86a72 +size 63619 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/SideBounties/CP_3.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/SideBounties/CP_3.uasset new file mode 100644 index 00000000..a92f29ca --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/SideBounties/CP_3.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:022989dc5dfc1db3a356b48324761390e13d861fd55b863d5160047f8c5e06bd +size 63613 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/SideBounties/SB_1.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/SideBounties/SB_1.uasset new file mode 100644 index 00000000..5589244d --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/SideBounties/SB_1.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b8f2f01ccf500fbadb5a240f7dbef80656bbb0156cb9a37172fc318cff18549 +size 22879 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/SideBounties/SB_2.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/SideBounties/SB_2.uasset new file mode 100644 index 00000000..45962650 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/SideBounties/SB_2.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:774b37246cc07ee0e243da33343721048e0aaee4f895de2efb34cb68141b278b +size 22941 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/SideBounties/SB_3.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/SideBounties/SB_3.uasset new file mode 100644 index 00000000..fea2a55c --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/SideBounties/SB_3.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d69237482e5b359319cd3da38443f444029c3e17ce28ee6963c132cabc8af07 +size 22875 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/BP_WeaponTable.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/BP_WeaponTable.uasset new file mode 100644 index 00000000..86e26ecc --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/BP_WeaponTable.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:52ce673af2c9929ca4172dc11a825fd775000834aeb60c0bf566d0ee09a96c84 +size 29694 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/BountySimulation/CP_ElimTutorialTarget.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/BountySimulation/CP_ElimTutorialTarget.uasset new file mode 100644 index 00000000..14e38669 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/BountySimulation/CP_ElimTutorialTarget.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85d97a29077065fb44f823e797cb17d01f9ea71773db0d63bb70cdecd75c5e6c +size 140715 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/BountySimulation/CP_EnterBountySimulationFacility.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/BountySimulation/CP_EnterBountySimulationFacility.uasset new file mode 100644 index 00000000..4555e49e --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/BountySimulation/CP_EnterBountySimulationFacility.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91bb76daaa241739e84cd8e5475db967b7a090ed397749872e0eed9e67751764 +size 81995 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/BountySimulation/CP_ExitBountySimulationFacility.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/BountySimulation/CP_ExitBountySimulationFacility.uasset new file mode 100644 index 00000000..f894918b --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/BountySimulation/CP_ExitBountySimulationFacility.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57e44aea22dc6a0679b5520909b3141f93767849078b00f61981ec60edc6e236 +size 58101 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/CP_IntroCinematic.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/CP_IntroCinematic.uasset new file mode 100644 index 00000000..850985d1 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/CP_IntroCinematic.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b752be467bc1f771cab1606e0a4359e941121c3de2cd6adab366ef9c5edf37c +size 57900 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/CP_ParkourTutorial.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/CP_ParkourTutorial.uasset new file mode 100644 index 00000000..7f54a4f4 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/CP_ParkourTutorial.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:574b8e6737057c2a38c3d914e37fdad923d8afca96cd8ccf8eb409680ca4703c +size 38502 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/CP_PickUpWeapon.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/CP_PickUpWeapon.uasset new file mode 100644 index 00000000..891c1a92 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/CP_PickUpWeapon.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:efd4f218e1269d71aa2fd5504af0d75233d5fc305cfe12463918af6092496b84 +size 60195 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/FiringRanges/BP_CQCRange.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/FiringRanges/BP_CQCRange.uasset new file mode 100644 index 00000000..39f853ff --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/FiringRanges/BP_CQCRange.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:13c689be17d437fa22bab321597eabff9577e164f610d6568d19a65ada975b44 +size 100380 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/FiringRanges/BP_LongRange.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/FiringRanges/BP_LongRange.uasset new file mode 100644 index 00000000..3679d599 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/FiringRanges/BP_LongRange.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:30cc1f6d2125612681ab878e8aebfa4646193e40df54775d9844cf296b82c295 +size 112244 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/FiringRanges/CP_CheckOutCQCRange.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/FiringRanges/CP_CheckOutCQCRange.uasset new file mode 100644 index 00000000..7c8c9649 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/FiringRanges/CP_CheckOutCQCRange.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fbcab427c8e1bfdd423b6991820145e68bd892fdbc202185ef34f4a561444f90 +size 147980 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/FiringRanges/CP_CheckOutLongRange.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/FiringRanges/CP_CheckOutLongRange.uasset new file mode 100644 index 00000000..03a31093 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/FiringRanges/CP_CheckOutLongRange.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3503aa4e773a374ef6d4175005f3e6d1e5c4e40f673e326b52211824ff3f1449 +size 156494 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/BP_InfiniteHealthEnemy.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/BP_InfiniteHealthEnemy.uasset new file mode 100644 index 00000000..c672543d --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/BP_InfiniteHealthEnemy.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc4c2421452de8606495aab0466b8e08f09084b3f1856a45c58dfcf02be6231d +size 42155 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/Combat/CP_CombatTraining.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/Combat/CP_CombatTraining.uasset new file mode 100644 index 00000000..b1804e89 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/Combat/CP_CombatTraining.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14ee8aa50aaae227912d0a7f0c9f309bd04bc49400bff4dbe8d5ceb95605f740 +size 46647 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/Combat/GT_OverloadModule.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/Combat/GT_OverloadModule.uasset new file mode 100644 index 00000000..5bcf5fc6 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/Combat/GT_OverloadModule.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce45fda78c7faea91cedcad4463e498859625f54277d615fca69536b0a3e0d89 +size 143141 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/GadgetTutorialIcon.png b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/GadgetTutorialIcon.png similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/GadgetTutorialIcon.png rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/GadgetTutorialIcon.png diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/GadgetTutorialIcon.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/GadgetTutorialIcon.uasset new file mode 100644 index 00000000..1f5c659a --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/GadgetTutorialIcon.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a1714e5970e23885870f1e4fe41eab9a3b034c0f26ead5346aa77bc9adeb3362 +size 39841 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/Recon/CP_GoDownstairs.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/Recon/CP_GoDownstairs.uasset new file mode 100644 index 00000000..61428964 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/Recon/CP_GoDownstairs.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f6db8fa7f0cf34e90e33d18300222b4169b78ed334ecd145f440512360b5940b +size 38604 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/Recon/CP_ReconTraining.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/Recon/CP_ReconTraining.uasset new file mode 100644 index 00000000..a167a1f2 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/Recon/CP_ReconTraining.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7cd387fbda243514dd8bd7a03a29a782dd87ef9a6ac0d5c9ccbfcd5a33b14501 +size 46677 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/Recon/GT_RingModule.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/Recon/GT_RingModule.uasset new file mode 100644 index 00000000..ee75aa60 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/Recon/GT_RingModule.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0afa8f007cd324eb2e52ea0bf0674ce9ba3ed337ae6459dd310dd304ae3d219 +size 144256 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/Recon/GT_VisionLink.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/Recon/GT_VisionLink.uasset new file mode 100644 index 00000000..7bc9e5bf --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/Recon/GT_VisionLink.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db5b3c6db40c0ead734f6febffc883903ae8898c7ea35950ba92d64d9477bf7d +size 213168 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/WBP_GadgetMenu.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/WBP_GadgetMenu.uasset new file mode 100644 index 00000000..129eefbf --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/WBP_GadgetMenu.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5c480a50c56791e4ae21ac2cdf3f9a362ec14665b376bbe595f310fa6ea30d7f +size 118680 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/WBP_EnterSimulationCutscene.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/WBP_EnterSimulationCutscene.uasset new file mode 100644 index 00000000..6d65eb5f --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/WBP_EnterSimulationCutscene.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0eab344456c153b25f15718f40309ab3c11ca722a5a0a689137a799041f87826 +size 86035 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/WBP_HiredCutscene.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/WBP_HiredCutscene.uasset new file mode 100644 index 00000000..ca1680ce --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/WBP_HiredCutscene.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7cc5988a0b0d09e9c4b718cdaed4e47842a960de3a817a6b9ba457f504d2fbbb +size 103436 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/BedroomEnemy/BE_TF_Bedroom.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/BedroomEnemy/BE_TF_Bedroom.uasset new file mode 100644 index 00000000..af6e4d99 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/BedroomEnemy/BE_TF_Bedroom.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab67366fd4d5c24e140afd8a1d857cbfa510602f42eab8be85cf8994e4246647 +size 105561 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/BedroomEnemy/PP_TF_Bedroom.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/BedroomEnemy/PP_TF_Bedroom.uasset new file mode 100644 index 00000000..0935974a --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/BedroomEnemy/PP_TF_Bedroom.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50269b6f53df831840a1b8edf1030aa0a8c78a970e0f610ed9759b6a34cc4b50 +size 13032 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/DiningRoomEnemy/BE_TF_Dining.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/DiningRoomEnemy/BE_TF_Dining.uasset new file mode 100644 index 00000000..d9247c70 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/DiningRoomEnemy/BE_TF_Dining.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7fecb40716ffa8b66706ae8e99910f2794668107ff51e3274315f6e099981ae0 +size 105632 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/DiningRoomEnemy/PP_TF_DiningRoom.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/DiningRoomEnemy/PP_TF_DiningRoom.uasset new file mode 100644 index 00000000..aecdb2bc --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/DiningRoomEnemy/PP_TF_DiningRoom.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:06018ab9ab92c83bd1b8973f7f1705d29fcdac2941b1f6d7370d08d9048747c4 +size 13089 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/LivingRoomEnemy/BE_TF_Living.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/LivingRoomEnemy/BE_TF_Living.uasset new file mode 100644 index 00000000..82aad92f --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/LivingRoomEnemy/BE_TF_Living.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bac33da3b4123d3ad696c2c0e77ab098bf71ed7492cf5e024d88079ac551a349 +size 105626 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/LivingRoomEnemy/PP_TF_LivingRoom.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/LivingRoomEnemy/PP_TF_LivingRoom.uasset new file mode 100644 index 00000000..5be8abd6 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/LivingRoomEnemy/PP_TF_LivingRoom.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6155f001c5cf3ed0c06b8d16083dd60cc7edbb717bc695fb966e4f6c2a4d695 +size 13089 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/OutsidePatrolEnemy/BE_TF_Outside.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/OutsidePatrolEnemy/BE_TF_Outside.uasset new file mode 100644 index 00000000..013a1727 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/OutsidePatrolEnemy/BE_TF_Outside.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91b9659ffd04e6cda37de8659bde09613ac91a6257dede524aa5176f9084eb11 +size 105642 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/OutsidePatrolEnemy/PP_TF_Outside.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/OutsidePatrolEnemy/PP_TF_Outside.uasset new file mode 100644 index 00000000..cccbf3ba --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/OutsidePatrolEnemy/PP_TF_Outside.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0366093de4e1c824bd9f4ddd08454796321231d365859dea9f62d057d8366bc0 +size 13056 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/RoamingEnemy/BE_TF_Roaming.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/RoamingEnemy/BE_TF_Roaming.uasset new file mode 100644 index 00000000..012b9935 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/RoamingEnemy/BE_TF_Roaming.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:27d9760d1c3b135c09a17652620b54ab2ddf4a5f4b6bb5b9b914b151c83a3735 +size 105561 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/RoamingEnemy/PP_TF_Roaming.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/RoamingEnemy/PP_TF_Roaming.uasset new file mode 100644 index 00000000..dfa92ffd --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/RoamingEnemy/PP_TF_Roaming.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1a02c8f1d1b55231822f18e3480293e91ca44034dcbf9a6375b63e169aff838e +size 13128 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/TargetEnemy/BE_TF_Target.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/TargetEnemy/BE_TF_Target.uasset new file mode 100644 index 00000000..26f92651 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/TargetEnemy/BE_TF_Target.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d16a2f29193444a7ca6ea3558388089b3addf32426a7c1e632ac2c90fa1943b +size 106185 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/TargetEnemy/PP_TF_Target.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/TargetEnemy/PP_TF_Target.uasset new file mode 100644 index 00000000..d3fc7dad --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/TargetEnemy/PP_TF_Target.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c781553daaed3c0268de5fa03194f560601fd4213379b399b480ab7d7c0df61 +size 13013 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/UpstairsPatrolEnemy/BE_TF_Upstairs.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/UpstairsPatrolEnemy/BE_TF_Upstairs.uasset new file mode 100644 index 00000000..339d5998 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/UpstairsPatrolEnemy/BE_TF_Upstairs.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cecad06a61c97b651f509cd3760e549660bcf4689ddfc2a113888a868f4cf5d4 +size 105635 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/UpstairsPatrolEnemy/PP_TF_Upstairs.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/UpstairsPatrolEnemy/PP_TF_Upstairs.uasset new file mode 100644 index 00000000..bb99b337 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/UpstairsPatrolEnemy/PP_TF_Upstairs.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6528d16cbcf7954407e69ce0e0bcd00199d1efcec89f66b9350985307ca83f15 +size 13099 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF1.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF1.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF1.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF1.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF1.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF1.uasset new file mode 100644 index 00000000..4b3ad12f --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF1.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:13927ed75b340c1d45994f6480d05e126b49286b7f70abc72a1cafb9b605a98a +size 520121 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF10.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF10.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF10.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF10.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF10.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF10.uasset new file mode 100644 index 00000000..91a03129 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF10.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b10f0282440b1714e84bda283dd5ad5d4897a5ee948aa7a705c3277ef5c132c +size 190157 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF11.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF11.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF11.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF11.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF11.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF11.uasset new file mode 100644 index 00000000..cbac11e1 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF11.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b41278c784f571d5b7cf90e5196870d569ad3a3408e58efa2f9e14b739d5974 +size 199897 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF12.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF12.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF12.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF12.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF12.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF12.uasset new file mode 100644 index 00000000..c04f8079 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF12.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:56a286eac8b1f21e971c758cfc398e694075bcc248725b49e4331bb28648c2a1 +size 278017 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF13.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF13.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF13.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF13.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF13.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF13.uasset new file mode 100644 index 00000000..2fabc459 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF13.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8991ab471958d9e0d17318e31d994f069bca9477208f94ed674dfcdb3dc0d0ef +size 216055 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF14.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF14.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF14.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF14.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF14.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF14.uasset new file mode 100644 index 00000000..6412f628 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF14.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7feadcc7a9a72d1608a6cb555e42c120bf3761d0283a633047ade546eff507e1 +size 207094 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF15.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF15.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF15.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF15.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF15.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF15.uasset new file mode 100644 index 00000000..56a815d8 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF15.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:31d285958b9bb9d53914a97f99dc12b69724c3a041b6331bd6f66c1087e55911 +size 265263 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF16.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF16.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF16.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF16.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF16.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF16.uasset new file mode 100644 index 00000000..1803fe27 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF16.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2bc7068735cf576c29aa70a804b1c19439797a9e89f4a5af4be363655b50af1e +size 287312 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF17.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF17.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF17.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF17.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF17.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF17.uasset new file mode 100644 index 00000000..e556406e --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF17.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d69aa3909bdca7c18e8dde23e5998c612a5201c44c88e37f6d5a42649587cc31 +size 93883 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF18.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF18.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF18.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF18.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF18.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF18.uasset new file mode 100644 index 00000000..e373a51a --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF18.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d5080a9dd754481cc48c3ecda48ef344728619abefb1591a2523c76d8a72cd7 +size 222878 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF19.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF19.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF19.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF19.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF19.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF19.uasset new file mode 100644 index 00000000..2d972709 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF19.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a00bb41cb941855298ecc641a8606a2aaef1afc2c16edbc16b20fe73a75fe24 +size 349142 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF2.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF2.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF2.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF2.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF2.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF2.uasset new file mode 100644 index 00000000..7affc7ad --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF2.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:526e67746bf784480c303624c2db22f42cc92b5891a4a5df45724090036de95a +size 514336 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF20.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF20.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF20.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF20.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF20.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF20.uasset new file mode 100644 index 00000000..90545539 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF20.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b1dadc8686d931a7d56dcc615bd360aec43e3d863c62c060a27f9542134d4b8a +size 279722 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF21.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF21.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF21.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF21.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF21.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF21.uasset new file mode 100644 index 00000000..e4ab3727 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF21.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7b0d8b2f8fa3c67325eb40fce823c4992b033430e7a2035c46a46b96b85e921 +size 264996 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF22.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF22.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF22.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF22.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF22.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF22.uasset new file mode 100644 index 00000000..352e3fd5 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF22.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:02672d579a231b7f20e46f660e952424a5ee2cb7c8a65ad2c62a40e65a6955c8 +size 201422 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF23.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF23.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF23.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF23.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF23.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF23.uasset new file mode 100644 index 00000000..054f3996 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF23.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:171f8a1ffaa8e823519dcfeabfc38c20e3b8a8a29b55693eb979a5e22de30404 +size 233885 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF24.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF24.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF24.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF24.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF24.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF24.uasset new file mode 100644 index 00000000..276e16bf --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF24.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25c3a4bc8f7e9264a6e08faeb207179690a080064944d88b102064aca921f326 +size 243473 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF3.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF3.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF3.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF3.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF3.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF3.uasset new file mode 100644 index 00000000..b889b439 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF3.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:255743fd8a4d98470627936bf3db65554e66a030c458eb89ae5fb549dfa51f1c +size 223849 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF4.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF4.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF4.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF4.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF4.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF4.uasset new file mode 100644 index 00000000..a0b77c55 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF4.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e0f95956468b3565535547dcd9dedd920265df86ee1fd300e2a564c8166fd6c6 +size 154165 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF5.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF5.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF5.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF5.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF5.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF5.uasset new file mode 100644 index 00000000..c77c07c3 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF5.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:71072ea290b02ba755a99d0ba7431ddcf7af53d9c6244848115fcf3ee4798a48 +size 196697 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF6.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF6.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF6.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF6.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF6.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF6.uasset new file mode 100644 index 00000000..f1c4860c --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF6.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6130543f18fdb50a710b67240134ebb87ba9eec8a6702ebfcf591b60cda5d30 +size 230606 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF7.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF7.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF7.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF7.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF7.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF7.uasset new file mode 100644 index 00000000..820a5fb7 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF7.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:941ee76cbcfd6d076fa433390a1a4f51ab71ecc98b004e45b50e2652f0848241 +size 234033 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF8.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF8.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF8.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF8.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF8.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF8.uasset new file mode 100644 index 00000000..b8f45980 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF8.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:34069edf6defdb76d68ae1dd44c4de0ad6fb5e9b17bc981efaf9d6259facd2a0 +size 225008 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF9.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF9.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF9.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF9.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF9.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF9.uasset new file mode 100644 index 00000000..931cb465 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF9.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b00bd581cec253a1d34aa241f880d5e5aa1c481d7b90e1768275abcc44a0cb55 +size 251635 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/PlayersHomeShipImage.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/PlayersHomeShipImage.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/PlayersHomeShipImage.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/PlayersHomeShipImage.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/PlayersHomeShipImage.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/PlayersHomeShipImage.uasset new file mode 100644 index 00000000..7711c2f3 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/PlayersHomeShipImage.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eeff5c7a398d612a5e100b13b7ddb36a2a2c2816c0447d22a6c6010935fe0c7c +size 148266 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/WBP_IntroCutscene.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/WBP_IntroCutscene.uasset new file mode 100644 index 00000000..6935f4fa --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/WBP_IntroCutscene.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f5abe814da514365911427a44fb06d527d89c83c9ec09e21bf6e9330a86c0fd +size 131544 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/MB_TutorialFacility.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/MB_TutorialFacility.uasset new file mode 100644 index 00000000..776777f7 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/MB_TutorialFacility.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e2c6f5432fcd43a5ec6d741122cb6b7bffc728fba418b26443ee16e516b5046 +size 16338 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/RespawnPoint.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/RespawnPoint.uasset new file mode 100644 index 00000000..31ba4319 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/RespawnPoint.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bec6acd307ed9b0de4e228831379a95dbcb20f1ed5cd738bc12d8c53b7f8c2f6 +size 22142 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/TrainingFacilityBountyDirector.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/TrainingFacilityBountyDirector.uasset new file mode 100644 index 00000000..6c7107e6 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/TrainingFacilityBountyDirector.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:09c762bea1a69f8d7349755bab6889a697003177850255e124c2e5fe7825fe3d +size 22406 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/testintesting.uasset b/EndlessVendetta/Content/BountySystem/Legacy/testintesting.uasset new file mode 100644 index 00000000..9007fcab --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/testintesting.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:066668e7bba9999c8cc5d09b26520ffbd5327d37de8789099af2764841720bca +size 9250 diff --git a/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/MainBounty/CP_MB.uasset b/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/MainBounty/CP_MB.uasset deleted file mode 100644 index 822f2d62..00000000 --- a/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/MainBounty/CP_MB.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4630de4ea95731ea1488ab3b135b07396a1dd842f9909c6380d2a7934c2aa8d7 -size 63981 diff --git a/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/MainBounty/MB_TestBounty.uasset b/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/MainBounty/MB_TestBounty.uasset deleted file mode 100644 index 0309cf1b..00000000 --- a/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/MainBounty/MB_TestBounty.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3bee98bbd8e50e208c8f9ee6c2a8560f183a2bba774f090b183ab236ba7ebd22 -size 38649 diff --git a/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/SideBounties/CP_1.uasset b/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/SideBounties/CP_1.uasset deleted file mode 100644 index 79086246..00000000 --- a/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/SideBounties/CP_1.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cd5b80d48c39e4dbd4f62dafaecb54ec5c7fa2a1d12dfbdd1f9be85cc74b368a -size 64021 diff --git a/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/SideBounties/CP_2.uasset b/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/SideBounties/CP_2.uasset deleted file mode 100644 index 30c128aa..00000000 --- a/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/SideBounties/CP_2.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d27935ca0589d21ab1e7ca9ebd3de80fa4666c43fdc239cbe4cd13358ecb5d71 -size 64015 diff --git a/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/SideBounties/CP_3.uasset b/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/SideBounties/CP_3.uasset deleted file mode 100644 index 7804ed1b..00000000 --- a/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/SideBounties/CP_3.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:127a3c5d1ddd972ed32552a4e0e61f4d72d94ed978d98ad9eec8933e2711c6c0 -size 64009 diff --git a/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/SideBounties/SB_1.uasset b/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/SideBounties/SB_1.uasset deleted file mode 100644 index d88016a5..00000000 --- a/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/SideBounties/SB_1.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e89aba9e6af5b1bd48b5b2b48242eb1d057a63f552b22ea6122091a81556d9d6 -size 22765 diff --git a/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/SideBounties/SB_2.uasset b/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/SideBounties/SB_2.uasset deleted file mode 100644 index f61482fd..00000000 --- a/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/SideBounties/SB_2.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8ae78ca79d0f944fd9ae21df42c30f3993f595e6a750455a5960cd0e4b890143 -size 22827 diff --git a/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/SideBounties/SB_3.uasset b/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/SideBounties/SB_3.uasset deleted file mode 100644 index f575b5b1..00000000 --- a/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/SideBounties/SB_3.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:736bb99394a031e33b1a14f712b0ad0b6540cc047153933347b449746f46ffc5 -size 22761 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/BP_WeaponTable.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/BP_WeaponTable.uasset deleted file mode 100644 index fd66d6d4..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/BP_WeaponTable.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:00bbbb9790870bbe08879eec576c3c57f0eca6162cfe7063cb2f2a0c10b87a93 -size 29602 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/BountySimulation/CP_ElimTutorialTarget.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/BountySimulation/CP_ElimTutorialTarget.uasset deleted file mode 100644 index e35ad8ed..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/BountySimulation/CP_ElimTutorialTarget.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e517fd38bf17f395edda2c998cbed260ac94e95ab348f7eb696232dffd112dc9 -size 143697 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/BountySimulation/CP_EnterBountySimulationFacility.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/BountySimulation/CP_EnterBountySimulationFacility.uasset deleted file mode 100644 index 537c3b62..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/BountySimulation/CP_EnterBountySimulationFacility.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cb422b19b15ab7568686c196a6f8344053589c94ab572025195f6a31ed6e2a7a -size 83208 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/BountySimulation/CP_ExitBountySimulationFacility.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/BountySimulation/CP_ExitBountySimulationFacility.uasset deleted file mode 100644 index 16ed3897..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/BountySimulation/CP_ExitBountySimulationFacility.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a95afab359651372dc7a4b610c26acdceee19e660d3e0a1036eecc5e9dc081ba -size 59234 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/CP_IntroCinematic.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/CP_IntroCinematic.uasset deleted file mode 100644 index 9baa8118..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/CP_IntroCinematic.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:66f9f7016f0fb3d431f16dc9ec1c045a7123a20d7001bb1094c5d43fd7cfcb3b -size 60949 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/CP_ParkourTutorial.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/CP_ParkourTutorial.uasset deleted file mode 100644 index c1b4c121..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/CP_ParkourTutorial.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:20c146ca9121d08cc486f1d15b935101e2faad580974b40b32144f4f3cf466b6 -size 38506 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/CP_PickUpWeapon.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/CP_PickUpWeapon.uasset deleted file mode 100644 index 80f6d632..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/CP_PickUpWeapon.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c983ac6f5ed8e39f4fd28d0d35a06fc6b1d4569f0448a3e6672a1cc664e91175 -size 60950 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/FiringRanges/BP_CQCRange.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/FiringRanges/BP_CQCRange.uasset deleted file mode 100644 index 942a2ae0..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/FiringRanges/BP_CQCRange.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:96f0a512c232f3f8d44a79dde7fd6da8d34a02581ac068f010f9ffdaf7bba755 -size 101077 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/FiringRanges/BP_LongRange.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/FiringRanges/BP_LongRange.uasset deleted file mode 100644 index 12a9aaa2..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/FiringRanges/BP_LongRange.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f8f3d90b13b51423a6cba2d48c8b722b3659b7a14f4bcb6ac730a20df8339b1a -size 112942 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/FiringRanges/CP_CheckOutCQCRange.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/FiringRanges/CP_CheckOutCQCRange.uasset deleted file mode 100644 index b7080ef7..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/FiringRanges/CP_CheckOutCQCRange.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9a329b5461ac74c60fb7e33cc1369d9985dfb5cf33c1f85ddf207a36f94e3fb8 -size 147979 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/FiringRanges/CP_CheckOutLongRange.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/FiringRanges/CP_CheckOutLongRange.uasset deleted file mode 100644 index ffe2f671..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/FiringRanges/CP_CheckOutLongRange.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e035f7ddd3dcf755fb0ed071ba8d162c3a8b17bb9e5fe788443a35df5a0f5b21 -size 156499 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/BP_GadgetTutorial.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/BP_GadgetTutorial.uasset deleted file mode 100644 index 35556abe..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/BP_GadgetTutorial.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0c9c1c5174be17340a5c1af17f65ebad2f56450fb8194dd1aee554d703ac68ed -size 2754 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/BP_InfiniteHealthEnemy.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/BP_InfiniteHealthEnemy.uasset deleted file mode 100644 index 3ac4ffc8..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/BP_InfiniteHealthEnemy.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ff0184855d0b831ff073d507262a1297f3fd676f49a4ec28ded918fbb8896069 -size 42127 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/BP_Recon.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/BP_Recon.uasset deleted file mode 100644 index 6f1b328e..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/BP_Recon.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:86a649d86566076f0904ef7792d413399eedea9e074a4d60603396c5ea3734fb -size 2763 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/BP_ReconWorkbench.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/BP_ReconWorkbench.uasset deleted file mode 100644 index 546a248e..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/BP_ReconWorkbench.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:191a1e2ab132262fdd234e16a45508f0bff1cc081c977e49cffba1c4017bb052 -size 2801 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Combat/BP_CombatWorkbench.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Combat/BP_CombatWorkbench.uasset deleted file mode 100644 index 2e888b3f..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Combat/BP_CombatWorkbench.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7ca32d8fb46fc46a26048f0055e978a2581adb2139ee494329a1041da61bf936 -size 2760 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Combat/CP_CombatTraining.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Combat/CP_CombatTraining.uasset deleted file mode 100644 index 36b8ab99..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Combat/CP_CombatTraining.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e05c2b2a67900f795bea030cd060cb7ce55f4801f5573c5e4b5ab22ff5aa4198 -size 47609 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Combat/GT_OverloadModule.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Combat/GT_OverloadModule.uasset deleted file mode 100644 index 7ab35daf..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Combat/GT_OverloadModule.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c3f7370adadacaa691397522121b6c975e922c007eba7b08420598f3cb906fdb -size 143122 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/GadgetTutorialIcon.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/GadgetTutorialIcon.uasset deleted file mode 100644 index b4abdb12..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/GadgetTutorialIcon.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7c8b4bb3136c292666348a27c69ab73e1431c62985783fa66a12f622d002228f -size 39827 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Recon/BP_ReconWorkbench.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Recon/BP_ReconWorkbench.uasset deleted file mode 100644 index 4c9ab416..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Recon/BP_ReconWorkbench.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:db7428812684fd4a236a27ac272036dcb2c51411792f52a44c6c2880229efda7 -size 2738 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Recon/CP_GoDownstairs.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Recon/CP_GoDownstairs.uasset deleted file mode 100644 index 0edb31b5..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Recon/CP_GoDownstairs.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9f83c02b2613872e32f795c91ce190d44c2cfdf83785965105ed43d9e326ec7e -size 38762 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Recon/CP_ReconTraining.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Recon/CP_ReconTraining.uasset deleted file mode 100644 index 90dbb721..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Recon/CP_ReconTraining.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8c6becce8ef63d5920459cc97049122bbd5c56ff7886c49fbbccd06f2f24d8f1 -size 47510 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Recon/GT_RingModule.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Recon/GT_RingModule.uasset deleted file mode 100644 index c361a44b..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Recon/GT_RingModule.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:029257b219ada12742b0a16af98a8904c477cd27345d9997c9a3fc79d1327117 -size 144242 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Recon/GT_VisionLink.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Recon/GT_VisionLink.uasset deleted file mode 100644 index 2ca83102..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Recon/GT_VisionLink.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:535cd7f074418223d517abe6748a7c40749000dcfa9ecb5e17d7d1c378b5360e -size 214724 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/WBP_GadgetMenu.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/WBP_GadgetMenu.uasset deleted file mode 100644 index 69d96971..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/WBP_GadgetMenu.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:810d2dfb5cf17a33620f773ada8e2d7972ad795139900d78e326fdae5af35239 -size 119297 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/WBP_EnterSimulationCutscene.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/WBP_EnterSimulationCutscene.uasset deleted file mode 100644 index faf0e8c8..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/WBP_EnterSimulationCutscene.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:42595da531f4db98b51bb2fdb8f617a91fd9de728df25a64f47b7200947f884c -size 86733 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/WBP_HiredCutscene.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/WBP_HiredCutscene.uasset deleted file mode 100644 index 3abe2366..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/WBP_HiredCutscene.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ddfa2b5455c745aaf63af8000945f2696d2248d6f059347bd4c2dd927910baed -size 104895 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/BedroomEnemy/BE_TF_Bedroom.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/BedroomEnemy/BE_TF_Bedroom.uasset deleted file mode 100644 index 282d52f2..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/BedroomEnemy/BE_TF_Bedroom.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1df06845b2be99973a0567e9bbd4b05f87ff4ac270bd78e78d030f41996826dc -size 106375 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/BedroomEnemy/PP_TF_Bedroom.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/BedroomEnemy/PP_TF_Bedroom.uasset deleted file mode 100644 index 68f70e77..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/BedroomEnemy/PP_TF_Bedroom.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:df5a2500d27329e8de757164387d7d8f8b63b58119bb7ad63898a34cd053c653 -size 13034 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/DiningRoomEnemy/BE_TF_Dining.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/DiningRoomEnemy/BE_TF_Dining.uasset deleted file mode 100644 index 313cc740..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/DiningRoomEnemy/BE_TF_Dining.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b8abac0ac05cf183bc4a7d6a6b54dad56a476d41b49db54a85933b704b0b10a8 -size 106926 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/DiningRoomEnemy/PP_TF_DiningRoom.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/DiningRoomEnemy/PP_TF_DiningRoom.uasset deleted file mode 100644 index 58c88511..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/DiningRoomEnemy/PP_TF_DiningRoom.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c8b98d4f4b418d7e056899dc8153137c700342c0325dfc4d9bf126d84af445ca -size 13061 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/LivingRoomEnemy/BE_TF_Living.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/LivingRoomEnemy/BE_TF_Living.uasset deleted file mode 100644 index 3876306c..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/LivingRoomEnemy/BE_TF_Living.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:96bf3bc05b1d4a6a76556282cf0817abee6af85a9bc4f10af94c323e10e6b06a -size 106920 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/LivingRoomEnemy/PP_TF_LivingRoom.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/LivingRoomEnemy/PP_TF_LivingRoom.uasset deleted file mode 100644 index 65e00893..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/LivingRoomEnemy/PP_TF_LivingRoom.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:966e6cbe348de1734c26bbf2dfadc4238378765a962a155cb7aae81295fd83bb -size 13061 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/OutsidePatrolEnemy/BE_TF_Outside.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/OutsidePatrolEnemy/BE_TF_Outside.uasset deleted file mode 100644 index 65966bd4..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/OutsidePatrolEnemy/BE_TF_Outside.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ec0a4d9f721fa3407d9977d6e47e742426d1e49f5f2c40ee5167d153ea6e9058 -size 106934 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/OutsidePatrolEnemy/PP_TF.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/OutsidePatrolEnemy/PP_TF.uasset deleted file mode 100644 index 12e36731..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/OutsidePatrolEnemy/PP_TF.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fc837363528efff7871b4dfcbdc89052ce58dee49ff3ab8fb3bfe7b95be9a05a -size 2682 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/OutsidePatrolEnemy/PP_TF_OutBack.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/OutsidePatrolEnemy/PP_TF_OutBack.uasset deleted file mode 100644 index 4bd16431..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/OutsidePatrolEnemy/PP_TF_OutBack.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:406ab0ed0c686c21a00dda4b3d6e268eacf6bfc911cc5fbfc6615897e6e7f4ee -size 2674 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/OutsidePatrolEnemy/PP_TF_Outside.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/OutsidePatrolEnemy/PP_TF_Outside.uasset deleted file mode 100644 index 6cd3336f..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/OutsidePatrolEnemy/PP_TF_Outside.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:731235fa24a1937da6099c8925abd34bbf99d4a1a6334c993c89f7a4b3114f0f -size 13791 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/RoamingEnemy/BE_TF_Roaming.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/RoamingEnemy/BE_TF_Roaming.uasset deleted file mode 100644 index 8b8d13cd..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/RoamingEnemy/BE_TF_Roaming.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f0567198a616343a45aef20d4be70b57a7eefefb6c54668645ce397186e27bf6 -size 106932 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/RoamingEnemy/PP_TF_Roaming.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/RoamingEnemy/PP_TF_Roaming.uasset deleted file mode 100644 index 67602f41..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/RoamingEnemy/PP_TF_Roaming.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:062d6ee93303344368b3401d4a0bd412fa1d1af6cc95a81607453054cc697d67 -size 13100 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/TargetEnemy/BE_TF_Target.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/TargetEnemy/BE_TF_Target.uasset deleted file mode 100644 index 1b25edbb..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/TargetEnemy/BE_TF_Target.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8a3d210a0ff91d671754196ced646a4128ea967f531e2c1c27201fbf9eba9c7f -size 107795 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/TargetEnemy/PP_TF_Target.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/TargetEnemy/PP_TF_Target.uasset deleted file mode 100644 index b7adcb40..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/TargetEnemy/PP_TF_Target.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:496b55e0f80f2e6208269215944632df3161f025bc5888e294cf92b6deb13a2b -size 12985 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/UpstairsPatrolEnemy/BE_TF_Upstairs.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/UpstairsPatrolEnemy/BE_TF_Upstairs.uasset deleted file mode 100644 index 787e0913..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/UpstairsPatrolEnemy/BE_TF_Upstairs.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ae60e9cb9b9afd7fe56aae046399dfd98ea8db80ecacffc4d278e262452ddb45 -size 106997 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/UpstairsPatrolEnemy/PP_TF_Upstairs.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/UpstairsPatrolEnemy/PP_TF_Upstairs.uasset deleted file mode 100644 index 9c71a224..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/UpstairsPatrolEnemy/PP_TF_Upstairs.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e2f2065e357769a2642143c21eae5fea45a3a60dfe59706f944d18ffe930b205 -size 13071 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF1.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF1.uasset deleted file mode 100644 index ff594e93..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF1.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d3222e9e86643dc447022502f2d9dc090dc6a5ceba6cb22140e5defb450ca494 -size 520107 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF10.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF10.uasset deleted file mode 100644 index faa470af..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF10.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0ee539ee295fde45825def6001d96e70a7355c910663339a71f9c8c07fcbd820 -size 190143 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF11.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF11.uasset deleted file mode 100644 index a1b1fbdd..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF11.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a9f7052caaca78dbd170a68b849e9a498fb9d1c0167dfac5ec0d3d6e1a5f106a -size 199883 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF12.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF12.uasset deleted file mode 100644 index 1ba1c568..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF12.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:599a90873cb758c9263040510ae22bc8c88f19e2541f495c0f8f26f8fe7bd58f -size 278003 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF13.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF13.uasset deleted file mode 100644 index 8ccad9af..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF13.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:70a02c53ec549db94daae705eadfcadf479712eab787bc99be7b0072dbbf189e -size 216041 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF14.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF14.uasset deleted file mode 100644 index 9043d5d4..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF14.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ac65e38904a43f9572a5541d03d18fba8541cb04d0022c33d650a8e22e1c0e99 -size 207080 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF15.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF15.uasset deleted file mode 100644 index 8f9e9b0e..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF15.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:66ced6f4829c1047301466482d34b1ab715a75f9786b4d67201c7e0dd1de2c27 -size 265249 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF16.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF16.uasset deleted file mode 100644 index cbbab91d..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF16.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3e9c1b089ca16b48abbbe8f8e3707d58359c31b1714b1cc09d0a6cd8ff761408 -size 287298 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF17.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF17.uasset deleted file mode 100644 index 1ae804b0..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF17.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:67b866902ab14c076b998c503565fe47b9a286b804ba15dbffa941f777e75523 -size 93869 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF18.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF18.uasset deleted file mode 100644 index 942736aa..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF18.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:314f8e68e722882c47507880a3a01d31e2cc3ae7b38499fac5aff1970f4063dc -size 222864 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF19.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF19.uasset deleted file mode 100644 index 94cda5d1..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF19.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9443f0754a9150ccc2d576068d9477f8af0de722dd48c1674bb779c168cb3c52 -size 349128 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF2.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF2.uasset deleted file mode 100644 index 1b733020..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF2.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:22920c78e8d4fce5e8201fd7f3677f71af46e9a2983a318ccd59b7953abe5041 -size 514322 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF20.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF20.uasset deleted file mode 100644 index e08a1cea..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF20.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:df4909ec22cfb8bb33b96b9543d632d94f698aedad617b7155caccfa30f51620 -size 279708 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF21.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF21.uasset deleted file mode 100644 index 1e98746a..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF21.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c6ae7b861db5537ec6da74a374df59ab9de83245d0f2edc89700e64192cbc0bb -size 264982 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF22.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF22.uasset deleted file mode 100644 index 37e99fbc..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF22.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:693e100e900d78d4f0b6b2b9e4aa94887f3f5ff61472e27d6637440ecd986906 -size 201408 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF23.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF23.uasset deleted file mode 100644 index 47834a34..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF23.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:bc5d4c874b276896a5c7e312baf31dec449ecf8335fe16c0f840cacdf4e54455 -size 233871 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF24.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF24.uasset deleted file mode 100644 index 62348f3f..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF24.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a405f2635dab582bc03bcd0d1755e748119069f1cd9bd1cf999368508b530091 -size 243459 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF3.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF3.uasset deleted file mode 100644 index 007c07e5..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF3.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:839551287c132b8adf1f989383f7eeef22dc25d1ce0c3715a9aa8ac584d007b3 -size 223835 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF4.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF4.uasset deleted file mode 100644 index c4d6f37f..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF4.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3af6b53040bbf9c6981c279d869765e118dc793358bc7b3e8cb3e85afadab01a -size 154151 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF5.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF5.uasset deleted file mode 100644 index 3a9ad85e..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF5.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:302ea1f05c0bb01b3857874440db2e9eebcae7bbe8f2900be6764d6b98080a6c -size 196683 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF6.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF6.uasset deleted file mode 100644 index ed717240..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF6.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:58142883f2158722839c0bb64738a269a1f960cdd82840857246e9738416f53b -size 230592 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF7.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF7.uasset deleted file mode 100644 index 871edbb6..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF7.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2e56bd8e60a11b604e5b6037c7abf13a929bc8695e28afee55fe1afaeda2496e -size 234019 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF8.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF8.uasset deleted file mode 100644 index 57dc1edd..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF8.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:12f8fd87f96144c9f206f7faac11f2bc7b016fa9b2977d0b509802279cbe477f -size 224994 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF9.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF9.uasset deleted file mode 100644 index f5b1d62e..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF9.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:94cc5c50d6999063d3ae435b09ce77696c5d6aad8103ea084ec7e4d995e26b3c -size 251621 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/PlayersHomeShipImage.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/PlayersHomeShipImage.uasset deleted file mode 100644 index 068824b4..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/PlayersHomeShipImage.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b96eabdd3e093be39d5544ed2b3dfa40947e53a7f14ce0b9a20f381417e064be -size 148252 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/WBP_IntroCutscene.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/WBP_IntroCutscene.uasset deleted file mode 100644 index 9423ea04..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/WBP_IntroCutscene.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4d72553065b7759af8b25f2f70ded6db41e0f89f9d67aa11a19a9850ceca2562 -size 133720 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/MB_TutorialFacility.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/MB_TutorialFacility.uasset deleted file mode 100644 index 24c72606..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/MB_TutorialFacility.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f832cb5ec5d4dfc2edd473b4cfd0ac80019547d5f2d1125b4a71942de584bb76 -size 16169 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/RespawnPoint.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/RespawnPoint.uasset deleted file mode 100644 index cfefe2d6..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/RespawnPoint.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ddfaf161972d5ed7da321d0764e3887dd4b91ef6d6e294ed590f8645bd5c1e01 -size 22117 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/TrainingFacilityBountyDirector.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/TrainingFacilityBountyDirector.uasset deleted file mode 100644 index 35ada0bc..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/TrainingFacilityBountyDirector.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a1e75c64d6be90e7099664b99af6b8faab033decb1e269ab3e9f472e0e0fc2eb -size 22314 diff --git a/EndlessVendetta/Content/BountySystem/testintesting.uasset b/EndlessVendetta/Content/BountySystem/testintesting.uasset deleted file mode 100644 index 0c667c09..00000000 --- a/EndlessVendetta/Content/BountySystem/testintesting.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a52448bedde7fdbdaa6dd78db571d463666715dcf04c67bb55dedb81fe8d8488 -size 9233 From 9329454318664738f162f2b679cbc74fdc341071 Mon Sep 17 00:00:00 2001 From: MH261677 Date: Thu, 1 Feb 2024 14:24:31 +0000 Subject: [PATCH 060/112] Reworked Attachment spawning code to be more universal --- .../.idea.EndlessVendetta/.idea/workspace.xml | 48 +++++++++++-------- .../FPWeapon/Mesh/SK_FPGun_Skeleton.uasset | 4 +- .../AssaultRifles/BP_ARTEST1.uasset | 4 +- .../BaseWeapons/BP_BaseWeapon.uasset | 4 +- .../StarterContent/Shapes/TempSilencer.uasset | 4 +- .../9/PG/AISD2CY0WTWKV1BJDYTYJ3.uasset | 4 +- .../WeaponSystem/BaseWeaponClass.cpp | 35 +++++++++----- .../SilencerAttachmentClass.cpp | 2 - 8 files changed, 61 insertions(+), 44 deletions(-) diff --git a/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml b/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml index 9af72f96..e297b877 100644 --- a/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml +++ b/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml @@ -9,6 +9,13 @@ + + + + + + + - { + "keyToString": { + "C++ Project.EndlessVendetta.executor": "Run", + "RunOnceActivity.OpenProjectViewOnStart": "true", + "RunOnceActivity.ShowReadmeOnStart": "true", + "git-widget-placeholder": "attachment-bug-fix", + "ignore.virus.scanning.warn.message": "true", + "node.js.detected.package.eslint": "true", + "node.js.detected.package.tslint": "true", + "node.js.selected.package.eslint": "(autodetect)", + "node.js.selected.package.tslint": "(autodetect)", + "nodejs_package_manager_path": "npm", + "vue.rearranger.settings.migration": "true" }, - "keyToStringList": { - "rider.external.source.directories": [ - "C:\\Users\\mhara\\AppData\\Roaming\\JetBrains\\Rider2023.3\\resharper-host\\DecompilerCache", - "C:\\Users\\mhara\\AppData\\Roaming\\JetBrains\\Rider2023.3\\resharper-host\\SourcesCache", - "C:\\Users\\mhara\\AppData\\Local\\Symbols\\src" + "keyToStringList": { + "rider.external.source.directories": [ + "C:\\Users\\mhara\\AppData\\Roaming\\JetBrains\\Rider2023.3\\resharper-host\\DecompilerCache", + "C:\\Users\\mhara\\AppData\\Roaming\\JetBrains\\Rider2023.3\\resharper-host\\SourcesCache", + "C:\\Users\\mhara\\AppData\\Local\\Symbols\\src" ] } -}]]> +} @@ -127,6 +134,9 @@ + + + diff --git a/EndlessVendetta/Content/FPWeapon/Mesh/SK_FPGun_Skeleton.uasset b/EndlessVendetta/Content/FPWeapon/Mesh/SK_FPGun_Skeleton.uasset index aa861853..37e39f6f 100644 --- a/EndlessVendetta/Content/FPWeapon/Mesh/SK_FPGun_Skeleton.uasset +++ b/EndlessVendetta/Content/FPWeapon/Mesh/SK_FPGun_Skeleton.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e1a0785430701e8ad4da18841226e2e18dd72d825c6a10cf28e7d73f1216ed28 -size 9013 +oid sha256:8924c723b3b8eaf0a1a580f215de2a547d9118851c617ad590199910fa2f48c9 +size 9020 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/AssaultRifles/BP_ARTEST1.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/AssaultRifles/BP_ARTEST1.uasset index 8aa30a2f..f2ca1773 100644 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/AssaultRifles/BP_ARTEST1.uasset +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/AssaultRifles/BP_ARTEST1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5dd6f9f711da54c221a1be010a47ff7bb53d5f37f0afa26a30cfde85d9d8d8d9 -size 41696 +oid sha256:da280a53ff9a19fc5698a2e4e87a2f0b6e4fd81c95fb5929a659cdb507b0d446 +size 41581 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/BP_BaseWeapon.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/BP_BaseWeapon.uasset index 23e228bc..201ac1f9 100644 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/BP_BaseWeapon.uasset +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/BP_BaseWeapon.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1e0ab8a1e0763724c9f778d26fc39f9e2ec80dc2a63cc99d23a4edf1d5ceb6c6 -size 126609 +oid sha256:f4d4c8728c6346fed52e60b7b56fa54a6492180815d2cee29d8d8730ac624947 +size 125545 diff --git a/EndlessVendetta/Content/StarterContent/Shapes/TempSilencer.uasset b/EndlessVendetta/Content/StarterContent/Shapes/TempSilencer.uasset index fbc6d821..b857d8a4 100644 --- a/EndlessVendetta/Content/StarterContent/Shapes/TempSilencer.uasset +++ b/EndlessVendetta/Content/StarterContent/Shapes/TempSilencer.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:61c0b03ac13ff095d5e52f5551a54cadb54e669e33e5a6a1ee4f8e4e233e50f2 -size 26923 +oid sha256:cb6b37e3900f88fd3a4a94643d255ddb765f6cacefc1b8adc92c5fb97e7393a8 +size 28238 diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/9/PG/AISD2CY0WTWKV1BJDYTYJ3.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/9/PG/AISD2CY0WTWKV1BJDYTYJ3.uasset index b2990eba..11295e10 100644 --- a/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/9/PG/AISD2CY0WTWKV1BJDYTYJ3.uasset +++ b/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/9/PG/AISD2CY0WTWKV1BJDYTYJ3.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bb7fd3b17bbcc170b84fda39c7712b526f201a4a45ea48d1ac36415e0ca366ee -size 7007 +oid sha256:4d53dac7e3e749916ed5e5802c3c3495f2895827dcb66e9b2f49a8cac9a4ecb5 +size 6664 diff --git a/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.cpp b/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.cpp index 891eabc8..0e458497 100644 --- a/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.cpp @@ -258,19 +258,28 @@ void ABaseWeaponClass::InteractPrompt() void ABaseWeaponClass::SetupSilencerAttachment(UStaticMesh* SilencerMesh) { GEngine->AddOnScreenDebugMessage(-1, 15.f, FColor::Red, TEXT("SETTING UP SILENCER ATTACHMENTS")); - FTransform emptytransform; - UActorComponent* SilencerComponent = AddComponentByClass(USilencerAttachmentClass::StaticClass(), true, emptytransform, false); - UStaticMeshComponent* SilencerMeshComponent = Cast(AddComponentByClass(UStaticMeshComponent::StaticClass(), true, emptytransform, false)); - SilencerMeshComponent->SetStaticMesh(SilencerMesh); - SilencerMeshComponent->AttachToComponent(Cast(GetComponentByClass(USkeletalMeshComponent::StaticClass())), FAttachmentTransformRules::SnapToTargetIncludingScale, FName(TEXT("SilencerMeshSocket"))); - Cast(SilencerComponent)->AttachToComponent(SilencerMeshComponent, FAttachmentTransformRules::SnapToTargetIncludingScale); - FTransform SilencerSocketTransform = SilencerMeshComponent->GetSocketTransform(FName(TEXT("SilencerMeshSocket")), RTS_Component); - FRotator SilencerSocketRotation = SilencerMeshComponent->GetSocketRotation(FName(TEXT("SilencerMeshSocket"))); - SilencerMeshComponent->SetRelativeTransform(SilencerSocketTransform); - SilencerMeshComponent->SetRelativeRotation(this->GetActorRotation()); + FTransform EmptyTransform; + USceneComponent* SilencerAttachmentClass = Cast(AddComponentByClass(USilencerAttachmentClass::StaticClass(), false, EmptyTransform, false)); + USkeletalMeshComponent* WeaponSkeletonMesh = FindComponentByClass(); + if (IsValid(SilencerAttachmentClass)) + { + if (IsValid(WeaponSkeletonMesh)) + { + SilencerAttachmentClass->AttachToComponent(WeaponSkeletonMesh, FAttachmentTransformRules::SnapToTargetIncludingScale, FName(TEXT("SilencerSocketMesh"))); + UE_LOG(LogTemp, Display, TEXT("All Attachment is valid")); + //this makes it showup in editor for better debugging + SilencerAttachmentClass->CreationMethod = EComponentCreationMethod::Instance; + SilencerAttachmentClass->RegisterComponent(); + UStaticMeshComponent* StaticMeshComp = NewObject(SilencerAttachmentClass, UStaticMeshComponent::StaticClass()); + if (IsValid(StaticMeshComp)) + { + StaticMeshComp->AttachToComponent(SilencerAttachmentClass, FAttachmentTransformRules::SnapToTargetIncludingScale); + StaticMeshComp->SetStaticMesh(SilencerMesh); + StaticMeshComp->CreationMethod = EComponentCreationMethod::Instance; + StaticMeshComp->RegisterComponent(); + } + } + } } - - - \ No newline at end of file diff --git a/EndlessVendetta/Source/EndlessVendetta/Workbench&Attachments/SilencerAttachmentClass.cpp b/EndlessVendetta/Source/EndlessVendetta/Workbench&Attachments/SilencerAttachmentClass.cpp index 7f31f73b..50b63063 100644 --- a/EndlessVendetta/Source/EndlessVendetta/Workbench&Attachments/SilencerAttachmentClass.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/Workbench&Attachments/SilencerAttachmentClass.cpp @@ -29,7 +29,5 @@ void USilencerAttachmentClass::BeginPlay() void USilencerAttachmentClass::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) { Super::TickComponent(DeltaTime, TickType, ThisTickFunction); - - // ... } From e205f7522c4b055f693f2e12250263dc5f8a9fcf Mon Sep 17 00:00:00 2001 From: Rafal Swierczek Date: Thu, 1 Feb 2024 15:32:43 +0000 Subject: [PATCH 061/112] Integrated Tutorial Bounty and WIP Apartment Bounty using Save System --- .../.idea.EndlessVendetta/.idea/workspace.xml | 16 ++++++++-- .../ApartmentBounty/MB_Apartment.uasset | 4 +-- .../ApartmentBounty/OWCP_Apartment.uasset | 3 ++ .../Blueprints/BP_FirstPersonCharacter.uasset | 4 +-- .../OverloadModule/CG_OverloadModule.uasset | 4 +-- .../RingModule/RG_RingModule.uasset | 4 +-- .../VisionLink/RG_VisionLink.uasset | 4 +-- .../Content/Levels/ControlTutorialLevel.umap | 4 +-- .../Content/Levels/MainMenuLevel.umap | 4 +-- .../Content/Levels/TempOpenWorld.umap | 4 +-- .../Gameplay/MainMenuPlayerController.uasset | 4 +-- .../Architecture/Floor_400x400.uasset | 2 +- .../BountySystem/BountyClass.h | 7 ++--- .../CheckPoints/FinalCheckpoint.cpp | 19 ++++++++++++ .../CheckPoints/FinalCheckpoint.h | 22 ++++++++++++++ .../BountySystem/MainBountyClass.cpp | 26 ++++++++++++++--- .../BountySystem/MainBountyClass.h | 16 +++------- .../BountySystem/SideBountyClass.cpp | 10 ++++--- .../Characters/BountyHunterCharacter.cpp | 29 +++++++++---------- .../Characters/BountyHunterCharacter.h | 17 +++++++---- .../Source/EndlessVendetta/EVGameInstance.cpp | 5 ++-- .../EndlessVendetta/MainSaveGameClass.h | 2 +- 22 files changed, 139 insertions(+), 71 deletions(-) create mode 100644 EndlessVendetta/Content/BountySystem/ApartmentBounty/OWCP_Apartment.uasset create mode 100644 EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckPoints/FinalCheckpoint.cpp create mode 100644 EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckPoints/FinalCheckpoint.h diff --git a/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml b/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml index 36cea23c..e65ed336 100644 --- a/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml +++ b/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml @@ -9,16 +9,23 @@ + + + + + + + - - + + + - diff --git a/EndlessVendetta/Content/BountySystem/ApartmentBounty/MB_Apartment.uasset b/EndlessVendetta/Content/BountySystem/ApartmentBounty/MB_Apartment.uasset index 9110e2c0..bfce5907 100644 --- a/EndlessVendetta/Content/BountySystem/ApartmentBounty/MB_Apartment.uasset +++ b/EndlessVendetta/Content/BountySystem/ApartmentBounty/MB_Apartment.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8bf06e49f17ab25c9dc3262bca893f73ef07c79a7ec7535d77a8228abe61b14b -size 22201 +oid sha256:b3961e22842e8bb12c11a7a3e55793f49209fbdecbcb861ef0296af14b5c36b0 +size 23374 diff --git a/EndlessVendetta/Content/BountySystem/ApartmentBounty/OWCP_Apartment.uasset b/EndlessVendetta/Content/BountySystem/ApartmentBounty/OWCP_Apartment.uasset new file mode 100644 index 00000000..7a36f7e0 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/ApartmentBounty/OWCP_Apartment.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d9166bbded21f9f0972c11067858db21c9157ff4b5acbbb1113348f9ae065e7 +size 27092 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset index 8a5364f1..9c6a1eff 100644 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4eb5c92180442aaa9dae7586d0d0effec22d5dc4ca432330aac7899e893ba608 -size 458530 +oid sha256:6f04647dc2631937f70cae35ade2cb79606f89676a7552e29ea9b2e5f02c9bce +size 458370 diff --git a/EndlessVendetta/Content/Gadgets/CombatGadgets/OverloadModule/CG_OverloadModule.uasset b/EndlessVendetta/Content/Gadgets/CombatGadgets/OverloadModule/CG_OverloadModule.uasset index ac45c725..37d99b25 100644 --- a/EndlessVendetta/Content/Gadgets/CombatGadgets/OverloadModule/CG_OverloadModule.uasset +++ b/EndlessVendetta/Content/Gadgets/CombatGadgets/OverloadModule/CG_OverloadModule.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2a0ac6bb1c776390adbc9e10c1a9e9c6629c4f69eea6d3720d502a3b7807abf0 -size 110595 +oid sha256:fb1496b56a8e87f9025f0c245ee55e585e0b81277a74162d0531f777414f8443 +size 111687 diff --git a/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/RG_RingModule.uasset b/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/RG_RingModule.uasset index e5b9faad..c9f59c0f 100644 --- a/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/RG_RingModule.uasset +++ b/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/RG_RingModule.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:163e6c220966ca84c1c7e3f9ae176fe99bb0f7b8b364403ad5cf42f0272a87f0 -size 108688 +oid sha256:d3ae912ab5c02aa352d2e9d4f1885e7217791a701f23b241535cd24def3e1a20 +size 109272 diff --git a/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionLink/RG_VisionLink.uasset b/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionLink/RG_VisionLink.uasset index aea6e927..74f5f55e 100644 --- a/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionLink/RG_VisionLink.uasset +++ b/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionLink/RG_VisionLink.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:576cf6674035552a043dab60a2173beec40cf65683d138ad0df40f66fd48370b -size 108618 +oid sha256:d6c1b0360db438f17c7cbb7a907c95ae67d455c711d94866ee07bbeb932f0acd +size 109202 diff --git a/EndlessVendetta/Content/Levels/ControlTutorialLevel.umap b/EndlessVendetta/Content/Levels/ControlTutorialLevel.umap index 23faf0e1..acf3a596 100644 --- a/EndlessVendetta/Content/Levels/ControlTutorialLevel.umap +++ b/EndlessVendetta/Content/Levels/ControlTutorialLevel.umap @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:924ade82fb0a438d9bc4dcfd060169432df9be4026eb3d47c5e3c24e2caf8eb5 -size 3452050 +oid sha256:c78dde892caa4b4cb292592b66f9ee2fd986382798310e40212c1f80ee418cee +size 3452507 diff --git a/EndlessVendetta/Content/Levels/MainMenuLevel.umap b/EndlessVendetta/Content/Levels/MainMenuLevel.umap index 410d9bd5..e211378a 100644 --- a/EndlessVendetta/Content/Levels/MainMenuLevel.umap +++ b/EndlessVendetta/Content/Levels/MainMenuLevel.umap @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4e347eab07faf7d90209e7e64ba12694fe4804e27f840b4e171fd428466e9803 -size 299618 +oid sha256:9d351bbac850938f4243559fb2004190dc0a9ecc375e967e1beee57237a90123 +size 299666 diff --git a/EndlessVendetta/Content/Levels/TempOpenWorld.umap b/EndlessVendetta/Content/Levels/TempOpenWorld.umap index 1c06f05b..abad9c56 100644 --- a/EndlessVendetta/Content/Levels/TempOpenWorld.umap +++ b/EndlessVendetta/Content/Levels/TempOpenWorld.umap @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dfdc199106ad2fca8d90af627e6c092483714378c3e4014dd6124fb5538b36b5 -size 13860679 +oid sha256:fd850d01c7675c006d7aa19c1ea2d9592326c10d27331654c11c6f2f79454d6a +size 13864680 diff --git a/EndlessVendetta/Content/MainMenu/Gameplay/MainMenuPlayerController.uasset b/EndlessVendetta/Content/MainMenu/Gameplay/MainMenuPlayerController.uasset index 78014c4e..142ba9c9 100644 --- a/EndlessVendetta/Content/MainMenu/Gameplay/MainMenuPlayerController.uasset +++ b/EndlessVendetta/Content/MainMenu/Gameplay/MainMenuPlayerController.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:97f269934ce59b24b2c67b91559683c19b2f22cbcc081c843655f7dc3320fe2f -size 146848 +oid sha256:fb2866d4ceb699f5ab8a45d5fe54ca1d4c7110cd78fde174771b73e6a9bc2253 +size 108722 diff --git a/EndlessVendetta/Content/StarterContent/Architecture/Floor_400x400.uasset b/EndlessVendetta/Content/StarterContent/Architecture/Floor_400x400.uasset index 8d790d9a..42a6c437 100644 --- a/EndlessVendetta/Content/StarterContent/Architecture/Floor_400x400.uasset +++ b/EndlessVendetta/Content/StarterContent/Architecture/Floor_400x400.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6038bf29408d4c5be111de70be0878efba11fba22cfe715ed745704d48e6c243 +oid sha256:22ae623a43a551b2c36f14689aeb372567771b015c4668c364a3fd54d4f325d5 size 14831 diff --git a/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyClass.h b/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyClass.h index a0216f7d..94cb313b 100644 --- a/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyClass.h +++ b/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyClass.h @@ -8,6 +8,7 @@ #include "BountyClass.generated.h" DECLARE_DYNAMIC_MULTICAST_DELEGATE(FCompletedFirstCheckpoint); +DECLARE_DYNAMIC_MULTICAST_DELEGATE(FCompletedACheckpoint); UCLASS() class ENDLESSVENDETTA_API ABountyClass : public AActor @@ -21,13 +22,11 @@ class ENDLESSVENDETTA_API ABountyClass : public AActor TArray> CheckpointsToSpawn; protected: - // Has a Get Func, Used for Identifying if the Bounty has been Completed - bool Completed = false; - // Array of References to the Spawned in Checkpoints for this Bounty TArray BountyCheckpoints; public: + FCompletedACheckpoint CompletedACheckpoint; // ------------------- METHODS --------------------------------- @@ -85,7 +84,7 @@ public: // ------ Getters for Bounty and Checkpoint Properties ------ bool IsCompleted() { - return Completed; + return false; } FString GetBountyTitle() diff --git a/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckPoints/FinalCheckpoint.cpp b/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckPoints/FinalCheckpoint.cpp new file mode 100644 index 00000000..2556bda7 --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckPoints/FinalCheckpoint.cpp @@ -0,0 +1,19 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "FinalCheckpoint.h" +#include "EndlessVendetta/EVGameInstance.h" +#include "EndlessVendetta/Characters/BountyHunterCharacter.h" +#include "Kismet/GameplayStatics.h" + +void AFinalCheckpoint::CompleteBounty() +{ + UEVGameInstance* GI = Cast(GetWorld()->GetGameInstance()); + if (!IsValid(GI)) return; + + GI->MainSaveGameInstanceRef->CurrentMainBountyIndexSave++; + UGameplayStatics::SaveGameToSlot(GI->MainSaveGameInstanceRef, "MainSave", 0); + + FName OpnWrldLvlName = FName(Cast(GetWorld()->GetFirstPlayerController()->GetPawn())->GetOpenWorldLevelName()); + UGameplayStatics::OpenLevel(GetWorld(), OpnWrldLvlName); +} diff --git a/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckPoints/FinalCheckpoint.h b/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckPoints/FinalCheckpoint.h new file mode 100644 index 00000000..ad1f9d2b --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckPoints/FinalCheckpoint.h @@ -0,0 +1,22 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "EndlessVendetta/BountySystem/CheckpointClass.h" +#include "FinalCheckpoint.generated.h" + +/** + * + */ +UCLASS() +class ENDLESSVENDETTA_API AFinalCheckpoint : public ACheckpointClass +{ + GENERATED_BODY() + +protected: + // Increment and Save Current Main Bounty Index, as well as load Open World Level + UFUNCTION(BlueprintCallable) + void CompleteBounty(); + +}; diff --git a/EndlessVendetta/Source/EndlessVendetta/BountySystem/MainBountyClass.cpp b/EndlessVendetta/Source/EndlessVendetta/BountySystem/MainBountyClass.cpp index 71fd48fc..1af830e7 100644 --- a/EndlessVendetta/Source/EndlessVendetta/BountySystem/MainBountyClass.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/BountySystem/MainBountyClass.cpp @@ -6,13 +6,31 @@ void AMainBountyClass::IncrementBountyCheckpoint() { Super::IncrementBountyCheckpoint(); - FString TipToDisplay = ""; - if (!Completed) TipToDisplay = BountyCheckpoints[0]->GetCheckpointTip(); - Cast(GetWorld()->GetFirstPlayerController()->GetPawn())->CheckpointCompletedUI(TipToDisplay, Completed); + CompletedACheckpoint.Broadcast(); + // FString TipToDisplay = ""; + // if (!Completed) TipToDisplay = BountyCheckpoints[0]->GetCheckpointTip(); + // Cast(GetWorld()->GetFirstPlayerController()->GetPawn())->CheckpointCompletedUI("", false); +} + +void AMainBountyClass::SpawnOpenWorldCheckpoint() +{ + if (!IsValid(OpenWorldCheckpointClass)) return; + + FActorSpawnParameters SpawnParameters; + SpawnParameters.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn; + FVector Loc = OpenWorldCheckpointClass.GetDefaultObject()->GetCheckpointSpawnTransform().GetLocation(); + FRotator Rot = OpenWorldCheckpointClass.GetDefaultObject()->GetCheckpointSpawnTransform().GetRotation().Rotator(); + + OpenWorldcheckpoint = GetWorld()->SpawnActor(OpenWorldCheckpointClass, Loc, Rot, SpawnParameters); + OpenWorldcheckpoint->SpawnWaypoint(BountyTitle); } -void AMainBountyClass::SpawnAmmoDrops() + + + + + void AMainBountyClass::SpawnAmmoDrops() { UE_LOG(LogTemp, Display, TEXT("Bought Ammo Drops, but its not implemented yet")); // FActorSpawnParameters SpawnParameters; diff --git a/EndlessVendetta/Source/EndlessVendetta/BountySystem/MainBountyClass.h b/EndlessVendetta/Source/EndlessVendetta/BountySystem/MainBountyClass.h index bd7f8016..1617dfe6 100644 --- a/EndlessVendetta/Source/EndlessVendetta/BountySystem/MainBountyClass.h +++ b/EndlessVendetta/Source/EndlessVendetta/BountySystem/MainBountyClass.h @@ -20,8 +20,8 @@ class ENDLESSVENDETTA_API AMainBountyClass : public ABountyClass UPROPERTY(EditDefaultsOnly, Category = "Bounty") TSubclassOf OpenWorldCheckpointClass; - // Only Function of this Checkpoint is to Guide the Player to the Bounty Start Area - ACheckpointClass* OpenWorldCheckpointRef; + // Used to Store Ref for Bounty Tracking Functionality + ACheckpointClass* OpenWorldcheckpoint; protected: @@ -34,19 +34,11 @@ private: void IncrementBountyCheckpoint() override; protected: - // Sets completed to true when last checkpoint broadcasts completion - UFUNCTION() - void CompletedMainBounty() - { - Completed = true; - } + public: // Spawns the Single Checkpoint in the Open World for this Main Bounty - void SpawnOpenWorldCheckpoint() - { - UE_LOG(LogTemp, Warning, TEXT("Spawning Open World Checkpoint")); - } + void SpawnOpenWorldCheckpoint(); diff --git a/EndlessVendetta/Source/EndlessVendetta/BountySystem/SideBountyClass.cpp b/EndlessVendetta/Source/EndlessVendetta/BountySystem/SideBountyClass.cpp index d28c84e6..6daec97b 100644 --- a/EndlessVendetta/Source/EndlessVendetta/BountySystem/SideBountyClass.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/BountySystem/SideBountyClass.cpp @@ -13,10 +13,12 @@ void ASideBountyClass::IncrementBountyCheckpoint() { Super::IncrementBountyCheckpoint(); - if (Completed) - { - CompletedSideBounty.Broadcast(FavoursEarnedForCompletion); - } + // Rework!!!! + + // if (Completed) + // { + // CompletedSideBounty.Broadcast(FavoursEarnedForCompletion); + // } } void ASideBountyClass::DestroyCheckpoints() diff --git a/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.cpp b/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.cpp index cf60bf68..6b15a8b8 100644 --- a/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.cpp @@ -6,26 +6,18 @@ #include "EndlessVendetta/EVGameInstance.h" #include "Kismet/GameplayStatics.h" -void ABountyHunterCharacter::SpawnBounties() +void ABountyHunterCharacter::SpawnMainBounty() { - UE_LOG(LogTemp, Warning, TEXT("Spawning Bounty...")); - UEVGameInstance* GI = Cast(GetGameInstance()); + if (!IsValid(GI->MainSaveGameInstanceRef)) return; - if (!IsValid(GI->MainSaveGameInstanceRef)) + if (GI->MainSaveGameInstanceRef->CurrentMainBountyIndexSave > CurrentMainBountyIndex) CompleteCurrentMainBounty(); + + if (MainBountyClasses.IsEmpty() || MainBountyClasses.Num() <= CurrentMainBountyIndex|| !IsValid(MainBountyClasses[CurrentMainBountyIndex])) { - UE_LOG(LogTemp, Warning, TEXT("Main save Game Object isnt initialized in GI")); + AllBountiesCompleted(); return; } - - int TestNum = GI->MainSaveGameInstanceRef->CurrentMainBountyIndexSave; - UE_LOG(LogTemp, Warning, TEXT("Current Index is set to....%d"), TestNum); - - GI->MainSaveGameInstanceRef->CurrentMainBountyIndexSave = 40; - - UGameplayStatics::SaveGameToSlot(GI->MainSaveGameInstanceRef, "MainSave", 0); - - if (MainBountyClasses.IsEmpty() || !IsValid(MainBountyClasses[CurrentMainBountyIndex])) return; CurrentMainBounty = GetWorld()->SpawnActor(MainBountyClasses[CurrentMainBountyIndex]); const FAttachmentTransformRules AttachmentTransformRules(EAttachmentRule::SnapToTarget, true); @@ -36,12 +28,19 @@ void ABountyHunterCharacter::SpawnBounties() void ABountyHunterCharacter::CompleteCurrentMainBounty() { + // Collect rewards for bounty and move onto next UE_LOG(LogTemp, Warning, TEXT("Would be collecting reward for completing bounty and moving onto next if possible")); + CurrentMainBountyIndex++; +} + +void ABountyHunterCharacter::AllBountiesCompleted() +{ + UE_LOG(LogTemp, Warning, TEXT("Game Completed!!!! No more Bounties left... or you forgot to set a bounty at one of the indexes oof")); } void ABountyHunterCharacter::BeginPlay() { - if (UGameplayStatics::DoesSaveGameExist("MainSave", 0)) SpawnBounties(); + if (UGameplayStatics::DoesSaveGameExist("MainSave", 0)) SpawnMainBounty(); Super::BeginPlay(); } diff --git a/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.h b/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.h index 6001ab9b..cc1719e9 100644 --- a/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.h +++ b/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.h @@ -22,7 +22,6 @@ class ENDLESSVENDETTA_API ABountyHunterCharacter : public AEndlessVendettaCharac TArray> MainBountyClasses; // Reference to the Currently Active Main Bounty - UPROPERTY(VisibleAnywhere, Category = "Bounty Hunter") AMainBountyClass* CurrentMainBounty; // Index of Currently Active Main Bounty, Used for MainBountyClasses @@ -40,12 +39,13 @@ public: // ------------------- METHODS --------------------------------- private: // Spawns Current Main Bounty along with its Side Bounties, and spawns its appropriate CP's based on level - UFUNCTION(BlueprintCallable, Category = "Bounty Hunter") - void SpawnBounties(); + void SpawnMainBounty(); - // Checks if Player Completed Current Main Bounty, if so Collects Reward and Tries to Move onto Next Main Bounty - UFUNCTION(BlueprintCallable, Category = "Bounty Hunter") + // Collects Reward for Current Main Bounty and Increments the Main Bounty Index void CompleteCurrentMainBounty(); + + // Replaces Normal Bounty Info UI with Unique Game Over UI + void AllBountiesCompleted(); protected: // Called When Player Spawns @@ -53,6 +53,11 @@ protected: // Called every frame virtual void Tick(float DeltaTime) override; -public: +public: + // Used by Final Checkpoint to always load the Level set as the Open Level in here + FString GetOpenWorldLevelName() + { + return OpenWorldLevelName; + } }; diff --git a/EndlessVendetta/Source/EndlessVendetta/EVGameInstance.cpp b/EndlessVendetta/Source/EndlessVendetta/EVGameInstance.cpp index 0dee7d08..663ed63e 100644 --- a/EndlessVendetta/Source/EndlessVendetta/EVGameInstance.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/EVGameInstance.cpp @@ -8,10 +8,9 @@ void UEVGameInstance::CreateNewSaveGameInstance() { if (UGameplayStatics::DoesSaveGameExist("MainSave", 0)) UGameplayStatics::DeleteGameInSlot("MainSave", 0); - - UE_LOG(LogTemp, Warning, TEXT("Creating new save game instance")); + MainSaveGameInstanceRef = Cast(UGameplayStatics::CreateSaveGameObject(UMainSaveGameClass::StaticClass())); - MainSaveGameInstanceRef->CurrentMainBountyIndexSave = 20; + MainSaveGameInstanceRef->CurrentMainBountyIndexSave = 0; UGameplayStatics::SaveGameToSlot(MainSaveGameInstanceRef, "MainSave", 0); } diff --git a/EndlessVendetta/Source/EndlessVendetta/MainSaveGameClass.h b/EndlessVendetta/Source/EndlessVendetta/MainSaveGameClass.h index 8059f8d7..b673e1e7 100644 --- a/EndlessVendetta/Source/EndlessVendetta/MainSaveGameClass.h +++ b/EndlessVendetta/Source/EndlessVendetta/MainSaveGameClass.h @@ -14,7 +14,7 @@ class ENDLESSVENDETTA_API UMainSaveGameClass : public USaveGame { GENERATED_BODY() -public: +public: UPROPERTY() int CurrentMainBountyIndexSave; From 971ed07da92a597d04a80df404a24a423cf3cde0 Mon Sep 17 00:00:00 2001 From: Rafal Swierczek Date: Thu, 1 Feb 2024 15:47:46 +0000 Subject: [PATCH 062/112] Bugfix Loading into Incomplete Tutorial Loads the Player into Open World Instead of Tutorial Level --- .../.idea.EndlessVendetta/.idea/workspace.xml | 24 ++----------------- .../Gameplay/MainMenuPlayerController.uasset | 4 ++-- .../Source/EndlessVendetta/EVGameInstance.cpp | 6 ++--- .../Source/EndlessVendetta/EVGameInstance.h | 2 +- 4 files changed, 8 insertions(+), 28 deletions(-) diff --git a/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml b/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml index e65ed336..22d6f8ba 100644 --- a/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml +++ b/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml @@ -7,27 +7,7 @@