UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
HitProxies.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4 HitProxies.h: Hit proxy definitions.
5=============================================================================*/
6
7#pragma once
8
11
12#include "HitProxies.generated.h"
13
16
17namespace EMouseCursor { enum Type : int; }
18
25UENUM()
33
38{
39public:
41 Parent(InParent),
42 Name(InName)
43 {}
44 HHitProxyType* GetParent() const { return Parent; }
45 const TCHAR* GetName() const { return Name; }
46private:
47 HHitProxyType* Parent;
48 const TCHAR* Name;
49};
50
55#if !UE_BUILD_DOCS
56#define DECLARE_HIT_PROXY_STATIC( ... /* APIDecl */) \
57 public: \
58 /* NOTE: This static method must NOT be inlined as it will not work across DLL boundaries if so */ \
59 static __VA_ARGS__ HHitProxyType* StaticGetType();
60
61#define DECLARE_HIT_PROXY( ... /* APIDecl */) \
62 DECLARE_HIT_PROXY_STATIC( __VA_ARGS__ ) \
63 virtual HHitProxyType* GetType() const override \
64 { \
65 return StaticGetType(); \
66 }
67#endif
68
72#define IMPLEMENT_HIT_PROXY_BASE(TypeName,ParentType) \
73 HHitProxyType* TypeName::StaticGetType() \
74 { \
75 static HHitProxyType StaticType(ParentType,TEXT(#TypeName)); \
76 return &StaticType; \
77 }
78
79#define IMPLEMENT_HIT_PROXY(TypeName,ParentTypeName) \
80 IMPLEMENT_HIT_PROXY_BASE(TypeName,ParentTypeName::StaticGetType())
81
86{
87 friend class HHitProxy;
88public:
89
93
96
99
103 ENGINE_API FColor GetColor() const;
104
111
113 {
114 return X.Index == Y.Index;
115 }
116
118 {
119 return X.Index != Y.Index;
120 }
121
122private:
123
126
128 int32 Index;
129};
130
135{
136 //DECLARE_HIT_PROXY( ENGINE_API )
137 //We separate the GetType function implementation here because this is the base class/
138 //The base class function should not have the override keyword here.
140 virtual HHitProxyType* GetType() const
141 {
142 return StaticGetType();
143 }
144public:
145
148
151
154
157 ENGINE_API virtual ~HHitProxy();
158 virtual void AddReferencedObjects( FReferenceCollector& Collector ) {}
159
164
169
178 {
179 return false;
180 }
181
186
187private:
188 void InitHitProxy();
189};
190
191// Dynamically cast a HHitProxy object type-safely.
192template<typename DesiredType>
194{
195 return ((Src != NULL) && (Src->IsA(DesiredType::StaticGetType()))) ? ((DesiredType*)Src) : NULL;
196}
197
202{
204
206
207 HObject(UObject* InObject): HHitProxy(HPP_UI), Object(InObject) {}
208 virtual void Serialize(FArchive& Ar)
209 {
210 Ar << Object;
211 }
212};
213
218{
219public:
220
225 virtual void AddHitProxy(HHitProxy* HitProxy) = 0;
226};
#define NULL
Definition oodle2base.h:134
@ INDEX_NONE
Definition CoreMiscDefines.h:150
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
#define X(Name, Desc)
Definition FormatStringSan.h:47
DesiredType * HitProxyCast(HHitProxy *Src)
Definition HitProxies.h:193
EHitProxyPriority
Definition HitProxies.h:27
@ HPP_World
Definition HitProxies.h:28
@ HPP_UI
Definition HitProxies.h:31
@ HPP_Foreground
Definition HitProxies.h:30
@ HPP_Wireframe
Definition HitProxies.h:29
#define DECLARE_HIT_PROXY_STATIC(...)
Definition HitProxies.h:56
#define UENUM(...)
Definition ObjectMacros.h:749
Definition Archive.h:1208
Definition HitProxies.h:218
virtual void AddHitProxy(HHitProxy *HitProxy)=0
Definition HitProxies.h:86
friend ENGINE_API class HHitProxy * GetHitProxyById(FHitProxyId Id)
Definition HitProxies.cpp:142
friend bool operator!=(FHitProxyId X, FHitProxyId Y)
Definition HitProxies.h:117
ENGINE_API FColor GetColor() const
Definition HitProxies.cpp:82
static ENGINE_API const FHitProxyId InvisibleHitProxyId
Definition HitProxies.h:92
FHitProxyId()
Definition HitProxies.h:95
friend bool operator==(FHitProxyId X, FHitProxyId Y)
Definition HitProxies.h:112
Definition RefCounting.h:252
Definition UObjectGlobals.h:2492
Definition HitProxies.h:38
const TCHAR * GetName() const
Definition HitProxies.h:45
HHitProxyType(HHitProxyType *InParent, const TCHAR *InName)
Definition HitProxies.h:40
HHitProxyType * GetParent() const
Definition HitProxies.h:44
Definition HitProxies.h:135
virtual bool AlwaysAllowsTranslucentPrimitives() const
Definition HitProxies.h:177
const EHitProxyPriority Priority
Definition HitProxies.h:147
FHitProxyId Id
Definition HitProxies.h:153
virtual ENGINE_API ~HHitProxy()
Definition HitProxies.cpp:106
virtual void AddReferencedObjects(FReferenceCollector &Collector)
Definition HitProxies.h:158
virtual ENGINE_API FTypedElementHandle GetElementHandle() const
Definition HitProxies.cpp:137
ENGINE_API bool IsA(HHitProxyType *TestType) const
Definition HitProxies.cpp:118
const EHitProxyPriority OrthoPriority
Definition HitProxies.h:150
virtual ENGINE_API EMouseCursor::Type GetMouseCursor()
Definition HitProxies.cpp:132
Definition Object.h:95
Definition ICursor.h:16
Type
Definition ICursor.h:18
int
Definition TestServer.py:515
U16 Index
Definition radfft.cpp:71
Definition Color.h:486
Definition TypedElementHandle.h:18
Definition HitProxies.h:202
UObject * Object
Definition HitProxies.h:205
DECLARE_HIT_PROXY(ENGINE_API)
virtual void Serialize(FArchive &Ar)
Definition HitProxies.h:208
HObject(UObject *InObject)
Definition HitProxies.h:207