Activity
In contrast to states, character can have multiple activities enabled.
They are stored in Map of bool and ActivityType.
Why do we need them? Well, we could create multiple bool variables in player’s blueprint like IsZooming, IsBlockingPressed, CanParryHit, IsImmortal etc, then do the same for AI.
This way we would receive pretty much the same results, but it creates a lot of mess and requires casting if we would like to set those variable outside of these character blueprints.
And what if we want to set them through animation notifies?
Activities are much cleaner and easier to control implementation of that.
We can set Activity value through component, check if it’s active or get notified when any activity has changed through OnActivityChanged event dispatcher.
We can also control them with animation notify ANS_Activity. As example, let's take a look at roll animation, during this animation we want to enable immortality.