internal static void Enforce_Flags(ref Texture2D tex, TextureOpFlags flags)
 {
     if ((flags & TextureOpFlags.NO_MIPMAPPING) == TextureOpFlags.NO_MIPMAPPING)
     {
         tex.mipMapBias = -(tex.mipmapCount);
     }
     if ((flags & TextureOpFlags.NO_WRAPPING) == TextureOpFlags.NO_WRAPPING)
     {
         tex.wrapMode = TextureWrapMode.Clamp;
     }
 }
        /// <summary>
        /// Assists in loading a texture from a byte array.
        /// </summary>
        /// <param name="data">The texture file data.</param>
        /// <param name="name">A name to assign the texture instance.</param>
        /// <param name="flags">A set of flags from the <c>TextureOpFlags</c> enum.</param>
        /// <returns></returns>
        public static Texture Load(byte[] data, TextureOpFlags flags, string name = null)
        {
            if (data == null || data.Length <= 0)
            {
                return(null);
            }
            var tex = (Texture2D)TextureHelper.Load(data, name);

            Enforce_Flags(ref tex, flags);
            return(tex);
        }
        /// <summary>
        /// Assists in loading a texture from a file that is an embedded resource.
        /// </summary>
        /// <param name="name">The embedded resource name.</param>
        /// <param name="namespace_str">The main namespace of the calling Assembly.</param>
        /// <param name="flags">A set of flags from the <c>TextureOpFlags</c> enum.</param>
        /// <returns></returns>
        public static Texture Load_From_Resource(string name, string namespace_str, TextureOpFlags flags)
        {
            var asset_name = String.Format("{0}.Resources.{1}", namespace_str, name);

            using (var stream = Assembly.GetCallingAssembly().GetManifestResourceStream(asset_name))
            {
                var data = Util.Read_Stream(stream);
                if (data == null)
                {
                    SLog.Info("UNABLE TO LOAD SPECIFIED RESOURCE: {0}", name);
                }
                return(Load(data, flags, name));
            }
        }
        public static Texture2D Flip_Vertical(Texture2D tex, TextureOpFlags flags)
        {
            var cpy = new Texture2D(tex.width, tex.height);

            for (var x = 0; x < tex.width; x++)
            {
                for (var y = 0; y < tex.height; y++)
                {
                    var p = tex.GetPixel(x, y);
                    cpy.SetPixel(x, (tex.height - (y + 1)), p);
                }
            }

            cpy.Apply();
            Enforce_Flags(ref cpy, flags);
            return(cpy);
        }