static void PopulateSpriteActionsMenu(FMenuBuilder& MenuBuilder, TArray<FAssetData> SelectedAssets) { // Create sprites TSharedPtr<FCreateSpriteFromTextureExtension> SpriteCreatorFunctor = MakeShareable(new FCreateSpriteFromTextureExtension()); SpriteCreatorFunctor->SelectedAssets = SelectedAssets; FUIAction Action_CreateSpritesFromTextures( FExecuteAction::CreateStatic(&FPaperContentBrowserExtensions_Impl::ExecuteSelectedContentFunctor, StaticCastSharedPtr<FContentBrowserSelectedAssetExtensionBase>(SpriteCreatorFunctor))); const FName PaperStyleSetName = FPaperStyle::Get()->GetStyleSetName(); MenuBuilder.AddMenuEntry( LOCTEXT("CB_Extension_Texture_CreateSprite", "Create Sprite"), LOCTEXT("CB_Extension_Texture_CreateSprite_Tooltip", "Create sprites from selected textures"), FSlateIcon(PaperStyleSetName, "AssetActions.CreateSprite"), Action_CreateSpritesFromTextures, NAME_None, EUserInterfaceActionType::Button); // Extract Sprites TSharedPtr<FCreateSpriteFromTextureExtension> SpriteExtractorFunctor = MakeShareable(new FCreateSpriteFromTextureExtension()); SpriteExtractorFunctor->SelectedAssets = SelectedAssets; SpriteExtractorFunctor->bExtractSprites = true; FUIAction Action_ExtractSpritesFromTextures( FExecuteAction::CreateStatic(&FPaperContentBrowserExtensions_Impl::ExecuteSelectedContentFunctor, StaticCastSharedPtr<FContentBrowserSelectedAssetExtensionBase>(SpriteExtractorFunctor))); MenuBuilder.AddMenuEntry( LOCTEXT("CB_Extension_Texture_ExtractSprites", "Extract Sprites"), LOCTEXT("CB_Extension_Texture_ExtractSprites_Tooltip", "Extract sprites from selected textures"), FSlateIcon(PaperStyleSetName, "AssetActions.ExtractSprites"), Action_ExtractSpritesFromTextures, NAME_None, EUserInterfaceActionType::Button); // Configure the selected textures according to the project settings (same as if it got imported from a sprite sheet) TSharedPtr<FConfigureTexturesForSpriteUsageExtension> TextureConfigFunctor = MakeShareable(new FConfigureTexturesForSpriteUsageExtension()); TextureConfigFunctor->SelectedAssets = SelectedAssets; FUIAction Action_ConfigureTexturesForSprites( FExecuteAction::CreateStatic(&FPaperContentBrowserExtensions_Impl::ExecuteSelectedContentFunctor, StaticCastSharedPtr<FContentBrowserSelectedAssetExtensionBase>(TextureConfigFunctor))); MenuBuilder.AddMenuEntry( LOCTEXT("CB_Extension_Texture_ConfigureTextureForSprites", "Apply Paper2D Texture Settings"), LOCTEXT("CB_Extension_Texture_ConfigureTextureForSprites_Tooltip", "Sets compression settings and sampling modes to the defaults specified in the 'Paper2D - Import' project settings"), FSlateIcon(PaperStyleSetName, "AssetActions.ConfigureForRetroSprites"), Action_ConfigureTexturesForSprites, NAME_None, EUserInterfaceActionType::Button); // Create sprites TSharedPtr<FCreateTileSetFromTextureExtension> TileSetCreatorFunctor = MakeShareable(new FCreateTileSetFromTextureExtension()); TileSetCreatorFunctor->SelectedAssets = SelectedAssets; FUIAction Action_CreateTileSetFromTextures( FExecuteAction::CreateStatic(&FPaperContentBrowserExtensions_Impl::ExecuteSelectedContentFunctor, StaticCastSharedPtr<FContentBrowserSelectedAssetExtensionBase>(TileSetCreatorFunctor))); MenuBuilder.AddMenuEntry( LOCTEXT("CB_Extension_Texture_CreateTileSet", "Create Tile Set"), LOCTEXT("CB_Extension_Texture_CreateTileSet_Tooltip", "Create tile set from selected texture"), FSlateIcon(PaperStyleSetName, "AssetActions.CreateTileSet"), Action_CreateTileSetFromTextures, NAME_None, EUserInterfaceActionType::Button); }
static void PopulateSpriteActionsMenu(FMenuBuilder& MenuBuilder, TArray<FAssetData> SelectedAssets) { // Create sprites TSharedPtr<FCreateSpriteFromTextureExtension> SpriteCreatorFunctor = MakeShareable(new FCreateSpriteFromTextureExtension()); SpriteCreatorFunctor->SelectedAssets = SelectedAssets; FUIAction Action_CreateSpritesFromTextures( FExecuteAction::CreateStatic(&FPaperContentBrowserExtensions_Impl::ExecuteSelectedContentFunctor, StaticCastSharedPtr<FContentBrowserSelectedAssetExtensionBase>(SpriteCreatorFunctor))); MenuBuilder.AddMenuEntry( LOCTEXT("CB_Extension_Texture_CreateSprite", "Create Sprite"), LOCTEXT("CB_Extension_Texture_CreateSprite_Tooltip", "Create sprites from selected textures"), FSlateIcon(FEditorStyle::GetStyleSetName(), "ClassIcon.PaperSprite"), Action_CreateSpritesFromTextures, NAME_None, EUserInterfaceActionType::Button); // Extract Sprites TSharedPtr<FCreateSpriteFromTextureExtension> SpriteExtractorFunctor = MakeShareable(new FCreateSpriteFromTextureExtension()); SpriteExtractorFunctor->SelectedAssets = SelectedAssets; SpriteExtractorFunctor->bExtractSprites = true; FUIAction Action_ExtractSpritesFromTextures( FExecuteAction::CreateStatic(&FPaperContentBrowserExtensions_Impl::ExecuteSelectedContentFunctor, StaticCastSharedPtr<FContentBrowserSelectedAssetExtensionBase>(SpriteExtractorFunctor))); MenuBuilder.AddMenuEntry( LOCTEXT("CB_Extension_Texture_ExtractSprites", "Extract Sprites"), LOCTEXT("CB_Extension_Texture_ExtractSprite_Tooltip", "Detects and extracts sprites from the selected textures using transparency"), FSlateIcon(), Action_ExtractSpritesFromTextures, NAME_None, EUserInterfaceActionType::Button); // Configure for retro sprites TSharedPtr<FConfigureTexturesForSpriteUsageExtension> TextureConfigFunctor = MakeShareable(new FConfigureTexturesForSpriteUsageExtension()); TextureConfigFunctor->SelectedAssets = SelectedAssets; FUIAction Action_ConfigureTexturesForSprites( FExecuteAction::CreateStatic(&FPaperContentBrowserExtensions_Impl::ExecuteSelectedContentFunctor, StaticCastSharedPtr<FContentBrowserSelectedAssetExtensionBase>(TextureConfigFunctor))); MenuBuilder.AddMenuEntry( LOCTEXT("CB_Extension_Texture_ConfigureTextureForSprites", "Configure For Retro Sprites"), LOCTEXT("CB_Extension_Texture_ConfigureTextureForSprites_Tooltip", "Sets compression settings and sampling modes to good defaults for retro sprites (nearest filtering, uncompressed, etc...)"), FSlateIcon(), Action_ConfigureTexturesForSprites, NAME_None, EUserInterfaceActionType::Button); // Create sprites TSharedPtr<FCreateTileSetFromTextureExtension> TileSetCreatorFunctor = MakeShareable(new FCreateTileSetFromTextureExtension()); TileSetCreatorFunctor->SelectedAssets = SelectedAssets; FUIAction Action_CreateTileSetFromTextures( FExecuteAction::CreateStatic(&FPaperContentBrowserExtensions_Impl::ExecuteSelectedContentFunctor, StaticCastSharedPtr<FContentBrowserSelectedAssetExtensionBase>(TileSetCreatorFunctor))); MenuBuilder.AddMenuEntry( LOCTEXT("CB_Extension_Texture_CreateTileSet", "Create Tile Set"), LOCTEXT("CB_Extension_Texture_CreateTileSet_Tooltip", "Create tile set from selected texture"), FSlateIcon(FEditorStyle::GetStyleSetName(), "ClassIcon.PaperTileSet"), Action_CreateTileSetFromTextures, NAME_None, EUserInterfaceActionType::Button); }