Download

[4.6] BlueprintImplementableEvent not displayed in blueprint

Greetings, basically copy/pasted Rama’s tutorial: A new, community-hosted Unreal Engine Wiki - Announcements and Releases - Unreal Engine Forums

But, it seems something changed, or it’s a bug, because PlayerIsHealthyTick event not displayed in Blueprint.
Does sombody encountered same the issues like i did?

ye actually. it seems that defining my own event isnt working right now. Maybe I am doing something wrong, following Ramas tut pretty closely.

can someone confirm if he is having this working with 4.6 ?

I answered this question here:

https://answers.unrealengine.com/questions/143791/blueprintimplementableevent-not-showing-in-editor.html#answer-147954

Two things

Build Configuration

  1. make sure using DevelopmentEditor x64

Dont Use Hot Reload for BP Additions
2. You cant get new BP events, functions, or UPROPERTY()'s to show up using Hot Reload, you must close the Editor and compile in VS.

This is true at the moment, Epic might fix this at some point

Rama

Unless this was broken in 4.6, this is definitely not the case in 4.5.

One thing that is in a semi-broken state currently is the Context-sensitive blueprint menu. If you can’t get a function or event to show in the menu and you’re positive it should, try turning off context sensitive and see if that gets it to show up.

Also, another correction with regards to the tutorial: You can make BlueprintImplementableEvents/BlueprintNativeEvents with return values. However, they are implemented in a different fashion.

Events with no return value are implemented through the EventGraph:

Events with a return value instead show up in the blueprint elements pane as overridable functions:

-Camille

Hot Reload and BlueprintImplementableEvent

I wrote:

Camille wrote:

Well I tested it just now, and I got the following results:

  1. In 4.6, added this to a player controller class


UFUNCTION(BlueprintImplementableEvent, Category="Joy UMG", meta=(FriendlyName = "CPP Request ~ HotReload"))
virtual void CPPRequest_HotReload(ABCBase* BC);


  1. Editor was open, I compiled using Hot Reload

  2. Hot Reload Compile succeeded, I right click and type in “hot” in context search, nothing shows up

  3. I tried turning off context sensitive as you mention above, still nothing

**5. I closed editor and restarted it, and now I type in “hot” and the event shows up!
**

I am not sure what you identified as working Camille, but I just tested BlueprintImplementable Events and they definitely dont get hot reloaded in 4.6.

What have you been able to successfully hot reload in 4.5 or 4.6 related to UPROPERTY / anything to do with reflection?


**Side note**

**Personally I am wanting you to be right Camille**, that we can hot reload stuff involving reflection, I am going to test UPROPERTY and UFUNCTION now in 4.6

**Let me know what you discover and what your test results are!**

Rama

UPROPERTY() Crash

I tried hot reloading the addition of a UPROPERTY(), and UE4 simply crashed.

Once I reloaded the editor, the new UPROPERTY() was there.

I had the Blueprint that was getting the new UPROPERTY() open at the time of the crash.


So I have not succeeded in getting UPROPERTY() to hot reload in 4.6 either.

Strike 2 on hot-reloading refleciton data.

Camille you are saying doing this sort of thing works for you in 4.5?

**You must have gotten the Special Camille-Is-Awesome edition of 4.5!**

Second Test

I ran a second test, and I got the editor to not crash using this



UPROPERTY(EditAnywhere,BlueprintReadWrite,Category="HotReload")
float HotReload3;  


However, the old HotReload variable still shows up (without the 3) and the new one is not showing up at all.

Once I closed the editor and re-opened it, the variable HotReload3 shows up, and the original (“HotReload”) is no longer in Defaults.

My statement that UPROPERTY() does not update via hot reload is still holding true in 4.6, for UPROPERTY() and also for BlueprintImplementable Event

At least, for my non Camille-is-awesome version of UE4, this is what’s happening.


**Crash Log for test 1**



