UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
Defines.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
4#include "HAL/Platform.h"
5
6#ifndef CHAOS_TEMPLATE_API
7#if PLATFORM_MAC || PLATFORM_LINUX
8#define CHAOS_TEMPLATE_API CHAOS_API
9#else
10#define CHAOS_TEMPLATE_API
11#endif
12#endif
13
14#ifndef CHAOSSOLVERS_TEMPLATE_API
15#if PLATFORM_MAC || PLATFORM_LINUX
16#define CHAOSSOLVERS_TEMPLATE_API CHAOS_API
17#else
18#define CHAOSSOLVERS_TEMPLATE_API
19#endif
20#endif
21
22#if COMPILE_WITHOUT_UNREAL_SUPPORT
23 #include <stdint.h>
24#else
25 #include "CoreTypes.h"
26 #include "Logging/MessageLog.h"
28#endif
29#include "Serializable.h"
30
33#include "Chaos/Core.h"
34
35#if COMPILE_WITHOUT_UNREAL_SUPPORT
36#define PI 3.14159
37#define check(condition)
38typedef int32_t int32;
39#endif
40
41namespace Chaos
42{
43 // Solver uses Kg for mass, Second for time and Cm for distance
44 // Since a Pascal is 1N/m2 => (Kg.m)/(m2.s2)
45 // we get 1MPa = 10000 Kg/(cm.s2)
46 constexpr float MegaPascalToKgPerCmS2(float MegaPascals)
47 {
48 return MegaPascals * 10000;
49 }
50
52 {
53
54 // using concrete as default ( lowest values of it )
60
61 // Unit is Kg/(cm.s2)
65 };
66
75
76 // NOTE: must match EPhysicalMaterialSoftCollisionMode
83
85 {
86 public:
87
91 enum class ECombineMode : uint8
92 {
93 Avg,
94 Min,
96 Max
97 };
98
110 void* UserData;
111
114
118
121
124
145
147 {
148 switch(Mode)
149 {
150 case ECombineMode::Avg: return (A+B)*(FReal)0.5;
151 case ECombineMode::Min: return FMath::Min(A,B);
152 case ECombineMode::Max: return FMath::Max(A,B);
153 case ECombineMode::Multiply: return A*B;
154 default: ensure(false);
155 }
156
157 return 0;
158 }
159
161 {
162 const uint8 MaxVal = FMath::Max(static_cast<uint8>(A),static_cast<uint8>(B));
163 return static_cast<ECombineMode>(MaxVal);
164 }
165
166 static constexpr bool IsSerializablePtr = true;
167
169 {
171
172 if(Ar.IsLoading())
173 {
175 Serializable.SetFromRawLowLevel(Material);
176 }
177
178 Material->Serialize(Ar);
179 }
180
197 };
198
200 {
201 public:
202
206
210
212 : SizeX(0)
213 , SizeY(0)
214 , MaskData()
215 , UVChannelIndex(0)
216 , AddressX(0)
217 , AddressY(0)
218 {
219 }
220
221 static constexpr bool IsSerializablePtr = true;
222
224 {
226
227 if (Ar.IsLoading())
228 {
230 Serializable.SetFromRawLowLevel(MaterialMask);
231 }
232
233 MaterialMask->Serialize(Ar);
234 }
235
237 {
238 Ar << SizeX << SizeY << UVChannelIndex << AddressX << AddressY << MaskData;
239 }
240 };
241}
#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
@ MegaPascals
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition Defines.h:200
TArray< uint32 > MaskData
Definition Defines.h:205
int32 AddressY
Definition Defines.h:209
int32 UVChannelIndex
Definition Defines.h:207
FChaosPhysicsMaterialMask()
Definition Defines.h:211
void Serialize(FArchive &Ar)
Definition Defines.h:236
int32 SizeX
Definition Defines.h:203
static constexpr bool IsSerializablePtr
Definition Defines.h:221
static void StaticSerialize(FArchive &Ar, TSerializablePtr< FChaosPhysicsMaterialMask > &Serializable)
Definition Defines.h:223
int32 AddressX
Definition Defines.h:208
int32 SizeY
Definition Defines.h:204
Definition Defines.h:85
FReal LinearEtherDrag
Definition Defines.h:103
FReal SleepingLinearThreshold
Definition Defines.h:105
FReal DisabledAngularThreshold
Definition Defines.h:108
FReal Friction
Definition Defines.h:99
FChaosPhysicsMaterialDamageModifier DamageModifier
Definition Defines.h:120
FReal Restitution
Definition Defines.h:101
FReal Density
Definition Defines.h:102
static constexpr bool IsSerializablePtr
Definition Defines.h:166
FChaosPhysicsMaterialStrength Strength
Definition Defines.h:119
static void StaticSerialize(FArchive &Ar, TSerializablePtr< FChaosPhysicsMaterial > &Serializable)
Definition Defines.h:168
static FReal CombineHelper(FReal A, FReal B, ECombineMode Mode)
Definition Defines.h:146
FChaosPhysicsMaterial()
Definition Defines.h:125
FReal AngularEtherDrag
Definition Defines.h:104
ECombineMode FrictionCombineMode
Definition Defines.h:116
FRealSingle BaseFrictionImpulse
Definition Defines.h:113
static ECombineMode ChooseCombineMode(ECombineMode A, ECombineMode B)
Definition Defines.h:160
ECombineMode
Definition Defines.h:92
void * UserData
Definition Defines.h:110
void Serialize(FArchive &Ar)
Definition Defines.h:181
FReal SleepingAngularThreshold
Definition Defines.h:106
FRealSingle SoftCollisionThickness
Definition Defines.h:123
FReal DisabledLinearThreshold
Definition Defines.h:107
EChaosPhysicsMaterialSoftCollisionMode SoftCollisionMode
Definition Defines.h:122
ECombineMode RestitutionCombineMode
Definition Defines.h:117
FReal StaticFriction
Definition Defines.h:100
int32 SleepCounterThreshold
Definition Defines.h:109
Definition Serializable.h:10
Definition Archive.h:1208
virtual CORE_API void UsingCustomVersion(const struct FGuid &Guid)
Definition Archive.cpp:590
UE_FORCEINLINE_HINT bool IsLoading() const
Definition Archive.h:236
CORE_API int32 CustomVer(const struct FGuid &Key) const
Definition Archive.cpp:602
Definition Array.h:670
Definition SkeletalMeshComponent.h:307
EChaosPhysicsMaterialSoftCollisionMode
Definition Defines.h:78
constexpr float MegaPascalToKgPerCmS2(float MegaPascals)
Definition Defines.h:46
FRealDouble FReal
Definition Real.h:22
float FRealSingle
Definition Real.h:14
float DamageThresholdMultiplier
Definition Defines.h:73
float TensileStrength
Definition Defines.h:62
float ShearStrength
Definition Defines.h:64
FChaosPhysicsMaterialStrength()
Definition Defines.h:55
float CompressionStrength
Definition Defines.h:63
CORE_API static const FGuid GUID
Definition ExternalPhysicsCustomObjectVersion.h:144
@ PhysicsMaterialSleepCounterThreshold
Definition ExternalPhysicsCustomObjectVersion.h:124
@ ChaosAddDensityToPhysicsMaterial
Definition FortniteValkyrieBranchObjectVersion.h:25
CORE_API static const FGuid GUID
Definition FortniteValkyrieBranchObjectVersion.h:45