10#if UE_USE_LIGHTWEIGHT_STATS
80 constexpr operator TStatId()
const
109 template<
typename DerivedScopeCounterType,
typename StatIdType = TStatId>
114#if USE_LIGHTWEIGHT_STATS_FOR_HITCH_DETECTION && USE_HITCH_DETECTION
118 if (DerivedScopeCounterType::CanEmitStat(
InStatId))
122 DerivedScopeCounterType::BeginNamedEvent(
InStatId.GetName());
133 AutoRTFM::PopOnAbortHandler(
this);
147#if USE_LIGHTWEIGHT_STATS_FOR_HITCH_DETECTION && USE_HITCH_DETECTION
148 UE::Stats::FHitchTrackingStatScope
StatScope;
160 using Base::CanEmitStat;
171 return Stat.IsValidStat();
176#if PLATFORM_IMPLEMENTS_BeginNamedEventStatic
177 FPlatformMisc::BeginNamedEventStatic(
FColor(0), StatName);
191class FScopeCycleCounter :
private UE::Stats::Private::TScopeCycleCounterBase<FScopeCycleCounter>
193 using Base = UE::Stats::Private::TScopeCycleCounterBase<FScopeCycleCounter>;
196 using Base::CanEmitStat;
232 static constexpr uint32 GetNameHash()
258 template<
typename StatDataType,
bool AllowDefault,
typename =
void>
263 static_assert(
AllowDefault,
"Default StatId not permitted. Please provide a declaration for this stat via one of the DECLARE_ Stat macros.");
267 template<
typename StatDataType,
bool AllowDefault>
274 template<
typename StatDataType,
bool AllowDefault>
275 using TStatDataType =
typename TStatDataHelper<StatDataType, AllowDefault>::Type;
278 template<
typename AllowDefaultStatToken,
typename =
void>
281 static constexpr bool Value =
false;
283 template<
typename AllowDefaultStatToken>
287 static constexpr bool Value =
true;
292 template<
typename AllowDefaultStatToken>
293 constexpr bool AllowDefaultForStat = TAllowDefaultStatHelper<AllowDefaultStatToken>::Value;
295 template<
typename GroupDataType,
typename =
void>
300 template<
typename GroupDataType>
307 template<
typename GroupDataType>
308 using TGroupDataType =
typename TGroupDataHelper<GroupDataType>::Type;
311 template<
typename StatDataType = FDefaultStatData,
typename GroupDataType =
typename StatDataType::TGroup>
314 if constexpr (!GroupDataType::IsCompileTimeEnable())
328#if UE_STATS_ALLOW_PER_THREAD_IGNORELIST
330 if (UE::Stats::IsStatOrGroupIgnoredOnCurrentThread(
StatNameHash, GroupHash))
346 template<
typename StatDataType = FDefaultStatData,
typename GroupDataType =
typename StatDataType::TGroup>
353 return FCheckedStat::MakeValid(StatName);
355 return FCheckedStat::MakeInvalid(StatName);
359 template<
typename StatDataType = FDefaultStatData,
typename GroupDataType =
typename StatDataType::TGroup>
367 return FCheckedStat::MakeInvalid(
nullptr);
375#define UE_INTERNAL_GET_STATGROUP_TYPE(GroupId)\
376 UE::Stats::Private::TGroupDataType<struct FStatGroup_##GroupId>
380#define UE_INTERNAL_ALLOW_DEFAULT_STAT(Stat)\
381 struct FAllowDefaultStat_##Stat{};
384#define UE_INTERNAL_GET_STATDATA(Stat)\
385 UE::Stats::Private::TStatDataType<struct FStat_##Stat, UE::Stats::Private::AllowDefaultForStat<struct FAllowDefaultStat_##Stat>>
389#define UE_INTERNAL_GET_STATDATA_ALLOW_DEFAULT(Stat)\
390 UE::Stats::Private::TStatDataType<struct FStat_##Stat, true>
393#define UE_IS_STAT_VERBOSE(Stat)\
394 EnumHasAnyFlags(UE_INTERNAL_GET_STATDATA(Stat)::GetFlags(), EStatFlags::Verbose)
396#define UE_IS_STAT_VERBOSE_ALLOW_DEFAULT(Stat)\
397 EnumHasAnyFlags(UE_INTERNAL_GET_STATDATA_ALLOW_DEFAULT(Stat)::GetFlags(), EStatFlags::Verbose)
400#define UE_INTERNAL_GET_STAT_IF_ENABLED(Stat)\
401 UE::Stats::Private::GetStatIfEnabled<UE_INTERNAL_GET_STATDATA(Stat)>(ANSI_TO_PROFILING(#Stat), UE_STATS_HASH_NAME(Stat))
403#define UE_INTERNAL_GET_STAT_IF_ENABLED_COND(Stat, Cond)\
404 UE::Stats::Private::GetStatIfEnabled<UE_INTERNAL_GET_STATDATA(Stat)>(ANSI_TO_PROFILING(#Stat), (Cond), UE_STATS_HASH_NAME(Stat))
406#define UE_INTERNAL_GET_QUICK_STAT_IF_ENABLED(Stat)\
407 UE::Stats::Private::GetStatIfEnabled<UE_INTERNAL_GET_STATDATA_ALLOW_DEFAULT(Stat)>(ANSI_TO_PROFILING(#Stat), UE_STATS_HASH_NAME(Stat))
409#define UE_INTERNAL_GET_QUICK_STAT_WITH_GROUP_IF_ENABLED(Stat, Group)\
410 UE::Stats::Private::GetStatIfEnabled<UE_INTERNAL_GET_STATDATA_ALLOW_DEFAULT(Stat), UE_INTERNAL_GET_STATGROUP_TYPE(Group)>(ANSI_TO_PROFILING(#Stat), UE_STATS_HASH_NAME(Stat), UE_STATS_HASH_NAME(Group))
int32 GCycleStatsShouldEmitNamedEvents
Definition CoreGlobals.cpp:462
bool GShouldEmitVerboseNamedEvents
Definition CoreGlobals.cpp:468
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
constexpr bool EnumHasAnyFlags(Enum Flags, Enum Contains)
Definition EnumClassFlags.h:35
UE_FORCEINLINE_HINT bool operator!=(const FIndexedPointer &Other) const
Definition LockFreeList.h:76
T TNotNull
Definition NotNull.h:307
EStatFlags
Definition StatsCommon.h:34
WIDECHAR PROFILER_CHAR
Definition StatsCommon.h:24
Definition LightweightStats.h:424
FScopeCycleCounter(TStatId, EStatFlags, bool bAlways=false)
Definition LightweightStats.h:426
FScopeCycleCounter(TStatId, bool bAlways=false)
Definition LightweightStats.h:429
uint32 GetFlags(uint32 Word3)
Definition CollisionFilterData.cpp:21
Type
Definition PawnAction_Move.h:11
bool operator==(const FCachedAssetKey &A, const FCachedAssetKey &B)
Definition AssetDataMap.h:501
Definition StatsSystem.cpp:35
Definition LightweightStats.h:416
static void AutoRTFMAssignFromOpenToClosed(TStatId &Closed, const TStatId &Open)
Definition LightweightStats.h:417