Hi,
We’re upgrading to 5.6 and found an issue with some of our code and changes made to input in 5.6.
Our custom player controller overrides UPlayerController::InitInputSystem. In that override, it retrieves the UEnhancedInputLocalPlayerSubsystem and then pulls the UEnhancedInputUserSettings object from that subsystem and populates some game specific InputMappingContext data into that settings object.
This previously worked fine in UE 5.5 because the UEnhancedInputUserSettings object was created in InitalizeUserSettings called from UEnhancedInputUserSettings::Initialize. But CL 556409 removed that function, instead driving it from the Player Controller Change delegate
The problem is that this changed the order of execution between creating the User Settings object and the calling of InitInputSystem. In 5.6 InitInputSystem is called first (from APlayerController::SetPlayer line 5250) and the creation of the UEnahncedInputUserSettings object is called second (APlayerController::SetPlayer line 5275).
Is there any guidance for how to convert this code? For our fix we’ve temporarily overridden SetPlayer in our game’s PlayerController and disabled the call to InitInputSystem in the UPlayerController. We then call InitInputSystem from our DerivedPlayerController::SetPlayer after Super::SetPlayer has executed