Files
UnrealEngineUWP/Engine/Source/Editor/MeshPaint/Private/MeshPaintModule.cpp
Ryan Vance 7c51ff94af Merging //UE4/Dev-Main to Dev-VR (//UE4/Dev-VR)
CL 1 of 8
#rb integration

[CL 4748712 by Ryan Vance in Dev-VR branch]
2019-01-17 18:54:05 -05:00

88 lines
3.1 KiB
C++

// Copyright 1998-2019 Epic Games, Inc. All Rights Reserved.
#include "MeshPaintModule.h"
#include "Modules/ModuleManager.h"
#include "Textures/SlateIcon.h"
#include "EditorStyleSet.h"
#include "EditorModeRegistry.h"
#include "EditorModes.h"
#include "MeshPaintAdapterFactory.h"
#include "MeshPaintStaticMeshAdapter.h"
#include "MeshPaintSplineMeshAdapter.h"
#include "MeshPaintSkeletalMeshAdapter.h"
#include "ImportVertexColorOptionsCustomization.h"
#include "Modules/ModuleManager.h"
#include "PropertyEditorModule.h"
#include "MeshPaintSettings.h"
#include "ISettingsModule.h"
//////////////////////////////////////////////////////////////////////////
// FMeshPaintModule
namespace MeshPaintModuleConstants
{
const static FName SettingsContainerName("Editor");
const static FName SettingsCategoryName("ContentEditors");
const static FName SettingsSectionName("Mesh Paint");
}
class FMeshPaintModule : public IMeshPaintModule
{
public:
/**
* Called right after the module's DLL has been loaded and the module object has been created
*/
virtual void StartupModule() override
{
RegisterGeometryAdapterFactory(MakeShareable(new FMeshPaintGeometryAdapterForSplineMeshesFactory));
RegisterGeometryAdapterFactory(MakeShareable(new FMeshPaintGeometryAdapterForStaticMeshesFactory));
RegisterGeometryAdapterFactory(MakeShareable(new FMeshPaintGeometryAdapterForSkeletalMeshesFactory));
FPropertyEditorModule& PropertyModule = FModuleManager::LoadModuleChecked<FPropertyEditorModule>("PropertyEditor");
PropertyModule.RegisterCustomClassLayout("VertexColorImportOptions", FOnGetDetailCustomizationInstance::CreateStatic(&FVertexColorImportOptionsCustomization::MakeInstance));
ISettingsModule* SettingsModule = FModuleManager::LoadModulePtr<ISettingsModule>("Settings");
if(SettingsModule)
{
SettingsModule->RegisterSettings(
MeshPaintModuleConstants::SettingsContainerName,
MeshPaintModuleConstants::SettingsCategoryName,
MeshPaintModuleConstants::SettingsSectionName,
NSLOCTEXT("MeshPaintModule", "SettingsName", "Mesh Paint"),
NSLOCTEXT("MeshPaintModule", "SettingsDesc", "Settings related to mesh painting within the editor."),
GetMutableDefault<UMeshPaintSettings>());
}
}
virtual void ShutdownModule() override
{
FPropertyEditorModule& PropertyModule = FModuleManager::LoadModuleChecked<FPropertyEditorModule>("PropertyEditor");
PropertyModule.UnregisterCustomClassLayout("VertexColorImportOptions");
ISettingsModule* SettingsModule = FModuleManager::LoadModulePtr<ISettingsModule>("Settings");
if(SettingsModule)
{
SettingsModule->UnregisterSettings(
MeshPaintModuleConstants::SettingsContainerName,
MeshPaintModuleConstants::SettingsCategoryName,
MeshPaintModuleConstants::SettingsSectionName);
}
}
virtual void RegisterGeometryAdapterFactory(TSharedRef<IMeshPaintGeometryAdapterFactory> Factory) override
{
FMeshPaintAdapterFactory::FactoryList.Add(Factory);
}
virtual void UnregisterGeometryAdapterFactory(TSharedRef<IMeshPaintGeometryAdapterFactory> Factory) override
{
FMeshPaintAdapterFactory::FactoryList.Remove(Factory);
}
};
IMPLEMENT_MODULE( FMeshPaintModule, MeshPaint );