Your concept is solid in my opinion.
Depends on what do you want the cup to actually be…
I see that when picking up you get the cup’s mesh and assign it to a (presumably) empty item mesh component in your character. You can use the same approach with the tray. If the InteractionFun()
also takes a character as an input parameter you can directly in the tray decide what you do - “does the character holds something I can use and if so assign it to my empty mesh component.”
This approach will make the tray and the cup to become the same object though and it comes with some constrains.
The other thing you can do is get the tray position and spawn a cup actor just above it. You can assign the cup actor the same mesh that the character is holding. To better position the cup you can create an empty scene component in the tray (cup-holder, pun intended ) and use its position as a place to spawn the cup actor. This starts to become complex if the tray is in some strange orientation but you’ll have to decide what should happen there. Maybe you can’t place a cup on it if it’s upside down or smth.
Now I can’t see from your graph what happens with the cup after being interacted with. If it’s just hidden or you have it somewhere you can just move it (teleport and show) instead of spawning a new cup.