UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
DataflowMathNodes.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "ChaosLog.h"
6#include "CoreMinimal.h"
10
11#include "DataflowMathNodes.generated.h"
12
13//--------------------------------------------------------------------------
14//
15// Trigonometric nodes
16//
17//--------------------------------------------------------------------------
18
19#define DATAFLOW_MATH_NODES_CATEGORY "Math|Scalar"
20
22USTRUCT()
24{
26
27 UPROPERTY(EditAnywhere, Category = Operands, meta = (DataflowInput));
29
30 UPROPERTY(meta = (DataflowOutput))
32
33public:
36 virtual void Evaluate(UE::Dataflow::FContext& Context, const FDataflowOutput* Out) const override;
37
38protected:
39 void RegisterInputsAndOutputs();
40 virtual double ComputeResult(UE::Dataflow::FContext& Context, double InA) const { ensure(false); return 0.0; };
41};
42
44USTRUCT()
46{
48
49 UPROPERTY(EditAnywhere, Category = Operands, meta = (DataflowInput));
51
52 UPROPERTY(EditAnywhere, Category = Operands, meta = (DataflowInput));
54
55 UPROPERTY(meta = (DataflowOutput))
57
58public:
61 virtual void Evaluate(UE::Dataflow::FContext& Context, const FDataflowOutput* Out) const override;
62
63protected:
64 void RegisterInputsAndOutputs();
65 virtual double ComputeResult(UE::Dataflow::FContext& Context, double InA, double InB) const { ensure(false); return 0.0; };
66};
67
69USTRUCT()
79
81USTRUCT()
91
93USTRUCT()
103
108USTRUCT()
110{
113
114 UPROPERTY(EditAnywhere, Category = SafeDivide, meta = (DataflowInput));
116
117public:
118 FDataflowMathDivideNode(const UE::Dataflow::FNodeParameters& InParam, FGuid InGuid = FGuid::NewGuid());
119 virtual double ComputeResult(UE::Dataflow::FContext& Context, double InA, double InB) const override;
120};
121
127USTRUCT(meta = (Deprecated = "5.6"))
137
141USTRUCT()
143{
146
147private:
148 UPROPERTY()
150
151 UPROPERTY(meta = (DataflowOutput))
153
154 //~ Begin FDataflowNode interface
155 virtual TArray<UE::Dataflow::FPin> AddPins() override;
156 virtual bool CanAddPin() const override;
157 virtual bool CanRemovePin() const override;
158 virtual TArray<UE::Dataflow::FPin> GetPinsToRemove() const override;
159 virtual void OnPinRemoved(const UE::Dataflow::FPin& Pin) override;
160 virtual void PostSerialize(const FArchive& Ar) override;
161 virtual void Evaluate(UE::Dataflow::FContext& Context, const FDataflowOutput* Out) const override;
162 //~ End FDataflowNode interface
163
165
166 static constexpr int32 NumOtherInputs = 0; // No other inputs
167 static constexpr int32 NumInitialVariableInputs = 2;
168
169public:
171};
172
178USTRUCT(meta = (Deprecated = "5.6"))
188
190USTRUCT()
192{
195
196private:
197 UPROPERTY()
199
200 UPROPERTY(meta = (DataflowOutput))
202
203 //~ Begin FDataflowNode interface
204 virtual TArray<UE::Dataflow::FPin> AddPins() override;
205 virtual bool CanAddPin() const override;
206 virtual bool CanRemovePin() const override;
207 virtual TArray<UE::Dataflow::FPin> GetPinsToRemove() const override;
208 virtual void OnPinRemoved(const UE::Dataflow::FPin& Pin) override;
209 virtual void PostSerialize(const FArchive& Ar) override;
210 virtual void Evaluate(UE::Dataflow::FContext& Context, const FDataflowOutput* Out) const override;
211 //~ End FDataflowNode interface
212
214
215 static constexpr int32 NumOtherInputs = 0; // No other inputs
216 static constexpr int32 NumInitialVariableInputs = 2;
217
218public:
220};
221
226USTRUCT()
228{
231
232 UPROPERTY(EditAnywhere, Category = SafeDivide, meta = (DataflowInput));
234
235public:
236 FDataflowMathReciprocalNode(const UE::Dataflow::FNodeParameters& InParam, FGuid InGuid = FGuid::NewGuid());
237 virtual double ComputeResult(UE::Dataflow::FContext& Context, double InA) const override;
238};
239
241USTRUCT()
251
253USTRUCT()
263
265USTRUCT()
275
280USTRUCT()
282{
285
286 UPROPERTY(EditAnywhere, Category = SafeDivide, meta = (DataflowInput));
288
289public:
290 FDataflowMathInverseSquareRootNode(const UE::Dataflow::FNodeParameters& InParam, FGuid InGuid = FGuid::NewGuid());
291 virtual double ComputeResult(UE::Dataflow::FContext& Context, double InA) const override;
292};
293
295USTRUCT()
305
307USTRUCT()
317
319USTRUCT()
329
331USTRUCT()
341
343USTRUCT()
353
355USTRUCT()
365
367USTRUCT()
377
379USTRUCT()
389
394USTRUCT()
396{
399
400 UPROPERTY(EditAnywhere, Category = SafeDivide, meta = (DataflowInput));
402
403public:
404 FDataflowMathLogXNode(const UE::Dataflow::FNodeParameters& InParam, FGuid InGuid = FGuid::NewGuid());
405 virtual double ComputeResult(UE::Dataflow::FContext& Context, double InA) const override;
406};
407
409USTRUCT()
419
421USTRUCT()
431
433USTRUCT()
443
445USTRUCT()
455
456UENUM(BlueprintType)
458{
459 Dataflow_Math_Constants_Pi UMETA(DisplayName = "Pi"),
460 Dataflow_Math_Constants_HalfPi UMETA(DisplayName = "HalfPi"),
461 Dataflow_Math_Constants_TwoPi UMETA(DisplayName = "TwoPi"),
462 Dataflow_Math_Constants_FourPi UMETA(DisplayName = "FourPi"),
463 Dataflow_Math_Constants_InvPi UMETA(DisplayName = "InvPi"),
464 Dataflow_Math_Constants_InvTwoPi UMETA(DisplayName = "InvTwoPi"),
465 Dataflow_Math_Constants_Sqrt2 UMETA(DisplayName = "Sqrt2"),
466 Dataflow_Math_Constants_InvSqrt2 UMETA(DisplayName = "InvSqrt2"),
467 Dataflow_Math_Constants_Sqrt3 UMETA(DisplayName = "Sqrt3"),
468 Dataflow_Math_Constants_InvSqrt3 UMETA(DisplayName = "InvSqrt3"),
469 Dataflow_Math_Constants_E UMETA(DisplayName = "e"),
470 Dataflow_Math_Constants_Gamma UMETA(DisplayName = "Gamma"),
471 Dataflow_Math_Constants_GoldenRatio UMETA(DisplayName = "GoldenRatio"),
472 //~~~
473 //256th entry
475};
476
478USTRUCT()
480{
482 DATAFLOW_NODE_DEFINE_INTERNAL(FDataflowMathConstantNode, "Constants", DATAFLOW_MATH_NODES_CATEGORY, "Pi Half Two Four Inverse SquareRoot Sqrt Cube Square e Gamma Golden Ratio")
483
484
485 UPROPERTY(EditAnywhere, Category = "Constants");
487
488 UPROPERTY(meta = (DataflowOutput))
490
491public:
492 FDataflowMathConstantNode(const UE::Dataflow::FNodeParameters& InParam, FGuid InGuid = FGuid::NewGuid());
493 virtual void Evaluate(UE::Dataflow::FContext& Context, const FDataflowOutput* Out) const override;
494
495private:
496 double GetConstant() const;
497};
498
500USTRUCT()
502{
505
506 UPROPERTY(EditAnywhere, Category = "Clamp", meta = (DataflowInput))
508
509 UPROPERTY(EditAnywhere, Category = "Clamp", meta = (DataflowInput))
511
512public:
513 FDataflowMathClampNode(const UE::Dataflow::FNodeParameters& InParam, FGuid InGuid = FGuid::NewGuid());
514 virtual double ComputeResult(UE::Dataflow::FContext& Context, double InA) const override;
515};
516
517//--------------------------------------------------------------------------
518//
519// Trigonometric nodes
520//
521//--------------------------------------------------------------------------
522
523#define DATAFLOW_MATH_TRIG_NODES_CATEGORY "Math|Trig"
524
526USTRUCT()
528{
530 DATAFLOW_NODE_DEFINE_INTERNAL(FDataflowMathSinNode, "Sin", DATAFLOW_MATH_TRIG_NODES_CATEGORY, "Sine Trigonometry Circle Angle Degrees Radians")
531
532public:
534 virtual double ComputeResult(UE::Dataflow::FContext& Context, double InA) const override;
535};
536
538USTRUCT()
540{
542 DATAFLOW_NODE_DEFINE_INTERNAL(FDataflowMathCosNode, "Cos", DATAFLOW_MATH_TRIG_NODES_CATEGORY, "Cosine Trigonometry Circle Angle Degrees Radians")
543
544public:
546 virtual double ComputeResult(UE::Dataflow::FContext& Context, double InA) const override;
547};
548
550USTRUCT()
552{
554 DATAFLOW_NODE_DEFINE_INTERNAL(FDataflowMathTanNode, "Tan", DATAFLOW_MATH_TRIG_NODES_CATEGORY, "Tangent Trigonometry Circle Angle Degrees Radians")
555
556public:
558 virtual double ComputeResult(UE::Dataflow::FContext& Context, double InA) const override;
559};
560
562USTRUCT()
572
574USTRUCT()
584
586USTRUCT()
588{
590 DATAFLOW_NODE_DEFINE_INTERNAL(FDataflowMathArcTanNode, "ArcTan", DATAFLOW_MATH_TRIG_NODES_CATEGORY, "Tangent Trigonometry Circle Angle Degrees Radians")
591
592public:
594 virtual double ComputeResult(UE::Dataflow::FContext& Context, double InA) const override;
595};
596
598USTRUCT()
600{
602 DATAFLOW_NODE_DEFINE_INTERNAL(FDataflowMathArcTan2Node, "ArcTan2", DATAFLOW_MATH_TRIG_NODES_CATEGORY, "Tangent Trigonometry Circle Angle Degrees Radians")
603
604public:
606 virtual double ComputeResult(UE::Dataflow::FContext& Context, double InA, double InB) const override;
607};
608
609
611USTRUCT()
613{
615 DATAFLOW_NODE_DEFINE_INTERNAL(FDataflowMathDegToRadNode, "DegToRad", DATAFLOW_MATH_TRIG_NODES_CATEGORY, "Trigonometry Circle Angle Degrees Radians Convert Unit")
616
617public:
619 virtual double ComputeResult(UE::Dataflow::FContext& Context, double InA) const override;
620};
621
623USTRUCT()
625{
627 DATAFLOW_NODE_DEFINE_INTERNAL(FDataflowMathRadToDegNode, "RadToDeg", DATAFLOW_MATH_TRIG_NODES_CATEGORY, "Trigonometry Circle Angle Degrees Radians Convert Unit")
628
629public:
631 virtual double ComputeResult(UE::Dataflow::FContext& Context, double InA) const override;
632};
633
634//--------------------------------------------------------------------------
635//
636// Other
637//
638//--------------------------------------------------------------------------
639/*
640Nodes Left to be converted from the Geometry collection math nodes:
641 FFloatMathExpressionDataflowNode);
642 FMathExpressionDataflowNode);
643 FFitDataflowNode);
644 FEFitDataflowNode);
645 FLerpDataflowNode);
646 FWrapDataflowNode);
647
648 // random
649 FRandomFloatDataflowNode);
650 FRandomFloatInRangeDataflowNode);
651 FRandomUnitVectorDataflowNode);
652 FRandomUnitVectorInConeDataflowNode);
653*/
654
655namespace UE::Dataflow
656{
658}
#define ensure( InExpression)
Definition AssertionMacros.h:464
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define DATAFLOW_MATH_NODES_CATEGORY
Definition DataflowMathNodes.h:19
EDataflowMathConstantsEnum
Definition DataflowMathNodes.h:458
#define DATAFLOW_MATH_TRIG_NODES_CATEGORY
Definition DataflowMathNodes.h:523
#define DATAFLOW_NODE_DEFINE_INTERNAL(TYPE, DISPLAY_NAME, CATEGORY, TAGS)
Definition DataflowNode.h:951
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define UENUM(...)
Definition ObjectMacros.h:749
#define USTRUCT(...)
Definition ObjectMacros.h:746
#define GENERATED_USTRUCT_BODY(...)
Definition ObjectMacros.h:767
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition Archive.h:1208
Definition Array.h:670
Definition DataflowNodeParameters.h:134
Definition DataflowAnyType.cpp:10
void RegisterDataflowMathNodes()
Definition DataflowMathNodes.cpp:14
Definition AdvancedWidgetsModule.cpp:13
U16 Index
Definition radfft.cpp:71
Definition DataflowMathNodes.h:309
Definition DataflowMathNodes.h:71
Definition DataflowMathNodes.h:576
Definition DataflowMathNodes.h:564
Definition DataflowMathNodes.h:600
Definition DataflowMathNodes.h:588
Definition DataflowMathNodes.h:333
Definition DataflowMathNodes.h:502
Definition DataflowMathNodes.h:480
Definition DataflowMathNodes.h:540
Definition DataflowMathNodes.h:255
Definition DataflowMathNodes.h:613
Definition DataflowMathNodes.h:110
Definition DataflowMathNodes.h:423
Definition DataflowMathNodes.h:321
Definition DataflowMathNodes.h:369
Definition DataflowMathNodes.h:282
Definition DataflowMathNodes.h:411
Definition DataflowMathNodes.h:396
Definition DataflowMathNodes.h:192
Definition DataflowMathNodes.h:180
Definition DataflowMathNodes.h:143
Definition DataflowMathNodes.h:129
Definition DataflowMathNodes.h:95
Definition DataflowMathNodes.h:297
Definition DataflowMathNodes.h:24
virtual double ComputeResult(UE::Dataflow::FContext &Context, double InA) const
Definition DataflowMathNodes.h:40
Definition DataflowMathNodes.h:447
Definition DataflowMathNodes.h:381
Definition DataflowMathNodes.h:625
Definition DataflowMathNodes.h:228
Definition DataflowMathNodes.h:345
Definition DataflowMathNodes.h:435
Definition DataflowMathNodes.h:528
Definition DataflowMathNodes.h:243
Definition DataflowMathNodes.h:267
Definition DataflowMathNodes.h:83
Definition DataflowMathNodes.h:552
Definition DataflowMathNodes.h:357
Definition DataflowMathNodes.h:46
virtual double ComputeResult(UE::Dataflow::FContext &Context, double InA, double InB) const
Definition DataflowMathNodes.h:65
Definition DataflowNode.h:52
Definition DataflowAnyType.h:46
Definition DataflowInputOutput.h:149
Definition Guid.h:109
static CORE_API FGuid NewGuid()
Definition Guid.cpp:236
Definition DataflowNode.h:22
Definition DataflowConnection.h:28
Definition DataflowConnection.h:84