コード例 #1
0
        /// <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>");
            }
        }
コード例 #2
0
ファイル: LokiSettings.cs プロジェクト: buraktaban0/loki
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
 public static bool IsCreated()
 {
     return(AssetDatabaseHelpers.LoadAll <LokiDatabase>().Any());
 }