5#include "Widgets/SLeafWidget.h"
7#include "UObject/StrongObjectPtr.h"
9class UTouchInterfaceSettings;
10class UEnhancedInputLocalPlayerSubsystem;
24 : _TouchInterface(nullptr)
25 , _VirtualInput(nullptr)
27 , _AutoPositioning(false)
28 , _ParentOffset(ForceInitToZero)
30 SLATE_ARGUMENT(TSharedPtr<SDeprecatedTouchInterface>,
TouchInterface)
33 SLATE_ARGUMENT(SConstraintCanvas::FSlot*, Slot)
34 SLATE_ARGUMENT(
bool, AutoPositioning)
35 SLATE_ARGUMENT(FVector2D, ParentOffset)
36 SLATE_ARGUMENT(ULocalPlayer*, LocalPlayer)
38 SLATE_ATTRIBUTE(
float, Opacity)
39 SLATE_ATTRIBUTE(
float, ScaleFactor)
40 SLATE_ATTRIBUTE(
bool, DrawDebug)
46 void Construct(const FArguments& InArgs);
52 virtual
bool OnPress(const FGeometry& MyGeometry, const FPointerEvent& Event);
53 virtual
void OnMove(const FGeometry& MyGeometry, const FPointerEvent& Event);
54 virtual
void OnRelease(const FGeometry& MyGeometry, const FPointerEvent& Event);
55 virtual
void OnTick(const FGeometry& MyGeometry, const
float InScaleFactor, const
double InCurrentTime, const
float InDeltaTime, const
bool InForceUpdate, const
bool OrientToLandscape);
58 virtual int32 OnPaint(const FPaintArgs& Args, const FGeometry& AllottedGeometry, const FSlateRect& MyCullingRect, FSlateWindowElementList& OutDrawElements, int32 LayerId, const FWidgetStyle& InWidgetStyle,
bool bParentEnabled) const override;
60 virtual FVector2D ComputeDesiredSize(
float LayoutScaleMultiplier) const override;
71 virtual void DrawLayer(
const FVisualLayer& InLayer,
const FVector2D InSize,
const FVector2D InBrushSize,
float Angle,
const FVector2D InOffset,
const FGeometry& AllottedGeometry, FSlateWindowElementList& OutDrawElements, int32 LayerId,
const FWidgetStyle& InWidgetStyle)
const;
73 virtual bool IsInside(
const FVector2D FingerPosition);
92 void InsertNewLayer(
const FVisualLayer& VisualLayer,
const int32 Index);
93 void RemoveLayer(
const FName LayerName);
94 void RemoveLayerByIndex(
const int32 LayerIndex);
96 UMaterialInstanceDynamic* GetLayerDynamicMaterialInstance(
const FName LayerName, UObject* InOuter);
99 bool ApplyModification();
101 bool ContainPointerIndex(int32 PointerIndex);
105 UEnhancedInputLocalPlayerSubsystem* GetEnhancedInputSubsystem();
107 void HandleOnOrientationChanged(
const bool bOrientToLandscape);
111 void ResetChild(
const FVector2D ParentPosition);
113 virtual void FlushPressedKey();
115 bool AddChild(TSharedPtr<SVirtualControl> Other);
120 bool RemoveChild(TSharedPtr<SVirtualControl> ChildToRemove);
122 bool IsParent()
const {
return ChildControls.Num() > 0; }
129 void InjectInput(
const UInputAction* Action, FInputActionValue RawValue);
132 void StopInjectingInput(
const UInputAction* Action);
140 const UTouchInterfaceSettings* GetSettings();
143 void AlignBoxIntoScreen(FVector2D& Position,
const FVector2D& Size,
const FVector2D& ScreenSize);
146 void ResolveRelativePosition(FVector2D& Position,
const FVector2D RelativeTo);
154 virtual void CalculateCorrectedValues(
const FVector2D&
Center,
const FVector2D Offset,
const FGeometry& AllottedGeometry,
const float InScaleFactor);
157 virtual void Recenter(
const FVector2D DesiredPosition);
160 virtual void RefreshChild(
const FGeometry& MyGeometry,
const FVector2D ParentCenter,
const float InScaleFactor);
162 virtual void RecenterChild(
const FVector2D ParentPosition);
165 void SetLocalPosition(
const FVector2D NewPosition,
const bool IsNormalized);
224 void SetOffset(
const FVector2D NewPosition,
const FVector2D NewVisualSize)
const;
226 void ComputeEffectiveKernelSize(
float Strength, int32& OutKernelSize, int32& OutDownsampleAmount)
const;
228 const UTouchInterfaceSettings* Settings;
230 UEnhancedInputLocalPlayerSubsystem* InputSubsystem;
234 uint8 bMustBeReset:1;
236 uint8 bMultitouchDetected:1;
238 TArray<TSharedPtr<SVirtualControl>> ChildControls;
240 TMap<const UInputAction*, FInputActionValue> InjectedInputs;
242 TArray<UVirtualInputEvent*> VirtualInputEvents;
244 ULocalPlayer* LocalPlayer;
@ OnPress
Definition ComponentDecorator_Animation.h:17
@ OnRelease
Definition ComponentDecorator_Animation.h:20
@ Center
Definition LayoutComponent.h:78
DEFINE_LOG_CATEGORY_STATIC(LogVirtualControl, Log, All)
EControlType
Definition VirtualControlSetup.h:25
Definition SVirtualControl.h:18
TAttribute< bool > DrawDebug
Definition SVirtualControl.h:182
uint8 bSupportMultitouch
Definition SVirtualControl.h:192
TArray< int32 > CapturePointerIndex
Definition SVirtualControl.h:172
double CurrentTime
Definition SVirtualControl.h:210
FVirtualControl & GetDataRef()
Definition SVirtualControl.h:81
void SetCanvasSlot(SConstraintCanvas::FSlot *NewSlot)
Definition SVirtualControl.h:66
SConstraintCanvas::FSlot * CanvasSlot
Definition SVirtualControl.h:178
bool MultitouchDetected() const
Definition SVirtualControl.h:167
TAttribute< float > TouchInterfaceOpacity
Definition SVirtualControl.h:180
FVector2D CorrectedVisualSize
Definition SVirtualControl.h:196
FVector2D CorrectedCenter
Definition SVirtualControl.h:195
float ElapsedTime
Definition SVirtualControl.h:216
uint8 bUseLandscapePosition
Definition SVirtualControl.h:190
bool IsParent() const
Definition SVirtualControl.h:122
FVirtualControl VirtualControl
Definition SVirtualControl.h:174
virtual void RefreshPosition()
Definition SVirtualControl.h:69
uint8 bIsPressed
Definition SVirtualControl.h:184
FVector2D CorrectedInteractionSize
Definition SVirtualControl.h:197
UVirtualInput * VirtualInput
Definition SVirtualControl.h:176
float PreviousScaleFactor
Definition SVirtualControl.h:207
FVector2D ParentOffset
Definition SVirtualControl.h:198
FName GetControlName() const
Definition SVirtualControl.h:77
FVirtualControl GetData() const
Definition SVirtualControl.h:79
FVector2D CorrectedOffset
Definition SVirtualControl.h:199
float CircleHitMaxLength
Definition SVirtualControl.h:203
const TArray< TSharedPtr< SVirtualControl > > & GetLinkedVirtualControls()
Definition SVirtualControl.h:126
float CurrentScaleFactor
Definition SVirtualControl.h:205
virtual bool SupportsKeyboardFocus() const override
Definition SVirtualControl.h:61
float LastElapsedTime
Definition SVirtualControl.h:218
uint8 bBlockInput
Definition SVirtualControl.h:185
TSharedPtr< SDeprecatedTouchInterface > ParentWidget
Definition SVirtualControl.h:170
bool IsChild() const
Definition SVirtualControl.h:124
float DeltaTime
Definition SVirtualControl.h:213
ULocalPlayer * GetLocalPlayer() const
Definition SVirtualControl.h:136
EControlType GetControlType() const
Definition SVirtualControl.h:75
float CorrectedInteractionRadiusSize
Definition SVirtualControl.h:201
TArray< UVirtualInputEvent * > GetVirtualInputEventInstances()
Definition SVirtualControl.h:83
uint8 bRefreshPosition
Definition SVirtualControl.h:187
void SetEnableInput(const bool Enabled)
Definition SVirtualControl.h:134
SLATE_BEGIN_ARGS(SVirtualControl)
Definition SVirtualControl.h:23
float DebugOpacity
Definition SVirtualControl.h:220
SVirtualControl()
Definition SVirtualControl.cpp:26
FVector2D AbsoluteCenter
Definition SVirtualControl.h:194
TAttribute< float > ScaleFactor
Definition SVirtualControl.h:181
uint8 bAutoPositioning
Definition SVirtualControl.h:189
Definition TouchInterface.Build.cs:6
Definition VirtualControlSetup.h:165
Definition VirtualControlSetup.h:62