UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
PhysicalMaterials.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Chaos/Core.h"
6#include "Chaos/Defines.h"
8
9namespace Chaos
10{
17
24 {
25 // Get should be only called on the Game Thread, instead use GetInternal on Physics Thread
29
30 // IsValid should be only called on the Game Thread, instead use IsValidInternal on Physics Thread
31 bool IsValid() const { return Get() != nullptr; }
32 bool IsValidInternal(const THandleArray<FChaosPhysicsMaterial>* const SimMaterials) const { return GetInternal(SimMaterials) != nullptr; }
34
35 friend bool operator ==(const FMaterialHandle& A, const FMaterialHandle& B) { return A.InnerHandle == B.InnerHandle; }
36
37 friend FArchive& operator <<(FArchive& Ar, FMaterialHandle& Value) { Ar << Value.InnerHandle; return Ar; }
38 };
39
46 {
47 CHAOS_API const FChaosPhysicsMaterial* Get() const;
49
50 bool IsValid() const { return Get() != nullptr; }
51
52 friend bool operator ==(const FConstMaterialHandle& A, const FConstMaterialHandle& B) { return A.InnerHandle == B.InnerHandle; }
53
54 friend FArchive& operator <<(FArchive& Ar, FConstMaterialHandle& Value) { Ar << Value.InnerHandle; return Ar; }
55 };
56
63 {
66
67 bool IsValid() const { return Get() != nullptr; }
68
69 friend bool operator ==(const FMaterialMaskHandle& A, const FMaterialMaskHandle& B) { return A.InnerHandle == B.InnerHandle; }
70
71 friend FArchive& operator <<(FArchive& Ar, FMaterialMaskHandle& Value) { Ar << Value.InnerHandle; return Ar; }
72 };
73
80 {
83
84 bool IsValid() const { return Get() != nullptr; }
85
86 friend bool operator ==(const FConstMaterialMaskHandle& A, const FConstMaterialMaskHandle& B) { return A.InnerHandle == B.InnerHandle; }
87
88 friend FArchive& operator <<(FArchive& Ar, FConstMaterialMaskHandle& Value) { Ar << Value.InnerHandle; return Ar; }
89 };
90
94
98
99 using FMaterialCreatedDelegate = FOnMaterialCreated::FDelegate;
100 using FMaterialDestroyedDelegate = FOnMaterialDestroyed::FDelegate;
101 using FMaterialUpdatedDelegate = FOnMaterialUpdated::FDelegate;
102
103 using FMaterialMaskCreatedDelegate = FOnMaterialMaskCreated::FDelegate;
104 using FMaterialMaskDestroyedDelegate = FOnMaterialMaskDestroyed::FDelegate;
105 using FMaterialMaskUpdatedDelegate = FOnMaterialMaskUpdated::FDelegate;
106
118 {
119 public:
120
122
126
130
134
137
141
143 UE_DEPRECATED(5.1, "GetMasterMaterials_External is deprecated, please use GetPrimaryMaterials_External instead")
147
150
155
159
160 private:
161
163 static constexpr int32 InitialCapacity = 4;
164
167
170
173
174 mutable FRWLock MaterialsLock;
175 mutable FRWLock MaterialMasksLock;
176 };
177}
178
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
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 DECLARE_MULTICAST_DELEGATE_OneParam(DelegateName, Param1Type)
Definition DelegateCombinations.h:49
Definition Defines.h:200
Definition Defines.h:85
Definition PhysicalMaterials.h:118
CHAOS_API const THandleArray< FChaosPhysicsMaterialMask > & GetMasterMaterialMasks_External() const
Definition PhysicalMaterials.cpp:109
FOnMaterialUpdated OnMaterialUpdated
Definition PhysicalMaterials.h:152
CHAOS_API const THandleArray< FChaosPhysicsMaterialMask > & GetPrimaryMaterialMasks_External() const
Definition PhysicalMaterials.cpp:119
FOnMaterialCreated OnMaterialCreated
Definition PhysicalMaterials.h:153
CHAOS_API FChaosPhysicsMaterialMask * Resolve(FChaosMaterialMaskHandle InHandle) const
CHAOS_API void UpdateMaterial(FMaterialHandle InHandle)
Definition PhysicalMaterials.cpp:92
static CHAOS_API FPhysicalMaterialManager & Get()
Definition PhysicalMaterials.cpp:62
FOnMaterialMaskUpdated OnMaterialMaskUpdated
Definition PhysicalMaterials.h:156
CHAOS_API const FChaosPhysicsMaterialMask * Resolve(FChaosConstMaterialMaskHandle InHandle) const
CHAOS_API const THandleArray< FChaosPhysicsMaterial > & GetMasterMaterials_External() const
Definition PhysicalMaterials.cpp:104
CHAOS_API FMaterialHandle Create()
Definition PhysicalMaterials.cpp:124
FOnMaterialMaskDestroyed OnMaterialMaskDestroyed
Definition PhysicalMaterials.h:158
CHAOS_API FMaterialMaskHandle CreateMask()
Definition PhysicalMaterials.cpp:139
CHAOS_API void UpdateMaterialMask(FMaterialMaskHandle InHandle)
Definition PhysicalMaterials.cpp:98
FOnMaterialDestroyed OnMaterialDestroyed
Definition PhysicalMaterials.h:154
CHAOS_API const THandleArray< FChaosPhysicsMaterial > & GetPrimaryMaterials_External() const
Definition PhysicalMaterials.cpp:114
FOnMaterialMaskCreated OnMaterialMaskCreated
Definition PhysicalMaterials.h:157
Definition CollisionKeys.h:59
Definition Handles.h:120
Definition Handles.h:152
TConstHandle< ElementType, IndexWidth, GenerationWidth > FConstHandle
Definition Handles.h:156
THandle< ElementType, IndexWidth, GenerationWidth > FHandle
Definition Handles.h:155
Definition Handles.h:93
Definition Archive.h:1208
Definition CriticalSection.h:14
Definition SkeletalMeshComponent.h:307
FOnMaterialUpdated::FDelegate FMaterialUpdatedDelegate
Definition PhysicalMaterials.h:101
FOnMaterialDestroyed::FDelegate FMaterialDestroyedDelegate
Definition PhysicalMaterials.h:100
FMaterialArray::FHandle FChaosMaterialHandle
Definition PhysicalMaterials.h:12
FOnMaterialMaskUpdated::FDelegate FMaterialMaskUpdatedDelegate
Definition PhysicalMaterials.h:105
FOnMaterialMaskDestroyed::FDelegate FMaterialMaskDestroyedDelegate
Definition PhysicalMaterials.h:104
FOnMaterialMaskCreated::FDelegate FMaterialMaskCreatedDelegate
Definition PhysicalMaterials.h:103
FOnMaterialCreated::FDelegate FMaterialCreatedDelegate
Definition PhysicalMaterials.h:99
Definition PhysicalMaterials.h:46
bool IsValid() const
Definition PhysicalMaterials.h:50
FChaosConstMaterialHandle InnerHandle
Definition PhysicalMaterials.h:48
CHAOS_API const FChaosPhysicsMaterial * Get() const
Definition PhysicalMaterials.cpp:18
friend FArchive & operator<<(FArchive &Ar, FConstMaterialHandle &Value)
Definition PhysicalMaterials.h:54
friend bool operator==(const FConstMaterialHandle &A, const FConstMaterialHandle &B)
Definition PhysicalMaterials.h:52
Definition PhysicalMaterials.h:80
bool IsValid() const
Definition PhysicalMaterials.h:84
friend bool operator==(const FConstMaterialMaskHandle &A, const FConstMaterialMaskHandle &B)
Definition PhysicalMaterials.h:86
friend FArchive & operator<<(FArchive &Ar, FConstMaterialMaskHandle &Value)
Definition PhysicalMaterials.h:88
CHAOS_API const FChaosPhysicsMaterialMask * Get() const
Definition PhysicalMaterials.cpp:46
FChaosConstMaterialMaskHandle InnerHandle
Definition PhysicalMaterials.h:82
Definition PhysicalMaterials.h:24
bool IsValidInternal(const THandleArray< FChaosPhysicsMaterial > *const SimMaterials) const
Definition PhysicalMaterials.h:32
CHAOS_API FChaosPhysicsMaterial * Get() const
Definition PhysicalMaterials.cpp:9
friend bool operator==(const FMaterialHandle &A, const FMaterialHandle &B)
Definition PhysicalMaterials.h:35
friend FArchive & operator<<(FArchive &Ar, FMaterialHandle &Value)
Definition PhysicalMaterials.h:37
void Reset()
Definition PhysicalMaterials.h:33
bool IsValid() const
Definition PhysicalMaterials.h:31
CHAOS_API FChaosPhysicsMaterial * GetInternal(const THandleArray< FChaosPhysicsMaterial > *const SimMaterials) const
Definition PhysicalMaterials.cpp:27
FChaosMaterialHandle InnerHandle
Definition PhysicalMaterials.h:28
Definition PhysicalMaterials.h:63
bool IsValid() const
Definition PhysicalMaterials.h:67
friend bool operator==(const FMaterialMaskHandle &A, const FMaterialMaskHandle &B)
Definition PhysicalMaterials.h:69
CHAOS_API FChaosPhysicsMaterialMask * Get() const
Definition PhysicalMaterials.cpp:37
FChaosMaterialMaskHandle InnerHandle
Definition PhysicalMaterials.h:65
friend FArchive & operator<<(FArchive &Ar, FMaterialMaskHandle &Value)
Definition PhysicalMaterials.h:71