115 lines
4.1 KiB
C++
115 lines
4.1 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#include "AssetTypeActions_Base.h"
|
|
#include "AssetToolsModule.h"
|
|
#include "IAssetTools.h"
|
|
#include "Modules/ModuleManager.h"
|
|
#include "PropertyEditorModule.h"
|
|
#include "QwenTTSPresetDataAsset.h"
|
|
#include "QwenTTSPresetDetailsCustomization.h"
|
|
#include "QwenTTSStreamingSettingsDataAsset.h"
|
|
|
|
#define LOCTEXT_NAMESPACE "FQwenTTSStreamingEditorModule"
|
|
|
|
namespace
|
|
{
|
|
class FQwenTTSSettingsAssetTypeActions : public FAssetTypeActions_Base
|
|
{
|
|
public:
|
|
explicit FQwenTTSSettingsAssetTypeActions(EAssetTypeCategories::Type InCategory)
|
|
: Category(InCategory)
|
|
{
|
|
}
|
|
|
|
virtual FText GetName() const override { return LOCTEXT("QwenTTSSettingsName", "Qwen TTS Streaming Settings"); }
|
|
virtual FColor GetTypeColor() const override { return FColor(86, 182, 194); }
|
|
virtual UClass* GetSupportedClass() const override { return UQwenTTSStreamingSettingsDataAsset::StaticClass(); }
|
|
virtual uint32 GetCategories() override { return Category; }
|
|
virtual FText GetAssetDescription(const FAssetData& AssetData) const override
|
|
{
|
|
return LOCTEXT("QwenTTSSettingsDescription", "Gateway and playback settings for Qwen TTS streaming.");
|
|
}
|
|
|
|
private:
|
|
EAssetTypeCategories::Type Category;
|
|
};
|
|
|
|
class FQwenTTSPresetAssetTypeActions : public FAssetTypeActions_Base
|
|
{
|
|
public:
|
|
explicit FQwenTTSPresetAssetTypeActions(EAssetTypeCategories::Type InCategory)
|
|
: Category(InCategory)
|
|
{
|
|
}
|
|
|
|
virtual FText GetName() const override { return LOCTEXT("QwenTTSPresetName", "Qwen TTS Preset"); }
|
|
virtual FColor GetTypeColor() const override { return FColor(120, 176, 96); }
|
|
virtual UClass* GetSupportedClass() const override { return UQwenTTSPresetDataAsset::StaticClass(); }
|
|
virtual uint32 GetCategories() override { return Category; }
|
|
virtual FText GetAssetDescription(const FAssetData& AssetData) const override
|
|
{
|
|
return LOCTEXT("QwenTTSPresetDescription", "Voice preset and generation parameters for Qwen TTS streaming.");
|
|
}
|
|
|
|
private:
|
|
EAssetTypeCategories::Type Category;
|
|
};
|
|
}
|
|
|
|
class FQwenTTSStreamingEditorModule : public IModuleInterface
|
|
{
|
|
public:
|
|
virtual void StartupModule() override
|
|
{
|
|
IAssetTools& AssetTools = FModuleManager::LoadModuleChecked<FAssetToolsModule>("AssetTools").Get();
|
|
AudioCategory = AssetTools.FindAdvancedAssetCategory(FName("Audio"));
|
|
if (AudioCategory == EAssetTypeCategories::None)
|
|
{
|
|
AudioCategory = AssetTools.RegisterAdvancedAssetCategory(FName("Audio"), LOCTEXT("AudioCategory", "Audio"));
|
|
}
|
|
|
|
RegisterAssetTypeAction(AssetTools, MakeShared<FQwenTTSSettingsAssetTypeActions>(AudioCategory));
|
|
RegisterAssetTypeAction(AssetTools, MakeShared<FQwenTTSPresetAssetTypeActions>(AudioCategory));
|
|
|
|
FPropertyEditorModule& PropertyEditor = FModuleManager::LoadModuleChecked<FPropertyEditorModule>("PropertyEditor");
|
|
PropertyEditor.RegisterCustomClassLayout(
|
|
UQwenTTSPresetDataAsset::StaticClass()->GetFName(),
|
|
FOnGetDetailCustomizationInstance::CreateStatic(&FQwenTTSPresetDetailsCustomization::MakeInstance));
|
|
PropertyEditor.NotifyCustomizationModuleChanged();
|
|
}
|
|
|
|
virtual void ShutdownModule() override
|
|
{
|
|
if (FModuleManager::Get().IsModuleLoaded("AssetTools"))
|
|
{
|
|
IAssetTools& AssetTools = FModuleManager::GetModuleChecked<FAssetToolsModule>("AssetTools").Get();
|
|
for (const TSharedRef<IAssetTypeActions>& Action : RegisteredAssetTypeActions)
|
|
{
|
|
AssetTools.UnregisterAssetTypeActions(Action);
|
|
}
|
|
}
|
|
RegisteredAssetTypeActions.Empty();
|
|
|
|
if (FModuleManager::Get().IsModuleLoaded("PropertyEditor"))
|
|
{
|
|
FPropertyEditorModule& PropertyEditor = FModuleManager::GetModuleChecked<FPropertyEditorModule>("PropertyEditor");
|
|
PropertyEditor.UnregisterCustomClassLayout(UQwenTTSPresetDataAsset::StaticClass()->GetFName());
|
|
PropertyEditor.NotifyCustomizationModuleChanged();
|
|
}
|
|
}
|
|
|
|
private:
|
|
void RegisterAssetTypeAction(IAssetTools& AssetTools, TSharedRef<IAssetTypeActions> Action)
|
|
{
|
|
AssetTools.RegisterAssetTypeActions(Action);
|
|
RegisteredAssetTypeActions.Add(Action);
|
|
}
|
|
|
|
EAssetTypeCategories::Type AudioCategory = EAssetTypeCategories::Sounds;
|
|
TArray<TSharedRef<IAssetTypeActions>> RegisteredAssetTypeActions;
|
|
};
|
|
|
|
IMPLEMENT_MODULE(FQwenTTSStreamingEditorModule, QwenTTSStreamingEditor)
|
|
|
|
#undef LOCTEXT_NAMESPACE
|