Files

77 lines
2.7 KiB
C#
Raw Permalink Normal View History

2025-02-19 17:24:26 +09:00
using TriLibCore.Mappers;
using TriLibCore.Utils;
using UnityEditor;
using UnityEngine;
namespace TriLibCore.Editor
{
2025-06-11 16:50:56 +09:00
/// <summary>
/// Represents a series of Material Mapper utility methods.
/// </summary>
[InitializeOnLoad]
2025-02-19 17:24:26 +09:00
public static class CheckMappers
{
2025-06-11 16:50:56 +09:00
[MenuItem("Tools/TriLib/Select Material Mappers based on Rendering Pipeline")]
private static void AutoSelect()
2025-02-19 17:24:26 +09:00
{
2025-06-11 16:50:56 +09:00
string materialMapperName;
2025-02-19 17:24:26 +09:00
for (var i = 0; i < MaterialMapper.RegisteredMappers.Count; i++)
{
2025-06-11 16:50:56 +09:00
materialMapperName = MaterialMapper.RegisteredMappers[i];
TriLibSettings.SetBool(materialMapperName, false);
2025-02-19 17:24:26 +09:00
}
2025-06-11 16:50:56 +09:00
materialMapperName = AssetLoader.GetCompatibleMaterialMapperName();
SelectMapper(materialMapperName);
}
2025-02-19 17:24:26 +09:00
2025-06-11 16:50:56 +09:00
/// <summary>
/// Enables a compatible Material Mapper if none is found.
/// </summary>
public static void EnableCompatibleMaterialMapperIfNeeded()
{
string materialMapperName;
for (var i = 0; i < MaterialMapper.RegisteredMappers.Count; i++)
2025-02-19 17:24:26 +09:00
{
2025-06-11 16:50:56 +09:00
materialMapperName = MaterialMapper.RegisteredMappers[i];
if (TriLibSettings.GetBool(materialMapperName, false))
2025-02-19 17:24:26 +09:00
{
2025-06-11 16:50:56 +09:00
return;
2025-02-19 17:24:26 +09:00
}
}
2025-06-11 16:50:56 +09:00
EnableCompatibleMaterialMapper();
2025-02-19 17:24:26 +09:00
}
2025-06-11 16:50:56 +09:00
/// <summary>
/// Tries to find the best Material Mapper depending on the Rendering Pipeline.
/// </summary>
public static void EnableCompatibleMaterialMapper()
2025-02-19 17:24:26 +09:00
{
2025-06-11 16:50:56 +09:00
var usingMaterialMapper = false;
2025-02-19 17:24:26 +09:00
for (var i = 0; i < MaterialMapper.RegisteredMappers.Count; i++)
{
var materialMapperName = MaterialMapper.RegisteredMappers[i];
2025-06-11 16:50:56 +09:00
if (TriLibSettings.GetBool(materialMapperName))
{
usingMaterialMapper = true;
break;
}
2025-02-19 17:24:26 +09:00
}
2025-06-11 16:50:56 +09:00
if (!usingMaterialMapper)
2025-02-19 17:24:26 +09:00
{
2025-06-11 16:50:56 +09:00
var materialMapperName = AssetLoader.GetCompatibleMaterialMapperName();
SelectMapper(materialMapperName);
2025-02-19 17:24:26 +09:00
}
2025-06-11 16:50:56 +09:00
}
static CheckMappers()
{
EnableCompatibleMaterialMapperIfNeeded();
2025-02-19 17:24:26 +09:00
}
public static void SelectMapper(string materialMapper)
{
2025-06-11 16:50:56 +09:00
Debug.Log($"TriLib is configured to use the '{materialMapper}' Material Mapper. If you want to use different Material Mappers, you can change this setting on the 'Edit->Project Settings->TriLib' menu.");
2025-02-19 17:24:26 +09:00
TriLibSettings.SetBool(materialMapper, true);
}
}
}