// Copyright Epic Games, Inc. All Rights Reserved. #include "PropertyFunctions/StateTreeFloatPropertyFunctions.h" #include "StateTreeExecutionContext.h" #include "StateTreeNodeDescriptionHelpers.h" #define LOCTEXT_NAMESPACE "StateTree" void FStateTreeAddFloatPropertyFunction::Execute(FStateTreeExecutionContext& Context) const { FInstanceDataType& InstanceData = Context.GetInstanceData(*this); InstanceData.Result = InstanceData.Left + InstanceData.Right; } void FStateTreeSubtractFloatPropertyFunction::Execute(FStateTreeExecutionContext& Context) const { FInstanceDataType& InstanceData = Context.GetInstanceData(*this); InstanceData.Result = InstanceData.Left - InstanceData.Right; } void FStateTreeMultiplyFloatPropertyFunction::Execute(FStateTreeExecutionContext& Context) const { FInstanceDataType& InstanceData = Context.GetInstanceData(*this); InstanceData.Result = InstanceData.Left * InstanceData.Right; } void FStateTreeDivideFloatPropertyFunction::Execute(FStateTreeExecutionContext& Context) const { FInstanceDataType& InstanceData = Context.GetInstanceData(*this); if (InstanceData.Right != 0) { InstanceData.Result = InstanceData.Left / InstanceData.Right; } else { InstanceData.Result = 0; } } void FStateTreeInvertFloatPropertyFunction::Execute(FStateTreeExecutionContext& Context) const { FInstanceDataType& InstanceData = Context.GetInstanceData(*this); InstanceData.Result = -InstanceData.Input; } void FStateTreeAbsoluteFloatPropertyFunction::Execute(FStateTreeExecutionContext& Context) const { FInstanceDataType& InstanceData = Context.GetInstanceData(*this); InstanceData.Result = FMath::Abs(InstanceData.Input); } #if WITH_EDITOR FText FStateTreeAddFloatPropertyFunction::GetDescription(const FGuid& ID, FStateTreeDataView InstanceDataView, const IStateTreeBindingLookup& BindingLookup, EStateTreeNodeFormatting Formatting) const { return UE::StateTree::DescHelpers::GetDescriptionForMathOperation(LOCTEXT("FloatAdd", "+"), ID, InstanceDataView, BindingLookup, Formatting); } FText FStateTreeSubtractFloatPropertyFunction::GetDescription(const FGuid& ID, FStateTreeDataView InstanceDataView, const IStateTreeBindingLookup& BindingLookup, EStateTreeNodeFormatting Formatting) const { return UE::StateTree::DescHelpers::GetDescriptionForMathOperation(LOCTEXT("FloatSubtract", "-"), ID, InstanceDataView, BindingLookup, Formatting); } FText FStateTreeMultiplyFloatPropertyFunction::GetDescription(const FGuid& ID, FStateTreeDataView InstanceDataView, const IStateTreeBindingLookup& BindingLookup, EStateTreeNodeFormatting Formatting) const { return UE::StateTree::DescHelpers::GetDescriptionForMathOperation(LOCTEXT("FloatMultiply", "*"), ID, InstanceDataView, BindingLookup, Formatting); } FText FStateTreeDivideFloatPropertyFunction::GetDescription(const FGuid& ID, FStateTreeDataView InstanceDataView, const IStateTreeBindingLookup& BindingLookup, EStateTreeNodeFormatting Formatting) const { return UE::StateTree::DescHelpers::GetDescriptionForMathOperation(LOCTEXT("TreeFloatDivide", "/"), ID, InstanceDataView, BindingLookup, Formatting); } FText FStateTreeInvertFloatPropertyFunction::GetDescription(const FGuid& ID, FStateTreeDataView InstanceDataView, const IStateTreeBindingLookup& BindingLookup, EStateTreeNodeFormatting Formatting) const { return UE::StateTree::DescHelpers::GetDescriptionForSingleParameterFunc(LOCTEXT("FloatInvert", "-"), ID, InstanceDataView, BindingLookup, Formatting); } FText FStateTreeAbsoluteFloatPropertyFunction::GetDescription(const FGuid& ID, FStateTreeDataView InstanceDataView, const IStateTreeBindingLookup& BindingLookup, EStateTreeNodeFormatting Formatting) const { return UE::StateTree::DescHelpers::GetDescriptionForSingleParameterFunc(LOCTEXT("FloatAbsolute", "Abs"), ID, InstanceDataView, BindingLookup, Formatting); } #endif // WITH_EDITOR #undef LOCTEXT_NAMESPACE