UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
NavigationMetaData.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
11#include "Types/SlateEnums.h"
12
13class SWidget;
14
19{
20public:
22
24 {
25 for (SNavData& Rule : Rules)
26 {
27 Rule.BoundaryRule = EUINavigationRule::Escape;
28 Rule.FocusDelegate = nullptr;
29 Rule.FocusRecipient = nullptr;
30 }
31 }
32
40 {
41 return Rules[(uint8)InNavigation].BoundaryRule;
42 }
43
51 {
52 return Rules[(uint8)InNavigation].FocusRecipient;
53 }
54
62 {
63 return Rules[(uint8)InNavigation].FocusDelegate;
64 }
65
73 {
74 Rules[(uint8)InNavigation].BoundaryRule = EUINavigationRule::Explicit;
75 Rules[(uint8)InNavigation].FocusDelegate = nullptr;
76 Rules[(uint8)InNavigation].FocusRecipient = InFocusRecipient;
77 }
78
93
100 {
101 Rules[(uint8)InNavigation].BoundaryRule = EUINavigationRule::Wrap;
102 Rules[(uint8)InNavigation].FocusDelegate = nullptr;
103 Rules[(uint8)InNavigation].FocusRecipient = nullptr;
104 }
105
110 {
111 Rules[(uint8)InNavigation].BoundaryRule = EUINavigationRule::Stop;
112 Rules[(uint8)InNavigation].FocusDelegate = nullptr;
113 Rules[(uint8)InNavigation].FocusRecipient = nullptr;
114 }
115
120 {
121 Rules[(uint8)InNavigation].BoundaryRule = EUINavigationRule::Escape;
122 Rules[(uint8)InNavigation].FocusDelegate = nullptr;
123 Rules[(uint8)InNavigation].FocusRecipient = nullptr;
124 }
125
130
132 {
133 return NavigationMethodStruct;
134 }
135
140
142 {
143 return NavigationRoutingPolicy;
144 }
145
146private:
147
148 struct SNavData
149 {
150 EUINavigationRule BoundaryRule;
151 TWeakPtr<SWidget> FocusRecipient;
152 FNavigationDelegate FocusDelegate;
153 };
154 SNavData Rules[(uint8)EUINavigation::Num];
155
157 TInstancedStruct<FNavigationMethod> NavigationMethodStruct;
158};
159
160#ifndef UE_WITH_SLATE_SIMULATEDNAVIGATIONMETADATA
161#define UE_WITH_SLATE_SIMULATEDNAVIGATIONMETADATA !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
162#endif
163
164#if UE_WITH_SLATE_SIMULATEDNAVIGATIONMETADATA
170{
171public:
173
175
177 {
178 for (int32 Index = 0; Index < UE_ARRAY_COUNT(Rules); ++Index)
179 {
180 Rules[Index].BoundaryRule = InSimulatedNavigation.GetBoundaryRule((EUINavigation)Index);
181 Rules[Index].FocusRecipient = InSimulatedNavigation.GetFocusRecipient((EUINavigation)Index);
182 }
183 }
184
186 {
187 for(SNavData& Rule : Rules)
188 {
189 Rule.BoundaryRule = InNavigationRule;
190 }
191 }
192
195 {
196 for (SNavData& Rule : Rules)
197 {
198 Rule.BoundaryRule = EUINavigationRule::Escape;
199 }
200 bIsOnNavigationConst = true;
201 }
202
203public:
206 {
207 return Rules[(uint8)InNavigation].BoundaryRule;
208 }
209
212 {
213 return Rules[(uint8)InNavigation].FocusRecipient;
214 }
215
217 bool IsOnNavigationConst() const { return bIsOnNavigationConst; }
218
219private:
220 struct SNavData
221 {
222 EUINavigationRule BoundaryRule;
223 TWeakPtr<SWidget> FocusRecipient;
224 };
225 SNavData Rules[(uint8)EUINavigation::Num];
226 bool bIsOnNavigationConst = false;
227};
228#endif //UE_WITH_SLATE_SIMULATEDNAVIGATIONMETADATA
#define ensure( InExpression)
Definition AssertionMacros.h:464
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 SLATE_METADATA_TYPE(TYPE, BASE)
Definition ISlateMetaData.h:43
EUINavigationRule
Definition NavigationReply.h:15
EWidgetNavigationRoutingPolicy
Definition NavigationRouting.h:16
EUINavigation
Definition SlateEnums.h:99
#define UE_ARRAY_COUNT(array)
Definition UnrealTemplate.h:212
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition NavigationMetaData.h:19
const FNavigationDelegate & GetFocusDelegate(EUINavigation InNavigation) const
Definition NavigationMetaData.h:61
const TInstancedStruct< FNavigationMethod > & GetNavigationMethodStruct() const
Definition NavigationMetaData.h:131
void SetNavigationStop(EUINavigation InNavigation)
Definition NavigationMetaData.h:109
void SetNavigationEscape(EUINavigation InNavigation)
Definition NavigationMetaData.h:119
void SetNavigationExplicit(EUINavigation InNavigation, TSharedPtr< SWidget > InFocusRecipient)
Definition NavigationMetaData.h:72
void SetNavigationMethodStruct(const TInstancedStruct< FNavigationMethod > &InNavigationMethodStruct)
Definition NavigationMetaData.h:126
void SetNavigationCustom(EUINavigation InNavigation, EUINavigationRule InCustomBoundaryRule, FNavigationDelegate InFocusDelegate)
Definition NavigationMetaData.h:86
EWidgetNavigationRoutingPolicy GetNavigationRoutingPolicy() const
Definition NavigationMetaData.h:141
void SetNavigationRoutingPolicy(EWidgetNavigationRoutingPolicy InNavigationRoutingPolicy)
Definition NavigationMetaData.h:136
void SetNavigationWrap(EUINavigation InNavigation)
Definition NavigationMetaData.h:99
EUINavigationRule GetBoundaryRule(EUINavigation InNavigation) const
Definition NavigationMetaData.h:39
const TWeakPtr< SWidget > & GetFocusRecipient(EUINavigation InNavigation) const
Definition NavigationMetaData.h:50
Definition NavigationMetaData.h:170
const TWeakPtr< SWidget > & GetFocusRecipient(EUINavigation InNavigation) const
Definition NavigationMetaData.h:211
FSimulatedNavigationMetaData(EUINavigationRule InNavigationRule)
Definition NavigationMetaData.h:185
FSimulatedNavigationMetaData(EOnNavigationIsConst)
Definition NavigationMetaData.h:194
bool IsOnNavigationConst() const
Definition NavigationMetaData.h:217
EUINavigationRule GetBoundaryRule(EUINavigation InNavigation) const
Definition NavigationMetaData.h:205
EOnNavigationIsConst
Definition NavigationMetaData.h:193
@ OnNavigationIsConst
Definition NavigationMetaData.h:193
Definition ISlateMetaData.h:11
Definition SWidget.h:165
Definition SharedPointer.h:692
Definition SharedPointer.h:1295
U16 Index
Definition radfft.cpp:71
Definition InstancedStruct.h:307