We probably won’t be adding an event broadcast to every component creation at the base engine level or something like that. We generally wouldn’t want to run O(NumComponents) logic all the time or even once per load, especially if you have e.g., 100k static mesh components, 2k gameplay relevant at all components, and only 50 that any given subsystem cares about.
You’ve got a bit of an awkward data model to match up, you’re trying to get all instances of components that reference a particular asset in effect with no other data to go off of (e.g., particular subclasses of the component itself), so ultimately you’re probably going to have to do a scan like that (and still have to worry about invalidation, e.g., someone calling SetStaticMesh dynamically which would change the reference and invalidate any acceleration structure you set up).
In any event, UGameFrameworkComponentManager is just one example pattern we’ve found to work well, you could create your own subsystem + registration action to e.g., have a ULootableComponent register and allow other things to either modify the actor owning the component, or the component directly or just keep track of them all), rather than have things derive from ALootableActor or something.
Cheers,
Michael Noland