Update
This commit is contained in:
@@ -38,6 +38,9 @@ public class FLESH : ModuleRules
|
|||||||
"ChaosCloth",
|
"ChaosCloth",
|
||||||
"ChaosNiagara",
|
"ChaosNiagara",
|
||||||
"PhysicsControl",
|
"PhysicsControl",
|
||||||
|
"MeshDescription",
|
||||||
|
"StaticMeshDescription",
|
||||||
|
"DynamicMesh",
|
||||||
// ... add other public dependencies that you statically link with here ...
|
// ... add other public dependencies that you statically link with here ...
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
@@ -56,6 +56,14 @@ public class FLESHEditor : ModuleRules
|
|||||||
"EditorWidgets",
|
"EditorWidgets",
|
||||||
"Kismet",
|
"Kismet",
|
||||||
"AdvancedPreviewScene",
|
"AdvancedPreviewScene",
|
||||||
|
"Projects",
|
||||||
|
"Niagara",
|
||||||
|
"NiagaraEditor",
|
||||||
|
"PhysicsCore",
|
||||||
|
"MeshDescription",
|
||||||
|
"StaticMeshDescription",
|
||||||
|
"DynamicMesh",
|
||||||
|
"GeometryScriptingCore",
|
||||||
// ... add private dependencies that you statically link with here ...
|
// ... add private dependencies that you statically link with here ...
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
66
Source/FLESHEditor/Private/AnatomicalStructureBrush.cpp
Normal file
66
Source/FLESHEditor/Private/AnatomicalStructureBrush.cpp
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
#include "AnatomicalStructureBrush.h"
|
||||||
|
#include "Engine/SkeletalMesh.h"
|
||||||
|
#include "Engine/StaticMesh.h"
|
||||||
|
#include "Materials/MaterialInterface.h"
|
||||||
|
|
||||||
|
UAnatomicalStructureBrush::UAnatomicalStructureBrush()
|
||||||
|
{
|
||||||
|
// Initialize default values
|
||||||
|
BrushSettings.BrushType = EAnatomicalBrushType::Bone;
|
||||||
|
BrushSettings.BrushSize = 10.0f;
|
||||||
|
BrushSettings.BrushStrength = 0.5f;
|
||||||
|
BrushSettings.BrushFalloff = 0.5f;
|
||||||
|
BrushSettings.BrushMaterial = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
void UAnatomicalStructureBrush::Initialize(const FAnatomicalBrushSettings& InSettings)
|
||||||
|
{
|
||||||
|
BrushSettings = InSettings;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool UAnatomicalStructureBrush::ApplyToSkeletalMesh(USkeletalMesh* TargetMesh, const FVector& Location, const FVector& Direction, FName BoneName)
|
||||||
|
{
|
||||||
|
// Implementation will be added in future updates
|
||||||
|
// This is a placeholder to resolve link errors
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool UAnatomicalStructureBrush::ApplyToStaticMesh(UStaticMesh* TargetMesh, const FVector& Location, const FVector& Direction)
|
||||||
|
{
|
||||||
|
// Implementation will be added in future updates
|
||||||
|
// This is a placeholder to resolve link errors
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void UAnatomicalStructureBrush::SetBrushType(EAnatomicalBrushType BrushType)
|
||||||
|
{
|
||||||
|
BrushSettings.BrushType = BrushType;
|
||||||
|
}
|
||||||
|
|
||||||
|
void UAnatomicalStructureBrush::SetBrushSize(float Size)
|
||||||
|
{
|
||||||
|
BrushSettings.BrushSize = FMath::Clamp(Size, 0.1f, 100.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
void UAnatomicalStructureBrush::SetBrushStrength(float Strength)
|
||||||
|
{
|
||||||
|
BrushSettings.BrushStrength = FMath::Clamp(Strength, 0.0f, 1.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
FAnatomicalBrushSettings UAnatomicalStructureBrush::GetBrushSettings() const
|
||||||
|
{
|
||||||
|
return BrushSettings;
|
||||||
|
}
|
||||||
|
|
||||||
|
UStaticMesh* UAnatomicalStructureBrush::CreateAnatomicalStructure(const FVector& Location, const FVector& Direction, float Size)
|
||||||
|
{
|
||||||
|
// Implementation will be added in future updates
|
||||||
|
// This is a placeholder to resolve link errors
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
void UAnatomicalStructureBrush::ApplyPhysicsProperties(UStaticMesh* Mesh)
|
||||||
|
{
|
||||||
|
// Implementation will be added in future updates
|
||||||
|
// This is a placeholder to resolve link errors
|
||||||
|
}
|
6
Source/FLESHEditor/Private/DismembermentCompiler.cpp
Normal file
6
Source/FLESHEditor/Private/DismembermentCompiler.cpp
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
#include "DismembermentCompiler.h"
|
||||||
|
|
||||||
|
UDismembermentCompiler::UDismembermentCompiler()
|
||||||
|
{
|
||||||
|
// Initialize default values
|
||||||
|
}
|
6
Source/FLESHEditor/Private/DismembermentExecutor.cpp
Normal file
6
Source/FLESHEditor/Private/DismembermentExecutor.cpp
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
#include "DismembermentExecutor.h"
|
||||||
|
|
||||||
|
UDismembermentExecutor::UDismembermentExecutor()
|
||||||
|
{
|
||||||
|
// Initialize default values
|
||||||
|
}
|
@@ -0,0 +1,8 @@
|
|||||||
|
#include "DismembermentGraph/DismembermentGraph.h"
|
||||||
|
#include "DismembermentGraph/DismembermentGraphAsset.h"
|
||||||
|
|
||||||
|
UDismembermentGraph::UDismembermentGraph()
|
||||||
|
{
|
||||||
|
// Initialize default values
|
||||||
|
OwningAsset = nullptr;
|
||||||
|
}
|
@@ -0,0 +1,48 @@
|
|||||||
|
#include "DismembermentGraph/DismembermentGraphNode.h"
|
||||||
|
|
||||||
|
UDismembermentGraphNode::UDismembermentGraphNode()
|
||||||
|
{
|
||||||
|
// Initialize default values
|
||||||
|
NodeTitleColor = FLinearColor(0.6f, 0.6f, 0.6f);
|
||||||
|
NodeCategory = FText::FromString("Default");
|
||||||
|
NodeDescription = FText::FromString("Base dismemberment graph node");
|
||||||
|
}
|
||||||
|
|
||||||
|
void UDismembermentGraphNode::AllocateDefaultPins()
|
||||||
|
{
|
||||||
|
// Base implementation does nothing
|
||||||
|
// Derived classes will override this
|
||||||
|
}
|
||||||
|
|
||||||
|
FText UDismembermentGraphNode::GetNodeTitle(ENodeTitleType::Type TitleType) const
|
||||||
|
{
|
||||||
|
// Default implementation returns the class name
|
||||||
|
return FText::FromString(GetClass()->GetName());
|
||||||
|
}
|
||||||
|
|
||||||
|
FLinearColor UDismembermentGraphNode::GetNodeTitleColor() const
|
||||||
|
{
|
||||||
|
return NodeTitleColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
FText UDismembermentGraphNode::GetTooltipText() const
|
||||||
|
{
|
||||||
|
return NodeDescription;
|
||||||
|
}
|
||||||
|
|
||||||
|
FText UDismembermentGraphNode::GetMenuCategory() const
|
||||||
|
{
|
||||||
|
return NodeCategory;
|
||||||
|
}
|
||||||
|
|
||||||
|
void UDismembermentGraphNode::CompileNode(class FDismembermentCompiler* Compiler)
|
||||||
|
{
|
||||||
|
// Base implementation does nothing
|
||||||
|
// Derived classes will override this
|
||||||
|
}
|
||||||
|
|
||||||
|
void UDismembermentGraphNode::ExecuteNode(class FDismembermentExecutor* Executor)
|
||||||
|
{
|
||||||
|
// Base implementation does nothing
|
||||||
|
// Derived classes will override this
|
||||||
|
}
|
@@ -0,0 +1,35 @@
|
|||||||
|
#include "DismembermentGraph/DismembermentGraphNodeBloodEffect.h"
|
||||||
|
|
||||||
|
UDismembermentGraphNodeBloodEffect::UDismembermentGraphNodeBloodEffect()
|
||||||
|
{
|
||||||
|
// Initialize default values
|
||||||
|
NodeTitleColor = FLinearColor(0.8f, 0.0f, 0.0f); // Red for blood
|
||||||
|
NodeCategory = FText::FromString("Effects");
|
||||||
|
NodeDescription = FText::FromString("Adds blood effect to the dismemberment");
|
||||||
|
}
|
||||||
|
|
||||||
|
void UDismembermentGraphNodeBloodEffect::AllocateDefaultPins()
|
||||||
|
{
|
||||||
|
// Create input pin
|
||||||
|
CreatePin(EGPD_Input, TEXT("Exec"), TEXT("In"));
|
||||||
|
|
||||||
|
// Create output pin
|
||||||
|
CreatePin(EGPD_Output, TEXT("Exec"), TEXT("Out"));
|
||||||
|
}
|
||||||
|
|
||||||
|
FText UDismembermentGraphNodeBloodEffect::GetNodeTitle(ENodeTitleType::Type TitleType) const
|
||||||
|
{
|
||||||
|
return FText::FromString("Blood Effect");
|
||||||
|
}
|
||||||
|
|
||||||
|
void UDismembermentGraphNodeBloodEffect::CompileNode(class FDismembermentCompiler* Compiler)
|
||||||
|
{
|
||||||
|
// Implementation will be added in future updates
|
||||||
|
// This is a placeholder to resolve link errors
|
||||||
|
}
|
||||||
|
|
||||||
|
void UDismembermentGraphNodeBloodEffect::ExecuteNode(class FDismembermentExecutor* Executor)
|
||||||
|
{
|
||||||
|
// Implementation will be added in future updates
|
||||||
|
// This is a placeholder to resolve link errors
|
||||||
|
}
|
@@ -0,0 +1,35 @@
|
|||||||
|
#include "DismembermentGraph/DismembermentGraphNodeBoneSelect.h"
|
||||||
|
|
||||||
|
UDismembermentGraphNodeBoneSelect::UDismembermentGraphNodeBoneSelect()
|
||||||
|
{
|
||||||
|
// Initialize default values
|
||||||
|
NodeTitleColor = FLinearColor(0.8f, 0.8f, 0.2f); // Yellow for bone
|
||||||
|
NodeCategory = FText::FromString("Selection");
|
||||||
|
NodeDescription = FText::FromString("Selects bones for dismemberment");
|
||||||
|
}
|
||||||
|
|
||||||
|
void UDismembermentGraphNodeBoneSelect::AllocateDefaultPins()
|
||||||
|
{
|
||||||
|
// Create input pin
|
||||||
|
CreatePin(EGPD_Input, TEXT("Exec"), TEXT("In"));
|
||||||
|
|
||||||
|
// Create output pin
|
||||||
|
CreatePin(EGPD_Output, TEXT("Exec"), TEXT("Out"));
|
||||||
|
}
|
||||||
|
|
||||||
|
FText UDismembermentGraphNodeBoneSelect::GetNodeTitle(ENodeTitleType::Type TitleType) const
|
||||||
|
{
|
||||||
|
return FText::FromString("Bone Selection");
|
||||||
|
}
|
||||||
|
|
||||||
|
void UDismembermentGraphNodeBoneSelect::CompileNode(class FDismembermentCompiler* Compiler)
|
||||||
|
{
|
||||||
|
// Implementation will be added in future updates
|
||||||
|
// This is a placeholder to resolve link errors
|
||||||
|
}
|
||||||
|
|
||||||
|
void UDismembermentGraphNodeBoneSelect::ExecuteNode(class FDismembermentExecutor* Executor)
|
||||||
|
{
|
||||||
|
// Implementation will be added in future updates
|
||||||
|
// This is a placeholder to resolve link errors
|
||||||
|
}
|
@@ -0,0 +1,35 @@
|
|||||||
|
#include "DismembermentGraph/DismembermentGraphNodeCut.h"
|
||||||
|
|
||||||
|
UDismembermentGraphNodeCut::UDismembermentGraphNodeCut()
|
||||||
|
{
|
||||||
|
// Initialize default values
|
||||||
|
NodeTitleColor = FLinearColor(0.2f, 0.6f, 0.8f); // Blue for cut
|
||||||
|
NodeCategory = FText::FromString("Operations");
|
||||||
|
NodeDescription = FText::FromString("Performs cutting operation for dismemberment");
|
||||||
|
}
|
||||||
|
|
||||||
|
void UDismembermentGraphNodeCut::AllocateDefaultPins()
|
||||||
|
{
|
||||||
|
// Create input pin
|
||||||
|
CreatePin(EGPD_Input, TEXT("Exec"), TEXT("In"));
|
||||||
|
|
||||||
|
// Create output pin
|
||||||
|
CreatePin(EGPD_Output, TEXT("Exec"), TEXT("Out"));
|
||||||
|
}
|
||||||
|
|
||||||
|
FText UDismembermentGraphNodeCut::GetNodeTitle(ENodeTitleType::Type TitleType) const
|
||||||
|
{
|
||||||
|
return FText::FromString("Cut Operation");
|
||||||
|
}
|
||||||
|
|
||||||
|
void UDismembermentGraphNodeCut::CompileNode(class FDismembermentCompiler* Compiler)
|
||||||
|
{
|
||||||
|
// Implementation will be added in future updates
|
||||||
|
// This is a placeholder to resolve link errors
|
||||||
|
}
|
||||||
|
|
||||||
|
void UDismembermentGraphNodeCut::ExecuteNode(class FDismembermentExecutor* Executor)
|
||||||
|
{
|
||||||
|
// Implementation will be added in future updates
|
||||||
|
// This is a placeholder to resolve link errors
|
||||||
|
}
|
@@ -0,0 +1,35 @@
|
|||||||
|
#include "DismembermentGraph/DismembermentGraphNodeOrgan.h"
|
||||||
|
|
||||||
|
UDismembermentGraphNodeOrgan::UDismembermentGraphNodeOrgan()
|
||||||
|
{
|
||||||
|
// Initialize default values
|
||||||
|
NodeTitleColor = FLinearColor(0.8f, 0.4f, 0.4f); // Pink for organs
|
||||||
|
NodeCategory = FText::FromString("Anatomy");
|
||||||
|
NodeDescription = FText::FromString("Adds organ to the dismemberment system");
|
||||||
|
}
|
||||||
|
|
||||||
|
void UDismembermentGraphNodeOrgan::AllocateDefaultPins()
|
||||||
|
{
|
||||||
|
// Create input pin
|
||||||
|
CreatePin(EGPD_Input, TEXT("Exec"), TEXT("In"));
|
||||||
|
|
||||||
|
// Create output pin
|
||||||
|
CreatePin(EGPD_Output, TEXT("Exec"), TEXT("Out"));
|
||||||
|
}
|
||||||
|
|
||||||
|
FText UDismembermentGraphNodeOrgan::GetNodeTitle(ENodeTitleType::Type TitleType) const
|
||||||
|
{
|
||||||
|
return FText::FromString("Organ");
|
||||||
|
}
|
||||||
|
|
||||||
|
void UDismembermentGraphNodeOrgan::CompileNode(class FDismembermentCompiler* Compiler)
|
||||||
|
{
|
||||||
|
// Implementation will be added in future updates
|
||||||
|
// This is a placeholder to resolve link errors
|
||||||
|
}
|
||||||
|
|
||||||
|
void UDismembermentGraphNodeOrgan::ExecuteNode(class FDismembermentExecutor* Executor)
|
||||||
|
{
|
||||||
|
// Implementation will be added in future updates
|
||||||
|
// This is a placeholder to resolve link errors
|
||||||
|
}
|
@@ -0,0 +1,35 @@
|
|||||||
|
#include "DismembermentGraph/DismembermentGraphNodePhysics.h"
|
||||||
|
|
||||||
|
UDismembermentGraphNodePhysics::UDismembermentGraphNodePhysics()
|
||||||
|
{
|
||||||
|
// Initialize default values
|
||||||
|
NodeTitleColor = FLinearColor(0.4f, 0.8f, 0.4f); // Green for physics
|
||||||
|
NodeCategory = FText::FromString("Physics");
|
||||||
|
NodeDescription = FText::FromString("Configures physics properties for dismembered parts");
|
||||||
|
}
|
||||||
|
|
||||||
|
void UDismembermentGraphNodePhysics::AllocateDefaultPins()
|
||||||
|
{
|
||||||
|
// Create input pin
|
||||||
|
CreatePin(EGPD_Input, TEXT("Exec"), TEXT("In"));
|
||||||
|
|
||||||
|
// Create output pin
|
||||||
|
CreatePin(EGPD_Output, TEXT("Exec"), TEXT("Out"));
|
||||||
|
}
|
||||||
|
|
||||||
|
FText UDismembermentGraphNodePhysics::GetNodeTitle(ENodeTitleType::Type TitleType) const
|
||||||
|
{
|
||||||
|
return FText::FromString("Physics Properties");
|
||||||
|
}
|
||||||
|
|
||||||
|
void UDismembermentGraphNodePhysics::CompileNode(class FDismembermentCompiler* Compiler)
|
||||||
|
{
|
||||||
|
// Implementation will be added in future updates
|
||||||
|
// This is a placeholder to resolve link errors
|
||||||
|
}
|
||||||
|
|
||||||
|
void UDismembermentGraphNodePhysics::ExecuteNode(class FDismembermentExecutor* Executor)
|
||||||
|
{
|
||||||
|
// Implementation will be added in future updates
|
||||||
|
// This is a placeholder to resolve link errors
|
||||||
|
}
|
@@ -0,0 +1,35 @@
|
|||||||
|
#include "DismembermentGraph/DismembermentGraphNodeWound.h"
|
||||||
|
|
||||||
|
UDismembermentGraphNodeWound::UDismembermentGraphNodeWound()
|
||||||
|
{
|
||||||
|
// Initialize default values
|
||||||
|
NodeTitleColor = FLinearColor(0.8f, 0.2f, 0.2f); // Dark red for wounds
|
||||||
|
NodeCategory = FText::FromString("Effects");
|
||||||
|
NodeDescription = FText::FromString("Adds wound effect to the dismemberment");
|
||||||
|
}
|
||||||
|
|
||||||
|
void UDismembermentGraphNodeWound::AllocateDefaultPins()
|
||||||
|
{
|
||||||
|
// Create input pin
|
||||||
|
CreatePin(EGPD_Input, TEXT("Exec"), TEXT("In"));
|
||||||
|
|
||||||
|
// Create output pin
|
||||||
|
CreatePin(EGPD_Output, TEXT("Exec"), TEXT("Out"));
|
||||||
|
}
|
||||||
|
|
||||||
|
FText UDismembermentGraphNodeWound::GetNodeTitle(ENodeTitleType::Type TitleType) const
|
||||||
|
{
|
||||||
|
return FText::FromString("Wound Effect");
|
||||||
|
}
|
||||||
|
|
||||||
|
void UDismembermentGraphNodeWound::CompileNode(class FDismembermentCompiler* Compiler)
|
||||||
|
{
|
||||||
|
// Implementation will be added in future updates
|
||||||
|
// This is a placeholder to resolve link errors
|
||||||
|
}
|
||||||
|
|
||||||
|
void UDismembermentGraphNodeWound::ExecuteNode(class FDismembermentExecutor* Executor)
|
||||||
|
{
|
||||||
|
// Implementation will be added in future updates
|
||||||
|
// This is a placeholder to resolve link errors
|
||||||
|
}
|
@@ -214,8 +214,8 @@ void SMatrixInputWidget::UpdateUI()
|
|||||||
int32 Index = Row * 4 + Col;
|
int32 Index = Row * 4 + Col;
|
||||||
if (NumericEntryBoxes.IsValidIndex(Index) && NumericEntryBoxes[Index].IsValid())
|
if (NumericEntryBoxes.IsValidIndex(Index) && NumericEntryBoxes[Index].IsValid())
|
||||||
{
|
{
|
||||||
// Set value using TOptional<float> instead of SetText or SetValue
|
// In UE5.5.4, we need to rebuild the grid panel to update the value
|
||||||
NumericEntryBoxes[Index]->SetValue(TOptional<float>(Matrix.M[Row][Col]));
|
NumericEntryBoxes[Index] = CreateMatrixElementWidget(Row, Col);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user