Thanks for this - it’s very similar to what I already have except your example includes some cool switching which I might borrow.
My main concern is setting up the NPCs or things being interacted with. It seems like the only way to setup an interactable object is to manually add my collision detector, overlap events, overlap logic checking, the interaction widget prompt, on every actor. Doing this by hand for everything is a lot of repeated work and makes the system nearly unmaintainable.
Am I thinking of this wrong? Should the player be in charge of the overlap, the prompt widget, etc?