Although I had solved this enough to be passable, I spent a bunch of time last night building it from scratch in a much more efficient way. The scenario that was causing me a lot of problems is this:
Object A and Object B are right next to each other. You look at object A, and your expected behavior happens (material change, etc). You then go straight to looking at object B without your trace hitting anything in between them. Object A still thinks you’re looking at it because technically, the trace is still hitting a valid target.
The way I had originally solved this was by having every single interactable object checking (every frame!) to see what object the player was hitting and comparing it to themselves. This could get extremely expensive with a scene full of interactables.
The solution I came up with last night is a lot cleaner and hopefully faster and less resource intensive. Below are links to the graphs (2 graphs, one sender and one receiver). The comments should explain everything clearly (I hope) but feel free to ask any questions!
Receiver:
https://dl.dropboxusercontent.com/u/2348343/BluePrints/TraceInteract01.jpg
Sender:
https://dl.dropboxusercontent.com/u/2348343/BluePrints/TraceInteract02.jpg
https://dl.dropboxusercontent.com/u/2348343/BluePrints/TraceInteract03.jpg
https://dl.dropboxusercontent.com/u/2348343/BluePrints/TraceInteract04.jpg