For example you could have a struct that describes a building
Name: Pagoda
TArray FloorsTypes => would hold id’s for each floor element that would have it’s own equivalent in main static mesh.
Inside the building actor base you would have a constructor script that would read in it’s struct and see that the building has x amounts of Floor types and it would add in in hierarchical instanced static mesh component to the actor and populate all of the floors and offsets where the meshes are the same, repeat until all of the static mesh types are exhausted.
Then if the struct has sub struct information you can for instance spawn in specific interior models, or load in a texture set depending on the style of the building.
The floor example is of course simplified, you could break this down into more granular modules , for instance per room (if it was player driven), where the room could have extra information like how is it offset from the building root.
Basically your building actor starts off nearly empty and needs to populate itself based on the passed in data. Same thing for items, armours, etc.