Files
UnrealEngineUWP/Engine/Plugins/Runtime/ModelViewViewModel/Source/ModelViewViewModelAssetSearch/Private/ModelViewViewModelAssetSearchModule.cpp
Patrick Boutot 5e36ee3d7c MVVM: Add a blueprint view to the AssetSearch. The module is not added because it depends on the AssetSearch plugin. The code to enable it is ... but the "Optional" doesn't work at the moment and it would always enabled the AssetSearch.
{
    "Name": "ModelViewViewModelAssetSearch",
    "Type": "Editor",
    "LoadingPhase": "Default"
  }
],
"Plugins": [
{
  "Name": "AssetSearch",
  "Enabled": true,
  "Optional": true
  ]
#rb editor-ui-systems
#preflight 6453f968386cf3c273d47cde

[CL 25352167 by Patrick Boutot in ue5-main branch]
2023-05-05 07:10:41 -04:00

62 lines
1.5 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "Modules/ModuleInterface.h"
#include "Modules/ModuleManager.h"
#include "IAssetSearchModule.h"
#include "MVVMWidgetBlueprintExtension_View.h"
#include "MVVMAssetSearchIndexer.h"
#define LOCTEXT_NAMESPACE "ModelViewViewModelAssetSearch"
class FMVVMAssetSearchModule : public IModuleInterface
{
public:
virtual void StartupModule() override
{
if (IAssetSearchModule* Ptr = FModuleManager::GetModulePtr<IAssetSearchModule>(ModuleName))
{
RegisterAssetIndexer();
}
else
{
ModuleChangedHandle = FModuleManager::Get().OnModulesChanged().AddRaw(this, &FMVVMAssetSearchModule::HandleModulesChanged);
}
}
virtual void ShutdownModule() override
{
if (ModuleChangedHandle.IsValid())
{
FModuleManager::Get().OnModulesChanged().Remove(ModuleChangedHandle);
ModuleChangedHandle.Reset();
}
}
private:
void HandleModulesChanged(FName InModuleName, EModuleChangeReason InReason)
{
if (InModuleName == ModuleName && InReason == EModuleChangeReason::ModuleLoaded)
{
RegisterAssetIndexer();
FModuleManager::Get().OnModulesChanged().Remove(ModuleChangedHandle);
}
}
void RegisterAssetIndexer()
{
IAssetSearchModule::Get().RegisterAssetIndexer(UMVVMWidgetBlueprintExtension_View::StaticClass(), MakeUnique<UE::MVVM::Private::FAssetSearchIndexer>());
}
private:
const FName ModuleName = "AssetSearch";
FDelegateHandle ModuleChangedHandle;
};
IMPLEMENT_MODULE(FMVVMAssetSearchModule, ModelViewViewModelAssetSearch);
#undef LOCTEXT_NAMESPACE