Description

When two controllers connected, player2 input is disabled in client mode in PIE.

 

It worked correctly in 4.25, but it has been wrong since 4.26. 

Digging into FSlateApplication::ProcessKeyDownEvent, The controller's input event OnKeyDown can be correctly routed to SPIEViewport in 4.25. In 4.26, Controller1's input is routed to SPIEViewport is correlctly, but Controller2's input is notified to SWindow, so the event cannot be triggered.

 

Workaround:

FReply FSceneViewport::AcquireFocusAndCapture(FIntPoint MousePosition, EFocusCause FocusCause)
{
    // ...
    // Mouse down should focus viewport for user input
//  ReplyState.SetUserFocus(ViewportWidgetRef, FocusCause);
    ReplyState.SetUserFocus(ViewportWidgetRef, FocusCause, true);

    // ...
}

 

 

Steps to Reproduce
  1. Connect two controllers to pc.
  2. Open third person template with editor.
  3. Set "Number of players" to "2".
  4. Set "Net Mode" to "Play As Client".
  5. Play in editor with "New Editor Window".
  6. Input any key for controller 1 and 2.

Result:

The character doesn't move when input from controller 2.

The first controller input is allowed.

Expect:

Both controllers input is allowed.

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-107689 in the post.

5
Login to Vote

Backlogged
ComponentUE - Editor - UI Systems
Affects Versions4.265.1
CreatedFeb 3, 2021
UpdatedApr 10, 2023