// Copyright Epic Games, Inc. All Rights Reserved. #include "Dataflow/GeometryCollectionConversionNodes.h" #include "Dataflow/DataflowCore.h" #include UE_INLINE_GENERATED_CPP_BY_NAME(GeometryCollectionConversionNodes) namespace UE::Dataflow { void GeometryCollectionConversionNodes() { DATAFLOW_NODE_REGISTER_CREATION_FACTORY(FVectorToStringDataflowNode); DATAFLOW_NODE_REGISTER_CREATION_FACTORY(FFloatToStringDataflowNode); DATAFLOW_NODE_REGISTER_CREATION_FACTORY(FIntToStringDataflowNode); DATAFLOW_NODE_REGISTER_CREATION_FACTORY(FBoolToStringDataflowNode); DATAFLOW_NODE_REGISTER_CREATION_FACTORY(FIntToFloatDataflowNode); DATAFLOW_NODE_REGISTER_CREATION_FACTORY(FFloatToDoubleDataflowNode); DATAFLOW_NODE_REGISTER_CREATION_FACTORY(FIntToDoubleDataflowNode) DATAFLOW_NODE_REGISTER_CREATION_FACTORY(FFloatToIntDataflowNode); DATAFLOW_NODE_REGISTER_CREATION_FACTORY(FIntToBoolDataflowNode); DATAFLOW_NODE_REGISTER_CREATION_FACTORY(FBoolToIntDataflowNode); } } void FVectorToStringDataflowNode::Evaluate(UE::Dataflow::FContext& Context, const FDataflowOutput* Out) const { if (Out->IsA(&String)) { FString Value = GetValue(Context, &Vector).ToString(); SetValue(Context, Value, &String); } } void FFloatToStringDataflowNode::Evaluate(UE::Dataflow::FContext& Context, const FDataflowOutput* Out) const { if (Out->IsA(&String)) { FString Value = FString::Printf(TEXT("%f"), GetValue(Context, &Float)); SetValue(Context, Value, &String); } } void FIntToStringDataflowNode::Evaluate(UE::Dataflow::FContext& Context, const FDataflowOutput* Out) const { if (Out->IsA(&String)) { FString Value = FString::Printf(TEXT("%d"), GetValue(Context, &Int)); SetValue(Context, Value, &String); } } void FBoolToStringDataflowNode::Evaluate(UE::Dataflow::FContext& Context, const FDataflowOutput* Out) const { if (Out->IsA(&String)) { FString Value = FString::Printf(TEXT("%s"), GetValue(Context, &Bool) ? TEXT("true") : TEXT("false")); SetValue(Context, Value, &String); } } void FIntToFloatDataflowNode::Evaluate(UE::Dataflow::FContext& Context, const FDataflowOutput* Out) const { if (Out->IsA(&Float)) { float Value = float(GetValue(Context, &Int)); SetValue(Context, Value, &Float); } } void FIntToDoubleDataflowNode::Evaluate(UE::Dataflow::FContext& Context, const FDataflowOutput* Out) const { if (Out->IsA(&Double)) { double Value = double(GetValue(Context, &Int)); SetValue(Context, Value, &Double); } } void FFloatToDoubleDataflowNode::Evaluate(UE::Dataflow::FContext& Context, const FDataflowOutput* Out) const { if (Out->IsA(&Double)) { double Value = double(GetValue(Context, &Float)); SetValue(Context, Value, &Double); } } void FFloatToIntDataflowNode::Evaluate(UE::Dataflow::FContext& Context, const FDataflowOutput* Out) const { if (Out->IsA(&Int)) { float FloatVal = GetValue(Context, &Float); if (Function == EFloatToIntFunctionEnum::Dataflow_FloatToInt_Function_Floor) { SetValue(Context, FMath::FloorToInt32(FloatVal), &Int); } else if (Function == EFloatToIntFunctionEnum::Dataflow_FloatToInt_Function_Ceil) { SetValue(Context, FMath::CeilToInt32(FloatVal), &Int); } else if (Function == EFloatToIntFunctionEnum::Dataflow_FloatToInt_Function_Round) { SetValue(Context, FMath::RoundToInt32(FloatVal), &Int); } else if (Function == EFloatToIntFunctionEnum::Dataflow_FloatToInt_Function_Truncate) { SetValue(Context, int32(FMath::TruncToFloat(FloatVal)), &Int); } } } void FIntToBoolDataflowNode::Evaluate(UE::Dataflow::FContext& Context, const FDataflowOutput* Out) const { if (Out->IsA(&Bool)) { bool Value = GetValue(Context, &Int, Int) == 0 ? false : true; SetValue(Context, Value, &Bool); } } void FBoolToIntDataflowNode::Evaluate(UE::Dataflow::FContext& Context, const FDataflowOutput* Out) const { if (Out->IsA(&Int)) { int32 Value = (int32)GetValue(Context, &Bool, Bool); SetValue(Context, Value, &Int); } }