Decompiled source of RetexturePlugin v3.1.0

RetexturePlugin.dll

Decompiled a month ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Text.RegularExpressions;
using BepInEx;
using BepInEx.Configuration;
using ModdingTales;
using UnityEngine;
using UnityEngine.Video;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("RetexturePlugin")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("RetexturePlugin")]
[assembly: AssemblyCopyright("Copyright ©  2026")]
[assembly: AssemblyTrademark("RetexturePlugin")]
[assembly: ComVisible(false)]
[assembly: Guid("c303405d-e66c-4316-9cdb-4e3ca15c6360")]
[assembly: AssemblyFileVersion("3.1.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
[assembly: AssemblyVersion("3.1.0.0")]
namespace LordAshes;

[BepInPlugin("org.lordashes.plugins.retexture", "Retexture Plug-In", "3.1.0.0")]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
public class RetexturePlugin : BaseUnityPlugin
{
	public class ReplacementMateiral
	{
		public Renderer renderer { get; set; }

		public Material material { get; set; }
	}

	public static class Utility
	{
		public static bool isBoardLoaded()
		{
			try
			{
				bool flag = (bool)Reflection.Property(Reflection.Type("CameraController", (string[])null, (string[])null, 0), "HasInstance", (string)null).GetValue(null);
				bool flag2 = (bool)Reflection.Property(Reflection.Type("BoardSessionManager", (string[])null, (string[])null, 0), "HasInstance", (string)null).GetValue(null);
				bool flag3 = (bool)Reflection.Property(Reflection.Type("BoardSessionManager", (string[])null, (string[])null, 0), "HasInstance", (string)null).GetValue(null);
				return flag && flag2 && !flag3;
			}
			catch
			{
				return false;
			}
		}

		public static float ParseFloat(string value)
		{
			return float.Parse(value, CultureInfo.InvariantCulture);
		}

		public static object FindObjectInHierarchy<T>(GameObject start, string fullName = null, string partialName = null)
		{
			return FindObjectsInHierarchy<T>(start, fullName, partialName)?.ElementAt(0);
		}

		public static object[] FindObjectsInHierarchy<T>(GameObject start, string fullName = null, string partialName = null)
		{
			List<object> results = new List<object>();
			Traverse<T>(start, ref results, fullName, partialName);
			if (results.Count > 0)
			{
				return results.ToArray();
			}
			return null;
		}

		public static void Traverse<T>(GameObject start, ref List<object> results, string fullName = null, string partialName = null)
		{
			LoggingPlugin.LogDebug("Found GameObject " + ((Object)start).name + " (" + ((Object)start.transform).name + ") While Seeking " + typeof(T).ToString() + " With Name " + ((fullName == null) ? "Unspecified" : fullName) + " And Parial Name " + ((partialName == null) ? "Unspecified" : partialName));
			if (((object)start).GetType() == typeof(T) && (fullName == null || ((Object)start).name == fullName) && (partialName == null || ((Object)start).name.Contains(partialName)))
			{
				LoggingPlugin.LogDebug("Adding GameObject " + ((Object)start).name + " To Results");
				results.Add(start);
			}
			Component[] components = start.GetComponents(typeof(T));
			foreach (Component val in components)
			{
				LoggingPlugin.LogDebug("Found GameObject " + ((Object)start).name + " (" + ((Object)start.transform).name + ") Component " + ((Object)val).name + " (" + ((object)val).GetType().ToString() + ") While Seeking " + typeof(T).ToString() + " With Name " + ((fullName == null) ? "Unspecified" : fullName) + " And Parial Name " + ((partialName == null) ? "Unspecified" : partialName));
				if ((fullName == null || ((Object)start).name == fullName) && (partialName == null || ((Object)start).name.Contains(partialName)))
				{
					LoggingPlugin.LogDebug("Assing GameObject " + ((Object)start).name + " Component " + ((Object)val).name + " To Results");
					results.Add(val);
				}
			}
			for (int j = 0; j < start.transform.childCount; j++)
			{
				Transform child = start.transform.GetChild(j);
				Traverse<T>(((Component)child).gameObject, ref results, fullName, partialName);
			}
		}

		public static GameObject FindObjectWithInHierarchy<T>(GameObject start, string fullName = null, string partialName = null)
		{
			return FindObjectsWithInHierarchy<T>(start, fullName, partialName)?.ElementAt(0);
		}

		public static GameObject[] FindObjectsWithInHierarchy<T>(GameObject start, string fullName = null, string partialName = null)
		{
			List<GameObject> results = new List<GameObject>();
			TraverseWith<T>(start, ref results, fullName, partialName);
			if (results.Count > 0)
			{
				return results.ToArray();
			}
			return null;
		}

		public static void TraverseWith<T>(GameObject start, ref List<GameObject> results, string fullName = null, string partialName = null)
		{
			LoggingPlugin.LogDebug("Found GameObject " + ((Object)start).name + " (" + ((Object)start.transform).name + ") While Seeking " + typeof(T).ToString() + " With Name " + ((fullName == null) ? "Unspecified" : fullName) + " And Parial Name " + ((partialName == null) ? "Unspecified" : partialName));
			if (((object)start).GetType() == typeof(T) && (fullName == null || ((Object)start).name == fullName) && (partialName == null || ((Object)start).name.Contains(partialName)))
			{
				LoggingPlugin.LogDebug("Adding GameObject " + ((Object)start).name + " To Results");
				results.Add(start);
			}
			Component[] components = start.GetComponents(typeof(T));
			foreach (Component val in components)
			{
				LoggingPlugin.LogDebug("Found GameObject " + ((Object)start).name + " (" + ((Object)start.transform).name + ") Component " + ((Object)val).name + " (" + ((object)val).GetType().ToString() + ") While Seeking " + typeof(T).ToString() + " With Name " + ((fullName == null) ? "Unspecified" : fullName) + " And Parial Name " + ((partialName == null) ? "Unspecified" : partialName));
				if ((fullName == null || ((Object)start).name == fullName) && (partialName == null || ((Object)start).name.Contains(partialName)))
				{
					LoggingPlugin.LogDebug("Adding GameObject " + ((Object)start).name + " Component To Results");
					results.Add(start);
				}
			}
			for (int j = 0; j < start.transform.childCount; j++)
			{
				Transform child = start.transform.GetChild(j);
				TraverseWith<T>(((Component)child).gameObject, ref results, fullName, partialName);
			}
		}

		public static object LookUp(in Dictionary<string, object> dictionary, string key)
		{
			foreach (KeyValuePair<string, object> item in dictionary)
			{
				if (item.Key.ToUpper() == key.ToUpper())
				{
					return item.Value;
				}
			}
			return null;
		}

		public static void PostOnMainPage(BaseUnityPlugin plugin)
		{
			string text = "Lord Ashes" + ("Lord Ashes".ToUpper().EndsWith("S") ? "'" : "'s");
			ModdingUtils.AddPluginToMenuList(plugin, text);
		}
	}

	public const string Name = "Retexture Plug-In";

	public const string Guid = "org.lordashes.plugins.retexture";

	public const string Version = "3.1.0.0";

	public const string Author = "Lord Ashes";

	public static Type _CreatureBoardAsset = Reflection.Type("CreatureBoardAsset", (string[])null, (string[])null, 0);

	public static Type _CreatureGuid = Reflection.Type("CreatureGuid", (string[])null, (string[])null, 0);

	public static Type _CreaturePresenter = Reflection.Type("CreaturePresenter", (string[])null, (string[])null, 0);

	public static Type _LocalClient = Reflection.Type("LocalClient", (string[])null, (string[])null, 0);

	public static Type _SystemMessage = Reflection.Type("SystemMessage", (string[])null, (string[])null, 0);

	private Dictionary<object, ReplacementMateiral> originalMaterials = new Dictionary<object, ReplacementMateiral>();

	private Guid subscriptionId = System.Guid.Empty;

	private static readonly Regex GuidWithOptionalSuffix = new Regex("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}(\\..+)?$", RegexOptions.Compiled);

	private ConfigEntry<KeyboardShortcut> triggerKey { get; set; }

	private ConfigEntry<KeyboardShortcut> triggerResetKey { get; set; }

	private ConfigEntry<bool> affectAuras { get; set; }

	private void Awake()
	{
		//IL_0018: Unknown result type (might be due to invalid IL or missing references)
		//IL_0033: Unknown result type (might be due to invalid IL or missing references)
		//IL_0038: Unknown result type (might be due to invalid IL or missing references)
		//IL_0077: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
		LoggingPlugin.SetLogLevel(((BaseUnityPlugin)this).Config.Bind<DiagnosticLevel>("Settings", "Diagnostic Level", (DiagnosticLevel)3, (ConfigDescription)null).Value);
		string? assemblyQualifiedName = ((object)this).GetType().AssemblyQualifiedName;
		DiagnosticLevel logLevel = LoggingPlugin.GetLogLevel();
		LoggingPlugin.LogInfo(assemblyQualifiedName + ": Active. (Diagnostic Mode = " + ((object)(DiagnosticLevel)(ref logLevel)).ToString() + ")");
		triggerKey = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>("Hotkeys", "Repaint Asset Activation", new KeyboardShortcut((KeyCode)120, (KeyCode[])(object)new KeyCode[1] { (KeyCode)305 }), (ConfigDescription)null);
		triggerResetKey = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>("Hotkeys", "Transform (Recall) Repainted", new KeyboardShortcut((KeyCode)121, (KeyCode[])(object)new KeyCode[1] { (KeyCode)305 }), (ConfigDescription)null);
		affectAuras = ((BaseUnityPlugin)this).Config.Bind<bool>("Settings", "Affect Auras Instead Of Mini When Present", false, (ConfigDescription)null);
		AssetDataPlugin.Subscribe("org.lordashes.plugins.retexture", (Action<DatumChange>)RequestHandler, (Func<DatumChange, bool>)Checker.CheckSourceAsCreature);
		Utility.PostOnMainPage((BaseUnityPlugin)(object)this);
	}

	private void Update()
	{
		//IL_0007: Unknown result type (might be due to invalid IL or missing references)
		//IL_000c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0125: Unknown result type (might be due to invalid IL or missing references)
		//IL_012a: Unknown result type (might be due to invalid IL or missing references)
		KeyboardShortcut value = triggerKey.Value;
		if (((KeyboardShortcut)(ref value)).IsUp())
		{
			LoggingPlugin.LogDebug("Make Retexture Request For Selected Mini");
			object asset = Reflection.Execute(Reflection.Method(_CreaturePresenter, "TryGetAsset", (string[])null), (object)null, new object[2]
			{
				Reflection.Property(_LocalClient, "SelectedCreatureId", (string)null).GetValue(null),
				null
			}, 2);
			if (asset != null)
			{
				Reflection.Execute(Reflection.Method(_SystemMessage, "AskForTextInput", (string[])null), (object)null, new object[8]
				{
					"Replacement Texture...",
					"\r\nSource:",
					"Texture",
					(Action<object>)delegate(object source)
					{
						AssetDataPlugin.SetInfo(Reflection.Property(_CreatureBoardAsset, "CreatureId", (string)null).GetValue(asset).ToString(), "org.lordashes.plugins.retexture", source, false);
					},
					null,
					"Original",
					(Action)delegate
					{
						AssetDataPlugin.ClearInfo(Reflection.Property(_CreatureBoardAsset, "CreatureId", (string)null).GetValue(asset).ToString(), "org.lordashes.plugins.retexture", false);
					},
					""
				}, 0);
			}
			else
			{
				Reflection.Execute(Reflection.Method(_SystemMessage, "DisplayInfoText", (string[])null), (object)null, new object[4]
				{
					"Retexture Plugin Requires A Selected Mini",
					Type.Missing,
					Type.Missing,
					Type.Missing
				}, 0);
			}
		}
		value = triggerResetKey.Value;
		if (((KeyboardShortcut)(ref value)).IsUp())
		{
			LoggingPlugin.LogDebug("Reset Retexture Subscription");
			if (subscriptionId != System.Guid.Empty)
			{
				AssetDataPlugin.Unsubscribe(subscriptionId);
				AssetDataPlugin.Subscribe("org.lordashes.plugins.retexture", (Action<DatumChange>)RequestHandler, (Func<DatumChange, bool>)Checker.CheckSourceAsCreature);
			}
		}
	}

	private void RequestHandler(DatumChange change)
	{
		//IL_0159: Unknown result type (might be due to invalid IL or missing references)
		//IL_0160: Expected O, but got Unknown
		//IL_05cf: Unknown result type (might be due to invalid IL or missing references)
		//IL_05d5: Invalid comparison between Unknown and I4
		try
		{
			if (change.source != null && change.source != "" && change.key != null && change.value != null)
			{
				LoggingPlugin.LogDebug("Request To Retexture " + change.source + " To " + change.value);
				object obj = Reflection.New(_CreatureGuid, new object[1] { change.source.ToString() });
				object obj2 = Reflection.Execute(Reflection.Method(_CreaturePresenter, "TryGetAsset", (string[])null), (object)null, new object[2] { obj, null }, 2);
				if (obj2 == null)
				{
					return;
				}
				string text = Reflection.Property(_CreatureBoardAsset, "Name", (string)null).GetValue(obj2).ToString();
				LoggingPlugin.LogDebug("Asset " + text + " Acquired (" + obj2.GetType().ToString() + ")");
				object value = Reflection.Property(_CreatureBoardAsset, "Link", (string)null).GetValue(obj2);
				string link = ((value != null) ? value.ToString() : "");
				GameObject val = (GameObject)Reflection.Property(_CreatureBoardAsset, "gameObject", (string)null).GetValue(obj2);
				LoggingPlugin.LogDebug("Asset " + text + " GameObject Acquired (" + (((Object)(object)val != (Object)null) ? ((object)val).GetType().ToString() : "Null") + ")");
				Renderer[] componentsInChildren = val.GetComponentsInChildren<Renderer>();
				Renderer val2 = null;
				if (affectAuras.Value && link.Contains("AURA@"))
				{
					link = link.Substring(link.IndexOf("AURA@") + "AURA@".Length);
					if (link.Contains(";"))
					{
						link = link.Substring(0, link.IndexOf(";"));
					}
					LoggingPlugin.LogDebug("Creature Aura: " + link);
					val2 = componentsInChildren.Where((Renderer r) => ((Object)((Component)((Component)r).gameObject.transform.parent).gameObject).name.EndsWith("." + link)).FirstOrDefault();
					if ((Object)(object)val2 != (Object)null)
					{
						LoggingPlugin.LogDebug("Applying To Aura Of Creature");
					}
				}
				if ((Object)(object)val2 == (Object)null)
				{
					val2 = componentsInChildren.Where((Renderer r) => ((Object)r.material).name == "RETEXTURE_MAT").FirstOrDefault();
					if ((Object)(object)val2 != (Object)null)
					{
						LoggingPlugin.LogDebug("Applying To RETEXTURE_MAP Component Of Creature");
					}
				}
				if ((Object)(object)val2 == (Object)null)
				{
					val2 = componentsInChildren.Where((Renderer r) => ((Object)r.material.shader).name == "Standard").FirstOrDefault();
					if ((Object)(object)val2 != (Object)null)
					{
						LoggingPlugin.LogDebug("Applying To ANGEL Creature");
					}
				}
				if ((Object)(object)val2 == (Object)null)
				{
					val2 = componentsInChildren.Where((Renderer r) => ((Object)r.material.shader).name == "Taleweaver/CreatureShader").FirstOrDefault();
					if ((Object)(object)val2 != (Object)null)
					{
						LoggingPlugin.LogDebug("Applying To Core Creature");
					}
				}
				if ((Object)(object)val2 == (Object)null)
				{
					val2 = componentsInChildren.Where((Renderer r) => ((Object)r.material.shader).name == "Taleweaver/HShaderEmiss").FirstOrDefault();
					if ((Object)(object)val2 != (Object)null)
					{
						LoggingPlugin.LogDebug("Applying To HeroForge Creature");
					}
				}
				if ((Object)(object)val2 == (Object)null)
				{
					val2 = componentsInChildren.Where((Renderer r) => !((Object)r.material.shader).name.Contains("Taleweaver") && !((Object)r.material.shader).name.Contains("BaseGlowShader")).FirstOrDefault();
					if ((Object)(object)val2 != (Object)null)
					{
						LoggingPlugin.LogDebug("Applying To TaleweaverLite Creature");
					}
				}
				Renderer[] componentsInChildren2 = val.GetComponentsInChildren<Renderer>();
				foreach (Renderer val3 in componentsInChildren2)
				{
					LoggingPlugin.LogDebug((((Object)(object)val3 == (Object)(object)val2) ? "> " : "  ") + text + ", Parent: " + ((Object)((Component)((Component)val3).gameObject.transform.parent).gameObject).name + ", Renderer: " + ((Object)val3).name + ", Material: " + (((Object)(object)val3.material != (Object)null) ? ((Object)val3.material).name : "Null") + ", Shader: " + (((Object)(object)val3.material.shader != (Object)null) ? ((Object)val3.material.shader).name : "Null"));
				}
				LoggingPlugin.LogDebug("Modifying " + ((Object)((Component)((Component)val2).gameObject.transform.parent).gameObject).name + ": Renderer: " + ((Object)val2).name + ", Material " + ((Object)val2.material).name + ", Shader " + ((Object)val2.material.shader).name);
				if ((int)change.action != 1 && obj2 != null && (Object)(object)val2.material != (Object)null)
				{
					LoggingPlugin.LogDebug("Applying");
					ApplyTexture(obj2, ((Component)val2).gameObject, val2, change.value.ToString().Replace("\"", ""));
					LoggingPlugin.LogDebug("Application Complete");
				}
				else if (obj2 != null && (Object)(object)val2.material != (Object)null)
				{
					LoggingPlugin.LogDebug("Restoring");
					RestoreTexture(obj2, val, val2);
					LoggingPlugin.LogDebug("Restoration Complete");
				}
			}
			else
			{
				LoggingPlugin.LogWarning("Retexture Request Incomplete");
				if (change.source == null || change.source == "")
				{
					LoggingPlugin.LogWarning("Retexture Request Missing Souce");
				}
				if (change.key == null)
				{
					LoggingPlugin.LogWarning("Retexture Request Missing Key");
				}
				if (change.value == null)
				{
					LoggingPlugin.LogWarning("Retexture Request Missing Value");
				}
			}
		}
		catch (Exception ex)
		{
			Reflection.CatchFullError(ex);
		}
	}

	private void ApplyTexture(object asset, GameObject heirarchy, Renderer renderer, string source)
	{
		//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
		//IL_00da: Expected O, but got Unknown
		if (asset != null && (Object)(object)renderer.material != (Object)null && source != null && source != "")
		{
			object value = Reflection.Property(_CreatureBoardAsset, "Name", (string)null).GetValue(asset);
			object value2 = Reflection.Property(_CreatureBoardAsset, "CreatureId", (string)null).GetValue(asset);
			if (!originalMaterials.ContainsKey(value2))
			{
				LoggingPlugin.LogDebug("Storing orignal " + value?.ToString() + " material (" + ((Object)renderer.material).name + ")");
				originalMaterials.Add(value2, new ReplacementMateiral
				{
					renderer = renderer,
					material = new Material(renderer.material)
				});
			}
			if (source.ToString().ToLower().EndsWith(".mp4") || source.ToString().ToLower().EndsWith(".mov") || source.ToString().ToLower().EndsWith(".webm") || source.ToString().ToLower().EndsWith(".wmv"))
			{
				LoggingPlugin.LogDebug("Retexturing " + value?.ToString() + " with Video (" + ((Object)renderer.material).name + ":" + ((Object)renderer.material.mainTexture).name + ") from '" + source + "'");
				ApplyVideo(heirarchy, new ReplacementMateiral
				{
					renderer = renderer,
					material = renderer.material
				}, source);
			}
			else
			{
				LoggingPlugin.LogDebug("Retexturing " + value?.ToString() + " with Texture (" + ((Object)renderer.material).name + ":" + ((Object)renderer.material.mainTexture).name + ") from '" + source + "'");
				renderer.material.mainTexture = (Texture)(object)LoadTextureRGBA32(source);
			}
		}
		else
		{
			LoggingPlugin.LogWarning("Apply Texture Has Null Asset, Null Mateiral, Or Null Source");
		}
	}

	private void RestoreTexture(object asset, GameObject heirarchy, Renderer renderer)
	{
		//IL_012c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0136: Expected O, but got Unknown
		if (asset != null && (Object)(object)renderer.material != (Object)null)
		{
			string text = Reflection.Property(_CreatureBoardAsset, "Name", (string)null).GetValue(asset).ToString();
			object value = Reflection.Property(_CreatureBoardAsset, "CreatureId", (string)null).GetValue(asset);
			VideoPlayer component = heirarchy.GetComponent<VideoPlayer>();
			if ((Object)(object)component != (Object)null)
			{
				Object.Destroy((Object)(object)component);
			}
			VideoPlayer[] componentsInChildren = heirarchy.GetComponentsInChildren<VideoPlayer>();
			foreach (VideoPlayer val in componentsInChildren)
			{
				Object.Destroy((Object)(object)val);
			}
			LoggingPlugin.LogDebug("Restoring " + text + " to original material (" + ((Object)originalMaterials[value].material).name + ")");
			LoggingPlugin.LogDebug("Renderer Passed " + ((Object)renderer).name);
			LoggingPlugin.LogDebug("Renderer Stored " + ((Object)originalMaterials[value].renderer).name);
			renderer.material = new Material(originalMaterials[value].material);
			LoggingPlugin.LogDebug("Removing stored material for " + text);
			originalMaterials.Remove(value);
		}
		else
		{
			LoggingPlugin.LogWarning("Restore Texture Has Null Asset, or Null Mateiral");
		}
	}

	private void ApplyVideo(GameObject heirarchy, ReplacementMateiral replacement, string source)
	{
		if ((Object)(object)heirarchy != (Object)null && ((Object)this).name != null && ((Object)this).name != "" && source != null && source != "")
		{
			VideoPlayer component = heirarchy.GetComponent<VideoPlayer>();
			if ((Object)(object)component != (Object)null)
			{
				Object.Destroy((Object)(object)component);
			}
			VideoPlayer[] componentsInChildren = heirarchy.GetComponentsInChildren<VideoPlayer>();
			foreach (VideoPlayer val in componentsInChildren)
			{
				Object.Destroy((Object)(object)val);
			}
			LoggingPlugin.LogDebug("Looking At Material " + ((Object)replacement.renderer).name + "." + ((Object)replacement.material).name);
			GameObject gameObject = ((Component)replacement.renderer).gameObject;
			VideoPlayer val2 = default(VideoPlayer);
			if (!gameObject.TryGetComponent<VideoPlayer>(ref val2))
			{
				val2 = gameObject.AddComponent<VideoPlayer>();
			}
			val2.playOnAwake = true;
			val2.source = (VideoSource)1;
			if (!source.ToString().ToLower().StartsWith("http"))
			{
				source = "file://" + source;
			}
			val2.url = source;
			val2.isLooping = true;
		}
		else
		{
			LoggingPlugin.LogWarning("Apply Vide Has Null Asset, Null Name, or Null Source");
		}
	}

	public static Texture2D LoadTextureRGBA32(string rawFilePath)
	{
		//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ad: Expected O, but got Unknown
		LoggingPlugin.LogDebug("Requesting Texture from '" + rawFilePath + "'");
		string text = rawFilePath;
		try
		{
			LoggingPlugin.LogDebug("Search: " + rawFilePath);
			string[] array = File.Find(rawFilePath, (CacheType)999);
			string[] array2 = array;
			foreach (string text2 in array2)
			{
				LoggingPlugin.LogDebug("Found: " + text2);
			}
			text = ((array.Length != 0) ? array[0] : null);
		}
		catch (Exception ex)
		{
			Reflection.CatchFullError(ex);
		}
		LoggingPlugin.LogDebug("Loading Texture from '" + text + "'");
		byte[] array3 = File.ReadAllBytes(text);
		Texture2D val = new Texture2D(2, 2, (TextureFormat)4, false, false);
		if (!ImageConversion.LoadImage(val, array3, false))
		{
			Debug.LogError((object)("Failed to load image: " + text));
			return null;
		}
		((Texture)val).wrapMode = (TextureWrapMode)1;
		((Texture)val).filterMode = (FilterMode)1;
		val.Apply();
		return val;
	}

	public static bool IsGuidWithOptionalText(string input)
	{
		if (string.IsNullOrWhiteSpace(input))
		{
			return false;
		}
		return GuidWithOptionalSuffix.IsMatch(input);
	}
}