// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" struct FSimpleUGCCommand { TSharedPtr PluginInfo; TSharedPtr CommandInfo; }; class FSimpleUGCPackager : public TSharedFromThis { public: FSimpleUGCPackager(); ~FSimpleUGCPackager(); void OpenPluginPackager(TSharedRef Plugin); void PackagePlugin(TSharedRef Plugin, const FString& OutputDirectory); /** Generates submenu content for the plugin packager command */ void GeneratePackagerMenuContent(class FMenuBuilder& MenuBuilder); /** Generates the menu content for the plugin packager toolbar button */ TSharedRef GeneratePackagerComboButtonContent(); private: /** Gets all available game mod plugin packages */ void FindAvailableGameMods(TArray>& OutAvailableGameMods); /** Gets all available game mod plugins and registers command info for them */ void GetAvailableUGCCommands(const TArray>& AvailableUGC); /** Generates menu content for the supplied set of commands */ void GeneratePackagerMenuContent_Internal(class FMenuBuilder& MenuBuilder, const TArray>& Commands); /** * Checks if a plugin has any unsaved content * * @param Plugin The plugin to check for unsaved content * @return True if all mod content has been saved, false otherwise */ bool IsAllContentSaved(TSharedRef Plugin); private: TArray> UGCCommands; };