Hello,
I encountered what it seems to be a bug that drove me mad for several hours.
I have an action with a custom blocker trigger, set in the triggers list of this action in the relevant InputMappingContext like on the screen below.
But when the conditions are met, the action only fires Triggered event only once, before firing Completed (Started, Triggered, Completed, and that’s it).
And I know it shouldn’t be like that because I have another MappingContext doing the exact same thing for something else, and it works fine.
After digging everywhere, the only difference I found between those two (other than a slight c++ code difference which is not the culprit) resided in where I set the trigger, which was directly in the InputAction BP for the one that works, and in the InputMappingContext for the other.
And by setting it in the InputAction BP, it worked.
Now Triggered events are fired every frame as long as conditions are met.
I have no idea why it behaves like that, and I don’t think it’s a feature either x)
I however do a like trick on the Started event where I switch the input consumption of this Action to true if conditions are met, and immediatly rebuild the mapping context (call to UEnhancedInputLibrary::RequestRebuildControlMappingsUsingContext
), because I need to prevent the input to flow down if the triggering conditions are met. It may break something ?