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); }