/** Unregisters all asset thumbnail renderers. */ void UnregisterThumbnailRenderers() { if (UObjectInitialized()) { UThumbnailManager::Get().UnregisterCustomRenderer(UMediaTexture::StaticClass()); } }
virtual void ShutdownModule() override { if (!UObjectInitialized()) { return; } FGlobalTabmanager::Get()->UnregisterTabSpawner(BlutilityModule::BlutilityShelfApp); // Only unregister if the asset tools module is loaded. We don't want to forcibly load it during shutdown phase. check( EditorBlueprintAssetTypeActions.IsValid() ); if (FModuleManager::Get().IsModuleLoaded("AssetTools")) { FModuleManager::GetModuleChecked<FAssetToolsModule>("AssetTools").Get().UnregisterAssetTypeActions(EditorBlueprintAssetTypeActions.ToSharedRef()); } EditorBlueprintAssetTypeActions.Reset(); // Unregister the details customization if (FModuleManager::Get().IsModuleLoaded("PropertyEditor")) { FPropertyEditorModule& PropertyModule = FModuleManager::LoadModuleChecked<FPropertyEditorModule>("PropertyEditor"); PropertyModule.UnregisterCustomClassLayout("PlacedEditorUtilityBase"); PropertyModule.UnregisterCustomClassLayout("GlobalEditorUtilityBase"); PropertyModule.NotifyCustomizationModuleChanged(); } }
FGraphNodeClassHelper::~FGraphNodeClassHelper() { // Unregister with the Asset Registry to be informed when it is done loading up files. if (FModuleManager::Get().IsModuleLoaded(TEXT("AssetRegistry"))) { FAssetRegistryModule& AssetRegistryModule = FModuleManager::GetModuleChecked<FAssetRegistryModule>(TEXT("AssetRegistry")); AssetRegistryModule.Get().OnFilesLoaded().RemoveAll(this); AssetRegistryModule.Get().OnAssetAdded().RemoveAll(this); AssetRegistryModule.Get().OnAssetRemoved().RemoveAll(this); // Unregister to have Populate called when doing a Hot Reload. if (FModuleManager::Get().IsModuleLoaded(TEXT("HotReload"))) { IHotReloadInterface& HotReloadSupport = FModuleManager::GetModuleChecked<IHotReloadInterface>("HotReload"); HotReloadSupport.OnHotReload().RemoveAll(this); } // Unregister to have Populate called when a Blueprint is compiled. if (UObjectInitialized()) { // GEditor can't have been destructed before we call this or we'll crash. GEditor->OnBlueprintCompiled().RemoveAll(this); GEditor->OnClassPackageLoadedOrUnloaded().RemoveAll(this); } } }
void SObjectWidget::ResetWidget() { if ( UObjectInitialized() && WidgetObject ) { if ( CanRouteEvent() ) { WidgetObject->NativeDestruct(); } // NOTE: When the SObjectWidget gets released we know that the User Widget has // been removed from the slate widget hierarchy. When this occurs, we need to // immediately release all slate widget widgets to prevent deletion from taking // n-frames due to widget nesting. const bool bReleaseChildren = true; WidgetObject->ReleaseSlateResources(bReleaseChildren); WidgetObject = nullptr; } // Remove slate widget from our container ChildSlot [ SNullWidget::NullWidget ]; }
virtual void ShutdownModule() override { if (UObjectInitialized()) { // Unregister the thumbnail renderers UThumbnailManager::Get().UnregisterCustomRenderer(URoleInfo::StaticClass()); } }
/** * Final destructor, removes the object from the object array, and indirectly, from any annotations **/ UObjectBase::~UObjectBase() { // If not initialized, skip out. if( UObjectInitialized() && Class && !GIsCriticalError ) { // Validate it. check(IsValidLowLevel()); LowLevelRename(NAME_None); GetUObjectArray().FreeUObjectIndex(this); } }
void FGeometryCacheEdModule::ShutdownModule() { if (UObjectInitialized()) { FAssetToolsModule& AssetToolsModule = FAssetToolsModule::GetModule(); IAssetTools& AssetTools = AssetToolsModule.Get(); AssetTools.UnregisterAssetTypeActions(AssetAction->AsShared()); FComponentAssetBrokerage::UnregisterBroker(MakeShareable(AssetBroker)); UThumbnailManager::Get().UnregisterCustomRenderer(UGeometryCache::StaticClass()); } }
void FBehaviorTreeEditorModule::ShutdownModule() { if (!UObjectInitialized()) { return; } MenuExtensibilityManager.Reset(); ToolBarExtensibilityManager.Reset(); ClassCache.Reset(); if ( GraphPanelNodeFactory_BehaviorTree.IsValid() ) { FEdGraphUtilities::UnregisterVisualNodeFactory(GraphPanelNodeFactory_BehaviorTree); GraphPanelNodeFactory_BehaviorTree.Reset(); } // Unregister the BehaviorTree item data asset type actions if (FModuleManager::Get().IsModuleLoaded("AssetTools")) { IAssetTools& AssetToolsModule = FModuleManager::GetModuleChecked<FAssetToolsModule>("AssetTools").Get(); for(auto& AssetTypeAction : ItemDataAssetTypeActions) { if (AssetTypeAction.IsValid()) { AssetToolsModule.UnregisterAssetTypeActions(AssetTypeAction.ToSharedRef()); } } } ItemDataAssetTypeActions.Empty(); // Unregister the details customization if (FModuleManager::Get().IsModuleLoaded("PropertyEditor")) { FPropertyEditorModule& PropertyModule = FModuleManager::LoadModuleChecked<FPropertyEditorModule>("PropertyEditor"); PropertyModule.UnregisterCustomPropertyTypeLayout( "BlackboardKeySelector" ); PropertyModule.UnregisterCustomClassLayout( "BTDecorator_Blackboard" ); PropertyModule.UnregisterCustomClassLayout( "BTDecorator" ); PropertyModule.NotifyCustomizationModuleChanged(); } }
void FEnvironmentQueryEditorModule::ShutdownModule() { if (!UObjectInitialized()) { return; } ClassCache.Reset(); MenuExtensibilityManager.Reset(); ToolBarExtensibilityManager.Reset(); if ( GraphPanelNodeFactory_EnvironmentQuery.IsValid() ) { FEdGraphUtilities::UnregisterVisualNodeFactory(GraphPanelNodeFactory_EnvironmentQuery); GraphPanelNodeFactory_EnvironmentQuery.Reset(); } // Unregister the EnvironmentQuery item data asset type actions if (ItemDataAssetTypeActions.IsValid()) { if (FModuleManager::Get().IsModuleLoaded("AssetTools")) { FModuleManager::GetModuleChecked<FAssetToolsModule>("AssetTools").Get().UnregisterAssetTypeActions(ItemDataAssetTypeActions.ToSharedRef()); } ItemDataAssetTypeActions.Reset(); } // Unregister the details customization if (FModuleManager::Get().IsModuleLoaded("PropertyEditor")) { FPropertyEditorModule& PropertyModule = FModuleManager::LoadModuleChecked<FPropertyEditorModule>("PropertyEditor"); PropertyModule.UnregisterCustomPropertyTypeLayout( "EnvDirection" ); PropertyModule.UnregisterCustomPropertyTypeLayout( "EnvTraceData" ); PropertyModule.UnregisterCustomClassLayout( "EnvQueryTest" ); PropertyModule.NotifyCustomizationModuleChanged(); } }
virtual void ShutdownModule() override { if (FModuleManager::Get().IsModuleLoaded("AssetTools")) { IAssetTools& AssetTools = FModuleManager::GetModuleChecked<FAssetToolsModule>("AssetTools").Get(); if (TextureAtlasAssetTypeActions.IsValid()) { AssetTools.UnregisterAssetTypeActions(TextureAtlasAssetTypeActions.ToSharedRef()); } } if (UObjectInitialized()) { // Unregister thumbnail renderer for slate texture UThumbnailManager::Get().UnregisterCustomRenderer(UVtaSlateTexture::StaticClass()); } // Unregister plugin settings if (ISettingsModule* SettingsModule = FModuleManager::GetModulePtr<ISettingsModule>("Settings")) { SettingsModule->UnregisterSettings("Project", "Plugins", "VaTexAtlasEditor"); } }
// This function may be called during shutdown to clean up your module. For modules that support dynamic reloading, // we call this function before unloading the module. void FGameplayDebugger::ShutdownModule() { #if !(UE_BUILD_SHIPPING || UE_BUILD_TEST) if (GEngine) { GEngine->OnWorldAdded().RemoveAll(this); GEngine->OnWorldDestroyed().RemoveAll(this); #if WITH_EDITOR GEngine->OnLevelActorAdded().RemoveAll(this); GEngine->OnLevelActorDeleted().RemoveAll(this); UGameplayDebuggerSettings::StaticClass()->GetDefaultObject<UGameplayDebuggerSettings>()->OnSettingChanged().RemoveAll(this); ISettingsModule* SettingsModule = FModuleManager::GetModulePtr<ISettingsModule>("Settings"); if (SettingsModule != nullptr) { SettingsModule->UnregisterSettings("Editor", "General", "GameplayDebugger"); } # if ADD_LEVEL_EDITOR_EXTENSIONS if (UObjectInitialized() && !IsRunningCommandlet()) { // Unregister the level editor extensions { FLevelEditorModule* LevelEditor = FModuleManager::LoadModulePtr<FLevelEditorModule>(TEXT("LevelEditor")); if (LevelEditor) { LevelEditor->GetAllLevelViewportOptionsMenuExtenders().Remove(ViewMenuExtender); } } } # endif //ADD_LEVEL_EDITOR_EXTENSIONS #endif } #endif }
virtual void ShutdownModule() override { SpriteEditor_MenuExtensibilityManager.Reset(); SpriteEditor_ToolBarExtensibilityManager.Reset(); FlipbookEditor_MenuExtensibilityManager.Reset(); FlipbookEditor_ToolBarExtensibilityManager.Reset(); if (UObjectInitialized()) { UnregisterSettings(); // Unregister from the mesh paint module if (IMeshPaintModule* MeshPaintModule = FModuleManager::GetModulePtr<IMeshPaintModule>("MeshPaint")) { MeshPaintModule->UnregisterGeometryAdapterFactory(SpriteMeshPaintAdapterFactory.ToSharedRef()); SpriteMeshPaintAdapterFactory.Reset(); } FPaperLevelEditorMenuExtensions::RemoveHooks(); FPaperContentBrowserExtensions::RemoveHooks(); FComponentAssetBrokerage::UnregisterBroker(PaperTileMapBroker); FComponentAssetBrokerage::UnregisterBroker(PaperFlipbookBroker); FComponentAssetBrokerage::UnregisterBroker(PaperSpriteBroker); // Unregister the editor modes FEditorModeRegistry::Get().UnregisterMode(FSpriteGeometryEditMode::EM_SpriteGeometry); FEditorModeRegistry::Get().UnregisterMode(FEdModeTileMap::EM_TileMap); // Unregister the thumbnail renderers UThumbnailManager::Get().UnregisterCustomRenderer(UPaperSprite::StaticClass()); UThumbnailManager::Get().UnregisterCustomRenderer(UPaperTileMap::StaticClass()); UThumbnailManager::Get().UnregisterCustomRenderer(UPaperTileSet::StaticClass()); UThumbnailManager::Get().UnregisterCustomRenderer(UPaperFlipbook::StaticClass()); // Unregister the property modification handler FCoreUObjectDelegates::OnObjectPropertyChanged.Remove(OnPropertyChangedDelegateHandle); // Unregister the asset reimport handler FEditorDelegates::OnAssetReimport.Remove(OnAssetReimportDelegateHandle); } // Unregister the details customization //@TODO: Unregister them // Unregister all the asset types that we registered if (FModuleManager::Get().IsModuleLoaded("AssetTools")) { IAssetTools& AssetTools = FModuleManager::GetModuleChecked<FAssetToolsModule>("AssetTools").Get(); for (int32 Index = 0; Index < CreatedAssetTypeActions.Num(); ++Index) { AssetTools.UnregisterAssetTypeActions(CreatedAssetTypeActions[Index].ToSharedRef()); } } CreatedAssetTypeActions.Empty(); // Unregister commands FPaperEditorCommands::Unregister(); // Unregister slate style overrides FPaperStyle::Shutdown(); }