64 lines
2.6 KiB
C++
Raw Normal View History

2025-11-17 15:11:34 +08:00
#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)