Void Interaction System
Scalable and event-driven interaction system with modular and reusable low-level functionality utilizing actor components, timers and an interface.
​
The system is built with the interface to communicate between Actor Components depending on the state of the player. Held object have priority over all stationary interactions, Fred can't activate any machinery while carrying an object. The system includes the following components:
​​​
-
PlayerInteractionComponent (referred to as PIC)
-
ActorInteractionComponent (AIC) - compatible with any actor
-
BPI_Interaction (Blueprint Interface)
Sleep and Line of Sight
The initial prototype left me with a few concerns regarding the responsiveness of each action, which I addressed with the functional pass by implementing the options to set sleep, delay, priority and line of sight requirements per instance before processing each interaction, giving the high-level gameplay more room to breathe. ​
Each state of the sleep cycle have an associated dispatcher called which can be utilized as an Event per component owner to add more intricate functionality for a more fine-tuned and customized experience.​​​
Priority
Each processed action loops through the overlapped and ready (currently not asleep or delayed) components checking the highest set integer to return the Highest Priority Interaction available.

Triggering world events
World events like cinematics or more prominent sequences can be triggered with the AIC.
The details panel have the option to delay the interaction by buffering the input to trigger the event at a better timing. The component also provides the option for single use, consuming the available action after the first succesfully processed interaction for events set to occur only once.