UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SRadialSlider.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
6#include "CoreMinimal.h"
7#include "Curves/CurveFloat.h"
9#include "Input/Reply.h"
10#include "Misc/Attribute.h"
11#include "Styling/CoreStyle.h"
12#include "Styling/SlateBrush.h"
13#include "Styling/SlateColor.h"
14#include "Styling/SlateTypes.h"
17#include "Styling/StyleColors.h"
19#include "Widgets/SLeafWidget.h"
20
21class FPaintArgs;
23class UCurveFloat;
24
26 : public SLeafWidget
27{
28public:
29
57
59 SLATE_ARGUMENT(bool, MouseUsesStep)
60
61
62 SLATE_ARGUMENT(bool, RequiresControllerLock)
63
64
66
67
69
70
72
73
75
76
78
79
81
82
84
85
87
88
90
91
92 SLATE_ATTRIBUTE( float, Value )
93
94
96
97
99
100
102
103
105
106
108
109
111
112
114
115
117
118
119 SLATE_ARGUMENT(bool, IsFocusable)
120
121
122 SLATE_ARGUMENT(bool, UseVerticalDrag)
123
124
125 SLATE_ARGUMENT(bool, ShowSliderHandle)
126
127
128 SLATE_ARGUMENT(bool, ShowSliderHand)
129
130
131 SLATE_EVENT(FSimpleDelegate, OnMouseCaptureBegin)
132
133
134 SLATE_EVENT(FSimpleDelegate, OnMouseCaptureEnd)
135
136
137 SLATE_EVENT(FSimpleDelegate, OnControllerCaptureBegin)
138
139
140 SLATE_EVENT(FSimpleDelegate, OnControllerCaptureEnd)
141
142
143 SLATE_EVENT( FOnFloatValueChanged, OnValueChanged )
144
146
149
155 ADVANCEDWIDGETS_API void Construct( const SRadialSlider::FArguments& InDeclaration );
156
159
161 ADVANCEDWIDGETS_API float GetMinValue() const;
162
164 ADVANCEDWIDGETS_API float GetMaxValue() const;
165
168
171
173 float GetAngularOffset() const { return AngularOffset; }
174
177
179 ADVANCEDWIDGETS_API float GetValue() const;
180
183
186
188 ADVANCEDWIDGETS_API float GetNormalizedValue(float RawValue) const;
189
192
195
198
201
204
207
210
213
216
219
222
225
228
231
234
236 ADVANCEDWIDGETS_API float GetStepSize() const;
237
240
242 ADVANCEDWIDGETS_API void SetMouseUsesStep(bool MouseUsesStep);
243
245 ADVANCEDWIDGETS_API void SetRequiresControllerLock(bool RequiresControllerLock);
246
248 ADVANCEDWIDGETS_API void SetUseVerticalDrag(bool UseVerticalDrag);
249
251 ADVANCEDWIDGETS_API void SetShowSliderHandle(bool ShowSliderHandle);
252
254 ADVANCEDWIDGETS_API void SetShowSliderHand(bool ShowSliderHand);
255
256public:
257
258 // SWidget overrides
259
260 ADVANCEDWIDGETS_API virtual int32 OnPaint( const FPaintArgs& Args, const FGeometry& AllottedGeometry, const FSlateRect& MyCullingRect, FSlateWindowElementList& OutDrawElements, int32 LayerId, const FWidgetStyle& InWidgetStyle, bool bParentEnabled ) const override;
261 ADVANCEDWIDGETS_API virtual FVector2D ComputeDesiredSize(float) const override;
270 ADVANCEDWIDGETS_API virtual void OnFocusLost(const FFocusEvent& InFocusEvent) override;
272
273 ADVANCEDWIDGETS_API virtual bool SupportsKeyboardFocus() const override;
274 ADVANCEDWIDGETS_API virtual bool IsInteractable() const override;
275#if WITH_ACCESSIBILITY
277#endif
278
280 ADVANCEDWIDGETS_API bool IsLocked() const;
281
282protected:
283
289 ADVANCEDWIDGETS_API virtual void CommitValue(float NewValue);
290
298 ADVANCEDWIDGETS_API float PositionToValue(const FGeometry& MyGeometry, const FVector2D& AbsolutePosition);
299
302
303protected:
304
305 // Holds the style passed to the widget upon construction.
307
308 // Holds a flag indicating whether the slider is locked.
310
311 // Holds the color of the slider bar.
313
314 // Holds the color for the completed progress of the slider bar.
316
317 // Holds the color of the slider handle.
319
320 // Holds the color of the center background.
322
323 // Center background image brush
325
326 // Thickness used for slider bar instead of Style->BarThickness (see SetThickness)
328
329 // Holds the slider's current value.
331
332 // Whether the slider should draw it's progress bar from a custom value on the slider
334
335 // The value where the slider should draw it's progress bar from, independent of direction
337
338 // Holds the initial cursor in case a custom cursor has been specified, so we can restore it after dragging the slider
340
343
346
349
352
355
358
361
364
365 // Holds a flag indicating whether a controller/keyboard is manipulating the slider's value.
366 // When true, navigation away from the widget is prevented until a new value has been accepted or canceled.
368
371
374
377
380
383
386
387private:
388
389 // Resets controller input state. Fires delegates.
390 ADVANCEDWIDGETS_API void ResetControllerState();
391
392 // Helper function to convert Absolute Position to Angle
393 ADVANCEDWIDGETS_API float GetAngleFromPosition(const FGeometry& MyGeometry, const FVector2D& AbsolutePosition);
394
395 // Called on Mouse / Touch input to cache relevant properties
396 ADVANCEDWIDGETS_API void OnInputStarted(const FGeometry& MyGeometry, const FVector2D& InputAbsolutePosition);
397
398 // Helper function for adding slider points to a slider points array
399 ADVANCEDWIDGETS_API void AddSliderPointToArray(TArray<FVector2D>& SliderPoints, const bool bIsUnique, const FVector2D& SliderPoint) const;
400
401 // Holds a delegate that is executed when the mouse is pressed and a capture begins.
402 FSimpleDelegate OnMouseCaptureBegin;
403
404 // Holds a delegate that is executed when the mouse is let up and a capture ends.
405 FSimpleDelegate OnMouseCaptureEnd;
406
407 // Holds a delegate that is executed when capture begins for controller or keyboard.
408 FSimpleDelegate OnControllerCaptureBegin;
409
410 // Holds a delegate that is executed when capture ends for controller or keyboard.
411 FSimpleDelegate OnControllerCaptureEnd;
412
413 // Holds a delegate that is executed when the slider's value changed.
414 FOnFloatValueChanged OnValueChanged;
415
416 // Holds the current interaction's unclamped input angle.
417 float AbsoluteInputAngle;
418
419 // Stores the previous absolute position to support calculating rotational delta for relative input
420 FVector2D PreviousAbsolutePosition;
421
422 // Settings for behavior when IsUsingVerticalDrag is true
423 // For when UseVerticalDrag is true, whether we're fine tuning the value
424 bool bIsUsingFineTune;
425
426 // The key to use when fine tuning vertical drag
427 FKey FineTuneKey;
428
429 float VerticalDragMouseSpeedNormal = 0.2f;
430 float VerticalDragMouseSpeedFineTune = 0.05f;
431 float VerticalDragPixelDelta = 50.0f;
432};
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_STYLE_ARGUMENT(ArgType, ArgName)
Definition DeclarativeSyntaxSupport.h:280
#define SLATE_ATTRIBUTE(AttrType, AttrName)
Definition DeclarativeSyntaxSupport.h:192
#define SLATE_EVENT(DelegateName, EventName)
Definition DeclarativeSyntaxSupport.h:458
#define SLATE_END_ARGS()
Definition DeclarativeSyntaxSupport.h:116
#define SLATE_ARGUMENT(ArgType, ArgName)
Definition DeclarativeSyntaxSupport.h:208
return true
Definition ExternalRpcRegistry.cpp:601
UE::Math::TVector2< double > FVector2D
Definition MathFwd.h:48
Definition CoreStyle.h:15
Definition NavigationReply.h:43
Definition PaintArgs.h:23
Definition Reply.h:24
Definition SlateRect.h:26
Definition DrawElements.h:220
Definition WidgetStyle.h:15
Definition SLeafWidget.h:29
Definition SRadialSlider.h:27
virtual ADVANCEDWIDGETS_API FReply OnMouseMove(const FGeometry &MyGeometry, const FPointerEvent &MouseEvent) override
Definition SRadialSlider.cpp:477
ADVANCEDWIDGETS_API void SetRequiresControllerLock(bool RequiresControllerLock)
Definition SRadialSlider.cpp:809
FRuntimeFloatCurve GetSliderRange() const
Definition SRadialSlider.h:158
ADVANCEDWIDGETS_API float GetNormalizedValue(float RawValue) const
Definition SRadialSlider.cpp:690
void SetSliderRange(const FRuntimeFloatCurve &InSliderRange)
Definition SRadialSlider.h:203
virtual ADVANCEDWIDGETS_API void OnFocusLost(const FFocusEvent &InFocusEvent) override
Definition SRadialSlider.cpp:426
ADVANCEDWIDGETS_API float PositionToValue(const FGeometry &MyGeometry, const FVector2D &AbsolutePosition)
Definition SRadialSlider.cpp:573
ADVANCEDWIDGETS_API void SetSliderHandleStartAngleAndSliderHandleEndAngle(float InSliderHandleStartAngle, float InSliderHandleEndAngle)
Definition SRadialSlider.cpp:746
ADVANCEDWIDGETS_API void SetStepSize(const TAttribute< float > &InStepSize)
Definition SRadialSlider.cpp:799
ADVANCEDWIDGETS_API void SetShowSliderHand(bool ShowSliderHand)
Definition SRadialSlider.cpp:824
float AngularOffset
Definition SRadialSlider.h:354
virtual ADVANCEDWIDGETS_API FReply OnMouseButtonUp(const FGeometry &MyGeometry, const FPointerEvent &MouseEvent) override
Definition SRadialSlider.cpp:461
ADVANCEDWIDGETS_API float GetNormalizedSliderHandlePosition() const
Definition SRadialSlider.cpp:726
ADVANCEDWIDGETS_API void SetSliderProgressColor(FSlateColor InSliderProgressColor)
Definition SRadialSlider.cpp:779
TAttribute< FSlateColor > SliderBarColor
Definition SRadialSlider.h:312
virtual ADVANCEDWIDGETS_API FReply OnTouchStarted(const FGeometry &MyGeometry, const FPointerEvent &InTouchEvent) override
Definition SRadialSlider.cpp:493
float SliderHandleEndAngle
Definition SRadialSlider.h:351
ADVANCEDWIDGETS_API void SetSliderBarColor(FSlateColor InSliderBarColor)
Definition SRadialSlider.cpp:774
bool bMouseUsesStep
Definition SRadialSlider.h:370
TAttribute< FSlateColor > CenterBackgroundColor
Definition SRadialSlider.h:321
ADVANCEDWIDGETS_API void SetThickness(const float InThickness)
Definition SRadialSlider.cpp:829
TAttribute< float > ValueAttribute
Definition SRadialSlider.h:330
bool bShowSliderHand
Definition SRadialSlider.h:385
bool bShowSliderHandle
Definition SRadialSlider.h:382
void SetAngularOffset(float InAngularOffset)
Definition SRadialSlider.h:209
TAttribute< bool > LockedAttribute
Definition SRadialSlider.h:309
ADVANCEDWIDGETS_API void SetUseVerticalDrag(bool UseVerticalDrag)
Definition SRadialSlider.cpp:814
ADVANCEDWIDGETS_API void Construct(const SRadialSlider::FArguments &InDeclaration)
Definition SRadialSlider.cpp:25
virtual ADVANCEDWIDGETS_API void CommitValue(float NewValue)
Definition SRadialSlider.cpp:557
ADVANCEDWIDGETS_API bool IsLocked() const
Definition SRadialSlider.cpp:319
const FSliderStyle * Style
Definition SRadialSlider.h:306
ADVANCEDWIDGETS_API bool GetUseCustomDefaultValue() const
Definition SRadialSlider.cpp:680
ADVANCEDWIDGETS_API float GetValue() const
Definition SRadialSlider.cpp:675
float GetSliderHandleEndAngle() const
Definition SRadialSlider.h:170
void SetValueTags(const TArray< float > &InValueTags)
Definition SRadialSlider.h:215
FRuntimeFloatCurve SliderRange
Definition SRadialSlider.h:363
TAttribute< FSlateColor > SliderHandleColor
Definition SRadialSlider.h:318
TAttribute< FSlateColor > SliderProgressColor
Definition SRadialSlider.h:315
ADVANCEDWIDGETS_API void SetHandStartEndRatio(FVector2D InHandStartEndRatio)
Definition SRadialSlider.cpp:756
float GetAngularOffset() const
Definition SRadialSlider.h:173
ADVANCEDWIDGETS_API float GetMinValue() const
Definition SRadialSlider.cpp:647
float GetSliderHandleStartAngle() const
Definition SRadialSlider.h:167
ADVANCEDWIDGETS_API const FSlateBrush * GetThumbImage() const
Definition SRadialSlider.cpp:631
SLATE_BEGIN_ARGS(SRadialSlider)
Definition SRadialSlider.h:30
ADVANCEDWIDGETS_API void SetCenterBackgroundColor(FSlateColor InCenterHandleColor)
Definition SRadialSlider.cpp:789
float SliderHandleStartAngle
Definition SRadialSlider.h:348
bool bRequiresControllerLock
Definition SRadialSlider.h:373
ADVANCEDWIDGETS_API void SetUseCustomDefaultValue(const TAttribute< bool > &InValueAttribute)
Definition SRadialSlider.cpp:736
ADVANCEDWIDGETS_API float GetMaxValue() const
Definition SRadialSlider.cpp:661
EMouseCursor::Type CachedCursor
Definition SRadialSlider.h:339
virtual ADVANCEDWIDGETS_API FNavigationReply OnNavigation(const FGeometry &MyGeometry, const FNavigationEvent &InNavigationEvent) override
Definition SRadialSlider.cpp:343
TArray< float > GetValueTags() const
Definition SRadialSlider.h:176
FVector2D HandStartEndRatio
Definition SRadialSlider.h:357
TAttribute< bool > bUseCustomDefaultValue
Definition SRadialSlider.h:333
ADVANCEDWIDGETS_API const FSlateBrush * GetBarImage() const
Definition SRadialSlider.cpp:615
TAttribute< float > CustomDefaultValue
Definition SRadialSlider.h:336
virtual ADVANCEDWIDGETS_API FReply OnKeyDown(const FGeometry &MyGeometry, const FKeyEvent &InKeyEvent) override
Definition SRadialSlider.cpp:371
TAttribute< TOptional< float > > Thickness
Definition SRadialSlider.h:327
ADVANCEDWIDGETS_API void SetLocked(const TAttribute< bool > &InLocked)
Definition SRadialSlider.cpp:769
ADVANCEDWIDGETS_API float GetStepSize() const
Definition SRadialSlider.cpp:794
virtual ADVANCEDWIDGETS_API FReply OnMouseButtonDown(const FGeometry &MyGeometry, const FPointerEvent &MouseEvent) override
Definition SRadialSlider.cpp:442
bool bControllerInputCaptured
Definition SRadialSlider.h:367
ADVANCEDWIDGETS_API void SetShowSliderHandle(bool ShowSliderHandle)
Definition SRadialSlider.cpp:819
ADVANCEDWIDGETS_API void SetMouseUsesStep(bool MouseUsesStep)
Definition SRadialSlider.cpp:804
FSlateBrush CenterBackgroundBrush
Definition SRadialSlider.h:324
ADVANCEDWIDGETS_API void SetValue(const TAttribute< float > &InValueAttribute)
Definition SRadialSlider.cpp:731
virtual ADVANCEDWIDGETS_API bool IsInteractable() const override
Definition SRadialSlider.cpp:324
bool bUseVerticalDrag
Definition SRadialSlider.h:379
virtual ADVANCEDWIDGETS_API bool SupportsKeyboardFocus() const override
Definition SRadialSlider.cpp:329
virtual ADVANCEDWIDGETS_API FReply OnTouchEnded(const FGeometry &MyGeometry, const FPointerEvent &InTouchEvent) override
Definition SRadialSlider.cpp:539
virtual ADVANCEDWIDGETS_API FReply OnTouchMoved(const FGeometry &MyGeometry, const FPointerEvent &InTouchEvent) override
Definition SRadialSlider.cpp:509
bool bIsFocusable
Definition SRadialSlider.h:376
FVector2D PressedScreenSpaceTouchDownPosition
Definition SRadialSlider.h:342
TAttribute< float > StepSize
Definition SRadialSlider.h:345
virtual ADVANCEDWIDGETS_API int32 OnPaint(const FPaintArgs &Args, const FGeometry &AllottedGeometry, const FSlateRect &MyCullingRect, FSlateWindowElementList &OutDrawElements, int32 LayerId, const FWidgetStyle &InWidgetStyle, bool bParentEnabled) const override
Definition SRadialSlider.cpp:62
ADVANCEDWIDGETS_API void SetCustomDefaultValue(const TAttribute< float > &InValueAttribute)
Definition SRadialSlider.cpp:741
ADVANCEDWIDGETS_API float GetCustomDefaultValue() const
Definition SRadialSlider.cpp:685
virtual ADVANCEDWIDGETS_API FVector2D ComputeDesiredSize(float) const override
Definition SRadialSlider.cpp:314
TArray< float > ValueTags
Definition SRadialSlider.h:360
virtual ADVANCEDWIDGETS_API FReply OnKeyUp(const FGeometry &MyGeometry, const FKeyEvent &InKeyEvent) override
Definition SRadialSlider.cpp:413
ADVANCEDWIDGETS_API void SetSliderHandleColor(FSlateColor InSliderHandleColor)
Definition SRadialSlider.cpp:784
Definition Array.h:670
Definition Attribute.h:17
Definition SharedPointer.h:153
Definition CurveFloat.h:31
Type
Definition ICursor.h:18
@ false
Definition radaudio_common.h:23
Definition Events.h:51
Definition Geometry.h:40
Definition Events.h:431
Definition InputCoreTypes.h:50
Definition Color.h:48
Definition Events.h:1148
Definition Events.h:695
Definition CurveFloat.h:13
Definition SlateBrush.h:239
Definition SlateColor.h:42
Definition SlateRoundedBoxBrush.h:11
Definition SlateTypes.h:1340
Definition StyleColors.h:345