private void SetupElementEffectors(ColorGroup cg) { if (cg == null) { return; } elementModifierList = new ReorderableList(cg.effectors, typeof(Modifier)); elementModifierList.drawHeaderCallback = (Rect rect) => { GUI.Label(rect, "Modifiers"); }; elementModifierList.elementHeight = 16f; elementModifierList.drawElementCallback = (Rect rect, int index, bool isActive, bool isFocused) => { cg.effectors[index] = (Modifier)EditorGUI.ObjectField(rect, cg.effectors[index], typeof(Modifier), false); }; elementModifierList.onAddCallback = (ReorderableList r) => { cg.effectors.Add(null); }; }
public void AssignColorGroup(ColorGroup cg, Selectable s) { // Check Tags if (cg.tag != string.Empty && s.tag != cg.tag) { return; } // Check Regex if (cg.regex != string.Empty && !Regex.IsMatch(s.gameObject.name, cg.regex)) { return; } #if UNITY_EDITOR Undo.RecordObject(s, "Color Change"); #endif ColorBlock colors = s.colors; NamedColor namedColor; if (cg.TryGetColor(UIVars.Normal, out namedColor)) { colors.normalColor = namedColor.color; } if (cg.TryGetColor(UIVars.Highlighted, out namedColor)) { colors.highlightedColor = namedColor.color; } if (cg.TryGetColor(UIVars.Pressed, out namedColor)) { colors.pressedColor = namedColor.color; } if (cg.TryGetColor(UIVars.Disabled, out namedColor)) { colors.disabledColor = namedColor.color; } s.colors = colors; }
private void AssignColorGroup(ColorGroup cg) { selectedColorCallback(cg); Close(); }
public void AssignColorGroup(ColorGroup cg, GameObject g) { // Check Tags if (cg.tag != string.Empty && g.tag != cg.tag) { return; } // Check Regex if (cg.regex != string.Empty && !Regex.IsMatch(g.gameObject.name, cg.regex)) { return; } List <Type> types = cg.GetTypes(); foreach (Type type in types) { if (type == null) { continue; } Component[] components = g.GetComponentsInChildren(type, true); foreach (Component c in components) { if (c is Selectable) { AssignColorGroup(cg, c as Selectable); } if (c is Graphic) { AssignColorGroup(cg, c as Graphic); } } IModifier[] effectors = g.GetComponents <IModifier>(); foreach (IModifier e in effectors) { if (Application.isPlaying) { Destroy((Component)e); } else { DestroyImmediate((Component)e); } } foreach (Modifier e in cg.effectors) { if (e) { e.Apply(g); } } foreach (ColorGroupDescendant cgd in cg.descendants) { ColorGroup childCG = GetColorGroup(cgd); foreach (Transform transform in g.transform) { AssignColorGroup(childCG, transform.gameObject); } } } }
public static void DrawColorGroupHorizontal(Rect rect, ColorGroup cg, Action onClick) { guiBGColor = GUI.backgroundColor; if (cg != null && cg.Count > 0) { GUI.backgroundColor = StylesUI.borderColor; } else { GUI.backgroundColor = Color.clear; } if (GUI.Button(rect, "")) { onClick(); } GUI.backgroundColor = guiBGColor; if (cg.Count > 0) { rect.width -= 2; rect.height -= 2; rect.x += 1; rect.y += 1; if (cg.Count == 1) { EditorGUI.DrawRect(rect, cg[0].color); } else { Rect r = rect; r.width = r.width * 0.7f; EditorGUI.DrawRect(r, cg[0].color); r.x += r.width; r.width = rect.width * 0.3f; r.width = r.width / (cg.Count - 1); for (int i = 1; i < cg.Count; i++) { EditorGUI.DrawRect(r, cg[i].color); r.x += r.width; } } } GUIStyle textStyle = StylesUI.ColoredLabel; if (cg.Count > 0) { if (EditorHelper.IsColorDark(cg[0].color)) { textStyle.normal.textColor = Color.white; } else { textStyle.normal.textColor = Color.black; } } else { textStyle.normal.textColor = StylesUI.CenteredLabel.normal.textColor; } rect.width *= 0.7f; rect.x += 5; EditorGUI.LabelField(rect, cg.name, textStyle); GUI.color = guiColor; }
private void UpdateColors(ColorGroup cg) { Dictionary <string, NamedColor> old = new Dictionary <string, NamedColor>(); for (int i = 0; i < cg.Count; i++) { NamedColor nc = cg[i]; if (old.ContainsKey(nc.Name)) { continue; } old.Add(nc.Name, nc); } EUIType type = cg.uiMask; // Private checker for adding new keys to color List Action <string> CheckColor = (k) => { if (old.ContainsKey(k)) { if (!cg.Contains(old[k])) { cg.Add(old[k]); } } else { cg.Add(new NamedColor(k, Color.white)); } }; Action <string> RemoveColor = (k) => { if (old.ContainsKey(k) && cg.Contains(old[k])) { cg.Remove(old[k]); } }; if (((EUIType.Text | EUIType.RawImage | EUIType.Image) & type) == 0) { RemoveColor(UIVars.Color); } else { CheckColor(UIVars.Color); } if (((EUIType.Selectable | EUIType.Button | EUIType.Toggle) & type) == 0) { RemoveColor(UIVars.Normal); RemoveColor(UIVars.Highlighted); RemoveColor(UIVars.Pressed); RemoveColor(UIVars.Disabled); } else { CheckColor(UIVars.Normal); CheckColor(UIVars.Highlighted); CheckColor(UIVars.Pressed); CheckColor(UIVars.Disabled); } }