As I’m starting to use BP more and more, one of the things that annoys me is the cast nodes. They are very bulky. I’m starting to cache these on BeginPlay when I need them a lot, but a lot of times you just need them for one shot things and it just makes the BP more confusing, forcing connections to cross more. Here’s an example:
I think the reason this ISN’T done this way is that a pure cast will require the engine to re-perform the cast every time you do something new with it (pure functions in UE4 get re-calculated everytime the execution path needs the output; impure functions are executed when they’re called and the output is cached or whatever and can be reused)
But I agree, as it’s very rare that I need to Cast To something for more than one operation (function call, get, etc) since I usually just build the necessary functionality encapsulated in a function or connected to a custom event and call it once (so if ApplyDamage also needs to call DamageReaction, I just do that on the target as part of ApplyDamage’s execution, rather than via cast calling two functions)
The caching seems odd, because a lot of times you’re passing different objects to those nodes. Maybe it does cache them, but I would doubt it. Maybe somebody can shed some light on it?