Rasagar/Library/PackageCache/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/HDEditorCLI.cs
2024-08-26 23:07:20 +03:00

78 lines
2.3 KiB
C#

using System;
using UnityEngine;
namespace UnityEditor.Rendering.HighDefinition
{
class HDEditorCLI
{
enum CommandLineOperation
{
None,
ResetMaterialKeywords
}
struct CommandLineAction
{
internal CommandLineOperation operation;
}
const string k_SwitchOperation = "-operation";
public static void Run()
{
var args = System.Environment.GetCommandLineArgs();
var action = ParseCommandLine(args);
Execute(action);
}
static void Execute(CommandLineAction action)
{
switch (action.operation)
{
case CommandLineOperation.ResetMaterialKeywords:
{
Console.WriteLine("[HDEditorCLI][ResetMaterialKeywords] Starting material reset");
var matIds = AssetDatabase.FindAssets("t:Material");
for (int i = 0, length = matIds.Length; i < length; i++)
{
var path = AssetDatabase.GUIDToAssetPath(matIds[i]);
var mat = AssetDatabase.LoadAssetAtPath<Material>(path);
if (HDShaderUtils.ResetMaterialKeywords(mat))
Console.WriteLine("[HDEditorCLI][ResetMaterialKeywords] " + path);
}
break;
}
}
}
static CommandLineAction ParseCommandLine(string[] args)
{
CommandLineAction action = new CommandLineAction();
for (int i = 0, length = args.Length; i < length; ++i)
{
switch (args[i])
{
case k_SwitchOperation:
{
if (i + 1 < length)
{
++i;
try
{
action.operation = (CommandLineOperation)Enum.Parse(typeof(CommandLineOperation), args[i]);
}
catch (Exception e) { Debug.Log(e.ToString()); }
}
break;
}
}
}
return action;
}
}
}