64 lines
2.6 KiB
C++
64 lines
2.6 KiB
C++
#include "DialogueEditor.h"
|
|
|
|
#include "AssetToolsModule.h"
|
|
#include "DialogueEditorStyle.h"
|
|
#include "DialogueSettings.h"
|
|
#include "FDialogueAssetTypeActions.h"
|
|
#include "IAssetTools.h"
|
|
#include "ISettingsModule.h"
|
|
|
|
#define LOCTEXT_NAMESPACE "FDialogueEditorModule"
|
|
|
|
void FDialogueEditorModule::StartupModule()
|
|
{
|
|
//添加需要用到的图标资源
|
|
FDialogueEditorStyle::Initialize();
|
|
//添加对话相关属性设置
|
|
if (ISettingsModule* SettingsModule = FModuleManager::GetModulePtr<ISettingsModule>("Settings"))
|
|
{
|
|
SettingsModule->RegisterSettings("Project", "Plugins", "Dialogue Plugin",
|
|
LOCTEXT("SettinsName", "Dialogue Plugin"),
|
|
LOCTEXT("SettingsDes", "Configue Dialogue Plugin"),
|
|
GetMutableDefault<UDialogueSettings>()
|
|
);
|
|
}
|
|
//添加对话资源创建菜单
|
|
IAssetTools& AssetTools = FModuleManager::LoadModuleChecked<FAssetToolsModule>("AssetTools").Get();
|
|
EAssetTypeCategories::Type DialogueAssetCategory = AssetTools.RegisterAdvancedAssetCategory(FName(TEXT("Dialogue")), LOCTEXT("Dialogue", "Dialogue"));
|
|
TSharedRef<FAssetTypeActions_Base> DialogueAssetTypeActions = MakeShareable(new FDialogueAssetTypeActions(DialogueAssetCategory));
|
|
CreatedAssetTypeActions.Add(DialogueAssetTypeActions);
|
|
AssetTools.RegisterAssetTypeActions(DialogueAssetTypeActions);
|
|
|
|
// //添加自定义的属性窗口
|
|
// FPropertyEditorModule& PropertyModule = FModuleManager::LoadModuleChecked<FPropertyEditorModule>("PropertyEditor");
|
|
// PropertyModule.RegisterCustomClassLayout("DialogueAsset", FOnGetDetailCustomizationInstance::CreateStatic(&FDialogueAssetEditorDetails::MakeInstance));
|
|
// PropertyModule.NotifyCustomizationModuleChanged();
|
|
}
|
|
|
|
void FDialogueEditorModule::ShutdownModule()
|
|
{
|
|
//注销图标资源
|
|
FDialogueEditorStyle::Shutdown();
|
|
//注销setting
|
|
if (ISettingsModule* SettingsModule = FModuleManager::GetModulePtr<ISettingsModule>("Settings"))
|
|
{
|
|
SettingsModule->UnregisterSettings("Project", "Plugins", "Dialogue Plugin");
|
|
}
|
|
//注销typeaction
|
|
if (FModuleManager::Get().IsModuleLoaded("AssetTools"))
|
|
{
|
|
FAssetToolsModule& AssetToolsModule = FModuleManager::LoadModuleChecked<FAssetToolsModule>("AssetTools");
|
|
IAssetTools& AssetTools = AssetToolsModule.Get();
|
|
for (auto Action : CreatedAssetTypeActions)
|
|
{
|
|
|
|
AssetTools.UnregisterAssetTypeActions(Action.ToSharedRef());
|
|
}
|
|
CreatedAssetTypeActions.Empty();
|
|
}
|
|
|
|
}
|
|
|
|
#undef LOCTEXT_NAMESPACE
|
|
|
|
IMPLEMENT_MODULE(FDialogueEditorModule, DialogueEditor) |