Skip to content

Commit 1c8465e

Browse files
alex-vazquez-unity3dEvergreen
authored andcommitted
[Port] [6000.3] [Material Upgrader] Generic system for URP and HDRP Menu item
1 parent 2ea182c commit 1c8465e

6 files changed

Lines changed: 64 additions & 45 deletions

File tree

Packages/com.unity.render-pipelines.core/Editor/Tools/MaterialUpgrader/MaterialUpgrader.Utils.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ namespace UnityEditor.Rendering
1212
/// </summary>
1313
public partial class MaterialUpgrader
1414
{
15+
internal static string k_DialogKey = $"{nameof(UnityEditor)}.{nameof(Rendering)}.{nameof(MaterialUpgrader)}.ConfirmMaterialConversion";
16+
1517
#region Internal API
1618
/// <summary>
1719
/// Represents an entry describing material properties
@@ -344,15 +346,15 @@ static void PerformUpgrade(List<MaterialUpgradeEntry> materialUpgrades, List<Mat
344346

345347
bool CanPerformUpgrade()
346348
{
347-
const string title = "Material Upgrader";
348-
const string message = "This operation will overwrite existing materials in your project.\n\nPlease ensure you have a backup before proceeding.";
349+
const string title = "Confirm Material Conversion";
350+
const string message = "This action will modify materials and cannot be easily undone. It is strongly recommended to have a backup or use version control before continuing.";
349351
const string proceed = "Proceed";
350352
const string cancel = "Cancel";
351353

352354
if (Application.isBatchMode)
353355
return true;
354356

355-
return EditorUtility.DisplayDialog(title, message, proceed, cancel);
357+
return EditorUtility.DisplayDialog(title, message, proceed, cancel, DialogOptOutDecisionType.ForThisMachine, k_DialogKey);
356358
}
357359

358360
if (CanPerformUpgrade())
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
using System.Collections.Generic;
2+
using UnityEngine;
3+
using UnityEngine.Rendering;
4+
5+
namespace UnityEditor.Rendering
6+
{
7+
class MaterialUpgraderEditMenus
8+
{
9+
private static readonly List<MaterialUpgrader> s_Empty = new List<MaterialUpgrader>();
10+
11+
public static List<MaterialUpgrader> GetCurrentSRPUpgraders()
12+
{
13+
if (!GraphicsSettings.isScriptableRenderPipelineEnabled)
14+
return s_Empty;
15+
16+
return MaterialUpgrader.FetchAllUpgradersForPipeline(GraphicsSettings.currentRenderPipelineAssetType);
17+
}
18+
19+
[MenuItem("Edit/Rendering/Materials/Convert All Built-In Materials to Current SRP", true)]
20+
internal static bool UpgradeMaterialsProjectValidate()
21+
{
22+
return GraphicsSettings.isScriptableRenderPipelineEnabled;
23+
}
24+
25+
[MenuItem("Edit/Rendering/Materials/Convert All Built-In Materials to Current SRP", priority = CoreUtils.Priorities.editMenuPriority + 1)]
26+
internal static void UpgradeMaterialsProject()
27+
{
28+
MaterialUpgrader.UpgradeProjectFolder(GetCurrentSRPUpgraders(), "Upgrade to SRP Material");
29+
}
30+
31+
[MenuItem("Edit/Rendering/Materials/Convert Selected Built-In Materials to Current SRP", true)]
32+
internal static bool UpgradeMaterialsSelectionValidate()
33+
{
34+
if (Selection.objects.Length == 0 || !GraphicsSettings.isScriptableRenderPipelineEnabled)
35+
return false;
36+
37+
foreach (var obj in Selection.objects)
38+
{
39+
if (obj is not Material)
40+
return false;
41+
}
42+
43+
return true;
44+
}
45+
46+
[MenuItem("Edit/Rendering/Materials/Convert Selected Built-In Materials to Current SRP", priority = CoreUtils.Priorities.editMenuPriority + 2)]
47+
internal static void UpgradeMaterialsSelection()
48+
{
49+
MaterialUpgrader.UpgradeSelection(GetCurrentSRPUpgraders(), "Upgrade to SRP Material");
50+
}
51+
}
52+
}

Packages/com.unity.render-pipelines.core/Editor/Tools/MaterialUpgrader/MaterialUpgraderEditMenus.cs.meta

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Packages/com.unity.render-pipelines.high-definition/Editor/Tools/MaterialUpgrader/MaterialUpgraderEditMenus.cs

Lines changed: 0 additions & 38 deletions
This file was deleted.

Packages/com.unity.render-pipelines.high-definition/Editor/Tools/MaterialUpgrader/MaterialUpgraderEditMenus.cs.meta

Lines changed: 0 additions & 2 deletions
This file was deleted.

Packages/com.unity.render-pipelines.high-definition/Editor/Wizard/HDWizard.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -391,6 +391,10 @@ private void UpdateWindowTitle()
391391
});
392392
}
393393

394+
public static List<MaterialUpgrader> GetHDUpgraders()
395+
{
396+
return MaterialUpgrader.FetchAllUpgradersForPipeline(typeof(HDRenderPipelineAsset));
397+
}
394398
private void CreateGUI()
395399
{
396400
UpdateWindowTitle();
@@ -431,8 +435,7 @@ private void CreateGUI()
431435

432436
container.Add(CreateTitle(Style.migrationTitle));
433437

434-
if (MaterialUpgrader.ProjectContainsNonAutomaticUpgradePath(
435-
MaterialUpgraderEditMenus.GetHDUpgraders()))
438+
if (MaterialUpgrader.ProjectContainsNonAutomaticUpgradePath(GetHDUpgraders()))
436439
{
437440
var nonBuiltinMaterialHelpBox = new HelpBox(Style.nonAutomaticUpgradeMaterials, HelpBoxMessageType.Warning);
438441
nonBuiltinMaterialHelpBox.AddToClassList("NonBuiltinMaterialWarning");

0 commit comments

Comments
 (0)