My task was to:
create a generic cover system, that could use objects within the map for the player character to take cover behind
I did this by doing a set of raycasts to detect if there is a nearby object of sufficient size for character to take cover behind
if there is such an object, I trigger different animation state and different movement control scheme which forces the character to stick to the cover unless player leaves the cover (moving away, or pressing the cover button)