UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
InputRouter.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"
6#include "InputBehavior.h"
7#include "InputBehaviorSet.h"
8#include "InputState.h"
9#include "Misc/Change.h"
11#include "UObject/Object.h"
13#include "UObject/ObjectPtr.h"
15
16#include "InputRouter.generated.h"
17
22
23
37UCLASS(Transient, MinimalAPI)
39{
41
42protected:
43 friend class UInteractiveToolsContext; // to call Initialize/Shutdown
44
46
49
52
53public:
55 INTERACTIVETOOLSFRAMEWORK_API virtual void RegisterSource(IInputBehaviorSource* Source);
56
58 INTERACTIVETOOLSFRAMEWORK_API virtual void DeregisterSource(IInputBehaviorSource* Source);
59
61 INTERACTIVETOOLSFRAMEWORK_API virtual bool PostInputEvent(const FInputDeviceState& Input);
62
64 INTERACTIVETOOLSFRAMEWORK_API virtual bool HasActiveMouseCapture() const;
65
66 // TODO: other capture queries
67
69 INTERACTIVETOOLSFRAMEWORK_API virtual void PostHoverInputEvent(const FInputDeviceState& Input);
70
72 INTERACTIVETOOLSFRAMEWORK_API virtual void ForceTerminateSource(IInputBehaviorSource* Source);
73
75 INTERACTIVETOOLSFRAMEWORK_API virtual void ForceTerminateAll();
76
77
78public:
80 UPROPERTY()
81 bool bAutoInvalidateOnHover;
82
84 UPROPERTY()
85 bool bAutoInvalidateOnCapture;
86
87
90
91 UPROPERTY()
92 TObjectPtr<UInputBehaviorSet> ActiveInputBehaviors;
93
94 UInputBehavior* ActiveKeyboardCapture = nullptr;
95 void* ActiveKeyboardCaptureOwner = nullptr;
96 FInputCaptureData ActiveKeyboardCaptureData;
97
98 UInputBehavior* ActiveLeftCapture = nullptr;
99 void* ActiveLeftCaptureOwner = nullptr;
100 FInputCaptureData ActiveLeftCaptureData;
101
102 UInputBehavior* ActiveRightCapture = nullptr;
103 void* ActiveRightCaptureOwner = nullptr;
104 FInputCaptureData ActiveRightCaptureData;
105
106 INTERACTIVETOOLSFRAMEWORK_API virtual void PostInputEvent_Keyboard(const FInputDeviceState& Input);
107 INTERACTIVETOOLSFRAMEWORK_API void CheckForKeyboardCaptures(const FInputDeviceState& Input);
108 INTERACTIVETOOLSFRAMEWORK_API void HandleCapturedKeyboardInput(const FInputDeviceState& Input);
109
110 INTERACTIVETOOLSFRAMEWORK_API virtual void PostInputEvent_Mouse(const FInputDeviceState& Input);
111 INTERACTIVETOOLSFRAMEWORK_API void CheckForMouseCaptures(const FInputDeviceState& Input);
112 INTERACTIVETOOLSFRAMEWORK_API void HandleCapturedMouseInput(const FInputDeviceState& Input);
113
114 //
115 // Hover support
116 //
117
118 UInputBehavior* ActiveLeftHoverCapture = nullptr;
119 void* ActiveLeftHoverCaptureOwner = nullptr;
120
121 FInputDeviceState LastMouseInputState;
122
123 INTERACTIVETOOLSFRAMEWORK_API void TerminateHover(EInputCaptureSide Side);
124 INTERACTIVETOOLSFRAMEWORK_API bool ProcessMouseHover(const FInputDeviceState& Input);
125 INTERACTIVETOOLSFRAMEWORK_API bool UpdateExistingHoverCaptureIfPresent(const FInputDeviceState& Input);
126 INTERACTIVETOOLSFRAMEWORK_API void OnApplicationFocusChanged(bool bInIsFocused);
127};
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
EInputCaptureSide
Definition InputBehavior.h:20
const bool
Definition NetworkReplayStreaming.h:178
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UCLASS(...)
Definition ObjectMacros.h:776
Definition InputBehaviorSet.h:177
Definition ToolContextInterfaces.h:360
Definition InputBehaviorSet.h:59
Definition InputBehavior.h:249
Definition InputRouter.h:39
Definition InteractiveToolsContext.h:39
Definition Object.h:95
Definition InputBehavior.h:35
Definition InputState.h:264
Definition ObjectPtr.h:488