I’m just trying to wrap my head around it, like the OP. I’ve spent a lot of time in dead ends trying to find the “right” way to compose everything and properly bridging the gap between code written in C++ and others being able to work with that in the Editor and Blueprint.
Take a simple, contrived, example. You have a game where the player has to take items from a bin, then put them in another bin. Heck let’s be really silly and say its a recycling game The player has to take items from one bin, plastics, cardboard boxes, and cans, and they have to run across the room and place each into the proper bin on the other side.
Now how would we handle the items? They never appear in the world in any way. The “exist” in multiple places, starting in a common bin’s “inventory” then being moved to the player’s inventory, then into a final bin’s inventory.
We define a base item definition, say something like “itemName”, “itemWeight”, “itemType”. Now we want the level designers, in the editor, to be able to make specific items and assign the properties. Then define a bin, and use blueprint to randomly assign items to the starting bin, etc etc. Also in BP they would need to define the logic for what bins specific items can go to. Couple ways of doing it but in this contrived example let’s say we define a bin in code, and one of its properties is an array of items, and in the editor the designer will assign specific items to that array to indicate the allowed items.
How would you structure this? Using a struct as you say to define what an Item is makes sense, but then how would a designer in the editor actually make the specific items and set their properties? And how would they then assign them to the bins?
I’m really curious to see how to approach something like this.