Example #1
0
        private static Texture2D GradientTexture(TextureStruct textureProto, GradientType type)
        {
            if (!UnityData.IsInMainThread)
            {
                Log.Error("Tried to create a texture from a different thread.");
                return(null);
            }

            var from = textureProto.ColorFrom();
            var to   = textureProto.ColorTo();

            Texture2D texture2D;

            switch (type)
            {
            case GradientType.Left:
                texture2D = LeftGradient(ref from, ref to);
                break;

            case GradientType.TopLeft:
                texture2D = TopLeftGradient(ref from, ref to);
                break;

            case GradientType.BottomLeft:
                texture2D = BottomLeftGradient(ref from, ref to);
                break;

            case GradientType.Right:
                texture2D = RightGradient(ref from, ref to);
                break;

            case GradientType.TopRight:
                texture2D = TopRightGradient(ref from, ref to);
                break;

            case GradientType.BottomRight:
                texture2D = BottomRightGradient(ref from, ref to);
                break;

            case GradientType.Top:
                texture2D = TopGradient(ref from, ref to);
                break;

            case GradientType.Bottom:
                texture2D = BottomGradient(ref from, ref to);
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(type), type, null);
            }

            texture2D.filterMode = FilterMode.Bilinear;
            texture2D.Apply();
            return(texture2D);
        }