InputBinding Assert When Loading LevelEditor module

Hey guys, working on porting my editor plugin. I’m hitting an assertion when trying to load the LevelEditor module in my StartupModule, which worked previously but is now resulting in assert below:

FLevelEditorModule& LevelEditor = 
        FModuleManager::LoadModuleChecked("LevelEditor");

D:\BuildFarm\buildmachine_$$depot$UE4-Rocket\Engine\Source\Runtime\Slate\Private\InputBinding.cpp(715): Assertion failed: InBindingContext->GetContextParent() == NAME_None || ContextMap.Find( InBindingContext->GetContextParent() ) != NULL

Thoughts?

Thanks!

This means that the parent input binding context of the level editors input binding context does not exist yet. Parent contexts must be initialized before child contexts. The point of the context is to decide what command bindings cannot overlap. In this case the parent context is the MainFrame. It is loaded fairly early in the startup sequence but it looks like plugins are loaded before that. I’ve added someone else who can hopefully shed some light on the load order of plugins and engine modules. As a workaround can you try FModuleManager::LoadModuleChecked(“MainFrame”) before you load the level editor?

Modules should not be using the command context bindings in other modules without loading them first. With this in mind, the level editor uses mainframe context bindings should always load mainframe, so this is a bug. I went ahead and added that to the code base, so it should be in the next beta release. In the meantime, Matt’s workaround should do fine.

Thanks guys, yeah that appears to be it.