private static bool DrawOpt(GUIContent label, HierarchyCustomiserOption opt) { bool res = false; if (res = GUILayout.Button(GC_ClearOpt, EditorStyles.miniButton, GUILayout.Width(18))) { opt.icon = null; opt.iconLeft = false; opt.iconOffs = 0; } if (label == null) { // is for tag when label = null opt.tag = EditorGUILayout.TagField(opt.tag, GUILayout.Width(100)); GUILayout.FlexibleSpace(); } else { GUILayout.Label(label, GUILayout.ExpandWidth(true)); } opt.icon = (Texture2D)EditorGUILayout.ObjectField(opt.icon, typeof(Texture2D), false, GUILayout.Width(30)); opt.iconLeft = EditorGUILayout.Toggle(opt.iconLeft, GUILayout.Width(20)); opt.iconOffs = EditorGUILayout.IntField(opt.iconOffs, GUILayout.Width(30)); GUILayout.Space(5); opt.textColor = EditorGUILayout.ColorField(opt.textColor, GUILayout.Width(40)); opt.backColor = EditorGUILayout.ColorField(opt.backColor, GUILayout.Width(40)); return(res); }
private static void HierarchyOnGUI(int instanceID, Rect rect) { if (Event.current.type != EventType.Repaint) { return; } GameObject go = EditorUtility.InstanceIDToObject(instanceID) as GameObject; if (go == null) { return; } // get options HierarchyCustomiserOption opt1 = Settings.layerOps[go.layer]; HierarchyCustomiserOption opt2 = null; Settings.TagCache.TryGetValue(go.tag, out opt2); // draw text if (!Selection.instanceIDs.Contains(instanceID)) { Color textCol = (opt2 != null && opt2.textColor.a > 0f ? opt2.textColor : opt1.textColor); Color backColor = (opt2 != null && opt2.backColor.a > 0f ? opt2.backColor : opt1.backColor); if (backColor.a > 0f) { GUI.backgroundColor = backColor; Styles.Label2.normal.textColor = (textCol.a > 0f ? textCol : TreeView.DefaultStyles.foldoutLabel.normal.textColor); Styles.Label2.padding.left = (int)rect.x; Rect r = rect; r.width += r.width; r.x = 0; Styles.Label2.Draw(r, TempGUIContent(go.name), false, false, false, false); GUI.backgroundColor = Color.white; } else if (textCol.a > 0f) { Styles.Label1.normal.textColor = textCol; Styles.Label1.Draw(rect, TempGUIContent(go.name), false, false, false, false); } } // draw icons if (opt1.icon != null) { Rect r = rect; r.width = r.height; r.x = (opt1.iconLeft ? 1f + opt1.iconOffs : rect.xMax - (r.width + 3f + opt1.iconOffs)); GUI.DrawTexture(r, opt1.icon); } if (opt2 != null && opt2.icon != null) { Rect r = rect; r.width = r.height; r.x = (opt2.iconLeft ? 1f + opt2.iconOffs : rect.xMax - (r.width + 3f + opt2.iconOffs)); GUI.DrawTexture(r, opt2.icon); } }
public void InitNew() { tagOps = new List <HierarchyCustomiserOption>(); layerOps = new HierarchyCustomiserOption[32]; for (int i = 0; i < layerOps.Length; i++) { layerOps[i] = new HierarchyCustomiserOption(); } }