#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("Settings")) { SettingsModule->RegisterSettings("Project", "Plugins", "Dialogue Plugin", LOCTEXT("SettinsName", "Dialogue Plugin"), LOCTEXT("SettingsDes", "Configue Dialogue Plugin"), GetMutableDefault() ); } //添加对话资源创建菜单 IAssetTools& AssetTools = FModuleManager::LoadModuleChecked("AssetTools").Get(); EAssetTypeCategories::Type DialogueAssetCategory = AssetTools.RegisterAdvancedAssetCategory(FName(TEXT("Dialogue")), LOCTEXT("Dialogue", "Dialogue")); TSharedRef DialogueAssetTypeActions = MakeShareable(new FDialogueAssetTypeActions(DialogueAssetCategory)); CreatedAssetTypeActions.Add(DialogueAssetTypeActions); AssetTools.RegisterAssetTypeActions(DialogueAssetTypeActions); // //添加自定义的属性窗口 // FPropertyEditorModule& PropertyModule = FModuleManager::LoadModuleChecked("PropertyEditor"); // PropertyModule.RegisterCustomClassLayout("DialogueAsset", FOnGetDetailCustomizationInstance::CreateStatic(&FDialogueAssetEditorDetails::MakeInstance)); // PropertyModule.NotifyCustomizationModuleChanged(); } void FDialogueEditorModule::ShutdownModule() { //注销图标资源 FDialogueEditorStyle::Shutdown(); //注销setting if (ISettingsModule* SettingsModule = FModuleManager::GetModulePtr("Settings")) { SettingsModule->UnregisterSettings("Project", "Plugins", "Dialogue Plugin"); } //注销typeaction if (FModuleManager::Get().IsModuleLoaded("AssetTools")) { FAssetToolsModule& AssetToolsModule = FModuleManager::LoadModuleChecked("AssetTools"); IAssetTools& AssetTools = AssetToolsModule.Get(); for (auto Action : CreatedAssetTypeActions) { AssetTools.UnregisterAssetTypeActions(Action.ToSharedRef()); } CreatedAssetTypeActions.Empty(); } } #undef LOCTEXT_NAMESPACE IMPLEMENT_MODULE(FDialogueEditorModule, DialogueEditor)