7#include "Containers/Array.h"
9#include "Containers/Queue.h"
30 const int NumParticles,
35 Array.SetNum(NumParticles);
103template<
typename FieldType>
107 for (
int32 i = 0; i < FieldSize; ++i)
114template<
typename FieldType>
127template<
typename FieldType>
134template<
typename FieldType>
267 MetaData.Add(Meta.Key) = Meta.Value.Get();
301 MetaData.Add(Meta.Key) = Meta.Value.Get();
340template<
typename ResultType>
389 TargetContext.
MetaData.Remove(MetaType);
501 NodesOffsets.
Add(NodesParams.
Num());
502 NodesParams.
Add(
static_cast<float>(
Type()));
569 MetaData.Add(Meta.Key).Reset(Meta.Value->NewCopy());
584 template <
class TMetaData>
636 if (NodeA->SerializationType() == NodeB->SerializationType())
638 return NodeA->operator==(*NodeB);
#define check(expr)
Definition AssertionMacros.h:314
@ INDEX_NONE
Definition CoreMiscDefines.h:150
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
EFieldObjectType
Definition FieldSystemTypes.h:103
EFieldResolutionType
Definition FieldSystemTypes.h:72
const FName & GetFieldPhysicsName(EFieldPhysicsType PhysicsType)
Definition FieldSystemTypes.h:374
EFieldPhysicsType
Definition FieldSystemTypes.h:148
EFieldPhysicsType GetFieldPhysicsType(const FName &PhysicsName)
Definition FieldSystemTypes.h:382
EFieldPositionType
Definition FieldSystemTypes.h:119
EFieldFilterType
Definition FieldSystemTypes.h:86
FORCEINLINE void ResetResultsArrays(const int32 FieldSize, const TArray< EFieldCommandOutputType > &FieldTargets, TArray< FieldType > FieldArray[(uint8) EFieldCommandOutputType::NumOutputs], const FieldType DefaultValue)
Definition FieldSystem.h:115
FORCEINLINE TArray< FVector > & GetResultArray< FVector >(FFieldContext &FieldContext)
Definition FieldSystem.h:345
EFieldCommandHandlesType
Definition FieldSystem.h:68
FORCEINLINE void ResetResultsArray(const int32 FieldSize, TArray< FieldType > &FieldArray, const FieldType DefaultValue)
Definition FieldSystem.h:104
FORCEINLINE TArray< float > & GetResultArray< float >(FFieldContext &FieldContext)
Definition FieldSystem.h:352
FORCEINLINE void EmptyResultsArray(TArray< FieldType > &FieldArray)
Definition FieldSystem.h:128
EFieldCommandResultType
Definition FieldSystem.h:60
FORCEINLINE TArray< ResultType > & GetResultArray(FFieldContext &FieldContext)
FORCEINLINE TArray< int32 > & GetResultArray< int32 >(FFieldContext &FieldContext)
Definition FieldSystem.h:359
bool FieldsEqual(const TUniquePtr< T > &NodeA, const TUniquePtr< T > &NodeB)
Definition FieldSystem.h:630
EFieldCommandOutputType
Definition FieldSystem.h:50
FORCEINLINE void EmptyResultsArrays(const TArray< EFieldCommandOutputType > &FieldTargets, TArray< FieldType > FieldArray[(uint8) EFieldCommandOutputType::NumOutputs])
Definition FieldSystem.h:135
#define FVector
Definition IOSSystemIncludes.h:8
USkinnedMeshComponent float
Definition SkinnedMeshComponent.h:60
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition Archive.h:1208
Definition FieldSystem.h:404
virtual ~FFieldNodeBase()
Definition FieldSystem.h:439
virtual void FillSetupDatas(TArray< int32 > &NodesOffsets, TArray< float > &NodesParams, const float CommandTime) const
Definition FieldSystem.h:450
ESerializationType
Definition FieldSystem.h:418
@ FieldNode_FRadialIntMask
Definition FieldSystem.h:421
@ FieldNode_FRandomVector
Definition FieldSystem.h:429
@ FieldNode_FUniformInteger
Definition FieldSystem.h:420
@ FieldNode_FRadialFalloff
Definition FieldSystem.h:423
@ FieldNode_FWaveScalar
Definition FieldSystem.h:434
@ FieldNode_FCullingField
Definition FieldSystem.h:433
@ FieldNode_FSumScalar
Definition FieldSystem.h:430
@ FieldNode_FBoxFalloff
Definition FieldSystem.h:425
@ FieldNode_FRadialVector
Definition FieldSystem.h:428
@ FieldNode_FSumVector
Definition FieldSystem.h:431
@ FieldNode_FConversionField
Definition FieldSystem.h:432
@ FieldNode_FReturnResultsTerminal
Definition FieldSystem.h:435
@ FieldNode_FUniformScalar
Definition FieldSystem.h:422
@ FieldNode_FPlaneFalloff
Definition FieldSystem.h:424
@ FieldNode_FUniformVector
Definition FieldSystem.h:427
@ FieldNode_Null
Definition FieldSystem.h:419
@ FieldNode_FNoiseField
Definition FieldSystem.h:426
void SetName(const FName &NameIn)
Definition FieldSystem.h:464
FName GetName() const
Definition FieldSystem.h:463
virtual ESerializationType SerializationType() const
Definition FieldSystem.h:441
virtual float EvalMaxMagnitude() const
Definition FieldSystem.h:453
virtual FFieldNodeBase * NewCopy() const =0
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
FFieldNodeBase()
Definition FieldSystem.h:438
virtual void Serialize(FArchive &Ar)
Definition FieldSystem.h:443
virtual bool operator==(const FFieldNodeBase &Node)
Definition FieldSystem.h:444
virtual EFieldType Type() const
Definition FieldSystem.h:440
virtual void ComputeFieldBounds(FVector &MinBounds, FVector &MaxBounds, FVector &CenterPosition) const
Definition FieldSystem.h:456
virtual void FillSetupCount(int32 &NumOffsets, int32 &NumParams) const
Definition FieldSystem.h:447
Definition FieldSystem.h:481
virtual ~FFieldNode()
Definition FieldSystem.h:484
virtual void FillSetupDatas(TArray< int32 > &NodesOffsets, TArray< float > &NodesParams, const float CommandTime) const override
Definition FieldSystem.h:499
virtual EFieldType Type() const
Definition FieldSystem.h:489
virtual void FillSetupCount(int32 &NumOffsets, int32 &NumParams) const override
Definition FieldSystem.h:492
virtual void Evaluate(FFieldContext &, TFieldArrayView< T > &Results) const =0
static EFieldType StaticType()
Definition FieldSystem.h:522
float MaxMagnitude
Definition FieldSystem.h:618
FName TargetAttribute
Definition FieldSystem.h:610
FFieldSystemCommand(const EFieldPhysicsType PhsyicsTypeIn, FFieldNodeBase *RootNodeIn)
Definition FieldSystem.h:544
bool operator!=(const FFieldSystemCommand &Other) const
Definition FieldSystem.h:608
FFieldSystemCommand(const FFieldSystemCommand &Other)
Definition FieldSystem.h:557
FVector CenterPosition
Definition FieldSystem.h:619
void InitFieldNodes(const double TimeSeconds, const FName &Name)
Definition FieldSystem.h:600
bool HasMetaData(const FFieldSystemMetaData::EMetaType Key) const
Definition FieldSystem.h:573
CHAOS_API bool operator==(const FFieldSystemCommand &) const
Definition FieldSystem.cpp:32
const TMetaData * GetMetaDataAs(const FFieldSystemMetaData::EMetaType Key) const
Definition FieldSystem.h:585
FBox BoundingBox
Definition FieldSystem.h:616
FFieldSystemCommand()
Definition FieldSystem.h:524
float TimeCreation
Definition FieldSystem.h:614
EFieldPhysicsType PhysicsType
Definition FieldSystem.h:617
TUniquePtr< FFieldNodeBase > RootNode
Definition FieldSystem.h:611
FFieldSystemCommand(const FName &TargetAttributeIn, FFieldNodeBase *RootNodeIn)
Definition FieldSystem.h:534
void SetMetaData(const FFieldSystemMetaData::EMetaType Key, TUniquePtr< FFieldSystemMetaData > &&Value)
Definition FieldSystem.h:590
void SetMetaData(const FFieldSystemMetaData::EMetaType Key, FFieldSystemMetaData *Value)
Definition FieldSystem.h:595
const TUniquePtr< FFieldSystemMetaData > & GetMetaData(const FFieldSystemMetaData::EMetaType Key) const
Definition FieldSystem.h:578
FName CommandName
Definition FieldSystem.h:613
TMap< FFieldSystemMetaData::EMetaType, TUniquePtr< FFieldSystemMetaData > > MetaData
Definition FieldSystem.h:621
Definition NameTypes.h:617
FORCEINLINE bool IsEqual(const FName &Other, const ENameCase CompareMethod=ENameCase::IgnoreCase, const bool bCompareNumber=true) const
Definition NameTypes.h:1585
Definition FieldSystem.h:370
~FScopedFieldContextMetaData()
Definition FieldSystem.h:387
FScopedFieldContextMetaData(FFieldContext &InContext, FFieldSystemMetaData *InMetaData)
Definition FieldSystem.h:379
UE_REWRITE SizeType Num() const
Definition Array.h:1144
void SetNum(SizeType NewNum, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2308
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
Definition FieldArrayView.h:18
Definition UnrealString.h.inl:34
Definition UniquePtr.h:107
bool IsValid() const
Definition UniquePtr.h:280
UE_FORCEINLINE_HINT T * Get() const
Definition UniquePtr.h:324
FRealDouble FReal
Definition Real.h:22
@ false
Definition radaudio_common.h:23
Definition FieldSystem.h:22
static void ContiguousIndices(TArray< FFieldContextIndex > &Array, const int NumParticles, const bool bForce=true)
Definition FieldSystem.h:28
FFieldContextIndex(int32 InSample=INDEX_NONE, int32 InResult=INDEX_NONE)
Definition FieldSystem.h:23
int32 Result
Definition FieldSystem.h:45
int32 Sample
Definition FieldSystem.h:44
Definition FieldSystem.h:242
TArray< int32 > & IntegerResults
Definition FieldSystem.h:336
TFieldArrayView< FVector > SamplePositions
Definition FieldSystem.h:328
Chaos::FReal TimeSeconds
Definition FieldSystem.h:332
FFieldContext(const TFieldArrayView< FFieldContextIndex > &SampleIndicesIn, const TFieldArrayView< FVector > &SamplePositionsIn, const UniquePointerMap &MetaDataIn, const Chaos::FReal TimeSecondsIn, TArray< FVector > &VectorResultsIn, TArray< float > &ScalarResultsIn, TArray< int32 > &IntegerResultsIn, TArray< FFieldContextIndex > &IndexResultsIn, TArray< FFieldContextIndex > &CullingResultsIn)
Definition FieldSystem.h:253
FFieldContext(const FFieldContext &)=delete
TMap< FFieldSystemMetaData::EMetaType, FFieldSystemMetaData * > PointerMap
Definition FieldSystem.h:244
TMap< FFieldSystemMetaData::EMetaType, TUniquePtr< FFieldSystemMetaData > > UniquePointerMap
Definition FieldSystem.h:243
FFieldContext & operator=(const FFieldContext &)=delete
TUniquePtr< FFieldSystemMetaDataCulling > CullingData
Definition FieldSystem.h:331
TArray< FVector > & VectorResults
Definition FieldSystem.h:334
TFieldArrayView< FFieldContextIndex > SampleIndices
Definition FieldSystem.h:327
FFieldContext(FFieldExecutionDatas &ExecutionDatas, const UniquePointerMap &MetaDataIn, const Chaos::FReal TimeSecondsIn)
Definition FieldSystem.h:289
PointerMap MetaData
Definition FieldSystem.h:330
TFieldArrayView< FFieldContextIndex > GetEvaluatedSamples()
Definition FieldSystem.h:308
FFieldContext(const TFieldArrayView< FFieldContextIndex > &SampleIndicesIn, const TFieldArrayView< FVector > &SamplePositionsIn, const PointerMap &MetaDataIn, const Chaos::FReal TimeSecondsIn, TArray< FVector > &VectorResultsIn, TArray< float > &ScalarResultsIn, TArray< int32 > &IntegerResultsIn, TArray< FFieldContextIndex > &IndexResultsIn, TArray< FFieldContextIndex > &CullingResultsIn)
Definition FieldSystem.h:273
FFieldContext(FFieldContext &&)=delete
TArray< float > & ScalarResults
Definition FieldSystem.h:335
TArray< FFieldContextIndex > & IndexResults
Definition FieldSystem.h:337
Definition FieldSystem.h:76
TArray< Chaos::FGeometryParticleHandle * > ParticleHandles[(uint8) EFieldCommandHandlesType::NumHandles]
Definition FieldSystem.h:84
TArray< FVector > SamplePositions
Definition FieldSystem.h:78
TArray< FVector > FieldOutputs[(uint8) EFieldCommandOutputType::NumOutputs]
Definition FieldSystem.h:87
TArray< int32 > IntegerResults[(uint8) EFieldCommandResultType::NumResults]
Definition FieldSystem.h:96
TArray< float > ScalarResults[(uint8) EFieldCommandResultType::NumResults]
Definition FieldSystem.h:93
TArray< FVector > VectorResults[(uint8) EFieldCommandResultType::NumResults]
Definition FieldSystem.h:90
TArray< FFieldContextIndex > IndexResults[(uint8) EFieldCommandResultType::NumResults]
Definition FieldSystem.h:99
TArray< FFieldContextIndex > SampleIndices
Definition FieldSystem.h:81
static TVector< double > Zero()
Definition Vector.h:112