How to consume IMC input of a held axis trigger input

There are a few situations where it’s somewhat required to use an intermediate IMC to handle the lifecycle of actions, especially if they need to out last the IMC they are on. This appears to be one of those situations.

What I tested was to add a new IMC with a new action called ‘IMC_CatchHandler’ and ‘IA_CatchHandler’ respectively. This IMC is added instead of IMC_Catch in the repro at priority 0. All instances of IMC_Catch can be be replaced with IMC_CatchHandler as the handler takes control of adding IMC_Catch. IMC_Catch’s removal will be handled by itself.

IA_CatchHandler’s Triggered state is bound to add IMC_Catch at priority 1. It is important that this IMC is added at a higher priority as they need to share key-bindings exactly for this to work. By default, IMC_CatchHandler will keep the active action unless the incoming IMC is a higher priority. Additionally, I turned the IA_Catch into an Axis action. Removing bIgnoreAllPressedKeysUntilRelease from the options should also work, but this prevents any future updates accidently breaking it.

The Completed state of IA_Catch is bound to remove the IMC_Catch IMC. You may wish to bind Cancelled as well if the trigger can enter that state.

The overlap event was modified to remove the Handler IMC and FlushPlayerInput was removed.

What should now happen in ShowDebug EnhancedInput is that the key-press causes the handler to add the Catch IMC, which itself immediately fires catch logic on the triggered state. When Catch is released, the Catch IMC is removed, but as CatchHandler is not removed here, repressing the trigger will repeat this process. If IMC_CatchHandler is removed during the activation of the Catch IA, the Catch IA stays active and continues consuming the input until its own Completion event removes it.

Because it is of higher priority than the UseItem IA, UseItem will not receive input. If IA_Catch is released, it will remove IMC_Catch, which then allows the next input to hit the UseItem IA as expected.

Let me know if this works for your use case. If you have any questions about this, please don’t hesitate to ask.

Best regards,

Chris