For efficiency, I’d like to have “groups” of AActors. I’m not talking about “grouping” in the UE4 sense, I just mean assigning objects to lists. For example:
- Actors_that_move
- Actors_with_hitpoints
- Actors_with_AI
And so on. So there’s a lot of overlap, meaning a given actor is in several of these groups.
The tricky part is that when an actor is destroyed, it needs to be immediately removed from all groups so that no one tries to access it. My first thought was to use shared pointers and weak pointers, since this is exactly the problem they’re meant to solve. But UE4 does not necessarily delete an object when it’s destroyed, meaning all the weak pointers will still be valid for some unknown number of ticks.
So is there a better approach to this? I guess the brute force solution would be to have every object remove itself from every group in its Destroyed() method, but that seems pretty error prone.