```


MachineId:EE6AF022491394050640898F2C7D2C99
UserName:Rama

Access violation - code c0000005 (first/second chance not available)

msvcr120 + 247027 bytes
UE4Editor_CoreUObject!TArray<wchar_t,FDefaultAllocator>::CopyToEmpty<wchar_t,FDefaultAllocator>() + 121 bytes [e:\victoryue4\unrealengine-4.6\unrealengine\engine\source\runtime\core\public\containers\array.h:2209]
UE4Editor_CoreUObject!TProperty<FString,UProperty>::CopyValuesInternal() + 52 bytes [e:\victoryue4\unrealengine-4.6\unrealengine\engine\source\runtime\coreuobject\public\uobject\unrealtype.h:977]
UE4Editor_CoreUObject!FObjectInitializer::InitProperties() + 1356 bytes [e:\victoryue4\unrealengine-4.6\unrealengine\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:2116]
UE4Editor_CoreUObject!FObjectInitializer::~FObjectInitializer() + 396 bytes [e:\victoryue4\unrealengine-4.6\unrealengine\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:1924]
UE4Editor_CoreUObject!StaticConstructObject() + 1384 bytes [e:\victoryue4\unrealengine-4.6\unrealengine\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:2184]
UE4Editor_CoreUObject!StaticDuplicateObjectEx() + 565 bytes [e:\victoryue4\unrealengine-4.6\unrealengine\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:1402]
UE4Editor_CoreUObject!StaticDuplicateObject() + 274 bytes [e:\victoryue4\unrealengine-4.6\unrealengine\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:1362]
UE4Editor_UnrealEd!FBlueprintCompileReinstancer::FBlueprintCompileReinstancer() + 722 bytes [e:\victoryue4\unrealengine-4.6\unrealengine\engine\source\editor\unrealed\private\kismet2\kismetreinstanceutilities.cpp:55]
UE4Editor_UnrealEd!FKismetEditorUtilities::CompileBlueprint() + 599 bytes [e:\victoryue4\unrealengine-4.6\unrealengine\engine\source\editor\unrealed\private\kismet2\kismet2.cpp:384]
UE4Editor_UnrealEd!FBlueprintCompileReinstancer::ReinstanceObjects() + 1867 bytes [e:\victoryue4\unrealengine-4.6\unrealengine\engine\source\editor\unrealed\private\kismet2\kismetreinstanceutilities.cpp:221]
UE4Editor_HotReload!FHotReloadModule::ReinstanceClass() + 336 bytes [e:\victoryue4\unrealengine-4.6\unrealengine\engine\source\developer\hotreload\private\hotreload.cpp:769]
UE4Editor_CoreUObject!UClassReplaceHotReloadClasses() + 269 bytes [e:\victoryue4\unrealengine-4.6\unrealengine\engine\source\runtime\coreuobject\private\uobject\uobjectbase.cpp:701]
UE4Editor_CoreUObject!TBaseStaticDelegateInstance<void __cdecl(void)>::ExecuteIfSafe() + 7 bytes [e:\victoryue4\unrealengine-4.6\unrealengine\engine\source\runtime\core\public\delegates\delegateinstancesimpl_variadics.inl:876]
UE4Editor_Core!TBaseMulticastDelegate<void>::Broadcast() + 128 bytes [e:\victoryue4\unrealengine-4.6\unrealengine\engine\source\runtime\core\public\delegates\delegatesignatureimpl_variadics.inl:978]
UE4Editor_Core!FModuleManager::LoadModuleWithFailureReason() + 1981 bytes [e:\victoryue4\unrealengine-4.6\unrealengine\engine\source\runtime\core\private\modules\modulemanager.cpp:359]
UE4Editor_Core!FModuleManager::LoadModule() + 56 bytes [e:\victoryue4\unrealengine-4.6\unrealengine\engine\source\runtime\core\private\modules\modulemanager.cpp:238]
UE4Editor_HotReload!FHotReloadModule::DoHotReloadInternal() + 520 bytes [e:\victoryue4\unrealengine-4.6\unrealengine\engine\source\developer\hotreload\private\hotreload.cpp:576]
UE4Editor_HotReload!FHotReloadModule::DoHotReloadFromIDE() + 1600 bytes [e:\victoryue4\unrealengine-4.6\unrealengine\engine\source\developer\hotreload\private\hotreload.cpp:936]
UE4Editor_HotReload!FHotReloadModule::Tick() + 112 bytes [e:\victoryue4\unrealengine-4.6\unrealengine\engine\source\developer\hotreload\private\hotreload.cpp:872]
UE4Editor!FTicker::Tick() + 647 bytes [e:\victoryue4\unrealengine-4.6\unrealengine\engine\source\runtime\core\public\containers	icker.h:78]
UE4Editor!FEngineLoop::Tick() + 5916 bytes [e:\victoryue4\unrealengine-4.6\unrealengine\engine\source\runtime\launch\private\launchengineloop.cpp:2307]
UE4Editor!GuardedMain() + 478 bytes [e:\victoryue4\unrealengine-4.6\unrealengine\engine\source\runtime\launch\private\launch.cpp:131]
UE4Editor!GuardedMainWrapper() + 26 bytes [e:\victoryue4\unrealengine-4.6\unrealengine\engine\source\runtime\launch\private\windows\launchwindows.cpp:126]
UE4Editor!WinMain() + 249 bytes [e:\victoryue4\unrealengine-4.6\unrealengine\engine\source\runtime\launch\private\windows\launchwindows.cpp:202]
UE4Editor!__tmainCRTStartup() + 329 bytes [f:\dd\vctools\crt\crtw32\dllstuff\crtexe.c:618]



```

