I’s appear pretty simple (after 10th attempt
)
Just add any argument you need to the handler, but don’t forget to put const FInputActionValue &value first.
Here is an axample:
if (UEnhancedInputComponent* EnhancedInputComponent = CastChecked(player_input_component))
{
EnhancedInputComponent->BindAction(Stalker_Character_Actions.Action_Jump, ETriggerEvent::Triggered, this, &ACharacter::Jump);
EnhancedInputComponent->BindAction(Stalker_Character_Actions.Action_Jump, ETriggerEvent::Completed, this, &ACharacter::StopJumping);
EnhancedInputComponent->BindAction(Stalker_Character_Actions.Action_Move, ETriggerEvent::Triggered, this, &AStalker_Character::On_Action_Move);
EnhancedInputComponent->BindAction(Stalker_Character_Actions.Action_Move_Crouch, ETriggerEvent::Started, this, &AStalker_Character::On_Action_Move_Mode, ENPC_Movement_Mode::Crouch, true);
EnhancedInputComponent->BindAction(Stalker_Character_Actions.Action_Move_Crouch, ETriggerEvent::Completed, this, &AStalker_Character::On_Action_Move_Mode, ENPC_Movement_Mode::Crouch, false);
EnhancedInputComponent->BindAction(Stalker_Character_Actions.Action_Move_Walk, ETriggerEvent::Started, this, &AStalker_Character::On_Action_Move_Mode, ENPC_Movement_Mode::Walk, true);
EnhancedInputComponent->BindAction(Stalker_Character_Actions.Action_Move_Walk, ETriggerEvent::Completed, this, &AStalker_Character::On_Action_Move_Mode, ENPC_Movement_Mode::Walk, false);
EnhancedInputComponent->BindAction(Stalker_Character_Actions.Action_Move_Sprint, ETriggerEvent::Started, this, &AStalker_Character::On_Action_Move_Mode, ENPC_Movement_Mode::Sprint, true);
EnhancedInputComponent->BindAction(Stalker_Character_Actions.Action_Move_Sprint, ETriggerEvent::Completed, this, &AStalker_Character::On_Action_Move_Mode, ENPC_Movement_Mode::Sprint, false);
…
void AStalker_Character::On_Action_Move_Mode(const FInputActionValue &value, ENPC_Movement_Mode movement_mode, bool is_on)
{
… ; // Here we’re using 1 method for 3 different actions with 2 events each (press and release)