/// <summary> /// Sets all materials on the renderers to copies using fallback shaders /// </summary> /// <param name="renders"></param> internal void SetFallbacks(Renderer[] renders) { foreach (var r in renders) { var serial = new SerializedObject(r); var materials = serial.FindProperty("m_Materials"); for (int i = 0; i < r.sharedMaterials.Length; i++) { var oldMat = r.sharedMaterials[i]; if (AssetDatabaseHelpers.IsBuiltInAsset(oldMat)) { continue; } var newMat = cache.GetCachedCopy(oldMat, out bool _); var fallback = MaterialManager.CreateFallbackMaterial(newMat, Color.white); var mat = materials.GetArrayElementAtIndex(i); mat.objectReferenceValue = newMat; } serial.ApplyModifiedProperties(); AssetDatabase.SaveAssets(); PumkinsAvatarTools.Log($"Set fallback materials for <b>{r.gameObject.name}</b>"); } }
public static LokiSettings Get() { var settings = AssetDatabaseHelpers.LoadAll <LokiSettings>().FirstOrDefault(); if (settings == null) { settings = CreateInstance <LokiSettings>(); AssetDatabaseHelpers.CreateAssetMkdir(settings, "Assets/Loki/LokiSettings.asset"); } return(settings); }
public static LokiDatabase Get() { var dbs = AssetDatabaseHelpers.LoadAll <LokiDatabase>(); var db = dbs.FirstOrDefault(); if (db == null) { db = CreateInstance <LokiDatabase>(); AssetDatabaseHelpers.CreateAssetMkdir(db, "Assets/Loki/LokiDatabase.asset"); } else { for (var i = 1; i < dbs.Count; i++) { DestroyImmediate(dbs[i], true); } AssetDatabase.SaveAssets(); } return(db); }
public static bool IsCreated() { return(AssetDatabaseHelpers.LoadAll <LokiDatabase>().Any()); }