Exemple #1
0
        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);
            };
        }
Exemple #2
0
        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();
 }
Exemple #4
0
        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);
                    }
                }
            }
        }
Exemple #5
0
        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;
        }
Exemple #6
0
        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);
            }
        }