UFUNCTION() and Hot Reload

I just tried hot reloading this addition to my player controller BP:



UFUNCTION(BlueprintCallable,Category="HotReload")
void HotReloadAndReflection(bool trueorfalse);


  1. After hot reload compile, context menu shows nothing

  2. I tried turning context sensitive off as you suggested, still nothing

  3. I restart editor, and now the new BP node shows up.


**Summary**

Dear Camille,


[QUOTE=Rama;193454]
**Dont Use Hot Reload for BP Additions**
2. You cant get new BP events, functions, or UPROPERTY()'s to show up using Hot Reload, you must close the Editor and compile in VS.

[/QUOTE]


My statement that UPROPERTY(), UFUNCTION() and BP Implementable events do not work with hot reload is true for me in every case in 4.6.

I cannot make a rigorously tested statement about 4.5 though, and I look forward to hearing what your own research and testing uncovers!

For me, nothing involving reflection is getting hotreloaded in 4.6

To Original Poster

My recommendation that you try compiling outside of the Editor, in Visual Studio, and then loading the editor again still stands, does doing this cause the BP Implementable event to show up for you?

My answer here:
https://answers.unrealengine.com/questions/143791/blueprintimplementableevent-not-showing-in-editor.html#answer-147954

Is something I’ve just thoroughly tested as being true in 4.6.

I know its a bold statement, but review these past 3 posts of mine and you can see its definitely my current experience with 4.6

Rama

PS: Personally, Camille, I wish your statement were the correct one, just for the record. But so far its not been my experience.

PSS: I corrected my wiki page to mention that BP Implementable events with return values show up in the left panel, and you can right click to implement them, thanks for mentioning that!

I just went and tested addition of properties, regular ufunctions as well as blueprint events with and without return values. I’ve tested reloading from Visual Studio and reloading through the editor’s Compile. In all cases, I’ve had the changes made reflected in Blueprint after compiling.

Hot reloading of managed things is still a new addition and it might very well have been broken in 4.6, mind you. We don’t have room in our production schedule to integrate before the end of the year so I can’t compare just yet. Apart from engine version, the only thing different beyond that is that I’m running DebugGame instead of Development.

I did tear my hair for a while after integrating 4.5 because none of the changes I was making would reflect in-game. But that was because it turns out that the generated solution does not include the -debug switch necessary to start the DebugGame library, so I was still loading an outdated Development library. But I don’t think this is the case here if you’re running Development as you recommend.

Thanks for your report!

I think I will let Epic take it from here, because all of my test results are displayed in this thread, as well as yours.

This could very well be the reason for our different experiences, again I will let Epic examine this and see what they want to do about it.

Answerhub Link
https://answers.unrealengine.com/questions/148775/46-hot-reload-upropertyufunctionbp-impl-events-do.html


I hope you have a wonderful day Camille!

**Thanks again for the correction to my wiki tutorial, I've made the fix!**
https://wiki.unrealengine.com/Blueprints,_Empower_Your_Entire_Team_With_BlueprintImplementableEvent#Void_Return_Value

♥

Rama

Epic Confirmed

Epic has confirmed that the Hot Reload reflection data issues are indeed** new in 4.6.0**, and Tim Lincoln has done very thorough testing / confirmation here:

https://answers.unrealengine.com/questions/148775/46-hot-reload-upropertyufunctionbp-impl-events-do.html

Rama

This has been very useful info, thank you.

Probably implied but I have also found that changing a URPROPERTY from VisibleAnywhere to EditableDefaultsOnly (I imagine any combination of changes would yield the same result) also doesn’t update via hot reload.

I actually forgot or didn’t realize that it was working in 4.5 and assumed that hot reloading BlueprintImplementableEvents was something for the future. I’m glad its a recognized bug because I guess we’ll be seeing it (again) soon then. :slight_smile: