LifePlay-Revival/Plugins/StreetMap/Source/StreetMapImporting/StreetMapImporting.cpp
2017-12-09 23:33:11 +07:00

63 lines
2.1 KiB
C++

// 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<FAssetToolsModule>( "AssetTools" ).Get();
StreetMapAssetTypeActions = MakeShareable( new FStreetMapAssetTypeActions() );
AssetTools.RegisterAssetTypeActions( StreetMapAssetTypeActions.ToSharedRef() );
// Initialize & Register StreetMap Style
FStreetMapStyle::Initialize();
// Register StreetMapComponent Detail Customization
FPropertyEditorModule& PropertyModule = FModuleManager::GetModuleChecked<FPropertyEditorModule>("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<FAssetToolsModule>( "AssetTools" ).Get();
AssetTools.UnregisterAssetTypeActions( StreetMapAssetTypeActions.ToSharedRef() );
StreetMapAssetTypeActions.Reset();
}
// Unregister StreetMap Style
FStreetMapStyle::Shutdown();
if (FModuleManager::Get().IsModuleLoaded("PropertyEditor"))
{
FPropertyEditorModule& PropertyModule = FModuleManager::GetModuleChecked<FPropertyEditorModule>("PropertyEditor");
PropertyModule.UnregisterCustomClassLayout("StreetMapComponent");
PropertyModule.NotifyCustomizationModuleChanged();
}
}