UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
EngineUtils.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4 Engine.h: Unreal engine public header file.
5=============================================================================*/
6
7#pragma once
8
9#include "CoreMinimal.h"
12#include "Engine/EngineTypes.h"
13#include "GameFramework/Actor.h"
14#include "HitProxies.h"
15#include "Engine/Level.h"
16#include "Engine/World.h"
17#include "UObject/UObjectHash.h"
21
22#if WITH_EDITOR
23#include "Algo/Accumulate.h"
24#include "Algo/Copy.h"
25#endif
26
27class FCanvas;
28class FViewport;
29class UCanvas;
30class UConsole;
31class UPrimitiveComponent;
32
33/*-----------------------------------------------------------------------------
34 Hit proxies.
35-----------------------------------------------------------------------------*/
36
37// Hit an actor.
38struct HActor : public HHitProxy
39{
42 TObjectPtr<const UPrimitiveComponent> PrimComponent;
45
46 HActor( AActor* InActor, const UPrimitiveComponent* InPrimComponent )
47 : Actor( InActor )
49 , SectionIndex( -1 )
50 , MaterialIndex( -1 )
51 {}
52
59
62 , Actor( InActor )
64 , SectionIndex( -1 )
65 , MaterialIndex( -1 )
66 {}
67
75
76 ENGINE_API virtual void AddReferencedObjects(FReferenceCollector& Collector) override;
78 ENGINE_API virtual FTypedElementHandle GetElementHandle() const override;
80};
81
82//
83// HBSPBrushVert
84//
85
86struct HBSPBrushVert : public HHitProxy
87{
96 virtual void AddReferencedObjects( FReferenceCollector& Collector ) override
97 {
98 //@todo: Brush Hit proxies are currently referencing between UWorld's (undesired),
99 // once this issue is resolved remove the TWeakObjectPtr and replace with Standard ABrush*.
100 // Also uncomment this line:
101 //Collector.AddReferencedObject( Brush );
102 }
103};
104
105//
106// HStaticMeshVert
107//
108
110{
119 virtual void AddReferencedObjects( FReferenceCollector& Collector ) override
120 {
121 Collector.AddReferencedObject( Actor );
122 }
123};
124
125// Hit an actor even with translucency
127{
129 HTranslucentActor( AActor* InActor, const UPrimitiveComponent* InPrimComponent )
131 {}
132
136
138 ENGINE_API virtual bool AlwaysAllowsTranslucentPrimitives() const override;
139};
140
141
142/*-----------------------------------------------------------------------------
143 Iterator for the editor that loops through all selected actors.
144-----------------------------------------------------------------------------*/
145
152{
153public:
172
178 Index( -1 ),
179 ReachedEnd( false ),
180 ConsideredCount( 0 ),
181 CurrentActor(nullptr),
183 {
186
187#if WITH_EDITOR
189 if (InClass != AActor::StaticClass())
190 {
192 if (LocalActorsOfClass.IsEmpty())
193 {
194 return;
195 }
196 }
197
198 // In the editor, you are more likely to have many worlds in memory at once.
199 // As an optimization to avoid iterating over many actors that are not in the world we are asking for,
200 // just use the actors that are in the world you asked for (persistent level + streaming levels basically).
201 // This could be useful in runtime code as well if there are many worlds in memory, but for now we will
202 // leave it in editor code.
203
204 // First determine the number of actors in the world to reduce reallocations when we append them to the array below.
205 int32 MaxActors = InWorld->PersistentLevel ? InWorld->PersistentLevel->Actors.Num() : 0;
206 for (ULevel* Level : InWorld->GetLevels())
207 {
208 if (Level && Level != InWorld->PersistentLevel)
209 {
210 MaxActors += Level->Actors.Num();
211 }
212 }
215
216 // Add persistent level actors, we need to do this explicitly to handle worlds that are not initialized yet, as
217 // InWorld->GetLevels() would return an empty level list even if the world's persistent level contains actors.
218 if (InWorld->PersistentLevel)
219 {
220 LocalWorldActors.Append(InWorld->PersistentLevel->Actors);
221 }
222
223 // Add streaming levels actors
224 for (ULevel* Level : InWorld->GetLevels())
225 {
226 if (Level && Level != InWorld->PersistentLevel)
227 {
228 LocalWorldActors.Append(Level->Actors);
229 }
230 }
231
232 if (InClass != AActor::StaticClass())
233 {
234 // Intersect the 2 arrays now to only retain the actors of the proper type. This is faster this way as we only rely on the pointer values to filter the actors (since LocalActorsOfClass
235 // is already a superset of all possible actors of class) and it avoids iterating on useless actors in the iteration loop (along with expensive RTTI calls to IsA())
236
237 // LocalActorsOfClass is the superset of all actors of the proper type so there will never be more than this amount :
239 // Pick the array that has the least element and turn it into a TSet for fast lookup
244 {
245 if (LookUpSet.Contains(Actor))
246 {
248 }
249 }
250 }
251 else
252 {
253 // If we're interested in all AActors, just use the World actors we have retrieved
255 }
256#else // WITH_EDITOR
257 constexpr EObjectFlags ExcludeFlags = RF_ClassDefaultObject;
258 GetObjectsOfClass(InClass, reinterpret_cast<TArray<UObject*>&>(ActorArray), true, ExcludeFlags, EInternalObjectFlags::Garbage);
259#endif
260
261 const auto ActorSpawnedDelegate = FOnActorSpawned::FDelegate::CreateRaw(this, &FActorIteratorState::OnActorSpawned);
263 }
264
269
275 inline AActor* GetActorChecked() const
276 {
279 return CurrentActor;
280 }
281
282private:
283 void OnActorSpawned(AActor* InActor)
284 {
285 if (InActor->IsA(DesiredClass))
286 {
287#if WITH_EDITOR
288 // In the editor, the actor list is pre-filtered by world so perform the test now instead of in the loop like at runtime :
289 if (ULevel* ActorLevel = InActor->GetLevel(); ActorLevel && (ActorLevel->GetWorld() == CurrentWorld))
290#endif // WITH_EDITOR
291 {
293 }
294 }
295 }
296};
297
300{
301 End
302};
303
306{
307 AllActors = 0x00000000, // No flags, iterate all actors
308 SkipPendingKill = 0x00000001, // Skip pending kill actors
309 OnlySelectedActors = 0x00000002, // Only iterate actors that are selected
310 OnlyActiveLevels = 0x00000004, // Only iterate active levels
311};
313
317template <typename Derived>
319{
320public:
325 {
326 // Use local version to avoid LHSs as compiler is not required to write out member variables to memory.
327 AActor* LocalCurrentActor = nullptr;
328 int32 LocalIndex = State->Index;
331 const UWorld* LocalCurrentWorld = State->CurrentWorld;
332 // LocalActorArray is immutable within the loop so we can cache its number of elements :
334 while(++LocalIndex < (LocalActorArrayNum + LocalSpawnedActorArray.Num()))
335 {
336 if (LocalIndex < LocalActorArrayNum)
337 {
339 }
340 else
341 {
343 }
344 State->ConsideredCount++;
345
346 ULevel* ActorLevel = LocalCurrentActor ? LocalCurrentActor->GetLevel() : nullptr;
347 if ( ActorLevel
348 && static_cast<const Derived*>(this)->IsActorSuitable(LocalCurrentActor)
349 && static_cast<const Derived*>(this)->CanIterateLevel(ActorLevel)
350#if !WITH_EDITOR
351 // No need to perform the world test if ActorArray has already been pre-filtered, which is the case in editor :
352 && (ActorLevel->GetWorld() == LocalCurrentWorld)
353#endif // !WITH_EDITOR
354 )
355 {
356 // ignore non-persistent world settings
357 if (ActorLevel == LocalCurrentWorld->PersistentLevel || !LocalCurrentActor->IsA(AWorldSettings::StaticClass()))
358 {
360 State->Index = LocalIndex;
361 return;
362 }
363 }
364 }
365 State->CurrentActor = nullptr;
366 State->ReachedEnd = true;
367 }
368
375 {
376 return State->GetActorChecked();
377 }
378
385 {
386 return State->GetActorChecked();
387 }
394 FORCEINLINE explicit operator bool() const
395 {
396 return !State->ReachedEnd;
397 }
398
403 {
404 check(!State->ReachedEnd);
405 State->CurrentWorld->RemoveActor(State->CurrentActor, true);
406 }
407
415 {
416 return State->ConsideredCount;
417 }
418
419protected:
427
433
441 inline bool IsActorSuitable(const AActor* Actor) const
442 {
444 {
445 return false;
446 }
447
449 {
450 return false;
451 }
452
453 return true;
454 }
455
463 inline bool CanIterateLevel(const ULevel* Level) const
464 {
466 {
467 const bool bIsLevelVisibleOrAssociating = (Level->bIsVisible && !Level->bIsBeingRemoved) || Level->bIsAssociatingLevel || Level->bIsDisassociatingLevel;
468
469 // Only allow iteration of Level if it's in the currently active level collection of the world, or is a static level.
470 const FLevelCollection* const ActorLevelCollection = Level->GetCachedLevelCollection();
471 const FLevelCollection* const ActiveLevelCollection = Level->OwningWorld ? Level->OwningWorld->GetActiveLevelCollection() : nullptr;
472
473 // If the world's active level collection is null, we can't apply any meaningful filter,
474 // so just allow iteration in this case.
476
479
481 }
482
483 return true;
484 }
485
486private:
489
490 friend bool operator==(const TActorIteratorBase& Lhs, const TActorIteratorBase& Rhs) { check(!Rhs.State); return !Lhs; }
491 friend bool operator!=(const TActorIteratorBase& Lhs, const TActorIteratorBase& Rhs) { check(!Rhs.State); return !!Lhs; }
492};
493
537
543{
544public:
556
557private:
559 const UWorld* World;
560
561 friend FActorIterator begin(const FActorRange& Range) { return FActorIterator(Range.World, Range.Flags); }
563};
564
568template <typename ActorType>
569class TActorIterator : public TActorIteratorBase<TActorIterator<ActorType>>
570{
573
574public:
587
595
601 FORCEINLINE ActorType* operator*() const
602 {
603 return CastChecked<ActorType>(**static_cast<const Super*>(this));
604 }
605
611 FORCEINLINE ActorType* operator->() const
612 {
613 return **this;
614 }
615};
616
620template <typename ActorType>
622{
623public:
632 : Flags(InFlags)
633 , World(InWorld)
634 , Class(InClass)
635 {
636 }
637
638private:
640 const UWorld* World;
642
643 friend TActorIterator<ActorType> begin(const TActorRange& Range) { return TActorIterator<ActorType>(Range.World, Range.Class, Range.Flags); }
645};
646
687
692{
693public:
700 : World(InWorld)
701 {
702 }
703
704private:
705 const UWorld* World;
706
707 friend FSelectedActorIterator begin(const FSelectedActorRange& Range) { return FSelectedActorIterator(Range.World); }
709};
710
715{
717
718public:
719
724 Super(TEXT("")),
725 Console(InConsole)
726 {}
727
728 ENGINE_API virtual void Serialize(const TCHAR* Text, ELogVerbosity::Type Verbosity, const class FName& Category) override;
729
730private:
731
733 UConsole* Console;
734};
735
736
748ENGINE_API void DrawStatsHUD( UWorld* InWorld, FViewport* Viewport, FCanvas* Canvas, UCanvas* CanvasObject, TArray<struct FDebugDisplayProperty>& DebugProperties, const FVector& ViewLocation, const FRotator& ViewRotation );
749
762
775
782
783#if !UE_BUILD_SHIPPING
784
785// Helper class containing information about UObject assets referenced.
787{
789 FString AssetName;
792
798
801 {
802 return (
803 (AssetName == Other.AssetName) &&
804 (ResourceSize == Other.ResourceSize)
805 );
806 }
807};
808
850#endif
851
852namespace EngineUtils
853{
859
862}
863
866{
868 uint8 GlobalStripFlags = 0;
869
871 uint8 ClassStripFlags = 0;
872
873public:
874
876 enum class EStrippedData : uint8
877 {
878 None = 0,
879
880 /* This flag means that Editor-only data is stripped */
881 EditorOnly = 1,
882
883 /* This flag means that AudioVisual data is stripped (e.g. target is dedicated server). */
884 AudioVisual = 2,
885
886 /* This flag means that all data needed to cook packages will be stripped. What it means is specific to
887 an asset type, and it might be a subset of both EditorOnly and AudioVisual. This flag is normally set, except
888 when cooking for a "cooked cooker" target. */
890
891 // Add global flags here (up to 8 including the already defined ones).
892
894 All = 0xff
895 };
896
907
919
930
942
948 inline bool IsEditorDataStripped() const
949 {
950 return (GlobalStripFlags & static_cast<uint8>(FStripDataFlags::EStrippedData::EditorOnly)) != 0;
951 }
952
959 {
960 return (GlobalStripFlags & static_cast<uint8>(FStripDataFlags::EStrippedData::AudioVisual)) != 0;
961 }
962
969 {
970 return (GlobalStripFlags & static_cast<uint8>(FStripDataFlags::EStrippedData::NeededForCooking)) != 0;
971 }
972
980 {
981 return (ClassStripFlags & InFlags) != 0;
982 }
983};
984
985class UTexture;
#define FORCEINLINE
Definition AndroidPlatform.h:140
#define check(expr)
Definition AssertionMacros.h:314
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
#define WITH_EDITOR
Definition Build.h:67
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
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
EActorIteratorType
Definition EngineUtils.h:300
ENGINE_API TArray< FSubLevelStatus > GetSubLevelsStatus(UWorld *InWorld, bool SortByActorCount=false)
Definition EngineUtils.cpp:399
ENGINE_API void DrawStatsHUD(UWorld *InWorld, FViewport *Viewport, FCanvas *Canvas, UCanvas *CanvasObject, TArray< struct FDebugDisplayProperty > &DebugProperties, const FVector &ViewLocation, const FRotator &ViewRotation)
Definition UnrealEngine.cpp:13253
EActorIteratorFlags
Definition EngineUtils.h:306
constexpr bool EnumHasAnyFlags(Enum Flags, Enum Contains)
Definition EnumClassFlags.h:35
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
#define DECLARE_HIT_PROXY(...)
Definition HitProxies.h:61
EHitProxyPriority
Definition HitProxies.h:27
@ HPP_UI
Definition HitProxies.h:31
const bool
Definition NetworkReplayStreaming.h:178
@ Garbage
Garbage from logical point of view and should not be referenced. This flag is mirrored in EObjectFlag...
EObjectFlags
Definition ObjectMacros.h:552
@ RF_ClassDefaultObject
This object is used as the default template for all instances of a class. One object is created for e...
Definition ObjectMacros.h:563
const FPackageFileVersion GOldestLoadablePackageFileUEVersion
Definition ObjectVersion.cpp:19
EStreamingStatus
Definition ProfilingHelpers.h:16
UClass * StaticClass()
Definition ReflectedTypeAccessors.h:13
CORE_API bool IsInGameThread()
Definition ThreadingBase.cpp:185
void GetObjectsOfClass(const UClass *ClassToLookFor, TArray< UObject * > &Results, bool bIncludeDerivedClasses, EObjectFlags ExclusionFlags, EInternalObjectFlags ExclusionInternalFlags)
Definition UObjectHash.cpp:1812
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition Actor.h:257
Definition EngineUtils.h:152
AActor * CurrentActor
Definition EngineUtils.h:165
int32 Index
Definition EngineUtils.h:159
~FActorIteratorState()
Definition EngineUtils.h:265
TArray< AActor * > ActorArray
Definition EngineUtils.h:157
UClass * DesiredClass
Definition EngineUtils.h:169
bool ReachedEnd
Definition EngineUtils.h:161
TArray< AActor * > SpawnedActorArray
Definition EngineUtils.h:167
FDelegateHandle ActorSpawnedDelegateHandle
Definition EngineUtils.h:171
int32 ConsideredCount
Definition EngineUtils.h:163
AActor * GetActorChecked() const
Definition EngineUtils.h:275
const UWorld * CurrentWorld
Definition EngineUtils.h:155
FActorIteratorState(const UWorld *InWorld, const TSubclassOf< AActor > InClass)
Definition EngineUtils.h:176
Definition EngineUtils.h:499
FActorIterator(EActorIteratorType)
Definition EngineUtils.h:532
FActorIterator(const UWorld *InWorld, const EActorIteratorFlags InFlags=EActorIteratorFlags::OnlyActiveLevels|EActorIteratorFlags::SkipPendingKill)
Definition EngineUtils.h:510
FActorIterator(const UWorld *InWorld, const TSubclassOf< AActor > InClass, const EActorIteratorFlags InFlags=EActorIteratorFlags::OnlyActiveLevels|EActorIteratorFlags::SkipPendingKill)
Definition EngineUtils.h:523
Definition EngineUtils.h:543
friend FActorIterator end(const FActorRange &Range)
Definition EngineUtils.h:562
friend FActorIterator begin(const FActorRange &Range)
Definition EngineUtils.h:561
FActorRange(const UWorld *InWorld, const EActorIteratorFlags InFlags=EActorIteratorFlags::OnlyActiveLevels|EActorIteratorFlags::SkipPendingKill)
Definition EngineUtils.h:551
Definition Archive.h:1208
Definition CanvasTypes.h:211
Definition EngineUtils.h:715
FConsoleOutputDevice(class UConsole *InConsole)
Definition EngineUtils.h:723
Definition EngineUtils.h:811
virtual bool CompareClasses(const FString &InBaseClassName, int32 InRecursionDepth)
Definition EngineUtils.cpp:105
void RecursiveObjectCollection(UObject *InStartObject, int32 InCurrDepth, int32 InMaxDepth, TMap< UObject *, bool > &OutCollectedReferences)
Definition EngineUtils.cpp:289
FContentComparisonHelper()
Definition EngineUtils.cpp:87
TMap< FString, bool > ReferenceClassesOfInterest
Definition EngineUtils.h:848
virtual ~FContentComparisonHelper()
Definition EngineUtils.cpp:101
Definition IDelegateInstance.h:14
Definition NameTypes.h:617
Definition UObjectGlobals.h:2492
Definition EngineUtils.h:651
FSelectedActorIterator(EActorIteratorType)
Definition EngineUtils.h:682
FSelectedActorIterator(const UWorld *InWorld, const TSubclassOf< AActor > InClass)
Definition EngineUtils.h:673
FSelectedActorIterator(const UWorld *InWorld)
Definition EngineUtils.h:661
Definition EngineUtils.h:692
friend FSelectedActorIterator end(const FSelectedActorRange &Range)
Definition EngineUtils.h:708
FSelectedActorRange(const UWorld *InWorld)
Definition EngineUtils.h:699
friend FSelectedActorIterator begin(const FSelectedActorRange &Range)
Definition EngineUtils.h:707
Definition StringOutputDevice.h:21
Definition EngineUtils.h:866
bool IsAudioVisualDataStripped() const
Definition EngineUtils.h:958
EStrippedData
Definition EngineUtils.h:877
bool IsDataNeededForCookingStripped() const
Definition EngineUtils.h:968
bool IsClassDataStripped(uint8 InFlags) const
Definition EngineUtils.h:979
bool IsEditorDataStripped() const
Definition EngineUtils.h:948
Definition StructuredArchiveSlots.h:52
Definition UnrealClient.h:412
Definition HitProxies.h:135
Definition EngineUtils.h:319
void ClearCurrent()
Definition EngineUtils.h:402
TActorIteratorBase(const UWorld *InWorld, TSubclassOf< AActor > InClass, const EActorIteratorFlags InFlags)
Definition EngineUtils.h:428
bool IsActorSuitable(const AActor *Actor) const
Definition EngineUtils.h:441
TActorIteratorBase(EActorIteratorType)
Definition EngineUtils.h:423
void operator++()
Definition EngineUtils.h:324
bool CanIterateLevel(const ULevel *Level) const
Definition EngineUtils.h:463
int32 GetProgressNumerator() const
Definition EngineUtils.h:414
friend bool operator!=(const TActorIteratorBase &Lhs, const TActorIteratorBase &Rhs)
Definition EngineUtils.h:491
FORCEINLINE AActor * operator->() const
Definition EngineUtils.h:384
FORCEINLINE AActor * operator*() const
Definition EngineUtils.h:374
friend bool operator==(const TActorIteratorBase &Lhs, const TActorIteratorBase &Rhs)
Definition EngineUtils.h:490
Definition EngineUtils.h:570
TActorIterator(EActorIteratorType)
Definition EngineUtils.h:591
TActorIterator(const UWorld *InWorld, TSubclassOf< ActorType > InClass=ActorType::StaticClass(), EActorIteratorFlags InFlags=EActorIteratorFlags::OnlyActiveLevels|EActorIteratorFlags::SkipPendingKill)
Definition EngineUtils.h:582
FORCEINLINE ActorType * operator->() const
Definition EngineUtils.h:611
FORCEINLINE ActorType * operator*() const
Definition EngineUtils.h:601
Definition EngineUtils.h:622
friend TActorIterator< ActorType > begin(const TActorRange &Range)
Definition EngineUtils.h:643
friend TActorIterator< ActorType > end(const TActorRange &Range)
Definition EngineUtils.h:644
TActorRange(const UWorld *InWorld, TSubclassOf< ActorType > InClass=ActorType::StaticClass(), const EActorIteratorFlags InFlags=EActorIteratorFlags::OnlyActiveLevels|EActorIteratorFlags::SkipPendingKill)
Definition EngineUtils.h:631
Definition Array.h:670
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
UE_FORCEINLINE_HINT SizeType AddUnique(ElementType &&Item)
Definition Array.h:2993
UE_FORCEINLINE_HINT void Reserve(SizeType Number)
Definition Array.h:3016
Definition UnrealString.h.inl:34
Definition SubclassOf.h:30
Definition Canvas.h:159
Definition Class.h:3793
Definition Console.h:69
Definition Level.h:423
UE_FORCEINLINE_HINT bool IsUnreachable() const
Definition UObjectBaseUtility.h:246
COREUOBJECT_API FString GetFullName(const UObject *StopOuter=NULL, EObjectFullNameFlags Flags=EObjectFullNameFlags::None) const
Definition UObjectBaseUtility.cpp:94
Definition Object.h:95
Definition Texture.h:1219
Definition World.h:918
UE_API FDelegateHandle AddOnActorSpawnedHandler(const FOnActorSpawned::FDelegate &InHandler) const
Definition World.cpp:6569
UE_API void RemoveOnActorSpawnedHandler(FDelegateHandle InHandle) const
Definition World.cpp:6574
UE_API void RemoveActor(AActor *Actor, bool bShouldModifyLevel) const
Definition World.cpp:2784
Type
Definition LogVerbosity.h:17
Type
Definition ICursor.h:18
Definition EngineUtils.h:853
EAssetToLoad
Definition EngineUtils.h:855
@ ATL_Regular
Definition EngineUtils.h:856
@ ATL_Class
Definition EngineUtils.h:857
ENGINE_API bool FindOrLoadAssetsByPath(const FString &Path, TArray< UObject * > &OutAssets, EAssetToLoad Type)
Definition EngineUtils.cpp:316
Definition EngineUtils.h:987
ENGINE_API void CheckAndReportInvalidUsage(const UObject *Owner, const FName &PropertyName, const UTexture *Texture)
Definition EngineUtils.cpp:665
@ false
Definition radaudio_common.h:23
U16 Index
Definition radfft.cpp:71
Definition EngineUtils.h:787
FString AssetName
Definition EngineUtils.h:789
bool operator==(const FContentComparisonAssetInfo &Other) const
Definition EngineUtils.h:800
int32 ResourceSize
Definition EngineUtils.h:791
FContentComparisonAssetInfo()
Definition EngineUtils.h:794
Definition World.h:634
static UE_FORCEINLINE_HINT void * Memzero(void *Dest, SIZE_T Count)
Definition UnrealMemory.h:131
Definition ObjectVersion.h:762
Definition EngineUtils.h:752
FName NativeClassName
Definition EngineUtils.h:760
int32 Count
Definition EngineUtils.h:759
FSubLevelActorDetails()
Definition EngineUtils.h:753
Definition EngineUtils.h:765
bool bInConsiderList
Definition EngineUtils.h:770
FName PackageName
Definition EngineUtils.h:766
FString LevelLabel
Definition EngineUtils.h:767
bool bPlayerInside
Definition EngineUtils.h:771
int32 LODIndex
Definition EngineUtils.h:769
TMap< FName, FSubLevelActorDetails > ActorMapToCount
Definition EngineUtils.h:773
int32 ActorCount
Definition EngineUtils.h:772
EStreamingStatus StreamingStatus
Definition EngineUtils.h:768
Definition TypedElementHandle.h:18
Definition EngineUtils.h:39
ENGINE_API bool AlwaysAllowsTranslucentPrimitives() const override
Definition EngineUtils.cpp:67
int32 MaterialIndex
Definition EngineUtils.h:44
HActor(AActor *InActor, const UPrimitiveComponent *InPrimComponent, EHitProxyPriority InPriority)
Definition EngineUtils.h:60
HActor(AActor *InActor, const UPrimitiveComponent *InPrimComponent, int32 InSectionIndex, int32 InMaterialIndex)
Definition EngineUtils.h:53
virtual ENGINE_API void AddReferencedObjects(FReferenceCollector &Collector) override
Definition EngineUtils.cpp:41
int32 SectionIndex
Definition EngineUtils.h:43
TObjectPtr< const UPrimitiveComponent > PrimComponent
Definition EngineUtils.h:42
HActor(AActor *InActor, const UPrimitiveComponent *InPrimComponent, EHitProxyPriority InPriority, int32 InSectionIndex, int32 InMaterialIndex)
Definition EngineUtils.h:68
TObjectPtr< AActor > Actor
Definition EngineUtils.h:41
virtual ENGINE_API FTypedElementHandle GetElementHandle() const override
Definition EngineUtils.cpp:52
virtual ENGINE_API EMouseCursor::Type GetMouseCursor() override
Definition EngineUtils.cpp:47
Definition EngineUtils.h:87
virtual void AddReferencedObjects(FReferenceCollector &Collector) override
Definition EngineUtils.h:96
DECLARE_HIT_PROXY(ENGINE_API)
HBSPBrushVert(ABrush *InBrush, FVector3f *InVertex)
Definition EngineUtils.h:91
FVector3f * Vertex
Definition EngineUtils.h:90
TWeakObjectPtr< ABrush > Brush
Definition EngineUtils.h:89
Definition EngineUtils.h:110
DECLARE_HIT_PROXY(ENGINE_API)
TObjectPtr< AActor > Actor
Definition EngineUtils.h:112
virtual void AddReferencedObjects(FReferenceCollector &Collector) override
Definition EngineUtils.h:119
HStaticMeshVert(AActor *InActor, FVector InVertex)
Definition EngineUtils.h:114
FVector Vertex
Definition EngineUtils.h:113
Definition EngineUtils.h:127
virtual ENGINE_API EMouseCursor::Type GetMouseCursor() override
Definition EngineUtils.cpp:76
HTranslucentActor(AActor *InActor, const UPrimitiveComponent *InPrimComponent, EHitProxyPriority InPriority)
Definition EngineUtils.h:133
virtual ENGINE_API bool AlwaysAllowsTranslucentPrimitives() const override
Definition EngineUtils.cpp:81
Definition ObjectPtr.h:488
Definition Optional.h:131
OptionalType & Emplace(ArgsType &&... Args)
Definition Optional.h:323
Definition WeakObjectPtrTemplates.h:25