// Copyright 2017 Mike Fricker. All Rights Reserved. #include "StreetMapImporting.h" #include "StreetMapAssetTypeActions.h" #include "ModuleManager.h" #include "StreetMapStyle.h" #include "StreetMapComponentDetails.h" class FStreetMapImportingModule : public IModuleInterface { public: // IModuleInterface interface virtual void StartupModule() override; virtual void ShutdownModule() override; TSharedPtr< FStreetMapAssetTypeActions > StreetMapAssetTypeActions; }; IMPLEMENT_MODULE( FStreetMapImportingModule, StreetMapImporting ) void FStreetMapImportingModule::StartupModule() { // Register asset types IAssetTools& AssetTools = FModuleManager::LoadModuleChecked( "AssetTools" ).Get(); StreetMapAssetTypeActions = MakeShareable( new FStreetMapAssetTypeActions() ); AssetTools.RegisterAssetTypeActions( StreetMapAssetTypeActions.ToSharedRef() ); // Initialize & Register StreetMap Style FStreetMapStyle::Initialize(); // Register StreetMapComponent Detail Customization FPropertyEditorModule& PropertyModule = FModuleManager::GetModuleChecked("PropertyEditor"); PropertyModule.RegisterCustomClassLayout("StreetMapComponent", FOnGetDetailCustomizationInstance::CreateStatic(&FStreetMapComponentDetails::MakeInstance)); PropertyModule.NotifyCustomizationModuleChanged(); } void FStreetMapImportingModule::ShutdownModule() { // Unregister all the asset types that we registered if( FModuleManager::Get().IsModuleLoaded( "AssetTools" ) ) { IAssetTools& AssetTools = FModuleManager::GetModuleChecked( "AssetTools" ).Get(); AssetTools.UnregisterAssetTypeActions( StreetMapAssetTypeActions.ToSharedRef() ); StreetMapAssetTypeActions.Reset(); } // Unregister StreetMap Style FStreetMapStyle::Shutdown(); if (FModuleManager::Get().IsModuleLoaded("PropertyEditor")) { FPropertyEditorModule& PropertyModule = FModuleManager::GetModuleChecked("PropertyEditor"); PropertyModule.UnregisterCustomClassLayout("StreetMapComponent"); PropertyModule.NotifyCustomizationModuleChanged(); } }