using System.Collections.Generic; using System.Text; using UnityEngine; namespace ProCore.Decals { public static class qdUtil { public static GameObject[] FindDecalsWithTexture(Texture2D img) { List list = new List(); Object[] array = Object.FindObjectsOfType(typeof(qd_Decal)); for (int i = 0; i < array.Length; i++) { qd_Decal qd_Decal2 = (qd_Decal)array[i]; if (qd_Decal2.texture == img) { list.Add(qd_Decal2.gameObject); } } return list.ToArray(); } public static void RefreshSceneDecals(DecalGroup dg) { if (!dg.isPacked) { Debug.LogWarning("Attempting to RefreshSceneDecals without a packed material"); return; } qd_Decal[] array = (qd_Decal[])Object.FindObjectsOfType(typeof(qd_Decal)); for (int i = 0; i < dg.decals.Count; i++) { qd_Decal[] array2 = array; foreach (qd_Decal qd_Decal2 in array2) { if (dg.decals[i].texture == qd_Decal2.texture) { qd_Decal2.GetComponent().sharedMaterial = dg.material; qd_Decal2.SetUVRect(dg.decals[i].atlasRect); } } } } public static void SortDecalsUsingView(ref List decals, DecalView decalView) { List list = new List(); foreach (Decal decal in decals) { int num = ((decalView != DecalView.Organizational) ? decal.atlasIndex : decal.orgIndex); int num2 = list.Count; for (int num3 = list.Count - 1; num3 > -1; num3--) { if (num < ((decalView != DecalView.Atlas) ? list[num3].orgIndex : list[num3].atlasIndex) && num < num2) { num2 = num; } } list.Insert(num2, decal); } decals = list; } public static bool Contains(this Dictionary> dic, int key, int val) { return dic.ContainsKey(key) && dic[key].Contains(val); } public static void Add(this Dictionary> dic, int key, int val) { if (key < 0 || val < 0) { return; } if (dic.ContainsKey(key)) { if (!dic[key].Contains(val)) { dic[key].Add(val); } } else { dic.Add(key, new List { val }); } } public static string ToFormattedString(this Dictionary> dic) { string text = string.Empty; foreach (KeyValuePair> item in dic) { string text2 = text; text = text2 + item.Key + " : " + item.Value.ToFormattedString(", ") + "\n"; } return text; } public static string ToFormattedString(this T[] t, string _delimiter) { if (t == null || t.Length < 1) { return "Empty Array."; } StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append(t[0].ToString()); for (int i = 1; i < t.Length; i++) { stringBuilder.Append(_delimiter + ((t[i] != null) ? t[i].ToString() : "null")); } return stringBuilder.ToString(); } public static string ToFormattedString(this List t, string _delimiter) { return t.ToArray().ToFormattedString(_delimiter); } } }