CrimsonInput · Lesson 6 of 8

Bind the Actions

Beginner5 minSetupGAS

Before you start

  • Completed: Author the Input Config
Video coming soon

Chapters

Bind in Blueprint

The tag-based binders are C++ templates with no Blueprint node — and that's fine: in a pawn Blueprint you place one Enhanced Input Action event per action (IA_Move, IA_Ability1) exactly as in vanilla Enhanced Input, and forward ability presses to your ability system with the tag from the config.

One Enhanced Input Action event per action in the pawn Blueprint.

Bind native input (C++)

cpp
// In SetupPlayerInputComponent
UCrimsonInputComponent* CIC = CastChecked<UCrimsonInputComponent>(PlayerInputComponent);
CIC->BindNativeAction(InputConfig, CrimsonGameplayTags::InputTag_Move,
ETriggerEvent::Triggered, this, &AMyCharacter::Input_Move);

Bind ability input (C++)

BindAbilityActions binds every entry in the ability list at once — press fires on Triggered, release on Completed and Canceled — and hands your callbacks the tag:

cpp
CIC->BindAbilityActions(InputConfig, this,
&AMyCharacter::AbilityInputTagPressed,
&AMyCharacter::AbilityInputTagReleased,
/*out*/ AbilityBindHandles);
void AMyCharacter::AbilityInputTagPressed(FGameplayTag InputTag)
{
// Forward to your ASC — e.g. CrimsonAbilitySystem's AbilityInputTagPressed(InputTag)
}
Wire both release events
Release must handle Completed AND CanceledCanceled fires when a hold-style trigger was still Ongoing. Wiring only Completed leaves abilities stuck 'held' after an aborted hold.
Grant abilities on the server
Abilities activated by tag need that tag on their spec — add it via GetDynamicSpecSourceTags().AddTag(Tag) when granting, and grant only under HasAuthority().