UnrealEngine

[UE4] UE에서의 Input 처리 플로우

송만덕 2023. 10. 28. 14:49

Unreal4에서의 Input 처리에 대한 호출 플로우

(마우스 클릭 예시)


 

1. FSlateApplication::OnMouseDown(const TSharedPtr< FGenericWindow >& PlatformWindow, const EMouseButtons::Type Button)

 
2. FSlateApplication::OnMouseDown( const TSharedPtr< FGenericWindow >& PlatformWindow, const EMouseButtons::Type Button, const FVector2D CursorPos )
 
3. FSlateApplication::ProcessMouseButtonDownEvent( const TSharedPtr< FGenericWindow >& PlatformWindow, const FPointerEvent& MouseEvent )
  • Reply = RoutePointerDownEvent(WidgetsUnderCursor, MouseEvent);
 
4. FSlateApplication::RoutePointerDownEvent(const FWidgetPath& WidgetsUnderPointer, const FPointerEvent& PointerEvent)
  • TargetWidget.Widget->OnMouseButtonDown( TargetWidget.Geometry, Event );
  • 슬레이트 상단부터.. ex) 위젯... SceneViewport...
 
5-1. SWidget::OnMouseButtonDown( const FGeometry& MyGeometry, const FPointerEvent& MouseEvent )
  • SButton::OnMouseButtonDown( const FGeometry& MyGeometry, const FPointerEvent& MouseEvent ) ... 슬레이트 처리
 
5-2. SViewport::OnMouseButtonDown( const FGeometry& MyGeometry, const FPointerEvent& MouseEvent )
  • FSceneViewport::OnMouseButtonDown( const FGeometry& InGeometry, const FPointerEvent& InMouseEvent )
  • UGameViewportClient::InputKey(const FInputKeyEventArgs& EventArgs)
  • APlayerController::InputKey(FKey Key, EInputEvent EventType, float AmountDepressed, bool bGamepad)
  • UPlayerInput::InputKey(FKey Key, enum EInputEvent Event, float AmountDepressed, bool bGamepad) ... 이후 처리