Files
UnrealEngine/Engine/Plugins/ChaosClothAssetEditor/Source/ChaosClothAssetDataflowNodes/Private/ChaosClothAsset/SimulationStretchOverrideConfigNode.cpp
2025-05-18 13:04:45 +08:00

86 lines
3.4 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "ChaosClothAsset/SimulationStretchOverrideConfigNode.h"
#include "Chaos/CollectionPropertyFacade.h"
#include UE_INLINE_GENERATED_CPP_BY_NAME(SimulationStretchOverrideConfigNode)
FChaosClothAssetSimulationStretchOverrideConfigNode::FChaosClothAssetSimulationStretchOverrideConfigNode(const UE::Dataflow::FNodeParameters& InParam, FGuid InGuid)
: FChaosClothAssetSimulationBaseConfigNode(InParam, InGuid)
{
RegisterCollectionConnections();
}
void FChaosClothAssetSimulationStretchOverrideConfigNode::AddProperties(FPropertyHelper& PropertyHelper) const
{
if (bOverrideStretchUse3dRestLengths)
{
PropertyHelper.OverridePropertiesBool({
FName(TEXT("XPBDAnisoStretchUse3dRestLengths")),
FName(TEXT("XPBDAnisoSpringUse3dRestLengths")) }, bStretchUse3dRestLengths);
}
if (OverrideStretchStiffness != EChaosClothAssetConstraintOverrideType::None)
{
TArray<FName> StretchPropertyNames =
{
FName(TEXT("EdgeSpringStiffness")),
FName(TEXT("XPBDEdgeSpringStiffness")),
FName(TEXT("AreaSpringStiffness")),
FName(TEXT("XPBDAreaSpringStiffness"))
};
if (bApplyUniformStretchStiffnessOverride)
{
StretchPropertyNames.Append(
{
FName(TEXT("XPBDAnisoSpringStiffnessWarp")),
FName(TEXT("XPBDAnisoStretchStiffnessWarp")),
FName(TEXT("XPBDAnisoSpringStiffnessWeft")),
FName(TEXT("XPBDAnisoStretchStiffnessWeft")),
FName(TEXT("XPBDAnisoSpringStiffnessBias")),
FName(TEXT("XPBDAnisoStretchStiffnessBias"))
});
}
PropertyHelper.OverridePropertiesWeighted(StretchPropertyNames, OverrideStretchStiffness, StretchStiffness);
}
if (OverrideStretchStiffness == EChaosClothAssetConstraintOverrideType::None || !bApplyUniformStretchStiffnessOverride)
{
if (OverrideStretchStiffnessWarp != EChaosClothAssetConstraintOverrideType::None)
{
PropertyHelper.OverridePropertiesWeighted({
FName(TEXT("XPBDAnisoSpringStiffnessWarp")),
FName(TEXT("XPBDAnisoStretchStiffnessWarp"))}, OverrideStretchStiffnessWarp, StretchStiffnessWarp);
}
if (OverrideStretchStiffnessWeft != EChaosClothAssetConstraintOverrideType::None)
{
PropertyHelper.OverridePropertiesWeighted({
FName(TEXT("XPBDAnisoSpringStiffnessWeft")),
FName(TEXT("XPBDAnisoStretchStiffnessWeft")) }, OverrideStretchStiffnessWeft, StretchStiffnessWeft);
}
if (OverrideStretchStiffnessBias != EChaosClothAssetConstraintOverrideType::None)
{
PropertyHelper.OverridePropertiesWeighted({
FName(TEXT("XPBDAnisoSpringStiffnessBias")),
FName(TEXT("XPBDAnisoStretchStiffnessBias")) }, OverrideStretchStiffnessBias, StretchStiffnessBias);
}
}
if (OverrideStretchDamping != EChaosClothAssetConstraintOverrideType::None)
{
PropertyHelper.OverridePropertiesWeighted({
FName(TEXT("XPBDAnisoSpringDamping")),
FName(TEXT("XPBDAnisoStretchDamping")),
FName(TEXT("XPBDEdgeSpringDamping"))}, OverrideStretchDamping, StretchDamping);
}
if (OverrideWarpScale != EChaosClothAssetConstraintOverrideType::None)
{
PropertyHelper.OverridePropertiesWeighted({
FName(TEXT("XPBDAnisoSpringWarpScale")),
FName(TEXT("XPBDAnisoStretchWarpScale"))}, OverrideWarpScale, WarpScale);
}
if (OverrideWeftScale != EChaosClothAssetConstraintOverrideType::None)
{
PropertyHelper.OverridePropertiesWeighted({
FName(TEXT("XPBDAnisoSpringWeftScale")),
FName(TEXT("XPBDAnisoStretchWeftScale")) }, OverrideWeftScale, WeftScale);
}
}