添加 Source/FLESHEditor/Public/VisceraNodeObject.h
This commit is contained in:
113
Source/FLESHEditor/Public/VisceraNodeObject.h
Normal file
113
Source/FLESHEditor/Public/VisceraNodeObject.h
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "CoreMinimal.h"
|
||||||
|
#include "UObject/NoExportTypes.h"
|
||||||
|
#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;
|
||||||
|
};
|
Reference in New Issue
Block a user