Hello DC, and a pleasure to meet you,
From my viewpoint as an old system IBM 370 assembler (we never give up those things that forge us) programmer, this is how I see things, where nothing is complex, and yet everything is, it only depends on our point of view. With that said, any sufficiently complex system, is inherently less complex as we break it down into subunits/subsystems. So with this “attitude”…
I would probably approach your question and set up state machine(s). Where by when the Event Tick fired, it would immediately execute a “switch on int” node in the blueprint (i’m assuming this is the environment, and really makes no difference), by pulling the “int” from a queue of operations to be performed. If the queue is empty, then there is nothing to do, as the final step of the EG (Event Graph), I would have it toss into the “queue” (really just an array in blueprints), the state that on the next iteration, on the next Event Tick, would be to execute the “start” state of the machine, which would then be doing nothing more than examining the state of the entire machine, and queuing up the states, that needed to be done, at that moment. Because I would be attempting to keep each portion of the code as “dumb” as possible, and only doing that portion which it needed to do. If the “function/graph/whatever” needed more processing done, I would have it queue, the work to be done up, via placing a “state” into a queue, that would be executed on the iteration of the switch. Hence my Event graph would be as dumb as all get out, but taken from the global view the outcome would/could/maybe quite complex.
continued…