46class TOUCHINTERFACE_API SDeprecatedTouchInterface :
public SCompoundWidget
48 SLATE_BEGIN_ARGS(SDeprecatedTouchInterface)
54 SLATE_ARGUMENT(
bool, LoadConfig)
55 SLATE_ARGUMENT(int32, UserIndex)
56 SLATE_ARGUMENT(int32, ConfigIndex)
58 SLATE_EVENT(FOnTouchEvent, OnTouchBegan)
65 SDeprecatedTouchInterface();
67 void Construct(
const FArguments& InArgs, ULocalPlayer* InLocalPlayer,
UVirtualControlSetup* InVirtualControlSetup);
70 void GenerateVirtualInputNextFrame(TArray<FVirtualControl>& InVirtualControls);
73 void GenerateVirtualControls(TArray<FVirtualControl> InVirtualControls);
75 TSharedRef<SVirtualControl> ConstructVirtualControlWidget(
const FVirtualControl& InVirtualControl, SConstraintCanvas::FSlot* OwnerSlot, TSharedPtr<SVirtualControl>&);
78 void GenerateChildControls(
const TArray<FName> ChildrenName, TSharedPtr<SVirtualControl> Parent, TArray<FVirtualControl>& InVirtualControls);
83 EActiveTimerReturnType ActivateTouchInterface(
double InCurrentTime,
float InDeltaTime);
85 EActiveTimerReturnType DrawVirtualControl(
double InCurrentTime,
float InDeltaTime);
89 virtual FReply
OnMouseButtonDown(
const FGeometry& MyGeometry,
const FPointerEvent& MouseEvent)
override;
90 virtual FReply
OnMouseMove(
const FGeometry& MyGeometry,
const FPointerEvent& MouseEvent)
override;
91 virtual FReply
OnMouseButtonUp(
const FGeometry& MyGeometry,
const FPointerEvent& MouseEvent)
override;
93 virtual FReply
OnTouchStarted(
const FGeometry& MyGeometry,
const FPointerEvent& Event)
override;
94 virtual FReply
OnTouchMoved(
const FGeometry& MyGeometry,
const FPointerEvent& Event)
override;
95 virtual FReply
OnTouchEnded(
const FGeometry& MyGeometry,
const FPointerEvent& Event)
override;
97 virtual void Tick(
const FGeometry& AllottedGeometry,
const double InCurrentTime,
const float InDeltaTime )
override;
98 virtual int32
OnPaint(
const FPaintArgs& Args,
const FGeometry& AllottedGeometry,
const FSlateRect& MyCullingRect, FSlateWindowElementList& OutDrawElements, int32 LayerId,
const FWidgetStyle& InWidgetStyle,
bool bParentEnabled )
const override;
105 virtual void RebuildTouchInterface(
const bool bLoadConfig,
const int32 InUserIndex,
const int32 InConfigIndex);
108 virtual void PreDestruct();
111 static FName GenerateUniqueLayerName(
const TArray<FVisualLayer>& VisualLayers);
112 static bool DoesThisNameExistInVisualLayer(
const TArray<FVisualLayer> VisualLayers,
const FName OtherName);
118 UWorld* GetWorldContext()
const;
121 TArray<UTouchInterfaceListener*>&
GetListeners() {
return TouchInputComps; }
123 TSharedPtr<SVirtualControl> GetVirtualControlWidget(
const FName ControlName);
133 void UnregisterAllManagerComponents();
142 bool ChangeInputAction(
const FName ControlName, UInputAction* Action);
145 void EnableVirtualInput(
const FName InputName);
148 void DisableVirtualInput(
const FName InputName);
154 void SetWidgetVisibility(
const bool bInVisible,
const bool bInBlockInput,
const bool bInBlockGesture);
157 void SetVirtualInputVisibility(
const FName Name,
const bool bInVisible,
const bool bIncludeChildren);
160 void ShowAllVirtualInputs();
163 void HideAllVirtualInputs();
165 float GetVirtualInputOpacity(
const FName ControlName);
167 void SetVirtualInputOpacity(
const FName ControlName,
const float NewOpacity);
173 bool GetVirtualControlData(
const FName ControlName,
FVirtualControl& VirtualControl);
178 TArray<FVirtualControl> GetAllControls(
const bool IncludeButton =
true,
const bool IncludeJoystick =
false,
const bool IncludeTouchRegion =
false);
184 void RemoveControl(
const FName Name,
const bool bRemoveChildren);
187 void ResetToDefault();
193 void SetVirtualControlVisualLayers(
const FName ControlName, TArray<FVisualLayer> Layers);
196 void GetVirtualControlLayer(
const FName ControlName,
const FName LayerName,
FVisualLayer& OutLayer);
199 void SetVirtualControlLayer(
const FName ControlName,
const FVisualLayer& Layer);
202 FName AddNewLayer(
const FName ControlName,
FVisualLayer& Layer);
205 FName InsertNewLayer(
const FName ControlName,
FVisualLayer& Layer,
const int32 Index);
208 void RemoveLayer(
const FName ControlName,
const FName LayerName);
210 void RemoveLayerAt(
const FName ControlName,
const int32 Index);
216 UMaterialInstanceDynamic* GetLayerDynamicMaterialInstance(
const FName ControlName,
const FName LayerName, UObject* InOuter);
218 void SetControlSize(
const FName Name,
const FVector2D NewVisualSize,
const FVector2D NewThumbSize,
const FVector2D NewInteractionSize);
220 bool SetControlPosition(
const FName Name,
const FVector2D NewPosition,
const bool InLandscape);
225 TArray<UTouchInterfaceListener*> GetAllListener();
228 bool GetTypeOfControl(
const FName ControlName,
EControlType& Type);
230 bool ContainName(
const FName ControlName);
232 TArray<FName> GetAllControlNames();
234 TArray<FName> GetLayerNames(
const FName ControlName);
238 bool IsActive()
const {
return State == State_Active; }
245 FVector2D LocalToNormalized(
const FVector2D LocalPosition)
const;
248 FVector2D NormalizedToLocal(
const FVector2D NormalizedPosition)
const;
250 static float GetDebugOpacity();
254 bool SaveConfigurationFromCurrentSetup(
const uint32 InUserIndex,
const uint32 InConfigIndex);
255 bool LoadConfiguration(
const uint32 InUserIndex,
const uint32 InConfigIndex);
267 void SetWidgetOpacity(
const float DeltaTime);
276 float GetScaleFactor(
const FGeometry& Geometry);
281 virtual void HandleOnOrientationChanged(
const int32 Mode);
283 int32 GetVisualLayerIndex(TArray<FVisualLayer>& VisualLayer,
const FName LayerName);
285 bool CanSendInputsToRecognizer(
const bool bHitControl)
const;
290 TSharedPtr<SConstraintCanvas> VirtualControlCanvas;
292 TArray<TSharedRef<SVirtualControl>> VirtualControlWidgets;
294 TSharedPtr<SVirtualShapeDrawer> ShapeDrawer;
296 TArray<UTouchInterfaceListener*> TouchInputComps;
298 TArray<UVirtualShape> VirtualShapes;
300 struct FFingerDebugData
305 FFingerDebugData(
const uint32 InFingerIndex,
const FVector2D InPosition) :
306 FingerIndex(InFingerIndex),
313 TArray<FFingerDebugData> Fingers;
315 UVirtualControlSetup* VirtualControlSetup;
317 UEnhancedInputLocalPlayerSubsystem* EnhancedInputSubsystem;
319 const UTouchInterfaceSettings* Settings;
321 class UTouchInterfaceSave* ConfigurationSaveSlot;
323 UGameInstance* PersistantOuter;
327 TArray<FVirtualControlWidget> ChildWidgets;
329 TArray<TSharedPtr<SVirtualAnchor>> VirtualAnchors;
334 UWorld* WorldContext;
335 ULocalPlayer* LocalPlayer;
337 float CurrentScaleFactor;
338 float ScaleMultiplier;
345 uint8 bIsActivated:1;
348 uint8 bActiveEventSend:1;
357 uint8 bGestureRecognizerEnabled:1;
360 uint8 bBlockRecognizers:1;
363 uint8 bBlockTouchEvent:1;
365 uint8 bMoveEventAllowed:1;
367 uint8 bCaptureMouse:1;
373 uint8 bShapeRecognizerEnabled:1;
376 uint8 bBlockShapeRecognition:1;
381 int32 NumberOfActiveControl;
383 int32 ControllerIdAssociated;
385 FSlateBrush DebugCircle;
389 float InactiveOpacity;
390 float ActiveLerpRate;
391 float InactiveLerpRate;
392 float TimeUntilDeactivated;
393 float TimeUntilReset;
394 float ActivationDelay;
397 uint8 bCalculatePositionAuto:1;
399 enum ETouchInterfaceState
402 State_CountingDownToInactive,
403 State_CountingDownToReset,
408 ETouchInterfaceState State;
411 uint8 bIsInLandscapeMode:1;
414 float CurrentOpacity;
420 float PreviousScalingFactor = 0.0f;
422 FVector2D PreviousGeometrySize;
424 float OpacityCurveValue;
426 uint8 bLoadFromSave:1;