private void RGBChanged() { HsvColor color = HSVUtil.ConvertRgbToHsv(CurrentColor); _hue = color.normalizedH; _saturation = color.normalizedS; _brightness = color.normalizedV; }
private void RegenerateTexture() { Color32 baseColor = picker != null ? picker.CurrentColor : Color.black; float h = picker != null ? picker.H : 0; float s = picker != null ? picker.S : 0; float v = picker != null ? picker.V : 0; Texture2D texture; Color32[] colors; bool vertical = direction == Slider.Direction.BottomToTop || direction == Slider.Direction.TopToBottom; bool inverted = direction == Slider.Direction.TopToBottom || direction == Slider.Direction.RightToLeft; int size; switch (type) { case ColorValues.R: case ColorValues.G: case ColorValues.B: case ColorValues.A: size = 255; break; case ColorValues.Hue: size = 360; break; case ColorValues.Saturation: case ColorValues.Value: size = 100; break; default: throw new System.NotImplementedException(""); } if (vertical) { texture = new Texture2D(1, size); } else { texture = new Texture2D(size, 1); } texture.hideFlags = HideFlags.DontSave; colors = new Color32[size]; switch (type) { case ColorValues.R: for (byte i = 0; i < size; i++) { colors[inverted ? size - 1 - i : i] = new Color32(i, baseColor.g, baseColor.b, 255); } break; case ColorValues.G: for (byte i = 0; i < size; i++) { colors[inverted ? size - 1 - i : i] = new Color32(baseColor.r, i, baseColor.b, 255); } break; case ColorValues.B: for (byte i = 0; i < size; i++) { colors[inverted ? size - 1 - i : i] = new Color32(baseColor.r, baseColor.g, i, 255); } break; case ColorValues.A: for (byte i = 0; i < size; i++) { colors[inverted ? size - 1 - i : i] = new Color32(i, i, i, 255); } break; case ColorValues.Hue: for (int i = 0; i < size; i++) { colors[inverted ? size - 1 - i : i] = HSVUtil.ConvertHsvToRgb(i, 1, 1, 1); } break; case ColorValues.Saturation: for (int i = 0; i < size; i++) { colors[inverted ? size - 1 - i : i] = HSVUtil.ConvertHsvToRgb(h * 360, (float)i / size, v, 1); } break; case ColorValues.Value: for (int i = 0; i < size; i++) { colors[inverted ? size - 1 - i : i] = HSVUtil.ConvertHsvToRgb(h * 360, s, (float)i / size, 1); } break; default: throw new System.NotImplementedException(""); } texture.SetPixels32(colors); texture.Apply(); if (image.texture != null) { DestroyImmediate(image.texture); } image.texture = texture; switch (direction) { case Slider.Direction.BottomToTop: case Slider.Direction.TopToBottom: image.uvRect = new Rect(0, 0, 2, 1); break; case Slider.Direction.LeftToRight: case Slider.Direction.RightToLeft: image.uvRect = new Rect(0, 0, 1, 2); break; default: break; } }
private void HSVChanged() { Color color = HSVUtil.ConvertHsvToRgb(_hue * 360, _saturation, _brightness, _color.a); _color = color; }