I’m using Gameplaytagsassetinterface. It’s a very simple C++ implementation. This allows you to add gameplay tags to your pick up actors that will be used as identifiers. Using the C++ implementation allows you to get those tags without having to cast to the specific actor.

Once I have the tags I pass them to a function that narrows down the Type of actor. The return provides the Type… (Door, Vehicle, Pickup item, etc). I can then use a switch statement in my interaction logic to call the correct Interface Event.

I also make great use of data tables. Using the gameplay tag I can look up the child tag in the table to get specific data.
e.g. WorldItem.Weapon.AK47
- WorldItem = lootable world asset
- Weapon type… it’s a gun.
- AK47 specifically
Weapons data table, row name ak47
