4#include "Containers/Array.h"
144#pragma region HelperMacros
174#define UE_DECLARE_COMPONENT_INTERFACE_INTERNAL(actorcomponenttype, componentinterfacetype, actorcomponentinterfacetype, actorcomponentinterfacemember, interfacename )\
176 componentinterfacetype* Get##interfacename ##Interface() const { return (componentinterfacetype*)&actorcomponentinterfacemember; } \
178 actorcomponentinterfacetype actorcomponentinterfacemember;\
180 static actorcomponenttype* Get##interfacename(actorcomponentinterfacetype* InImpl)\
182 return (actorcomponenttype*)(((size_t)InImpl) - offsetof(actorcomponenttype, actorcomponentinterfacemember));\
184 static const actorcomponenttype* Get##interfacename(const actorcomponentinterfacetype* InImpl)\
186 return (const actorcomponenttype*)(((size_t)InImpl) - offsetof(actorcomponenttype, actorcomponentinterfacemember));\
188 friend class actorcomponentinterfacetype;
191#define UE_DECLARE_COMPONENT_INTERFACE(name, baseprefix) UE_DECLARE_COMPONENT_INTERFACE_INTERNAL(U##name, I##name , PREPROCESSOR_JOIN(PREPROCESSOR_JOIN(baseprefix, name), Interface), PREPROCESSOR_JOIN(name, Interface), name)
193#define UE_DECLARE_COMPONENT_ACTOR_INTERFACE(name) UE_DECLARE_COMPONENT_INTERFACE(name, FActor)
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
Definition PrimitiveSceneProxy.h:296
Definition ActorComponent.h:47
Definition SceneInterface.h:106
Definition HitProxies.h:135
Definition ComponentInterfaces.h:59
virtual UObject * GetUObject()=0
virtual FString GetName() const =0
T * GetUObject()
Definition ComponentInterfaces.h:88
virtual FBoxSphereBounds GetBounds() const =0
T * GetOwner()
Definition ComponentInterfaces.h:94
static ENGINE_API void RemoveImplementer(const UClass *ImplementerClass)
Definition ComponentInterfaces.cpp:15
virtual const UObject * GetUObject() const =0
virtual FString GetFullName() const =0
virtual bool IsUnreachable() const =0
virtual bool IsRegistered() const =0
virtual FPrimitiveSceneProxy * CreateSceneProxy()=0
virtual bool IsRenderStateDirty() const =0
virtual HHitProxy * CreatePrimitiveHitProxies(TArray< TRefCountPtr< HHitProxy > > &OutHitProxies)=0
virtual float GetLastRenderTimeOnScreen() const =0
static ENGINE_API TArray< FComponentInterfaceImplementation > Implementers
Definition ComponentInterfaces.h:111
virtual FString GetOwnerName() const =0
virtual void GetStreamableRenderAssetInfo(TArray< struct FStreamingRenderAssetPrimitiveInfo > &StreamableRenderAssets) const =0
virtual void MarkRenderStateDirty()=0
virtual FTransform GetTransform() const =0
virtual void GetPrimitiveStats(FPrimitiveStats &PrimitiveStats) const =0
virtual void GetUsedMaterials(TArray< UMaterialInterface * > &OutMaterials, bool bGetDebugMaterials=false) const =0
const T * GetUObject() const
Definition ComponentInterfaces.h:85
virtual UObject * GetOwner() const =0
virtual void DestroyRenderState()=0
static ENGINE_API void AddImplementer(const FComponentInterfaceImplementation &Implementer)
Definition ComponentInterfaces.cpp:10
virtual FPrimitiveSceneProxy * GetSceneProxy() const =0
virtual void PrecachePSOs()=0
virtual FSceneInterface * GetScene() const =0
virtual UWorld * GetWorld() const =0
virtual bool IsRenderStateCreated() const =0
virtual bool ShouldCreateRenderState() const =0
virtual void CreateRenderState(FRegisterComponentContext *Context)=0
Definition ComponentInterfaces.h:115
const IPrimitiveComponent * GetPrimitiveComponentInterface() const
Definition ComponentInterfaces.h:125
virtual UStaticMesh * GetStaticMesh() const =0
virtual IPrimitiveComponent * GetPrimitiveComponentInterface()=0
static ENGINE_API TArray< FComponentInterfaceImplementation > Implementers
Definition ComponentInterfaces.h:139
static ENGINE_API void RemoveImplementer(const UClass *ImplementerClass)
Definition ComponentInterfaces.cpp:33
static ENGINE_API void AddImplementer(const FComponentInterfaceImplementation &Implementer)
Definition ComponentInterfaces.cpp:28
UE_REWRITE SizeType Num() const
Definition Array.h:1144
Definition ComponentInterfaceIterator.h:10
Definition AndroidPlatformMisc.h:14
Definition RefCounting.h:454
Definition MaterialInterface.h:296
Definition StaticMesh.h:593
Definition ComponentInterfaces.h:53
TFunction< void *(UObject *)> Resolver
Definition ComponentInterfaces.h:55
UClass * Class
Definition ComponentInterfaces.h:54
Definition ComponentInterfaces.h:18
bool bIsOptionalLOD
Definition ComponentInterfaces.h:22
FPrimitiveLODStats(const FPrimitiveLODStats &Other)=default
FPrimitiveLODStats(int32 InLOD)
Definition ComponentInterfaces.h:27
int32 LODIndex
Definition ComponentInterfaces.h:19
TArray< uint16 > MaterialIndices
Definition ComponentInterfaces.h:25
FPrimitiveLODStats & operator=(FPrimitiveLODStats &&RHS)=default
int32 GetDrawCount() const
Definition ComponentInterfaces.h:38
bool bIsAvailable
Definition ComponentInterfaces.h:23
FPrimitiveLODStats(FPrimitiveLODStats &&Other)=default
uint32 Sections
Definition ComponentInterfaces.h:20
SIZE_T TotalResourceSize
Definition ComponentInterfaces.h:24
uint32 Triangles
Definition ComponentInterfaces.h:21
FPrimitiveLODStats & operator=(const FPrimitiveLODStats &RHS)=default
Definition ComponentInterfaces.h:48
TArray< FPrimitiveLODStats > LODStats
Definition ComponentInterfaces.h:49
Definition BoxSphereBounds.h:25