This commit is contained in:
2025-04-18 10:46:49 +08:00
parent 88536f22da
commit 2915f46389
17 changed files with 171 additions and 105 deletions

View File

@@ -54,6 +54,10 @@
{ {
"Name": "PhysicsControl", "Name": "PhysicsControl",
"Enabled": true "Enabled": true
},
{
"Name": "ProceduralMeshComponent",
"Enabled": true
} }
] ]
} }

View File

@@ -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;

View File

@@ -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);
}
}

View File

@@ -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

View 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);
};

View File

@@ -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"
/** /**

View File

@@ -38,7 +38,8 @@ public class FLESHEditor : ModuleRules
"SlateCore", "SlateCore",
"UnrealEd", "UnrealEd",
"PropertyEditor", "PropertyEditor",
"EditorStyle", "ApplicationCore",
"AppFramework",
"LevelEditor", "LevelEditor",
"GeometryCore", "GeometryCore",
"GeometryFramework", "GeometryFramework",

View File

@@ -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)

View File

@@ -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,

View File

@@ -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)

View File

@@ -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()

View File

@@ -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;

View File

@@ -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;

View File

@@ -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

View File

@@ -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"
/** /**

View File

@@ -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"
/** /**

View File

@@ -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