They probably mean using this as a filter:
From my own experience, from the performance point of view and from reading around, it seems that dispatchers are faster. There is a test somewhere in the forums comparing a 10k loop to 10k dispatcher calls. The loop is sluggish by comparison.
I doubt it’s measurable with 30 pawns but it probably would be if each had 100 projectiles flying around and we needed to interact with them, as well.
I also need to destroy all player projectiles on player death. Is it best to use a delegate for this as well or just get all actors by class and destroy them in the loop?
I’d also employ a delegate here, registered as soon as projectiles come to play. The GC creates clusters of actors before doing its magic so we, apparently, do not even need to stagger calls across frames.
Would it be better/faster to just get all actors by class and call a function on them?
Perhaps you could use a hybrid approach, do the above for the pawns (because unbinding can be a pain in the neck). But destroy the projectiles when invoking owning Pawn’s Destroy
:
Hope I did not mix anything up.