Add Games File
This commit is contained in:
+114
@@ -0,0 +1,114 @@
|
||||
// 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
|
||||
Reference in New Issue
Block a user