UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FieldSystemObjects.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "Containers/Array.h"
8#include "Containers/Queue.h"
10#include "Field/FieldSystem.h"
12#include "Math/Vector.h"
15
16#include "FieldSystemObjects.generated.h"
17
22UCLASS(MinimalAPI)
32
33/*
34* UFieldSystemMetaDataIteration : Not used anymore, just hiding it right now but will probably be deprecated if not used in the future
35*/
36UCLASS(MinimalAPI)
38{
40
41public:
44
45 FIELDSYSTEMENGINE_API virtual FFieldSystemMetaData* NewMetaData() const override;
46
51 UFUNCTION(BlueprintPure, Category = "Field", meta = (Iterations = "1"))
52 FIELDSYSTEMENGINE_API UFieldSystemMetaDataIteration* SetMetaDataIteration(UPARAM(DisplayName = "Iteration Count") int Iterations);
53
55 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Iteration Count")
56 int Iterations;
57};
58
59/*
60* UFieldSystemMetaDataProcessingResolution
61*/
62UCLASS(ClassGroup = "Field", meta = (BlueprintSpawnableComponent, ToolTip = "Control the set of particles on which the field will be applied"), ShowCategories = ("Field"), DisplayName = "MetaDataResolution", MinimalAPI)
64{
66
67public:
70 FIELDSYSTEMENGINE_API virtual FFieldSystemMetaData* NewMetaData() const override;
71
76 UFUNCTION(BlueprintPure, Category = "Field", DisplayName = "Set Meta Data Resolution")
78
80 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Field")
82};
83
84/*
85* UFieldSystemMetaDataFilter
86*/
87UCLASS(ClassGroup = "Field", meta = (BlueprintSpawnableComponent, ToolTip = "Filter the particles on which the field will be applied"), ShowCategories = ("Field"), DisplayName = "MetaDataFilter", MinimalAPI)
89{
91
92public:
96
103 UFUNCTION(BlueprintPure, Category = "Field", DisplayName = "Set Meta Data Filter")
105 UPARAM(DisplayName = "Object Type") EFieldObjectType ObjectType,
106 UPARAM(DisplayName = "Position Type") EFieldPositionType PositionType );
107
109 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Field", DisplayName = "State Type")
110 TEnumAsByte<EFieldFilterType> FilterType;
111
113 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Field", DisplayName = "Object Type")
114 TEnumAsByte<EFieldObjectType> ObjectType;
115
117 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Field", DisplayName = "Position Type")
118 TEnumAsByte<EFieldPositionType> PositionType;
119};
120
124UCLASS(MinimalAPI)
126{
128
129public:
130 virtual ~UFieldNodeBase() {}
132 virtual bool ResultsExpector() const { return false; }
133 virtual FFieldNodeBase* NewEvaluationGraph(TArray<const UFieldNodeBase*>& Nodes) const { return nullptr; }
134};
135
136
140UCLASS(MinimalAPI)
142{
144
145public:
146 virtual ~UFieldNodeInt() {}
148};
149
153UCLASS(MinimalAPI)
155{
157
158public:
159 virtual ~UFieldNodeFloat() {}
161};
162
166UCLASS(MinimalAPI)
174
175
179UCLASS(ClassGroup = "Field", meta = (BlueprintSpawnableComponent, ToolTip = "Set a uniform integer value independently of the sample position. The output is equal to magnitude"), ShowCategories = ("Field"), MinimalAPI)
180class UUniformInteger : public UFieldNodeInt
181{
183public:
184
186 : Super()
187 , Magnitude(0)
188 {}
189
190 virtual ~UUniformInteger() {}
191
192 FIELDSYSTEMENGINE_API virtual FFieldNodeBase* NewEvaluationGraph(TArray<const UFieldNodeBase*>& Nodes) const override;
193
198 UFUNCTION(BlueprintPure, Category = "Field", meta = (Magnitude = "0"))
199 FIELDSYSTEMENGINE_API UUniformInteger* SetUniformInteger(UPARAM(DisplayName = "Field Magnitude") int32 Magnitude);
200
202 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Field Magnitude")
203 int32 Magnitude;
204};
205
206
210UCLASS(ClassGroup = "Field", meta = (BlueprintSpawnableComponent, ToolTip = "This function first defines a radial integer field equal to Interior-value inside a sphere / Exterior-value outside. This field will be used alongside the particle input value and the mask condition to compute the particle output value."), ShowCategories = ("Field"), MinimalAPI)
212{
214public:
215
217 : Super()
218 , Radius(0)
219 , Position(FVector(0, 0, 0))
220 , InteriorValue(1)
221 , ExteriorValue(0)
222 , SetMaskCondition(ESetMaskConditionType::Field_Set_Always)
223 {}
224 virtual ~URadialIntMask() {}
225
226 FIELDSYSTEMENGINE_API virtual FFieldNodeBase* NewEvaluationGraph(TArray<const UFieldNodeBase*>& Nodes) const override;
227
239 UFUNCTION(BlueprintPure, Category = "Field", meta = (InteriorValue = "1"), DisplayName = "Set Radial Mask")
240 FIELDSYSTEMENGINE_API URadialIntMask* SetRadialIntMask(UPARAM(DisplayName = "Mask Radius") float Radius,
241 UPARAM(DisplayName = "Center Position") FVector Position,
242 UPARAM(DisplayName = "Interior Value") int32 InteriorValue,
243 UPARAM(DisplayName = "Exterior Value") int32 ExteriorValue,
244 UPARAM(DisplayName = "Mask Condition") ESetMaskConditionType SetMaskConditionIn);
245
247 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Mask Radius")
248 float Radius;
249
251 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Center Position")
253
255 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Interior Value")
256 int32 InteriorValue;
257
259 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Exterior Value")
260 int32 ExteriorValue;
261
263 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Mask Condition")
264 TEnumAsByte<ESetMaskConditionType> SetMaskCondition;
265};
266
267
271UCLASS(ClassGroup = "Field", meta = (BlueprintSpawnableComponent, ToolTip = "Set a uniform scalar value independently of the sample position. The output is equal to magnitude"), ShowCategories = ("Field"), MinimalAPI)
273{
275public:
276
278 : Super()
279 , Magnitude(1.0)
280 {}
281
282 virtual ~UUniformScalar() {}
283
284 FIELDSYSTEMENGINE_API virtual FFieldNodeBase* NewEvaluationGraph(TArray<const UFieldNodeBase*>& Nodes) const override;
285
290 UFUNCTION(BlueprintPure, Category = "Field", meta = (Magnitude = "1.0"))
291 FIELDSYSTEMENGINE_API UUniformScalar* SetUniformScalar(UPARAM(DisplayName = "Field Magnitude") float Magnitude);
292
294 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Field Magnitude")
295 float Magnitude;
296
297};
298
302UCLASS(ClassGroup = "Field", meta = (BlueprintSpawnableComponent, ToolTip = "Set a temporal wave scalar value according to the sample distance from the field position."), ShowCategories = ("Field"), MinimalAPI)
304{
306public:
307
309 : Super()
310 , Magnitude(1.0)
311 , Position(0, 0, 0)
312 , Wavelength(10000)
313 , Period(1.0)
316 {}
317
318 virtual ~UWaveScalar() {}
319
320 FIELDSYSTEMENGINE_API virtual FFieldNodeBase* NewEvaluationGraph(TArray<const UFieldNodeBase*>& Nodes) const override;
321
331 UFUNCTION(BlueprintPure, Category = "Field", meta = (Magnitude = "1.0", Wavelength = "1000", Period = "1", HidePin = "Time"), DisplayName = "Set Wave Scalar")
332 FIELDSYSTEMENGINE_API UWaveScalar* SetWaveScalar(UPARAM(DisplayName = "Field Magnitude") float Magnitude,
333 UPARAM(DisplayName = "Center Position") FVector Position,
334 UPARAM(DisplayName = "Wave Length") float Wavelength,
335 UPARAM(DisplayName = "Wave Period") float Period,
336 UPARAM(DisplayName = "Time Offset") float Time,
338 UPARAM(DisplayName = "Falloff Type") EFieldFalloffType Falloff);
339
341 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Field Magnitude")
342 float Magnitude;
343
345 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Center Position")
347
349 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Wave Length")
350 float Wavelength;
351
353 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Wave Period")
354 float Period;
355
357 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Wave Function")
359
361 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Falloff Type")
363};
364
365
366
370UCLASS(ClassGroup = "Field", meta = (BlueprintSpawnableComponent, ToolTip = "Sphere scalar field that will be defined only within a sphere"), ShowCategories = ("Field"), MinimalAPI)
372{
374public:
375
377 : Super()
378 , Magnitude(1.0)
379 , MinRange(0.f)
380 , MaxRange(1.f)
381 , Default(0.f)
382 , Radius(0)
383 , Position(FVector(0, 0, 0))
385 {}
386
387 virtual ~URadialFalloff() {}
388
389 FIELDSYSTEMENGINE_API virtual FFieldNodeBase* NewEvaluationGraph(TArray<const UFieldNodeBase*>& Nodes) const override;
390
401 UFUNCTION(BlueprintPure, Category = "Field", meta = (Magnitude = "1.0", MinRange = "0.0", MaxRange = "1.0"), DisplayName = "Set Radial Falloff")
402 FIELDSYSTEMENGINE_API URadialFalloff* SetRadialFalloff(UPARAM(DisplayName = "Field Magnitude") float Magnitude,
403 UPARAM(DisplayName = "Min Range") float MinRange,
404 UPARAM(DisplayName = "Max Range") float MaxRange,
405 UPARAM(DisplayName = "Default Value") float Default,
406 UPARAM(DisplayName = "Sphere Radius") float Radius,
407 UPARAM(DisplayName = "Center Position") FVector Position,
408 UPARAM(DisplayName = "Falloff Type") EFieldFalloffType Falloff);
409
411 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Field Magnitude")
412 float Magnitude;
413
415 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Min Range")
416 float MinRange;
417
419 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Max Range")
420 float MaxRange;
421
423 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Default Value")
424 float Default;
425
427 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Sphere Radius")
428 float Radius;
429
431 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Center Position")
433
435 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Falloff Type")
437};
438
442UCLASS(ClassGroup = "Field", meta = (BlueprintSpawnableComponent, ToolTip = "Plane scalar field that will be defined only within a distance from a plane"), ShowCategories = ("Field"), MinimalAPI)
444{
446
447public:
448
450 : Super()
451 , Magnitude(1.0)
452 , MinRange(0.f)
453 , MaxRange(1.f)
454 , Default(0.f)
455 , Distance(0.f)
456 , Position(FVector(0, 0, 0))
457 , Normal(FVector(0, 0, 1))
459 {}
460
461 virtual ~UPlaneFalloff() {}
462
463 FIELDSYSTEMENGINE_API virtual FFieldNodeBase* NewEvaluationGraph(TArray<const UFieldNodeBase*>& Nodes) const override;
464
476 UFUNCTION(BlueprintPure, Category = "Field", meta = (Magnitude = "1.0", MinRange = "0.0", MaxRange = "1.0"))
477 FIELDSYSTEMENGINE_API UPlaneFalloff* SetPlaneFalloff(UPARAM(DisplayName = "Field Magnitude") float Magnitude,
478 UPARAM(DisplayName = "Min Range") float MinRange,
479 UPARAM(DisplayName = "Max Range") float MaxRange,
480 UPARAM(DisplayName = "Default Value") float Default,
481 UPARAM(DisplayName = "Plane Distance") float Distance,
482 UPARAM(DisplayName = "Center Position") FVector Position,
483 UPARAM(DisplayName = "Plane Normal") FVector Normal,
484 UPARAM(DisplayName = "Falloff Type") EFieldFalloffType Falloff);
485
487 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Field Magnitude")
488 float Magnitude;
489
491 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Min Range")
492 float MinRange;
493
495 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Max Range")
496 float MaxRange;
497
499 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Default Value")
500 float Default;
501
503 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Plane Distance")
504 float Distance;
505
507 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Center Position")
509
511 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Plane Normal")
513
515 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Falloff Type")
517};
518
522UCLASS(ClassGroup = "Field", meta = (BlueprintSpawnableComponent, ToolTip = "Box scalar field that will be defined only within a box"), ShowCategories = ("Field"), MinimalAPI)
524{
526
527public:
528
530 : Super()
531 , Magnitude(1.0)
532 , MinRange(0.f)
533 , MaxRange(1.f)
534 , Default(0.0)
535 , Transform(FTransform::Identity)
537 {}
538
539 virtual ~UBoxFalloff() {}
540
541 FIELDSYSTEMENGINE_API virtual FFieldNodeBase* NewEvaluationGraph(TArray<const UFieldNodeBase*>& Nodes) const override;
542
552 UFUNCTION(BlueprintPure, Category = "Field", meta = (Magnitude = "1.0", MinRange = "0.0", MaxRange = "1.0"))
553 FIELDSYSTEMENGINE_API UBoxFalloff* SetBoxFalloff(UPARAM(DisplayName = "Field Magnitude") float Magnitude,
554 UPARAM(DisplayName = "Min Range") float MinRange,
555 UPARAM(DisplayName = "Max Range") float MaxRange,
556 UPARAM(DisplayName = "Default Value") float Default,
557 UPARAM(DisplayName = "Box Transform") FTransform Transform,
558 UPARAM(DisplayName = "Falloff Type") EFieldFalloffType Falloff);
559
561 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Field Magnitude")
562 float Magnitude;
563
565 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Min Range")
566 float MinRange;
567
569 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Max Range")
570 float MaxRange;
571
573 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Default Value")
574 float Default;
575
577 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Box Transform")
579
581 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Falloff Type")
583};
584
585
589UCLASS(ClassGroup = "Field", meta = (BlueprintSpawnableComponent, ToolTip = "Defines a perlin noise scalar value if the sample is within a box"), ShowCategories = ("Field"), MinimalAPI)
591{
593
594public:
595
597 : Super()
598 , MinRange(0.f)
599 , MaxRange(1.f)
600 , Transform()
601 {}
602
603 virtual ~UNoiseField() {}
604
605 FIELDSYSTEMENGINE_API virtual FFieldNodeBase* NewEvaluationGraph(TArray<const UFieldNodeBase*>& Nodes) const override;
606
613 UFUNCTION(BlueprintPure, Category = "Field", meta = (MinRange = "0.0", MaxRange = "1.0"), DisplayName = "Set Noise Field")
614 FIELDSYSTEMENGINE_API UNoiseField* SetNoiseField(UPARAM(DisplayName = "Min Range") float MinRange,
615 UPARAM(DisplayName = "Max Range") float MaxRange,
616 UPARAM(DisplayName = "Noise Transform") FTransform Transform);
617
619 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Min Range")
620 float MinRange;
621
623 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Max Range")
624 float MaxRange;
625
627 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Noise Transform")
629};
630
634UCLASS(ClassGroup = "Field", meta = (BlueprintSpawnableComponent, ToolTip = "Set a uniform vector value independently of the sample position.The output is equal to magnitude * direction"), ShowCategories = ("Field"), MinimalAPI)
636{
638public:
639
641 : Super()
642 , Magnitude(1.0)
643 , Direction(FVector(0, 0, 0))
644 {}
645
646 virtual ~UUniformVector() {}
647
648 FIELDSYSTEMENGINE_API virtual FFieldNodeBase* NewEvaluationGraph(TArray<const UFieldNodeBase*>& Nodes) const override;
649
655 UFUNCTION(BlueprintPure, Category = "Field", meta = (Magnitude = "1.0"))
656 FIELDSYSTEMENGINE_API UUniformVector* SetUniformVector(UPARAM(DisplayName = "Field Magnitude") float Magnitude,
657 UPARAM(DisplayName = "Uniform Direction") FVector Direction);
658
660 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Field Magnitude")
661 float Magnitude;
662
664 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Uniform Direction")
665 FVector Direction;
666};
667
668
672UCLASS(ClassGroup = "Field", meta = (BlueprintSpawnableComponent, ToolTip = "Set a radial vector value, the direction being the vector from the sample position to the field one. The output is equal to magnitude * direction"), ShowCategories = ("Field"), MinimalAPI)
674{
676public:
677
679 : Super()
680 , Magnitude(1.0)
681 , Position(FVector(0, 0, 0))
682 {}
683
684 virtual ~URadialVector() {}
685
686 FIELDSYSTEMENGINE_API virtual FFieldNodeBase* NewEvaluationGraph(TArray<const UFieldNodeBase*>& Nodes) const override;
687
693 UFUNCTION(BlueprintPure, Category = "Field", meta = (Magnitude = "1.0"))
694 FIELDSYSTEMENGINE_API URadialVector* SetRadialVector(UPARAM(DisplayName = "Field Magnitude") float Magnitude,
695 UPARAM(DisplayName = "Center Position") FVector Position);
696
698 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Field Magnitude")
699 float Magnitude;
700
702 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Center Position")
704};
705
709UCLASS(ClassGroup = "Field", meta = (BlueprintSpawnableComponent, ToolTip = "Set a random vector value independently of the sample position. The output is equal to magnitude * random direction "), ShowCategories = ("Field"), MinimalAPI)
711{
713public:
714
716 : Super()
717 , Magnitude(1.0)
718 {}
719
720 virtual ~URandomVector() {}
721
722 FIELDSYSTEMENGINE_API virtual FFieldNodeBase* NewEvaluationGraph(TArray<const UFieldNodeBase*>& Nodes) const override;
723
728 UFUNCTION(BlueprintPure, Category = "Field", meta = (Magnitude = "1.0"))
729 FIELDSYSTEMENGINE_API URandomVector* SetRandomVector(UPARAM(DisplayName = "Field Magnitude") float Magnitude);
730
732 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Field Magnitude")
733 float Magnitude;
734};
735
736
740UCLASS(ClassGroup = "Field", meta = (BlueprintSpawnableComponent, ToolTip = "Compute an operation between 2 incoming fields"), ShowCategories = ("Field"), MinimalAPI)
742{
744public:
745
747 : Super()
748 , Magnitude(1.0)
749 , RightField(nullptr)
750 , LeftField(nullptr)
752 {}
753
754 virtual ~UOperatorField() {}
755
757 virtual bool ResultsExpector() const override { return true; }
758
759 FIELDSYSTEMENGINE_API virtual FFieldNodeBase* NewEvaluationGraph(TArray<const UFieldNodeBase*>& Nodes) const override;
760
768 UFUNCTION(BlueprintPure, Category = "Field", meta = (Magnitude = "1.0"))
769 FIELDSYSTEMENGINE_API UOperatorField* SetOperatorField(UPARAM(DisplayName = "Field Magnitude") float Magnitude,
770 UPARAM(DisplayName = "Left Field") const UFieldNodeBase* LeftField,
771 UPARAM(DisplayName = "Right Field") const UFieldNodeBase* RightField,
772 UPARAM(DisplayName = "Field Operation") EFieldOperationType Operation);
773
775 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Field Magnitude")
776 float Magnitude;
777
779 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Right Field")
781
783 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Left Field")
785
787 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Field Operation")
789};
790
794UCLASS(ClassGroup = "Field", meta = (BlueprintSpawnableComponent, ToolTip = "Convert a scalar field to a integer one"), ShowCategories = ("Field"), MinimalAPI)
796{
798public:
799
801 : Super()
802 , FloatField(nullptr)
803 {}
804
805 virtual ~UToIntegerField() {}
806
807 FIELDSYSTEMENGINE_API virtual FFieldNodeBase* NewEvaluationGraph(TArray<const UFieldNodeBase*>& Nodes) const override;
808
813 UFUNCTION(BlueprintPure, Category = "Field", DisplayName = "Set To Integer Field")
815
817 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Float Field")
819};
820
824UCLASS(ClassGroup = "Field", meta = (BlueprintSpawnableComponent, ToolTip = "Convert an integer field to a scalar one"), ShowCategories = ("Field"), MinimalAPI)
826{
828public:
829
831 : Super()
832 , IntField(nullptr)
833 {}
834
835 virtual ~UToFloatField() {}
836
837 FIELDSYSTEMENGINE_API virtual FFieldNodeBase* NewEvaluationGraph(TArray<const UFieldNodeBase*>& Nodes) const override;
838
843 UFUNCTION(BlueprintPure, Category = "Field", DisplayName = "Set To Float Field")
845
847 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Integer Field")
849};
850
854UCLASS(ClassGroup = "Field", meta = (BlueprintSpawnableComponent, ToolTip = "Evaluate the input field according to the result of the culling field"), ShowCategories = ("Field"), MinimalAPI)
856{
858public:
859
861 : Super()
862 , Culling(nullptr)
863 , Field(nullptr)
865 {}
866
867 virtual ~UCullingField() {}
868
869 FIELDSYSTEMENGINE_API virtual FFieldNodeBase* NewEvaluationGraph(TArray<const UFieldNodeBase*>& Nodes) const override;
870
872
880 UFUNCTION(BlueprintPure, Category = "Field")
881 FIELDSYSTEMENGINE_API UCullingField* SetCullingField(UPARAM(DisplayName = "Culling Field") const UFieldNodeBase* Culling,
882 UPARAM(DisplayName = "Input Field") const UFieldNodeBase* Field,
883 UPARAM(DisplayName = "Culling Operation") EFieldCullingOperationType Operation);
884
886 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Culling Field")
887 TObjectPtr<const UFieldNodeBase> Culling;
888
890 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Input Field")
892
894 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Culling Operation")
896};
897
901UCLASS(ClassGroup = "Field", meta = (BlueprintSpawnableComponent, ToolTip = "Terminal field of a graph"), ShowCategories = ("Field"), MinimalAPI)
903{
905public:
906
907 UReturnResultsTerminal() : Super()
908 {}
909
910 virtual ~UReturnResultsTerminal() {}
911
912 FIELDSYSTEMENGINE_API virtual FFieldNodeBase* NewEvaluationGraph(TArray<const UFieldNodeBase*>& Nodes) const override;
914
916 UFUNCTION(BlueprintPure, Category = "Field", DisplayName = "Set Terminal Field")
918
919};
920
924USTRUCT(BlueprintType)
926{
928
930 : TargetNames()
931 , RootNodes()
932 , MetaDatas()
933 {}
934
936
939 {
940 TargetNames.Add(TargetName);
941 RootNodes.Add(RootNode);
942 MetaDatas.Add(MetaData);
943 }
944
947 {
948 TargetNames.Reset();
949 RootNodes.Reset();
950 MetaDatas.Reset();
951 }
952
955 {
956 return TargetNames.Num();
957 }
958
961 {
962 if (RootNode)
963 {
965 FFieldSystemCommand Command = { PhysicsType, RootNode->NewEvaluationGraph(Nodes) };
966 if (ensureMsgf(Command.RootNode,
967 TEXT("Failed to generate physics field command for target attribute.")))
968 {
969 if (MetaData)
970 {
971 switch (MetaData->Type())
972 {
975 break;
978 break;
981 static_cast<UFieldSystemMetaDataFilter*>(MetaData)->ObjectType, static_cast<UFieldSystemMetaDataFilter*>(MetaData)->PositionType));
982 break;
983 }
984 }
985 ensure(Command.PhysicsType != EFieldPhysicsType::Field_None);
986 }
988 return Command;
989 }
990 else
991 {
992 return FFieldSystemCommand();
993 }
994 }
995
998 {
999 if (RootNode)
1000 {
1001 FFieldSystemCommand Command = { PhysicsType, RootNode };
1002 ensure(Command.PhysicsType != EFieldPhysicsType::Field_None);
1004 return Command;
1005 }
1006 else
1007 {
1008 return FFieldSystemCommand();
1009 }
1010 }
1011
1014 {
1015 return (CommandIndex < GetNumCommands()) ? CreateFieldCommand(GetFieldPhysicsType(TargetNames[CommandIndex]), RootNodes[CommandIndex], MetaDatas[CommandIndex]) : FFieldSystemCommand();
1016 }
1017
1019 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Target Names")
1020 TArray<FName> TargetNames;
1021
1023 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Root Nodes")
1025
1027 UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Field", DisplayName = "Meta Datas")
1029};
1030
1031
1032
1033
1034
OODEFFUNC typedef const int const char * function
Definition oodle2.h:710
@ Normal
Definition AndroidInputInterface.h:116
#define ensureMsgf( InExpression, InFormat,...)
Definition AssertionMacros.h:465
#define ensure( InExpression)
Definition AssertionMacros.h:464
#define TEXT(x)
Definition Platform.h:1272
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
EFieldObjectType
Definition FieldSystemTypes.h:103
EFieldCullingOperationType
Definition FieldSystemTypes.h:58
EFieldFalloffType
Definition FieldSystemTypes.h:132
EWaveFunctionType
Definition FieldSystemTypes.h:28
EFieldResolutionType
Definition FieldSystemTypes.h:72
EFieldPhysicsType
Definition FieldSystemTypes.h:148
EFieldPhysicsType GetFieldPhysicsType(const FName &PhysicsName)
Definition FieldSystemTypes.h:382
EFieldOperationType
Definition FieldSystemTypes.h:43
EFieldPositionType
Definition FieldSystemTypes.h:119
EFieldFilterType
Definition FieldSystemTypes.h:86
ESetMaskConditionType
Definition FieldSystemTypes.h:14
@ Compute
Definition MetalRHIPrivate.h:232
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define UPARAM(...)
Definition ObjectMacros.h:748
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UFUNCTION(...)
Definition ObjectMacros.h:745
#define UCLASS(...)
Definition ObjectMacros.h:776
#define USTRUCT(...)
Definition ObjectMacros.h:746
uint32 Offset
Definition VulkanMemory.cpp:4033
if(Failed) console_printf("Failed.\n")
Definition FieldSystem.h:404
EFieldType
Definition FieldSystem.h:409
@ EField_None
Definition FieldSystem.h:410
@ EField_Results
Definition FieldSystem.h:411
@ EField_Float
Definition FieldSystem.h:413
@ EField_FVector
Definition FieldSystem.h:414
@ EField_Int32
Definition FieldSystem.h:412
Definition FieldSystem.h:522
Definition FieldSystem.h:185
Definition FieldSystem.h:208
Definition FieldSystem.h:175
Definition FieldSystem.h:155
EMetaType
Definition FieldSystem.h:159
@ ECommandData_Filter
Definition FieldSystem.h:165
@ ECommandData_ProcessingResolution
Definition FieldSystem.h:161
@ ECommandData_None
Definition FieldSystem.h:160
@ ECommandData_Iteration
Definition FieldSystem.h:163
Definition NameTypes.h:617
Definition Array.h:670
Definition EnumAsByte.h:22
Definition ActorComponent.h:152
Definition FieldSystemObjects.h:126
virtual bool ResultsExpector() const
Definition FieldSystemObjects.h:132
virtual ~UFieldNodeBase()
Definition FieldSystemObjects.h:130
virtual FFieldNodeBase::EFieldType Type() const
Definition FieldSystemObjects.h:131
virtual FFieldNodeBase * NewEvaluationGraph(TArray< const UFieldNodeBase * > &Nodes) const
Definition FieldSystemObjects.h:133
Definition FieldSystemObjects.h:155
virtual FFieldNodeBase::EFieldType Type() const override
Definition FieldSystemObjects.h:160
virtual ~UFieldNodeFloat()
Definition FieldSystemObjects.h:159
Definition FieldSystemObjects.h:142
virtual ~UFieldNodeInt()
Definition FieldSystemObjects.h:146
virtual FFieldNodeBase::EFieldType Type() const override
Definition FieldSystemObjects.h:147
Definition FieldSystemObjects.h:168
virtual ~UFieldNodeVector()
Definition FieldSystemObjects.h:171
virtual FFieldNodeBase::EFieldType Type() const override
Definition FieldSystemObjects.h:172
Definition FieldSystemObjects.h:38
virtual ~UFieldSystemMetaDataIteration()
Definition FieldSystemObjects.h:42
virtual FFieldSystemMetaData::EMetaType Type() const override
Definition FieldSystemObjects.h:43
Definition FieldSystemObjects.h:24
virtual FFieldSystemMetaData * NewMetaData() const
Definition FieldSystemObjects.h:30
virtual FFieldSystemMetaData::EMetaType Type() const
Definition FieldSystemObjects.h:29
virtual ~UFieldSystemMetaData()
Definition FieldSystemObjects.h:28
static ENGINE_API void BuildCommandBounds(FFieldSystemCommand &FieldCommand)
Definition PhysicsFieldComponent.cpp:986
Type
Definition PawnAction_Move.h:11
Definition FieldSystemNoiseAlgo.cpp:6
Definition FieldSystemObjects.h:926
~FFieldObjectCommands()
Definition FieldSystemObjects.h:935
static FFieldSystemCommand CreateFieldCommand(const EFieldPhysicsType PhysicsType, UFieldNodeBase *RootNode, UFieldSystemMetaData *MetaData)
Definition FieldSystemObjects.h:960
int32 GetNumCommands() const
Definition FieldSystemObjects.h:954
FFieldSystemCommand BuildFieldCommand(const int32 CommandIndex) const
Definition FieldSystemObjects.h:1013
void AddFieldCommand(const FName &TargetName, UFieldNodeBase *RootNode, UFieldSystemMetaData *MetaData)
Definition FieldSystemObjects.h:938
void ResetFieldCommands()
Definition FieldSystemObjects.h:946
static FFieldSystemCommand CreateFieldCommand(const EFieldPhysicsType PhysicsType, FFieldNodeBase *RootNode)
Definition FieldSystemObjects.h:997
Definition ObjectPtr.h:488