UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SkinnedAssetAsyncCompileUtils.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
9#if WITH_EDITOR
11#endif //WITH_EDITOR
12#include "Async/AsyncWork.h"
13#include "SkeletalMeshTypes.h"
14
15class USkinnedAsset;
16
34
40
46
56
57#if WITH_EDITOR
58
59// Any thread implicated in the build must have a valid scope to be granted access to protected properties without causing any stalls.
61{
62public:
65 ENGINE_API static bool ShouldWaitOnLockedProperties(const USkinnedAsset* SkinnedAsset);
66
67private:
68 const USkinnedAsset* PreviousScope = nullptr;
69 // Only the thread(s) compiling this Skeletal mesh will have full access to protected properties without causing any stalls.
70 static thread_local const USkinnedAsset* SkinnedAssetBeingAsyncCompiled;
71};
72
76class FSkinnedAssetAsyncBuildWorker : public FNonAbandonableTask
77{
78public:
79 USkinnedAsset* SkinnedAsset;
83
85 FSkinnedAssetAsyncBuildWorker(
88 : SkinnedAsset(InSkinnedAsset)
90 {
91 }
92
94 FSkinnedAssetAsyncBuildWorker(
97 : SkinnedAsset(InSkinnedAsset)
99 {
100 }
101
102 FSkinnedAssetAsyncBuildWorker(
105 : SkinnedAsset(InSkinnedAsset)
107 {
108 }
109
110 inline TStatId GetStatId() const
111 {
113 }
114
115 void ENGINE_API DoWork();
116};
117
118struct FSkinnedAssetAsyncBuildTask : public FAsyncTask<FSkinnedAssetAsyncBuildWorker>
119{
123 : FAsyncTask<FSkinnedAssetAsyncBuildWorker>(InSkinnedAsset, MoveTemp(InPostLoadContext))
124 , SkinnedAsset(InSkinnedAsset)
125 {
126 }
127
131 : FAsyncTask<FSkinnedAssetAsyncBuildWorker>(InSkinnedAsset, MoveTemp(InBuildContext))
132 , SkinnedAsset(InSkinnedAsset)
133 {
134 }
135
139 : FAsyncTask<FSkinnedAssetAsyncBuildWorker>(InSkinnedAsset, MoveTemp(InAsyncTaskContext))
140 , SkinnedAsset(InSkinnedAsset)
141 {
142 }
143
144 const USkinnedAsset* SkinnedAsset;
145};
146
147#endif // #if WITH_EDITOR
#define RETURN_QUICK_DECLARE_CYCLE_STAT(StatId, GroupId)
Definition Stats.h:655
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition AsyncWork.h:585
Definition Event.h:21
Definition AsyncWork.h:663
Definition SkinnedAssetAsyncCompileUtils.h:42
TUniquePtr< class FSkinnedMeshComponentRecreateRenderStateContext > RecreateRenderStateContext
Definition SkinnedAssetAsyncCompileUtils.h:44
Definition SkinnedAssetAsyncCompileUtils.h:18
FSkinnedAssetCompilationContext & operator=(const FSkinnedAssetCompilationContext &)=delete
bool bIsSerializeSaving
Definition SkinnedAssetAsyncCompileUtils.h:29
FSkinnedAssetCompilationContext(FSkinnedAssetCompilationContext &&)=default
FSkinnedAssetCompilationContext(const FSkinnedAssetCompilationContext &)=delete
FSkinnedAssetCompilationContext & operator=(FSkinnedAssetCompilationContext &&)=default
Definition SkinnedAssetAsyncCompileUtils.h:36
bool bHasCachedDerivedData
Definition SkinnedAssetAsyncCompileUtils.h:38
Definition SkinnedAssetAsyncCompileUtils.h:48
FSkinnedAsyncTaskContext(FEvent *InEvent)
Definition SkinnedAssetAsyncCompileUtils.h:50
FEvent * Event
Definition SkinnedAssetAsyncCompileUtils.h:54
Definition UniquePtr.h:107
Definition SkinnedAsset.h:47
Definition DetourTileCache.cpp:72
Definition Optional.h:131
Definition LightweightStats.h:416