Custom Blueprints Nodes are awesome. They empower me to make my Code cleaner and more logical. However they lack some things that might be critical.
Custom Blueprint Nodes can not:
have multiple In/Out pins
execute a specific Output pin at a specific time
It would be nice to have CustomBlueprintFunction and CustomBlueprintEvent specifiers that work with some some additional Meta-Specifiers like CanUserAddOutPins and UseCustomOutPins.
For Output it could work using functions like:
//Execute the last Pin of BP Function "Name"
int ID = this->BlueprintNodes.GetByName(TEXT("Name"))->OutPins.Count - 1;
this->BlueprintNodes.GetByName(TEXT("Name"))->OutPins[ID]->ExecutePin();
And for Input you could register Events to a InputPin specified using Meta specifiers. The register could take place in the Class constructor like:
I think you may find that the BlueprintCallable metadata ExpandEnumAsExecs might accomplish a lot of what you are looking for. They were mentioned in the 4.3 release notes when added for output nodes in addition to already existing for input nodes: What's New | Unreal Engine 5.1 Documentation. They aren’t used a lot in the engine, but you can find a couple of examples of them being used with APlayerController::PlayDynamicForceFeedback or UKismetSystemLibrary::MoveComponentTo
Other solution but it’s more complicated is to code your own node from UK2Node. All nodes are coded that way, the function one is actully UK2Node_CallFunction. You can find them here:
The release note was for when output parameters were made to also work with the keyword. The inputs had already worked prior to that, as was briefly mentioned in the introductory sentence.
It is indeed a powerful (and I feel underused) feature. I hope it allows you to accomplish your goals.
Well what i meant is why is there no documentation entry(neither input nor output pins) on that? It is not even under the metadata specifiers entry. Thats probably why it is so underused. Nobody knows about it.