UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
PerSolverFieldSystem.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Field/FieldSystem.h"
8#include "Chaos/Defines.h"
9
11{
12public:
13
35 Chaos::FPBDPositionConstraints& PositionTarget,
37
47
57 CHAOS_API void ComputeFieldRigidImpulse(const Chaos::FReal SolverTime);
58
67
70
73
76
79
81 TArray<FFieldSystemCommand>& GetTransientCommands() { return TransientCommands; }
82
84 const TArray<FFieldSystemCommand>& GetTransientCommands() const { return TransientCommands; }
85
87 TArray<FFieldSystemCommand>& GetPersistentCommands() { return PersistentCommands; }
88
90 const TArray<FFieldSystemCommand>& GetPersistentCommands() const { return PersistentCommands; }
91
105
116 const EFieldFilterType FilterType,
117 const EFieldObjectType ObjectType);
118
120 bool IsEmpty() const { return (TransientCommands.Num() == 0) && (PersistentCommands.Num() == 0); }
121
123 const TArray<FVector>& GetSamplePositions() const { return ExecutionDatas.SamplePositions; }
124
127
129 const TArray<FFieldContextIndex>& GetSampleIndices() const { return ExecutionDatas.SampleIndices; }
130
133
135 TArray<FVector>& GetOutputResults(const EFieldCommandOutputType OutputType) { return ExecutionDatas.FieldOutputs[(uint8)OutputType]; }
136
138 const TArray<FVector>& GetOutputResults(const EFieldCommandOutputType OutputType) const { return ExecutionDatas.FieldOutputs[(uint8)OutputType]; }
139
140private:
141
143 CHAOS_API void FieldForcesUpdateInternal(
146 const bool IsTransient);
147
149 CHAOS_API void FieldParameterUpdateInternal(
151 Chaos::FPBDPositionConstraints& PositionTarget,
154 const bool IsTransient);
155
157 FFieldExecutionDatas ExecutionDatas;
158
160 TArray<FFieldSystemCommand> TransientCommands;
161
163 TArray<FFieldSystemCommand> PersistentCommands;
164};
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
EFieldFilterType
Definition FieldSystemTypes.h:86
EFieldCommandOutputType
Definition FieldSystem.h:50
uint8_t uint8
Definition binka_ue_file_header.h:8
Constraint a single particle to a world-space position.
Definition PBDPositionConstraints.h:38
Definition PBDRigidsSolver.h:84
Definition FieldSystem.h:522
Definition PerSolverFieldSystem.h:11
const TArray< FFieldContextIndex > & GetSampleIndices() const
Definition PerSolverFieldSystem.h:129
TArray< FVector > & GetOutputResults(const EFieldCommandOutputType OutputType)
Definition PerSolverFieldSystem.h:135
CHAOS_API void ComputeFieldRigidImpulse(const Chaos::FReal SolverTime)
Definition PerSolverFieldSystem.cpp:286
CHAOS_API void FieldParameterUpdateCallback(Chaos::FPBDRigidsSolver *InSolver, Chaos::FPBDPositionConstraints &PositionTarget, TMap< int32, int32 > &TargetedParticles)
Definition PerSolverFieldSystem.cpp:103
const TArray< FFieldSystemCommand > & GetPersistentCommands() const
Definition PerSolverFieldSystem.h:90
bool IsEmpty() const
Definition PerSolverFieldSystem.h:120
static CHAOS_API void GetRelevantParticleHandles(TArray< Chaos::FGeometryParticleHandle * > &ParticleHandles, const Chaos::FPBDRigidsSolver *RigidSolver, const EFieldResolutionType ResolutionType)
Definition PerSolverFieldSystem.cpp:416
CHAOS_API void ComputeFieldLinearImpulse(const Chaos::FReal SolverTime)
Definition PerSolverFieldSystem.cpp:364
CHAOS_API void RemoveTransientCommand(const FFieldSystemCommand &FieldCommand)
Definition PerSolverFieldSystem.cpp:385
TArray< FFieldContextIndex > & GetSampleIndices()
Definition PerSolverFieldSystem.h:132
TArray< FFieldSystemCommand > & GetTransientCommands()
Definition PerSolverFieldSystem.h:81
CHAOS_API void AddTransientCommand(const FFieldSystemCommand &FieldCommand)
Definition PerSolverFieldSystem.cpp:375
const TArray< FVector > & GetOutputResults(const EFieldCommandOutputType OutputType) const
Definition PerSolverFieldSystem.h:138
const TArray< FVector > & GetSamplePositions() const
Definition PerSolverFieldSystem.h:123
TArray< FFieldSystemCommand > & GetPersistentCommands()
Definition PerSolverFieldSystem.h:87
TArray< FVector > & GetSamplePositions()
Definition PerSolverFieldSystem.h:126
CHAOS_API void AddPersistentCommand(const FFieldSystemCommand &FieldCommand)
Definition PerSolverFieldSystem.cpp:380
CHAOS_API void FieldForcesUpdateCallback(Chaos::FPBDRigidsSolver *RigidSolver)
Definition PerSolverFieldSystem.cpp:171
static CHAOS_API void GetFilteredParticleHandles(TArray< Chaos::FGeometryParticleHandle * > &ParticleHandles, const Chaos::FPBDRigidsSolver *RigidSolver, const EFieldFilterType FilterType, const EFieldObjectType ObjectType)
Definition PerSolverFieldSystem.cpp:475
const TArray< FFieldSystemCommand > & GetTransientCommands() const
Definition PerSolverFieldSystem.h:84
CHAOS_API void RemovePersistentCommand(const FFieldSystemCommand &FieldCommand)
Definition PerSolverFieldSystem.cpp:390
Definition Array.h:670
UE_REWRITE SizeType Num() const
Definition Array.h:1144
Definition UnrealString.h.inl:34
FRealDouble FReal
Definition Real.h:22
Definition FieldSystem.h:76
TArray< FVector > SamplePositions
Definition FieldSystem.h:78
TArray< FVector > FieldOutputs[(uint8) EFieldCommandOutputType::NumOutputs]
Definition FieldSystem.h:87
TArray< FFieldContextIndex > SampleIndices
Definition FieldSystem.h:81