From fcd56f5296388d422363784dab21015e327fe881 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Rombauts?= Date: Sun, 13 Nov 2016 22:00:49 +0100 Subject: [PATCH] Fix issue #2 Unable to package with the plugin enabled When packaging a project, the Source Control Plugin is triggered, and try to register a Menu Extension. But the LevelEditor module is unavailable at this step, which raises an assertion. Now uses FModuleManager::GetModulePtr() and test the returned pointer instead of FModuleManager::LoadModuleChecked() that was causing the assertion. --- .../Private/PlasticSourceControlMenu.cpp | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/Source/PlasticSourceControl/Private/PlasticSourceControlMenu.cpp b/Source/PlasticSourceControl/Private/PlasticSourceControlMenu.cpp index 0dbf84bb..c18503b8 100644 --- a/Source/PlasticSourceControl/Private/PlasticSourceControlMenu.cpp +++ b/Source/PlasticSourceControl/Private/PlasticSourceControlMenu.cpp @@ -44,11 +44,14 @@ void FPlasticSourceControlMenu::Register() // Register the extension with the level editor { - FLevelEditorModule::FLevelEditorMenuExtender ViewMenuExtender = FLevelEditorModule::FLevelEditorMenuExtender::CreateRaw(this, &FPlasticSourceControlMenu::OnExtendLevelEditorViewMenu); - FLevelEditorModule& LevelEditorModule = FModuleManager::LoadModuleChecked("LevelEditor"); - auto& MenuExtenders = LevelEditorModule.GetAllLevelEditorToolbarSourceControlMenuExtenders(); - MenuExtenders.Add(ViewMenuExtender); - ViewMenuExtenderHandle = MenuExtenders.Last().GetHandle(); + FLevelEditorModule* LevelEditorModule = FModuleManager::GetModulePtr("LevelEditor"); + if (LevelEditorModule) + { + FLevelEditorModule::FLevelEditorMenuExtender ViewMenuExtender = FLevelEditorModule::FLevelEditorMenuExtender::CreateRaw(this, &FPlasticSourceControlMenu::OnExtendLevelEditorViewMenu); + auto& MenuExtenders = LevelEditorModule->GetAllLevelEditorToolbarSourceControlMenuExtenders(); + MenuExtenders.Add(ViewMenuExtender); + ViewMenuExtenderHandle = MenuExtenders.Last().GetHandle(); + } } } @@ -56,8 +59,11 @@ void FPlasticSourceControlMenu::Unregister() { // Unregister the level editor extensions { - FLevelEditorModule& LevelEditorModule = FModuleManager::LoadModuleChecked("LevelEditor"); - LevelEditorModule.GetAllLevelEditorToolbarSourceControlMenuExtenders().RemoveAll([=](const FLevelEditorModule::FLevelEditorMenuExtender& Extender) { return Extender.GetHandle() == ViewMenuExtenderHandle; }); + FLevelEditorModule* LevelEditorModule = FModuleManager::GetModulePtr("LevelEditor"); + if (LevelEditorModule) + { + LevelEditorModule->GetAllLevelEditorToolbarSourceControlMenuExtenders().RemoveAll([=](const FLevelEditorModule::FLevelEditorMenuExtender& Extender) { return Extender.GetHandle() == ViewMenuExtenderHandle; }); + } } // This function may be called during shutdown to clean up your module. For modules that support dynamic reloading,