2023-07-19 20:42:17 -07:00

45 lines
1.2 KiB
C#

using OWML.Common;
using System.IO;
using UnityEngine;
namespace NewHorizons.Utility.Files.NHTexture;
public class Load : ITextureOperation
{
private readonly IModBehaviour _mod;
private readonly string _filename;
private readonly bool _useMipmaps;
private readonly bool _wrap;
private readonly bool _linear;
public Load(IModBehaviour mod, string filename, bool useMipmaps = true, bool wrap = false, bool linear = false)
{
_mod = mod;
_filename = filename;
_useMipmaps = useMipmaps;
_wrap = wrap;
_linear = linear;
var path = Path.Combine(mod.ModHelper.Manifest.ModFolderPath, filename);
var key = GetKey(path);
Description = $"load {key} {useMipmaps} {wrap} {linear}";
}
public string Description { get; }
public Texture2D Apply(Texture2D src)
{
var path = Path.Combine(_mod.ModHelper.Manifest.ModFolderPath, _filename);
var data = File.ReadAllBytes(path);
var dest = new Texture2D(2, 2, TextureFormat.RGBA32, _useMipmaps, _linear);
dest.name = Description;
dest.wrapMode = _wrap ? TextureWrapMode.Repeat : TextureWrapMode.Clamp;
dest.LoadImage(data);
return dest;
}
private static string GetKey(string path) => path.Substring(Main.Instance.ModHelper.OwmlConfig.ModsPath.Length);
}