Updated
This commit is contained in:
@@ -54,6 +54,10 @@
|
|||||||
{
|
{
|
||||||
"Name": "PhysicsControl",
|
"Name": "PhysicsControl",
|
||||||
"Enabled": true
|
"Enabled": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Name": "ProceduralMeshComponent",
|
||||||
|
"Enabled": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@@ -66,9 +66,9 @@ void ABloodPool::SetPoolColor(const FLinearColor& NewColor)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ABloodPool::StartExpansion(float ExpansionRate, float MaxSize)
|
void ABloodPool::StartExpansion(float InExpansionRate, float MaxSize)
|
||||||
{
|
{
|
||||||
this->ExpansionRate = ExpansionRate;
|
ExpansionRate = InExpansionRate;
|
||||||
MaxPoolSize = MaxSize;
|
MaxPoolSize = MaxSize;
|
||||||
bIsExpanding = true;
|
bIsExpanding = true;
|
||||||
|
|
||||||
|
@@ -0,0 +1,50 @@
|
|||||||
|
#include "DismembermentGraph/DismembermentGraph.h"
|
||||||
|
#include "EdGraph/EdGraphNode.h"
|
||||||
|
#include "EdGraph/EdGraphPin.h"
|
||||||
|
|
||||||
|
UDismembermentGraph::UDismembermentGraph()
|
||||||
|
: bCompiled(false)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void UDismembermentGraph::ClearGraph()
|
||||||
|
{
|
||||||
|
// Clear all nodes
|
||||||
|
Nodes.Empty();
|
||||||
|
bCompiled = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
UEdGraphNode* UDismembermentGraph::AddNode(TSubclassOf<UEdGraphNode> NodeClass, const FVector2D& Position)
|
||||||
|
{
|
||||||
|
// Create new node
|
||||||
|
UEdGraphNode* NewNode = NewObject<UEdGraphNode>(this, NodeClass);
|
||||||
|
if (NewNode)
|
||||||
|
{
|
||||||
|
// Set node position
|
||||||
|
NewNode->NodePosX = Position.X;
|
||||||
|
NewNode->NodePosY = Position.Y;
|
||||||
|
|
||||||
|
// Add to node list
|
||||||
|
Nodes.Add(NewNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
return NewNode;
|
||||||
|
}
|
||||||
|
|
||||||
|
void UDismembermentGraph::RemoveNode(UEdGraphNode* Node)
|
||||||
|
{
|
||||||
|
// Remove from node list
|
||||||
|
if (Node)
|
||||||
|
{
|
||||||
|
Nodes.Remove(Node);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void UDismembermentGraph::CreateConnection(UEdGraphPin* A, UEdGraphPin* B)
|
||||||
|
{
|
||||||
|
// Create connection
|
||||||
|
if (A && B)
|
||||||
|
{
|
||||||
|
A->MakeLinkTo(B);
|
||||||
|
}
|
||||||
|
}
|
@@ -42,11 +42,11 @@ public:
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Start blood pool expansion
|
* Start blood pool expansion
|
||||||
* @param ExpansionRate - Rate of expansion
|
* @param InExpansionRate - Rate of expansion
|
||||||
* @param MaxSize - Maximum size
|
* @param MaxSize - Maximum size
|
||||||
*/
|
*/
|
||||||
UFUNCTION(BlueprintCallable, Category = "FLESH|Blood")
|
UFUNCTION(BlueprintCallable, Category = "FLESH|Blood")
|
||||||
void StartExpansion(float ExpansionRate = 1.0f, float MaxSize = 3.0f);
|
void StartExpansion(float InExpansionRate = 1.0f, float MaxSize = 3.0f);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Collision component for surface detection
|
// Collision component for surface detection
|
||||||
|
38
Source/FLESH/Public/DismembermentGraph/DismembermentGraph.h
Normal file
38
Source/FLESH/Public/DismembermentGraph/DismembermentGraph.h
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "CoreMinimal.h"
|
||||||
|
#include "UObject/NoExportTypes.h"
|
||||||
|
#include "DismembermentGraph.generated.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Dismemberment graph class
|
||||||
|
* Used for visual programming of dismemberment logic
|
||||||
|
*/
|
||||||
|
UCLASS()
|
||||||
|
class FLESH_API UDismembermentGraph : public UObject
|
||||||
|
{
|
||||||
|
GENERATED_BODY()
|
||||||
|
|
||||||
|
public:
|
||||||
|
UDismembermentGraph();
|
||||||
|
|
||||||
|
// Graph nodes
|
||||||
|
UPROPERTY()
|
||||||
|
TArray<class UEdGraphNode*> Nodes;
|
||||||
|
|
||||||
|
// Compilation status
|
||||||
|
UPROPERTY()
|
||||||
|
bool bCompiled;
|
||||||
|
|
||||||
|
// Clear graph
|
||||||
|
void ClearGraph();
|
||||||
|
|
||||||
|
// Add node
|
||||||
|
class UEdGraphNode* AddNode(TSubclassOf<class UEdGraphNode> NodeClass, const FVector2D& Position);
|
||||||
|
|
||||||
|
// Remove node
|
||||||
|
void RemoveNode(class UEdGraphNode* Node);
|
||||||
|
|
||||||
|
// Create connection
|
||||||
|
void CreateConnection(class UEdGraphPin* A, class UEdGraphPin* B);
|
||||||
|
};
|
@@ -2,6 +2,10 @@
|
|||||||
|
|
||||||
#include "CoreMinimal.h"
|
#include "CoreMinimal.h"
|
||||||
#include "UObject/NoExportTypes.h"
|
#include "UObject/NoExportTypes.h"
|
||||||
|
|
||||||
|
// Forward declaration
|
||||||
|
class UDismembermentGraph;
|
||||||
|
|
||||||
#include "DismembermentGraphAsset.generated.h"
|
#include "DismembermentGraphAsset.generated.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -38,7 +38,8 @@ public class FLESHEditor : ModuleRules
|
|||||||
"SlateCore",
|
"SlateCore",
|
||||||
"UnrealEd",
|
"UnrealEd",
|
||||||
"PropertyEditor",
|
"PropertyEditor",
|
||||||
"EditorStyle",
|
"ApplicationCore",
|
||||||
|
"AppFramework",
|
||||||
"LevelEditor",
|
"LevelEditor",
|
||||||
"GeometryCore",
|
"GeometryCore",
|
||||||
"GeometryFramework",
|
"GeometryFramework",
|
||||||
|
@@ -4,7 +4,7 @@
|
|||||||
#include "Modules/ModuleManager.h"
|
#include "Modules/ModuleManager.h"
|
||||||
#include "IDetailsView.h"
|
#include "IDetailsView.h"
|
||||||
#include "Widgets/Layout/SBorder.h"
|
#include "Widgets/Layout/SBorder.h"
|
||||||
#include "EditorStyleSet.h"
|
#include "Styling/AppStyle.h"
|
||||||
#include "Engine/SkeletalMesh.h"
|
#include "Engine/SkeletalMesh.h"
|
||||||
#include "Framework/Commands/UICommandList.h"
|
#include "Framework/Commands/UICommandList.h"
|
||||||
#include "Framework/MultiBox/MultiBoxBuilder.h"
|
#include "Framework/MultiBox/MultiBoxBuilder.h"
|
||||||
@@ -178,7 +178,7 @@ void FDismembermentEditor::CreateEditorToolbar()
|
|||||||
NAME_None,
|
NAME_None,
|
||||||
FText::FromString("Boolean Cut"),
|
FText::FromString("Boolean Cut"),
|
||||||
FText::FromString("Perform a boolean cut operation"),
|
FText::FromString("Perform a boolean cut operation"),
|
||||||
FSlateIcon(FEditorStyle::GetStyleSetName(), "ClassIcon.CurveBase"),
|
FSlateIcon(FAppStyle::GetAppStyleSetName(), "ClassIcon.CurveBase"),
|
||||||
EUserInterfaceActionType::Button
|
EUserInterfaceActionType::Button
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -187,7 +187,7 @@ void FDismembermentEditor::CreateEditorToolbar()
|
|||||||
NAME_None,
|
NAME_None,
|
||||||
FText::FromString("Add Layer"),
|
FText::FromString("Add Layer"),
|
||||||
FText::FromString("Add a new anatomical layer"),
|
FText::FromString("Add a new anatomical layer"),
|
||||||
FSlateIcon(FEditorStyle::GetStyleSetName(), "ClassIcon.Layer"),
|
FSlateIcon(FAppStyle::GetAppStyleSetName(), "ClassIcon.Layer"),
|
||||||
EUserInterfaceActionType::Button
|
EUserInterfaceActionType::Button
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -196,7 +196,7 @@ void FDismembermentEditor::CreateEditorToolbar()
|
|||||||
NAME_None,
|
NAME_None,
|
||||||
FText::FromString("Preview"),
|
FText::FromString("Preview"),
|
||||||
FText::FromString("Preview the dismemberment effects"),
|
FText::FromString("Preview the dismemberment effects"),
|
||||||
FSlateIcon(FEditorStyle::GetStyleSetName(), "ClassIcon.ParticleSystem"),
|
FSlateIcon(FAppStyle::GetAppStyleSetName(), "ClassIcon.ParticleSystem"),
|
||||||
EUserInterfaceActionType::Button
|
EUserInterfaceActionType::Button
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -205,7 +205,7 @@ void FDismembermentEditor::CreateEditorToolbar()
|
|||||||
NAME_None,
|
NAME_None,
|
||||||
FText::FromString("Save"),
|
FText::FromString("Save"),
|
||||||
FText::FromString("Save the dismemberment setup"),
|
FText::FromString("Save the dismemberment setup"),
|
||||||
FSlateIcon(FEditorStyle::GetStyleSetName(), "AssetEditor.SaveAsset"),
|
FSlateIcon(FAppStyle::GetAppStyleSetName(), "AssetEditor.SaveAsset"),
|
||||||
EUserInterfaceActionType::Button
|
EUserInterfaceActionType::Button
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -227,22 +227,22 @@ void FDismembermentEditor::RegisterTabSpawners(const TSharedRef<FTabManager>& In
|
|||||||
InTabManager->RegisterTabSpawner(ViewportTabId, FOnSpawnTab::CreateSP(this, &FDismembermentEditor::SpawnTab_Viewport))
|
InTabManager->RegisterTabSpawner(ViewportTabId, FOnSpawnTab::CreateSP(this, &FDismembermentEditor::SpawnTab_Viewport))
|
||||||
.SetDisplayName(FText::FromString("Viewport"))
|
.SetDisplayName(FText::FromString("Viewport"))
|
||||||
.SetGroup(WorkspaceMenuCategory.ToSharedRef())
|
.SetGroup(WorkspaceMenuCategory.ToSharedRef())
|
||||||
.SetIcon(FSlateIcon(FEditorStyle::GetStyleSetName(), "LevelEditor.Tabs.Viewports"));
|
.SetIcon(FSlateIcon(FAppStyle::GetAppStyleSetName(), "LevelEditor.Tabs.Viewports"));
|
||||||
|
|
||||||
InTabManager->RegisterTabSpawner(DetailsTabId, FOnSpawnTab::CreateSP(this, &FDismembermentEditor::SpawnTab_Details))
|
InTabManager->RegisterTabSpawner(DetailsTabId, FOnSpawnTab::CreateSP(this, &FDismembermentEditor::SpawnTab_Details))
|
||||||
.SetDisplayName(FText::FromString("Details"))
|
.SetDisplayName(FText::FromString("Details"))
|
||||||
.SetGroup(WorkspaceMenuCategory.ToSharedRef())
|
.SetGroup(WorkspaceMenuCategory.ToSharedRef())
|
||||||
.SetIcon(FSlateIcon(FEditorStyle::GetStyleSetName(), "LevelEditor.Tabs.Details"));
|
.SetIcon(FSlateIcon(FAppStyle::GetAppStyleSetName(), "LevelEditor.Tabs.Details"));
|
||||||
|
|
||||||
InTabManager->RegisterTabSpawner(LayerSystemTabId, FOnSpawnTab::CreateSP(this, &FDismembermentEditor::SpawnTab_LayerSystem))
|
InTabManager->RegisterTabSpawner(LayerSystemTabId, FOnSpawnTab::CreateSP(this, &FDismembermentEditor::SpawnTab_LayerSystem))
|
||||||
.SetDisplayName(FText::FromString("Layer System"))
|
.SetDisplayName(FText::FromString("Layer System"))
|
||||||
.SetGroup(WorkspaceMenuCategory.ToSharedRef())
|
.SetGroup(WorkspaceMenuCategory.ToSharedRef())
|
||||||
.SetIcon(FSlateIcon(FEditorStyle::GetStyleSetName(), "ClassIcon.Layer"));
|
.SetIcon(FSlateIcon(FAppStyle::GetAppStyleSetName(), "ClassIcon.Layer"));
|
||||||
|
|
||||||
InTabManager->RegisterTabSpawner(PhysicsSettingsTabId, FOnSpawnTab::CreateSP(this, &FDismembermentEditor::SpawnTab_PhysicsSettings))
|
InTabManager->RegisterTabSpawner(PhysicsSettingsTabId, FOnSpawnTab::CreateSP(this, &FDismembermentEditor::SpawnTab_PhysicsSettings))
|
||||||
.SetDisplayName(FText::FromString("Physics Settings"))
|
.SetDisplayName(FText::FromString("Physics Settings"))
|
||||||
.SetGroup(WorkspaceMenuCategory.ToSharedRef())
|
.SetGroup(WorkspaceMenuCategory.ToSharedRef())
|
||||||
.SetIcon(FSlateIcon(FEditorStyle::GetStyleSetName(), "ClassIcon.PhysicsAsset"));
|
.SetIcon(FSlateIcon(FAppStyle::GetAppStyleSetName(), "ClassIcon.PhysicsAsset"));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Unregister tab spawners
|
// Unregister tab spawners
|
||||||
@@ -263,7 +263,7 @@ TSharedRef<SDockTab> FDismembermentEditor::SpawnTab_Viewport(const FSpawnTabArgs
|
|||||||
{
|
{
|
||||||
// Create the viewport widget
|
// Create the viewport widget
|
||||||
ViewportWidget = SNew(SBorder)
|
ViewportWidget = SNew(SBorder)
|
||||||
.BorderImage(FEditorStyle::GetBrush("ToolPanel.GroupBorder"))
|
.BorderImage(FAppStyle::GetBrush("ToolPanel.GroupBorder"))
|
||||||
.Padding(FMargin(4.0f))
|
.Padding(FMargin(4.0f))
|
||||||
[
|
[
|
||||||
SNew(STextBlock)
|
SNew(STextBlock)
|
||||||
@@ -307,7 +307,7 @@ TSharedRef<SDockTab> FDismembermentEditor::SpawnTab_LayerSystem(const FSpawnTabA
|
|||||||
{
|
{
|
||||||
// Create the layer system widget
|
// Create the layer system widget
|
||||||
LayerSystemWidget = SNew(SBorder)
|
LayerSystemWidget = SNew(SBorder)
|
||||||
.BorderImage(FEditorStyle::GetBrush("ToolPanel.GroupBorder"))
|
.BorderImage(FAppStyle::GetBrush("ToolPanel.GroupBorder"))
|
||||||
.Padding(FMargin(4.0f))
|
.Padding(FMargin(4.0f))
|
||||||
[
|
[
|
||||||
SNew(STextBlock)
|
SNew(STextBlock)
|
||||||
@@ -327,7 +327,7 @@ TSharedRef<SDockTab> FDismembermentEditor::SpawnTab_PhysicsSettings(const FSpawn
|
|||||||
{
|
{
|
||||||
// Create the physics settings widget
|
// Create the physics settings widget
|
||||||
PhysicsSettingsWidget = SNew(SBorder)
|
PhysicsSettingsWidget = SNew(SBorder)
|
||||||
.BorderImage(FEditorStyle::GetBrush("ToolPanel.GroupBorder"))
|
.BorderImage(FAppStyle::GetBrush("ToolPanel.GroupBorder"))
|
||||||
.Padding(FMargin(4.0f))
|
.Padding(FMargin(4.0f))
|
||||||
[
|
[
|
||||||
SNew(STextBlock)
|
SNew(STextBlock)
|
||||||
|
@@ -213,7 +213,7 @@ bool UDismembermentPreviewManager::PreviewCutNode(TObjectPtr<UDismembermentGraph
|
|||||||
// Store the cut transform for later use
|
// Store the cut transform for later use
|
||||||
FTransform CutTransform;
|
FTransform CutTransform;
|
||||||
CutTransform.SetLocation(CutLocation);
|
CutTransform.SetLocation(CutLocation);
|
||||||
CutTransform.SetRotation(FQuat::MakeFromX(CutDirection));
|
CutTransform.SetRotation(FQuat(FRotationMatrix::MakeFromX(CutDirection)));
|
||||||
CutTransform.SetScale3D(FVector(CutWidth, CutDepth, 1.0f));
|
CutTransform.SetScale3D(FVector(CutWidth, CutDepth, 1.0f));
|
||||||
PreviewCutTransforms.Add(CutTransform);
|
PreviewCutTransforms.Add(CutTransform);
|
||||||
|
|
||||||
@@ -431,7 +431,7 @@ bool UDismembermentPreviewManager::PreviewWoundNode(TObjectPtr<UDismembermentGra
|
|||||||
TObjectPtr<UNiagaraComponent> WoundEffectComponent = nullptr;
|
TObjectPtr<UNiagaraComponent> WoundEffectComponent = nullptr;
|
||||||
if (WoundEffect)
|
if (WoundEffect)
|
||||||
{
|
{
|
||||||
WoundEffectComponent = UNiagaraComponent::SpawnSystemAttached(
|
WoundEffectComponent = UNiagaraFunctionLibrary::SpawnSystemAttached(
|
||||||
WoundEffect,
|
WoundEffect,
|
||||||
TargetSkeletalMesh,
|
TargetSkeletalMesh,
|
||||||
NAME_None,
|
NAME_None,
|
||||||
@@ -544,7 +544,7 @@ TObjectPtr<UNiagaraComponent> UDismembermentPreviewManager::CreatePreviewBloodEf
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Create a Niagara component for the blood effect
|
// Create a Niagara component for the blood effect
|
||||||
TObjectPtr<UNiagaraComponent> BloodEffectComponent = UNiagaraComponent::SpawnSystemAttached(
|
TObjectPtr<UNiagaraComponent> BloodEffectComponent = UNiagaraFunctionLibrary::SpawnSystemAttached(
|
||||||
BloodEffect,
|
BloodEffect,
|
||||||
TargetSkeletalMesh,
|
TargetSkeletalMesh,
|
||||||
NAME_None,
|
NAME_None,
|
||||||
|
@@ -34,7 +34,7 @@ void SDismembermentGraphNode::UpdateGraphNode()
|
|||||||
.VAlign(VAlign_Center)
|
.VAlign(VAlign_Center)
|
||||||
[
|
[
|
||||||
SNew(SBorder)
|
SNew(SBorder)
|
||||||
.BorderImage(FEditorStyle::GetBrush("Graph.StateNode.Body"))
|
.BorderImage(FAppStyle::GetBrush("Graph.StateNode.Body"))
|
||||||
.BorderBackgroundColor(this, &SDismembermentGraphNode::GetNodeColor)
|
.BorderBackgroundColor(this, &SDismembermentGraphNode::GetNodeColor)
|
||||||
.HAlign(HAlign_Fill)
|
.HAlign(HAlign_Fill)
|
||||||
.VAlign(VAlign_Fill)
|
.VAlign(VAlign_Fill)
|
||||||
@@ -52,7 +52,7 @@ void SDismembermentGraphNode::UpdateGraphNode()
|
|||||||
.AutoHeight()
|
.AutoHeight()
|
||||||
[
|
[
|
||||||
SNew(SBorder)
|
SNew(SBorder)
|
||||||
.BorderImage(FEditorStyle::GetBrush("Graph.StateNode.ColorSpill"))
|
.BorderImage(FAppStyle::GetBrush("Graph.StateNode.ColorSpill"))
|
||||||
.BorderBackgroundColor(this, &SDismembermentGraphNode::GetNodeTitleColor)
|
.BorderBackgroundColor(this, &SDismembermentGraphNode::GetNodeTitleColor)
|
||||||
.HAlign(HAlign_Fill)
|
.HAlign(HAlign_Fill)
|
||||||
.VAlign(VAlign_Center)
|
.VAlign(VAlign_Center)
|
||||||
@@ -65,7 +65,7 @@ void SDismembermentGraphNode::UpdateGraphNode()
|
|||||||
[
|
[
|
||||||
SNew(STextBlock)
|
SNew(STextBlock)
|
||||||
.Text(this, &SDismembermentGraphNode::GetNodeTitle)
|
.Text(this, &SDismembermentGraphNode::GetNodeTitle)
|
||||||
.TextStyle(FEditorStyle::Get(), "Graph.StateNode.NodeTitle")
|
.TextStyle(FAppStyle::Get(), "Graph.StateNode.NodeTitle")
|
||||||
.Margin(FMargin(0.0f, 0.0f, 4.0f, 0.0f))
|
.Margin(FMargin(0.0f, 0.0f, 4.0f, 0.0f))
|
||||||
]
|
]
|
||||||
// Node category
|
// Node category
|
||||||
@@ -74,7 +74,7 @@ void SDismembermentGraphNode::UpdateGraphNode()
|
|||||||
[
|
[
|
||||||
SNew(STextBlock)
|
SNew(STextBlock)
|
||||||
.Text(this, &SDismembermentGraphNode::GetNodeCategory)
|
.Text(this, &SDismembermentGraphNode::GetNodeCategory)
|
||||||
.TextStyle(FEditorStyle::Get(), "Graph.StateNode.NodeTitle")
|
.TextStyle(FAppStyle::Get(), "Graph.StateNode.NodeTitle")
|
||||||
.ColorAndOpacity(FLinearColor(0.8f, 0.8f, 0.8f))
|
.ColorAndOpacity(FLinearColor(0.8f, 0.8f, 0.8f))
|
||||||
.Margin(FMargin(4.0f, 0.0f, 0.0f, 0.0f))
|
.Margin(FMargin(4.0f, 0.0f, 0.0f, 0.0f))
|
||||||
]
|
]
|
||||||
@@ -86,7 +86,7 @@ void SDismembermentGraphNode::UpdateGraphNode()
|
|||||||
.AutoHeight()
|
.AutoHeight()
|
||||||
[
|
[
|
||||||
SNew(SBorder)
|
SNew(SBorder)
|
||||||
.BorderImage(FEditorStyle::GetBrush("NoBorder"))
|
.BorderImage(FAppStyle::GetBrush("NoBorder"))
|
||||||
.HAlign(HAlign_Fill)
|
.HAlign(HAlign_Fill)
|
||||||
.VAlign(VAlign_Fill)
|
.VAlign(VAlign_Fill)
|
||||||
.Padding(FMargin(10.0f, 0.0f))
|
.Padding(FMargin(10.0f, 0.0f))
|
||||||
@@ -260,7 +260,7 @@ TSharedRef<SWidget> SDismembermentGraphNode::GetNodeTitleWidget()
|
|||||||
|
|
||||||
return SNew(STextBlock)
|
return SNew(STextBlock)
|
||||||
.Text(DismembermentNode->GetNodeTitle(ENodeTitleType::FullTitle))
|
.Text(DismembermentNode->GetNodeTitle(ENodeTitleType::FullTitle))
|
||||||
.TextStyle(FEditorStyle::Get(), "Graph.StateNode.NodeTitle");
|
.TextStyle(FAppStyle::Get(), "Graph.StateNode.NodeTitle");
|
||||||
}
|
}
|
||||||
|
|
||||||
TSharedRef<SWidget> SDismembermentGraphNode::GetNodeBodyWidget()
|
TSharedRef<SWidget> SDismembermentGraphNode::GetNodeBodyWidget()
|
||||||
@@ -287,7 +287,7 @@ TSharedRef<SWidget> SDismembermentGraphNode::GetNodePreviewWidget()
|
|||||||
.VAlign(VAlign_Center)
|
.VAlign(VAlign_Center)
|
||||||
[
|
[
|
||||||
SNew(SBorder)
|
SNew(SBorder)
|
||||||
.BorderImage(FEditorStyle::GetBrush("Graph.StateNode.Body"))
|
.BorderImage(FAppStyle::GetBrush("Graph.StateNode.Body"))
|
||||||
.BorderBackgroundColor(FLinearColor(0.1f, 0.1f, 0.1f, 0.5f))
|
.BorderBackgroundColor(FLinearColor(0.1f, 0.1f, 0.1f, 0.5f))
|
||||||
.HAlign(HAlign_Center)
|
.HAlign(HAlign_Center)
|
||||||
.VAlign(VAlign_Center)
|
.VAlign(VAlign_Center)
|
||||||
|
@@ -18,7 +18,7 @@ class ADismembermentPreviewActor : public AActor
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ADismembermentPreviewActor(const FObjectInitializer& ObjectInitializer)
|
ADismembermentPreviewActor(const FObjectInitializer& ObjectInitializer)
|
||||||
: Super(ObjectInitializer)
|
: AActor(ObjectInitializer)
|
||||||
{
|
{
|
||||||
// Create a skeletal mesh component
|
// Create a skeletal mesh component
|
||||||
SkeletalMeshComponent = CreateDefaultSubobject<USkeletalMeshComponent>(TEXT("SkeletalMeshComponent"));
|
SkeletalMeshComponent = CreateDefaultSubobject<USkeletalMeshComponent>(TEXT("SkeletalMeshComponent"));
|
||||||
@@ -60,11 +60,12 @@ void SDismembermentPreviewViewport::Construct(const FArguments& InArgs)
|
|||||||
if (ProfileIndex != INDEX_NONE)
|
if (ProfileIndex != INDEX_NONE)
|
||||||
{
|
{
|
||||||
Settings->Profiles[ProfileIndex].bRotateLightingRig = false;
|
Settings->Profiles[ProfileIndex].bRotateLightingRig = false;
|
||||||
PreviewScene->SetLightDirection(Settings->Profiles[ProfileIndex].LightingRigRotation);
|
PreviewScene->SetLightDirection(FRotator(Settings->Profiles[ProfileIndex].LightingRigRotation, 0, 0));
|
||||||
PreviewScene->SetSkyBrightness(Settings->Profiles[ProfileIndex].EnvironmentCubeMapBrightness);
|
// The following methods may not exist in UE5.5.4, temporarily commented out
|
||||||
PreviewScene->SetLightColor(Settings->Profiles[ProfileIndex].LightColor);
|
// PreviewScene->SetSkyBrightness(Settings->Profiles[ProfileIndex].EnvironmentCubeMapBrightness);
|
||||||
PreviewScene->SetLightIntensity(Settings->Profiles[ProfileIndex].LightBrightness);
|
// PreviewScene->SetLightColor(Settings->Profiles[ProfileIndex].LightColor);
|
||||||
PreviewScene->SetEnvironmentCubeMap(Settings->Profiles[ProfileIndex].EnvironmentCubeMap);
|
// PreviewScene->SetLightIntensity(Settings->Profiles[ProfileIndex].LightBrightness);
|
||||||
|
// PreviewScene->SetEnvironmentCubeMap(Settings->Profiles[ProfileIndex].EnvironmentCubeMap);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create the preview actor
|
// Create the preview actor
|
||||||
@@ -79,7 +80,11 @@ SDismembermentPreviewViewport::~SDismembermentPreviewViewport()
|
|||||||
// Clean up the preview scene
|
// Clean up the preview scene
|
||||||
if (PreviewScene.IsValid())
|
if (PreviewScene.IsValid())
|
||||||
{
|
{
|
||||||
PreviewScene->RemoveComponent(PreviewActor);
|
// Cannot remove Actor directly, need to remove the Actor's root component
|
||||||
|
if (PreviewActor && PreviewActor->GetRootComponent())
|
||||||
|
{
|
||||||
|
PreviewScene->RemoveComponent(PreviewActor->GetRootComponent());
|
||||||
|
}
|
||||||
PreviewScene.Reset();
|
PreviewScene.Reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -193,10 +198,11 @@ TSharedRef<FEditorViewportClient> SDismembermentPreviewViewport::MakeEditorViewp
|
|||||||
ViewportClient->EngineShowFlags.SetVertexColors(false);
|
ViewportClient->EngineShowFlags.SetVertexColors(false);
|
||||||
ViewportClient->EngineShowFlags.SetLightComplexity(false);
|
ViewportClient->EngineShowFlags.SetLightComplexity(false);
|
||||||
ViewportClient->EngineShowFlags.SetShaderComplexity(false);
|
ViewportClient->EngineShowFlags.SetShaderComplexity(false);
|
||||||
ViewportClient->EngineShowFlags.SetStaticMeshLODColoration(false);
|
// The following methods may not exist in UE5.5.4, temporarily commented out
|
||||||
|
// ViewportClient->EngineShowFlags.SetStaticMeshLODColoration(false);
|
||||||
ViewportClient->EngineShowFlags.SetLightMapDensity(false);
|
ViewportClient->EngineShowFlags.SetLightMapDensity(false);
|
||||||
ViewportClient->EngineShowFlags.SetLightInfluences(false);
|
ViewportClient->EngineShowFlags.SetLightInfluences(false);
|
||||||
ViewportClient->EngineShowFlags.SetOptimizeVizibility(false);
|
// ViewportClient->EngineShowFlags.SetOptimizeVizibility(false);
|
||||||
ViewportClient->EngineShowFlags.SetTextRender(true);
|
ViewportClient->EngineShowFlags.SetTextRender(true);
|
||||||
ViewportClient->EngineShowFlags.SetTestImage(false);
|
ViewportClient->EngineShowFlags.SetTestImage(false);
|
||||||
ViewportClient->EngineShowFlags.SetVisualizeLightCulling(false);
|
ViewportClient->EngineShowFlags.SetVisualizeLightCulling(false);
|
||||||
@@ -208,7 +214,8 @@ TSharedRef<FEditorViewportClient> SDismembermentPreviewViewport::MakeEditorViewp
|
|||||||
ViewportClient->EngineShowFlags.SetHitProxies(false);
|
ViewportClient->EngineShowFlags.SetHitProxies(false);
|
||||||
ViewportClient->EngineShowFlags.SetGBufferHints(false);
|
ViewportClient->EngineShowFlags.SetGBufferHints(false);
|
||||||
ViewportClient->EngineShowFlags.SetVisualizeShadingModels(false);
|
ViewportClient->EngineShowFlags.SetVisualizeShadingModels(false);
|
||||||
ViewportClient->EngineShowFlags.SetVisualizeAdaptiveDOF(false);
|
// The following methods may not exist in UE5.5.4, temporarily commented out
|
||||||
|
// ViewportClient->EngineShowFlags.SetVisualizeAdaptiveDOF(false);
|
||||||
ViewportClient->EngineShowFlags.SetVisualizeSSR(false);
|
ViewportClient->EngineShowFlags.SetVisualizeSSR(false);
|
||||||
ViewportClient->EngineShowFlags.SetVisualizeSSS(false);
|
ViewportClient->EngineShowFlags.SetVisualizeSSS(false);
|
||||||
ViewportClient->EngineShowFlags.SetVolumetricLightmap(true);
|
ViewportClient->EngineShowFlags.SetVolumetricLightmap(true);
|
||||||
@@ -219,8 +226,8 @@ TSharedRef<FEditorViewportClient> SDismembermentPreviewViewport::MakeEditorViewp
|
|||||||
ViewportClient->EngineShowFlags.SetTonemapper(true);
|
ViewportClient->EngineShowFlags.SetTonemapper(true);
|
||||||
ViewportClient->EngineShowFlags.SetLumenReflections(true);
|
ViewportClient->EngineShowFlags.SetLumenReflections(true);
|
||||||
ViewportClient->EngineShowFlags.SetLumenGlobalIllumination(true);
|
ViewportClient->EngineShowFlags.SetLumenGlobalIllumination(true);
|
||||||
ViewportClient->EngineShowFlags.SetVirtualShadowMaps(true);
|
// ViewportClient->EngineShowFlags.SetVirtualShadowMaps(true);
|
||||||
ViewportClient->EngineShowFlags.SetNanite(true);
|
// ViewportClient->EngineShowFlags.SetNanite(true);
|
||||||
|
|
||||||
return ViewportClient.ToSharedRef();
|
return ViewportClient.ToSharedRef();
|
||||||
}
|
}
|
||||||
@@ -295,8 +302,14 @@ SDismembermentPreviewViewportClient::SDismembermentPreviewViewportClient(FPrevie
|
|||||||
{
|
{
|
||||||
// Set up the viewport client
|
// Set up the viewport client
|
||||||
SetRealtime(true);
|
SetRealtime(true);
|
||||||
|
|
||||||
|
// In UE5.5.4, these variables may no longer be members of FEditorViewportClient
|
||||||
|
// We only keep the necessary settings, others are commented out
|
||||||
bSetListenerPosition = false;
|
bSetListenerPosition = false;
|
||||||
bShouldCheckHitProxy = true;
|
bShouldCheckHitProxy = true;
|
||||||
|
|
||||||
|
// The following settings may no longer be supported in UE5.5.4, temporarily commented out
|
||||||
|
/*
|
||||||
bShowGrid = false;
|
bShowGrid = false;
|
||||||
bDisableInput = false;
|
bDisableInput = false;
|
||||||
bAllowMatineePreview = false;
|
bAllowMatineePreview = false;
|
||||||
@@ -334,81 +347,29 @@ SDismembermentPreviewViewportClient::SDismembermentPreviewViewportClient(FPrevie
|
|||||||
bDrawPreviewShadowsInGame = false;
|
bDrawPreviewShadowsInGame = false;
|
||||||
bEnableDirectLightMap = true;
|
bEnableDirectLightMap = true;
|
||||||
bEnableIndirectLightMap = true;
|
bEnableIndirectLightMap = true;
|
||||||
bEnableColorizeDistancefieldLightingMask = false;
|
// All bEnableColorize related variables are commented out
|
||||||
bEnableColorizeDistanceFieldLightingMaskGrayscale = false;
|
*/
|
||||||
bEnableColorizeDistanceFieldLightingMaskColor = false;
|
// Continue to comment out more bEnableColorize related variables
|
||||||
bEnableColorizeDistanceFieldOcclusion = false;
|
/*
|
||||||
bEnableColorizeDistanceFieldOcclusionGrayscale = false;
|
|
||||||
bEnableColorizeDistanceFieldOcclusionColor = false;
|
|
||||||
bEnableColorizeDistanceFieldLightingMaskGrayscale = false;
|
|
||||||
bEnableColorizeDistanceFieldLightingMaskColor = false;
|
|
||||||
bEnableColorizeDistanceFieldOcclusionGrayscale = false;
|
|
||||||
bEnableColorizeDistanceFieldOcclusionColor = false;
|
|
||||||
bEnableColorizeDistanceFieldLightingMask = false;
|
|
||||||
bEnableColorizeDistanceFieldOcclusion = false;
|
|
||||||
bEnableColorizeDistanceFieldGradient = false;
|
|
||||||
bEnableColorizeDistanceFieldGradientGrayscale = false;
|
|
||||||
bEnableColorizeDistanceFieldGradientColor = false;
|
|
||||||
bEnableColorizeDistanceFieldGradientGrayscale = false;
|
|
||||||
bEnableColorizeDistanceFieldGradientColor = false;
|
|
||||||
bEnableColorizeDistanceFieldGradient = false;
|
|
||||||
bEnableColorizeDistanceField = false;
|
|
||||||
bEnableColorizeDistanceFieldGrayscale = false;
|
|
||||||
bEnableColorizeDistanceFieldColor = false;
|
|
||||||
bEnableColorizeDistanceFieldGrayscale = false;
|
|
||||||
bEnableColorizeDistanceFieldColor = false;
|
|
||||||
bEnableColorizeDistanceField = false;
|
|
||||||
bEnableColorizeDistanceFieldMeshSDF = false;
|
|
||||||
bEnableColorizeDistanceFieldMeshSDFGrayscale = false;
|
|
||||||
bEnableColorizeDistanceFieldMeshSDFColor = false;
|
|
||||||
bEnableColorizeDistanceFieldMeshSDFGrayscale = false;
|
|
||||||
bEnableColorizeDistanceFieldMeshSDFColor = false;
|
|
||||||
bEnableColorizeDistanceFieldMeshSDF = false;
|
|
||||||
bEnableColorizeVolumetricLightmap = false;
|
|
||||||
bEnableColorizeVolumetricLightmapDensity = false;
|
|
||||||
bEnableColorizeVolumetricLightmapSamples = false;
|
|
||||||
bEnableColorizeGlobalDistanceField = false;
|
|
||||||
bEnableColorizeGlobalDistanceFieldGrayscale = false;
|
|
||||||
bEnableColorizeGlobalDistanceFieldColor = false;
|
|
||||||
bEnableColorizeGlobalDistanceFieldGrayscale = false;
|
|
||||||
bEnableColorizeGlobalDistanceFieldColor = false;
|
|
||||||
bEnableColorizeGlobalDistanceField = false;
|
|
||||||
bEnableColorizeGlobalDistanceFieldMeshSDF = false;
|
|
||||||
bEnableColorizeGlobalDistanceFieldMeshSDFGrayscale = false;
|
|
||||||
bEnableColorizeGlobalDistanceFieldMeshSDFColor = false;
|
|
||||||
bEnableColorizeGlobalDistanceFieldMeshSDFGrayscale = false;
|
|
||||||
bEnableColorizeGlobalDistanceFieldMeshSDFColor = false;
|
|
||||||
bEnableColorizeGlobalDistanceFieldMeshSDF = false;
|
|
||||||
bEnableColorizeVolumetricLightmapDirectionalOcclusion = false;
|
|
||||||
bEnableColorizeVolumetricLightmapDirectionalOcclusionGrayscale = false;
|
|
||||||
bEnableColorizeVolumetricLightmapDirectionalOcclusionColor = false;
|
|
||||||
bEnableColorizeVolumetricLightmapDirectionalOcclusionGrayscale = false;
|
|
||||||
bEnableColorizeVolumetricLightmapDirectionalOcclusionColor = false;
|
|
||||||
bEnableColorizeVolumetricLightmapDirectionalOcclusion = false;
|
|
||||||
bEnableColorizeVolumetricLightmapDirectionalIndirectIntensity = false;
|
|
||||||
bEnableColorizeVolumetricLightmapDirectionalIndirectIntensityGrayscale = false;
|
|
||||||
bEnableColorizeVolumetricLightmapDirectionalIndirectIntensityColor = false;
|
|
||||||
bEnableColorizeVolumetricLightmapDirectionalIndirectIntensityGrayscale = false;
|
|
||||||
bEnableColorizeVolumetricLightmapDirectionalIndirectIntensityColor = false;
|
|
||||||
bEnableColorizeVolumetricLightmapDirectionalIndirectIntensity = false;
|
|
||||||
bEnableColorizeVolumetricLightmapIndirectIntensity = false;
|
|
||||||
bEnableColorizeVolumetricLightmapIndirectIntensityGrayscale = false;
|
bEnableColorizeVolumetricLightmapIndirectIntensityGrayscale = false;
|
||||||
bEnableColorizeVolumetricLightmapIndirectIntensityColor = false;
|
bEnableColorizeVolumetricLightmapIndirectIntensityColor = false;
|
||||||
bEnableColorizeVolumetricLightmapIndirectIntensityGrayscale = false;
|
bEnableColorizeVolumetricLightmapIndirectIntensityGrayscale = false;
|
||||||
bEnableColorizeVolumetricLightmapIndirectIntensityColor = false;
|
bEnableColorizeVolumetricLightmapIndirectIntensityColor = false;
|
||||||
bEnableColorizeVolumetricLightmapIndirectIntensity = false;
|
bEnableColorizeVolumetricLightmapIndirectIntensity = false;
|
||||||
bEnableColorizeVolumetricLightmapEnvironmentIntensity = false;
|
bEnableColorizeVolumetricLightmapAmbientOcclusion = false;
|
||||||
bEnableColorizeVolumetricLightmapEnvironmentIntensityGrayscale = false;
|
bEnableColorizeVolumetricLightmapAmbientOcclusionGrayscale = false;
|
||||||
bEnableColorizeVolumetricLightmapEnvironmentIntensityColor = false;
|
bEnableColorizeVolumetricLightmapAmbientOcclusionColor = false;
|
||||||
bEnableColorizeVolumetricLightmapEnvironmentIntensityGrayscale = false;
|
bEnableColorizeVolumetricLightmapAmbientOcclusionGrayscale = false;
|
||||||
bEnableColorizeVolumetricLightmapEnvironmentIntensityColor = false;
|
bEnableColorizeVolumetricLightmapAmbientOcclusionColor = false;
|
||||||
bEnableColorizeVolumetricLightmapEnvironmentIntensity = false;
|
bEnableColorizeVolumetricLightmapAmbientOcclusion = false;
|
||||||
|
*/
|
||||||
|
// Continue to comment out all remaining bEnableColorize related variables
|
||||||
|
/*
|
||||||
bEnableColorizeVolumetricLightmapSHBand0 = false;
|
bEnableColorizeVolumetricLightmapSHBand0 = false;
|
||||||
bEnableColorizeVolumetricLightmapSHBand0Grayscale = false;
|
bEnableColorizeVolumetricLightmapSHBand0Grayscale = false;
|
||||||
bEnableColorizeVolumetricLightmapSHBand0Color = false;
|
bEnableColorizeVolumetricLightmapSHBand0Color = false;
|
||||||
bEnableColorizeVolumetricLightmapSHBand0Grayscale = false;
|
bEnableColorizeVolumetricLightmapSHBand0Grayscale = false;
|
||||||
bEnableColorizeVolumetricLightmapSHBand0Color = false;
|
bEnableColorizeVolumetricLightmapSHBand0Color = false;
|
||||||
bEnableColorizeVolumetricLightmapSHBand0 = false;
|
|
||||||
bEnableColorizeVolumetricLightmapSHBand1 = false;
|
bEnableColorizeVolumetricLightmapSHBand1 = false;
|
||||||
bEnableColorizeVolumetricLightmapSHBand1Grayscale = false;
|
bEnableColorizeVolumetricLightmapSHBand1Grayscale = false;
|
||||||
bEnableColorizeVolumetricLightmapSHBand1Color = false;
|
bEnableColorizeVolumetricLightmapSHBand1Color = false;
|
||||||
@@ -427,6 +388,7 @@ SDismembermentPreviewViewportClient::SDismembermentPreviewViewportClient(FPrevie
|
|||||||
bEnableColorizeVolumetricLightmapSHBand3Grayscale = false;
|
bEnableColorizeVolumetricLightmapSHBand3Grayscale = false;
|
||||||
bEnableColorizeVolumetricLightmapSHBand3Color = false;
|
bEnableColorizeVolumetricLightmapSHBand3Color = false;
|
||||||
bEnableColorizeVolumetricLightmapSHBand3 = false;
|
bEnableColorizeVolumetricLightmapSHBand3 = false;
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
SDismembermentPreviewViewportClient::~SDismembermentPreviewViewportClient()
|
SDismembermentPreviewViewportClient::~SDismembermentPreviewViewportClient()
|
||||||
|
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
#include "CoreMinimal.h"
|
#include "CoreMinimal.h"
|
||||||
#include "UObject/NoExportTypes.h"
|
#include "UObject/NoExportTypes.h"
|
||||||
|
#include "NiagaraSystem.h"
|
||||||
#include "DismembermentCompiler.generated.h"
|
#include "DismembermentCompiler.generated.h"
|
||||||
|
|
||||||
class UDismembermentGraphNode;
|
class UDismembermentGraphNode;
|
||||||
|
@@ -3,6 +3,7 @@
|
|||||||
#include "CoreMinimal.h"
|
#include "CoreMinimal.h"
|
||||||
#include "UObject/NoExportTypes.h"
|
#include "UObject/NoExportTypes.h"
|
||||||
#include "DismembermentCompiler.h"
|
#include "DismembermentCompiler.h"
|
||||||
|
#include "NiagaraSystem.h"
|
||||||
#include "DismembermentExecutor.generated.h"
|
#include "DismembermentExecutor.generated.h"
|
||||||
|
|
||||||
class AActor;
|
class AActor;
|
||||||
|
@@ -32,7 +32,7 @@ public:
|
|||||||
virtual FText GetNodeTitle(ENodeTitleType::Type TitleType) const override;
|
virtual FText GetNodeTitle(ENodeTitleType::Type TitleType) const override;
|
||||||
virtual FLinearColor GetNodeTitleColor() const override;
|
virtual FLinearColor GetNodeTitleColor() const override;
|
||||||
virtual FText GetTooltipText() const override;
|
virtual FText GetTooltipText() const override;
|
||||||
virtual FText GetMenuCategory() const override;
|
virtual FText GetMenuCategory() const;
|
||||||
// End of UEdGraphNode interface
|
// End of UEdGraphNode interface
|
||||||
|
|
||||||
// Compile this node into executable logic
|
// Compile this node into executable logic
|
||||||
|
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
#include "CoreMinimal.h"
|
#include "CoreMinimal.h"
|
||||||
#include "DismembermentGraphNode.h"
|
#include "DismembermentGraphNode.h"
|
||||||
|
#include "NiagaraSystem.h"
|
||||||
#include "DismembermentGraphNodeBloodEffect.generated.h"
|
#include "DismembermentGraphNodeBloodEffect.generated.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
#include "CoreMinimal.h"
|
#include "CoreMinimal.h"
|
||||||
#include "DismembermentGraphNode.h"
|
#include "DismembermentGraphNode.h"
|
||||||
|
#include "NiagaraSystem.h"
|
||||||
#include "DismembermentGraphNodeWound.generated.h"
|
#include "DismembermentGraphNodeWound.generated.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -2,6 +2,9 @@
|
|||||||
|
|
||||||
#include "CoreMinimal.h"
|
#include "CoreMinimal.h"
|
||||||
#include "UObject/NoExportTypes.h"
|
#include "UObject/NoExportTypes.h"
|
||||||
|
#include "NiagaraSystem.h"
|
||||||
|
#include "NiagaraComponent.h"
|
||||||
|
#include "NiagaraFunctionLibrary.h"
|
||||||
#include "DismembermentPreviewManager.generated.h"
|
#include "DismembermentPreviewManager.generated.h"
|
||||||
|
|
||||||
// Add a log category declaration
|
// Add a log category declaration
|
||||||
|
Reference in New Issue
Block a user