It doesn’t show up when I try to add it in the Level Blueprint. When I make a blueprint of that class, it can be added to the event graph, but when I place an instance of that blueprint, then try to add an event for it to the Level Blueprint, it doesn’t show my events. Any help is much appreciated.
BlueprintImplementableEvent is essentially saying that your blueprint class can override it, in the same way that a C++ class could override it by declaring the virtual function in its header.
You’ll notice if you look at the code of Actor that there will be paired functions such as ReceiveDestroyed as a BlueprintImplementableEvent and OnDestroyed as a BlueprintAssignable. The OnDestroyed acts as the event that other blueprints can register a delegate to be notified when the event happens to the actor while ReceiveDestroyed allows it to customize what happens under those circumstances within itself.
So, if I am understanding correctly, BlueprintImplementableEvent is only intended to display within a blueprint of the class in which it is declared, and trans-blueprint communication is handled by calling Broadcast() on delegates. These delegates will show up as events in the level blueprint, and I can use those. Thank you very much, I think I understand now.
UPROPERTY(BlueprintAssignable, Category = "Time Of Day")
FGameStateTimeOfDayChanged OnTimeUpdated;
Then in the method i have in my Game State class to update the time, i vant to Broadcast / “Send” the event. (The method where i use ::Broadcast(,) is only ever called on the server.)
Edit: So solved this by using int32 and not ****uint32, dont understand way they are not supported.
But the problem now is that i can only see the delegate fire on the server.
Anyone know what am not doing correctly?
Only thing i can think og is binding that delegate back to my GameMode/ GameState function, and then have a NetMulticast function called.
But since the update is happening in e.g: OnRep_Second() i just want the “tick”.