#include "ProjectFishEditor.h" #include "AssetTypeActions_Base.h" #include "DataTableRowSelectorCustomization.h" #include "AssetActions/BagShapeAssetTypeAction.h" #define LOCTEXT_NAMESPACE "FProjectFishEditorModule" void FProjectFishEditorModule::StartupModule() { FPropertyEditorModule& PropModule = FModuleManager::LoadModuleChecked("PropertyEditor"); PropModule.RegisterCustomPropertyTypeLayout("SkillDataConfig" , FOnGetPropertyTypeCustomizationInstance::CreateStatic(&FDataTableRowSelectorCustomization::MakeInstance)); //注册资源类型编辑器 RegisterAssetTypeActions(); } void FProjectFishEditorModule::ShutdownModule() { if ( FPropertyEditorModule* PropModule = FModuleManager::GetModulePtr("PropertyEditor")) { PropModule->UnregisterCustomPropertyTypeLayout("SkillDataConfig"); } //注销资源类型编辑器 UnregisterAssetTypeActions(); } void FProjectFishEditorModule::RegisterAssetTypeActions() { FAssetToolsModule& AssetToolsModule = FModuleManager::LoadModuleChecked("AssetTools"); IAssetTools& AssetTools = AssetToolsModule.Get(); //注册自定义的菜单 EAssetTypeCategories::Type BoxShapeAssetCategory = AssetTools.RegisterAdvancedAssetCategory(FName(TEXT("Bag")), FText::FromString(TEXT("BagSystem"))); //BagShape TSharedRef BagShapeAction = MakeShareable(new FBagShapeAssetTypeAction(BoxShapeAssetCategory)); AssetTools.RegisterAssetTypeActions(BagShapeAction); CreatedAssetTypeActions.Add(BagShapeAction); } void FProjectFishEditorModule::UnregisterAssetTypeActions() { 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(FProjectFishEditorModule, ProjectFishEditor)