using System; using System.Collections; using System.IO; using UnityEngine; using UnityEngine.Networking; using UnityEngine.UI; public class BackgroundImageHandler : MonoBehaviour { [SerializeField] private string BackgroundImage; [SerializeField] private RawImage Background; [SerializeField] private RawImage ModListBackground; [SerializeField] private RawImage OriginalBackground; [SerializeField] private string ImagePath; void Start() { ImagePath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)+@"\Schaken-ModsĀ®\Singularity\Background.png"; if (File.Exists(ImagePath)) { StartCoroutine(LoadImage(ImagePath, Background, false)); StartCoroutine(LoadImage(ImagePath, ModListBackground, false)); } } public void SetNewImageFromClipboard() { if (!GUIUtility.systemCopyBuffer.Contains("http") ) { Background.texture = ClipboardImage.Copy(); Background.SetNativeSize(); Background.SizeToParent(); SaveImageToFile(Background.texture as Texture2D); } else { StartCoroutine(LoadImage(GUIUtility.systemCopyBuffer, Background)); StartCoroutine(LoadImage(GUIUtility.systemCopyBuffer, ModListBackground)); } } public void ImportImageDragNDrop(string file) { StartCoroutine(LoadImage(file, Background)); StartCoroutine(LoadImage(file, ModListBackground)); } private IEnumerator LoadImage(string B, RawImage A, bool TF = true) { UnityWebRequest WWW = UnityWebRequestTexture.GetTexture(B); yield return WWW.SendWebRequest(); if (WWW.result != UnityWebRequest.Result.ConnectionError) { A.texture = DownloadHandlerTexture.GetContent(WWW); A.SetNativeSize(); A.SizeToParent(); A.gameObject.SetActive(true); if (TF) SaveImageToFile(A.texture as Texture2D); } } public void SaveImageToFile(Texture2D texture) { if (texture != null) { byte[] pngData = texture.EncodeToPNG(); if (File.Exists(ImagePath)) { File.Delete(ImagePath); } File.WriteAllBytes(ImagePath, pngData); } else { Debug.LogError("The texture is null."); } } public void ApplyOriginalImageToBackground() { if (OriginalBackground != null && Background != null) { Background.texture = OriginalBackground.texture; } else { Debug.LogError("originalImage or backgroundImage is not assigned."); } if (File.Exists(ImagePath)) { File.Delete(ImagePath); } } }