void RegenerateTexture()
        {
            if (ImageBind.texture != null)
            {
                DestroyImmediate(ImageBind.texture);
            }

            double h = 0;

            if (ColorPickerBind)
            {
                h = ColorPickerBind.H * 360;
            }

            var texture = new Texture2D(128, 128);

            texture.wrapMode  = TextureWrapMode.Clamp;
            texture.hideFlags = HideFlags.DontSave;

            for (int s = 0; s < 128; s++)
            {
                Color[] colors = new Color[128];
                for (int v = 0; v < 128; v++)
                {
                    colors[v] = ColorConversion.ConvertHSVToRGB(h, s / 128.0f, v / 128.0f, 1);
                }
                texture.SetPixels(s, 0, 1, 128, colors);
            }
            texture.Apply();
            ImageBind.texture = texture;
        }
Esempio n. 2
0
        void RegenerateTexture()
        {
            if (ImageBind.texture != null)
            {
                DestroyImmediate(ImageBind.texture);
            }

            Color32 baseColor = Color.black;
            float   h         = 0;
            float   s         = 0;
            float   v         = 0;
            bool    vertical  = SliderBind.direction == Slider.Direction.BottomToTop || SliderBind.direction == Slider.Direction.TopToBottom;
            bool    inverted  = SliderBind.direction == Slider.Direction.TopToBottom || SliderBind.direction == Slider.Direction.RightToLeft;

            if (ColorPickerBind)
            {
                baseColor = ColorPickerBind.Value;
                h         = ColorPickerBind.H;
                s         = ColorPickerBind.S;
                v         = ColorPickerBind.V;
            }

            int size = 255;

            switch (ColorValue)
            {
            case ColorType.H:
                size = 360;
                break;

            case ColorType.S:
            case ColorType.V:
                size = 100;
                break;

            default:
                break;
            }

            Color32[] colors  = new Color32[size];
            Texture2D texture = vertical ? new Texture2D(1, size) : new Texture2D(size, 1);

            texture.hideFlags = HideFlags.DontSave;

            switch (ColorValue)
            {
            case ColorType.R:
                for (byte i = 0; i < size; i++)
                {
                    colors[inverted ? size - 1 - i : i] = new Color32(i, baseColor.g, baseColor.b, 255);
                }
                break;

            case ColorType.G:
                for (byte i = 0; i < size; i++)
                {
                    colors[inverted ? size - 1 - i : i] = new Color32(baseColor.r, i, baseColor.b, 255);
                }
                break;

            case ColorType.B:
                for (byte i = 0; i < size; i++)
                {
                    colors[inverted ? size - 1 - i : i] = new Color32(baseColor.r, baseColor.g, i, 255);
                }
                break;

            case ColorType.A:
                for (byte i = 0; i < size; i++)
                {
                    colors[inverted ? size - 1 - i : i] = new Color32(i, i, i, 255);
                }
                break;

            case ColorType.H:
                for (int i = 0; i < size; i++)
                {
                    colors[inverted ? size - 1 - i : i] = ColorConversion.ConvertHSVToRGB(i, 1, 1, 1);
                }
                break;

            case ColorType.S:
                for (int i = 0; i < size; i++)
                {
                    colors[inverted ? size - 1 - i : i] = ColorConversion.ConvertHSVToRGB(h * 360, (float)i / size, v, 1);
                }
                break;

            case ColorType.V:
                for (int i = 0; i < size; i++)
                {
                    colors[inverted ? size - 1 - i : i] = ColorConversion.ConvertHSVToRGB(h * 360, s, (float)i / size, 1);
                }
                break;

            default:
                break;
            }
            texture.SetPixels32(colors);
            texture.Apply();
            ImageBind.texture = texture;

            switch (SliderBind.direction)
            {
            case Slider.Direction.BottomToTop:
            case Slider.Direction.TopToBottom:
                ImageBind.uvRect = new Rect(0, 0, 2, 1);
                break;

            case Slider.Direction.LeftToRight:
            case Slider.Direction.RightToLeft:
                ImageBind.uvRect = new Rect(0, 0, 1, 2);
                break;

            default:
                break;
            }
        }
Esempio n. 3
0
 void SetRGB()
 {
     _Value = ColorConversion.ConvertHSVToRGB(H * 360, S, V, _Value.a);
 }