115 lines
4.9 KiB
C++
115 lines
4.9 KiB
C++
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "UObject/NoExportTypes.h"
|
|
#include "FLESH/Public/BooleanCutTool.h" // Added ECapMeshMethod enum reference
|
|
#include "VisceraNodeObject.generated.h"
|
|
|
|
// Forward declarations
|
|
struct FVisceraNodeItem;
|
|
|
|
/**
|
|
* Object representing a viscera node for property editing
|
|
*/
|
|
UCLASS()
|
|
class FLESHEDITOR_API UVisceraNodeObject : public UObject
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
UVisceraNodeObject();
|
|
|
|
// Initialize from a node item
|
|
void InitFromNodeItem(TSharedPtr<FVisceraNodeItem> InNodeItem);
|
|
|
|
// Apply changes back to the node item
|
|
void ApplyToNodeItem(TSharedPtr<FVisceraNodeItem> InNodeItem);
|
|
|
|
// Node type
|
|
UPROPERTY(VisibleAnywhere, Category = "Node")
|
|
FString NodeType;
|
|
|
|
// Node name
|
|
UPROPERTY(EditAnywhere, Category = "Node")
|
|
FName NodeName;
|
|
|
|
// Display name
|
|
UPROPERTY(EditAnywhere, Category = "Node")
|
|
FString DisplayName;
|
|
|
|
// SoftBody properties
|
|
UPROPERTY(EditAnywhere, Category = "SoftBody", meta = (EditCondition = "NodeType == \"SoftBody\"", EditConditionHides))
|
|
bool bEnableSimulation;
|
|
|
|
UPROPERTY(EditAnywhere, Category = "SoftBody", meta = (EditCondition = "NodeType == \"SoftBody\"", EditConditionHides, ClampMin = "0.0", ClampMax = "10.0"))
|
|
float GravityStrength;
|
|
|
|
UPROPERTY(EditAnywhere, Category = "SoftBody", meta = (EditCondition = "NodeType == \"SoftBody\"", EditConditionHides, ClampMin = "0.0", ClampMax = "1000.0"))
|
|
float MinFrameSpeed;
|
|
|
|
UPROPERTY(EditAnywhere, Category = "SoftBody", meta = (EditCondition = "NodeType == \"SoftBody\"", EditConditionHides, ClampMin = "0.0", ClampMax = "1000.0"))
|
|
float MaxFrameSpeed;
|
|
|
|
UPROPERTY(EditAnywhere, Category = "SoftBody", meta = (EditCondition = "NodeType == \"SoftBody\"", EditConditionHides, ClampMin = "0.0", ClampMax = "1.0"))
|
|
float ExternalFrameLerp;
|
|
|
|
UPROPERTY(EditAnywhere, Category = "SoftBody", meta = (EditCondition = "NodeType == \"SoftBody\"", EditConditionHides, ClampMin = "0.0", ClampMax = "1.0"))
|
|
float InitialGPUInfluence;
|
|
|
|
UPROPERTY(EditAnywhere, Category = "SoftBody", meta = (EditCondition = "NodeType == \"SoftBody\"", EditConditionHides, ClampMin = "0.0", ClampMax = "0.1"))
|
|
float SubstepTime;
|
|
|
|
UPROPERTY(EditAnywhere, Category = "SoftBody", meta = (EditCondition = "NodeType == \"SoftBody\"", EditConditionHides, ClampMin = "1", ClampMax = "10"))
|
|
int32 SolverIterations;
|
|
|
|
UPROPERTY(EditAnywhere, Category = "SoftBody", meta = (EditCondition = "NodeType == \"SoftBody\"", EditConditionHides))
|
|
bool bRecomputeNormals;
|
|
|
|
// Anchor properties
|
|
UPROPERTY(EditAnywhere, Category = "Anchor", meta = (EditCondition = "NodeType == \"Anchor\"", EditConditionHides))
|
|
FVector AnchorLocation;
|
|
|
|
UPROPERTY(EditAnywhere, Category = "Anchor", meta = (EditCondition = "NodeType == \"Anchor\"", EditConditionHides, ClampMin = "0.1", ClampMax = "100.0"))
|
|
float AnchorRadius;
|
|
|
|
UPROPERTY(EditAnywhere, Category = "Anchor", meta = (EditCondition = "NodeType == \"Anchor\"", EditConditionHides, ClampMin = "0.0", ClampMax = "1.0"))
|
|
float AnchorStiffness;
|
|
|
|
UPROPERTY(EditAnywhere, Category = "Anchor", meta = (EditCondition = "NodeType == \"Anchor\"", EditConditionHides))
|
|
FName AnchorBoneName;
|
|
|
|
// LineChain properties
|
|
UPROPERTY(EditAnywhere, Category = "LineChain", meta = (EditCondition = "NodeType == \"LineChain\"", EditConditionHides, ClampMin = "0.0", ClampMax = "1.0"))
|
|
float LineChainStiffness;
|
|
|
|
UPROPERTY(EditAnywhere, Category = "LineChain", meta = (EditCondition = "NodeType == \"LineChain\"", EditConditionHides, ClampMin = "0.1", ClampMax = "10.0"))
|
|
float LineChainThickness;
|
|
|
|
UPROPERTY(EditAnywhere, Category = "LineChain", meta = (EditCondition = "NodeType == \"LineChain\"", EditConditionHides))
|
|
TArray<FVector> LineChainPoints;
|
|
|
|
// Tetra properties
|
|
UPROPERTY(EditAnywhere, Category = "Tetra", meta = (EditCondition = "NodeType == \"Tetra\"", EditConditionHides, ClampMin = "0.0", ClampMax = "1.0"))
|
|
float TetraStiffness;
|
|
|
|
UPROPERTY(EditAnywhere, Category = "Tetra", meta = (EditCondition = "NodeType == \"Tetra\"", EditConditionHides))
|
|
TArray<FVector> TetraPoints;
|
|
|
|
// Plane properties
|
|
UPROPERTY(EditAnywhere, Category = "Plane", meta = (EditCondition = "NodeType == \"Plane\"", EditConditionHides))
|
|
FVector PlaneLocation;
|
|
|
|
UPROPERTY(EditAnywhere, Category = "Plane", meta = (EditCondition = "NodeType == \"Plane\"", EditConditionHides))
|
|
FVector PlaneNormal;
|
|
|
|
UPROPERTY(EditAnywhere, Category = "Plane", meta = (EditCondition = "NodeType == \"Plane\"", EditConditionHides, ClampMin = "0.0", ClampMax = "1.0"))
|
|
float PlaneStiffness;
|
|
|
|
// Cutting properties
|
|
UPROPERTY(EditAnywhere, Category = "Cutting", meta = (EditCondition = "NodeType == \"SoftBody\"", EditConditionHides))
|
|
bool bEnableMultiLayerCutting;
|
|
|
|
UPROPERTY(EditAnywhere, Category = "Cutting", meta = (EditCondition = "NodeType == \"SoftBody\" && bEnableMultiLayerCutting", EditConditionHides))
|
|
ECapMeshMethod CapMethod;
|
|
};
|