You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

81 lines
3.6 KiB
C#

/*****************************************************************************/
/*
Project - MudBun
Publisher - Long Bunny Labs
http://LongBunnyLabs.com
Author - Ming-Lun "Allen" Chou
http://AllenChou.net
*/
/******************************************************************************/
#if UNITY_EDITOR
using System.Collections.Generic;
using UnityEditor;
#endif
using UnityEngine;
namespace MudBun
{
public class ResourcesUtilEditor
{
#if UNITY_EDITOR
// default init/fallback materials
public static Material DefaultMeshMaterial => DefaultMeshSingleTexturedMaterial;
public static Material DefaultSplatMaterial => DefaultSplatSingleTexturedMaterial;
public static Material DefaultDecalMaterial => GetMaterial(PathUtil.DefaultDecalMaterial);
public static Material DefaultRayMarchedSurfaceMaterial => GetMaterial(PathUtil.DefaultRayMarchedSurfaceMaterial, true);
public static Material DefaultRayTracedVoxelMaterial => GetMaterial(PathUtil.DefaultRayTracedVoxelMaterial, true);
// default materials
public static Material DefaultMeshSingleTexturedMaterial => GetMaterial(PathUtil.DefaultMeshSingleTexturedMaterial);
public static Material DefaultSplatSingleTexturedMaterial => GetMaterial(PathUtil.DefaultSplatSingleTexturedMaterial);
public static Material DefaultMeshMultiTexturedMaterial => GetMaterial(PathUtil.DefaultMeshMultiTexturedMaterial);
public static Material DefaultSplatMultiTexturedMaterial => GetMaterial(PathUtil.DefaultSplatMultiTexturedMaterial);
// preset mesh materials
public static Material AlphaBlendedTransparentMeshMaterial => GetMaterial(PathUtil.AlphaBlendedTransparentMeshMaterial);
public static Material ClayMeshMaterial => GetMaterial(PathUtil.ClayMeshMaterial);
public static Material ClaymationMeshMaterial => GetMaterial(PathUtil.ClaymationMeshMaterial);
public static Material OutlineMeshMaterial => GetMaterial(PathUtil.OutlineMeshMaterial);
public static Material SdfRippleMeshMaterial => GetMaterial(PathUtil.SdfRippleMeshMaterial);
public static Material StopmotionMeshMaterial => GetMaterial(PathUtil.StopmotionMeshMaterial);
// preset splat materials
public static Material BrushStrokesSplatMaterial => GetMaterial(PathUtil.BrushStrokesSplatMaterial);
public static Material FloaterSplatMaterial => GetMaterial(PathUtil.FloaterSplatMaterial);
public static Material FloofSplatMaterial => GetMaterial(PathUtil.FloofSplatMaterial);
public static Material LeafSplatMaterial => GetMaterial(PathUtil.LeafSplatMaterial);
public static Material StopmotionSplatMaterial => GetMaterial(PathUtil.StopmotionSplatMaterial);
// preset decal materials
public static Material DecalPaintMaterial => GetMaterial(PathUtil.DecalPaintMaterial);
public static Material DecalDarkenMaterial => GetMaterial(PathUtil.DecalDarkenMaterial);
public static Material DecalLightenMaterial => GetMaterial(PathUtil.DecalLightenMaterial);
private static Dictionary<string, Material> s_materialMap = new Dictionary<string, Material>();
public static Material GetMaterial(string path, bool allowNull = false)
{
if (s_materialMap.TryGetValue(path, out var existingMat))
return existingMat;
var mat = AssetDatabase.LoadAssetAtPath<Material>($"Assets/{path}.mat");
if (mat == null
&& !allowNull)
{
Debug.LogError($"MudBun: Cannot load renderer material at \"{path}.mat\". Did you forget to import \"{PathUtil.RenderPipelineFull}\"?");
}
if (mat != null)
s_materialMap[path] = mat;
return mat;
}
#endif
}
}