public static void Color(Property property) { Color baseColor = GUI.color; Color valueColor = (Color)property.value; GUI.color = baseColor * valueColor; if (GUILayout.Button(property.name)) { ColorPickerGUI colorPicker = GUIPanel.guiGameObject.AddComponent<ColorPickerGUI>(); colorPicker.title = property.name; colorPicker.SetColor(valueColor); colorPicker.handler = (Color color) => { property.value = color; }; } GUI.color = baseColor; }
private void ColorTab() { if (highlightMaterial == null || !ResourcesDirectory.IsCustomMaterial(highlightMaterial)) { highlightMaterial = ResourcesDirectory.MakeCustomMaterial(colorMode, allowAlpha); if (allowAlpha) { highlightMaterial.color = new Color(0, 0, 1, 0.25f); } else { highlightMaterial.color = Color.red; } if (handler != null) { handler(highlightMaterial); } } ColorMode newMode; if (colorModeSet == ColorModeSet.UNLIT_ONLY) { newMode = ColorMode.UNLIT; } else { string[] colorModes; if (colorModeSet == ColorModeSet.OBJECT) { colorModes = OBJECT_COLOR_MODES; } else if (allowAlpha) { colorModes = TRANSPARENT_COLOR_MODES; } else { colorModes = OPAQUE_COLOR_MODES; } // TODO: this is ugly int m = System.Array.IndexOf(colorModes, COLOR_MODE_NAMES[(int)colorMode]); m = GUILayout.SelectionGrid(m, colorModes, colorModes.Length, GUIStyleSet.instance.buttonTab); newMode = (ColorMode)System.Array.IndexOf(COLOR_MODE_NAMES, colorModes[m]); } if (newMode != colorMode) { Material newMat = ResourcesDirectory.MakeCustomMaterial(newMode, allowAlpha); newMat.color = highlightMaterial.color; highlightMaterial = newMat; colorMode = newMode; if (handler != null) { handler(highlightMaterial); } } if (colorPicker == null) { colorPicker = gameObject.AddComponent <ColorPickerGUI>(); colorPicker.enabled = false; colorPicker.SetColor(highlightMaterial.color); colorPicker.includeAlpha = allowAlpha; colorPicker.handler = (Color c) => { highlightMaterial.color = c; if (handler != null) { handler(highlightMaterial); } }; } colorPicker.WindowGUI(); }