Decompiled source of Supply Drop v1.4.11

SupplyDrop.dll

Decompiled 3 months ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using K1454.SupplyDrop;
using On.RoR2;
using R2API;
using R2API.Utils;
using RoR2;
using SupplyDrop.CoreModules;
using SupplyDrop.Items;
using SupplyDrop.Utils;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.Rendering;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = "")]
[assembly: AssemblyCompany("SupplyDrop")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("SupplyDrop")]
[assembly: AssemblyTitle("SupplyDrop")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace K1454.SupplyDrop
{
	[BepInPlugin("com.K1454.SupplyDrop", "Supply Drop", "1.4.10")]
	[BepInDependency("com.bepis.r2api", "4.3.5")]
	[NetworkCompatibility(/*Could not decode attribute arguments.*/)]
	[R2APISubmoduleDependency(new string[] { "ItemAPI", "LanguageAPI", "PrefabAPI", "RecalculateStatsAPI", "DirectorAPI", "DeployableAPI", "DamageAPI", "SoundAPI", "OrbAPI" })]
	public class SupplyDropPlugin : BaseUnityPlugin
	{
		public const string ModVer = "1.4.10";

		public const string ModName = "Supply Drop";

		public const string ModGuid = "com.K1454.SupplyDrop";

		internal static ManualLogSource ModLogger;

		internal static ConfigFile MainConfig;

		public static AssetBundle MainAssets;

		private static ConfigFile ConfigFile;

		public static Dictionary<string, string> ShaderLookup = new Dictionary<string, string>
		{
			{ "fake ror/hopoo games/deferred/hgstandard", "shaders/deferred/hgstandard" },
			{ "fake ror/hopoo games/fx/hgcloud intersection remap", "shaders/fx/hgintersectioncloudremap" },
			{ "fake ror/hopoo games/fx/hgcloud remap", "shaders/fx/hgcloudremap" },
			{ "fake ror/hopoo games/fx/hgdistortion", "shaders/fx/hgdistortion" },
			{ "fake ror/hopoo games/deferred/hgsnow topped", "shaders/deferred/hgsnowtopped" },
			{ "fake ror/hopoo games/fx/hgsolid parallax", "shaders/fx/hgsolidparallax" }
		};

		public static Dictionary<ItemBase, bool> ItemStatusDictionary = new Dictionary<ItemBase, bool>();

		public List<ItemBase> Items = new List<ItemBase>();

		public List<CoreModule> CoreModules = new List<CoreModule>();

		private void Awake()
		{
			//IL_01e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ec: Expected O, but got Unknown
			ModLogger = ((BaseUnityPlugin)this).Logger;
			MainConfig = ((BaseUnityPlugin)this).Config;
			using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("SupplyDrop.supplydrop_assets"))
			{
				MainAssets = AssetBundle.LoadFromStream(stream);
			}
			IEnumerable<Type> enumerable = from type in Assembly.GetExecutingAssembly().GetTypes()
				where !type.IsAbstract && type.IsSubclassOf(typeof(CoreModule))
				select type;
			ModLogger.LogInfo((object)"--------------CORE MODULES---------------------");
			foreach (Type item in enumerable)
			{
				CoreModule coreModule = (CoreModule)Activator.CreateInstance(item);
				coreModule.Init();
				ModLogger.LogInfo((object)("Core Module: " + coreModule.Name + " Initialized!"));
			}
			ConfigOption<bool> configOption = ((BaseUnityPlugin)this).Config.ActiveBind("Items", "Disable All Items?", defaultValue: false, "Do you wish to disable every item in Aetherium?");
			if (!configOption)
			{
				IEnumerable<Type> enumerable2 = from type in Assembly.GetExecutingAssembly().GetTypes()
					where !type.IsAbstract && type.IsSubclassOf(typeof(ItemBase))
					select type;
				ModLogger.LogInfo((object)"----------------------ITEMS--------------------");
				foreach (Type item2 in enumerable2)
				{
					ItemBase itemBase = (ItemBase)Activator.CreateInstance(item2);
					if (ValidateItem(itemBase, Items))
					{
						itemBase.Init(((BaseUnityPlugin)this).Config);
						ModLogger.LogInfo((object)("Item: " + itemBase.ItemName + " Initialized!"));
					}
				}
			}
			ConfigFile = new ConfigFile(Path.Combine(Paths.ConfigPath, "com.K1454.SupplyDrop.cfg"), true);
		}

		public bool ValidateItem(ItemBase item, List<ItemBase> itemList)
		{
			bool value = ((BaseUnityPlugin)this).Config.Bind<bool>("Item: " + item.ItemName, "Enable Item?", true, "Should this item appear in runs?").Value;
			bool value2 = ((BaseUnityPlugin)this).Config.Bind<bool>("Item: " + item.ItemName, "Blacklist Item from AI Use?", false, "Should the AI not be able to obtain this item?").Value;
			bool value3 = ((BaseUnityPlugin)this).Config.Bind<bool>("Item: " + item.ItemName, "Blacklist Item from Printers?", false, "Should the printers be able to print this item?").Value;
			bool value4 = ((BaseUnityPlugin)this).Config.Bind<bool>("Item: " + item.ItemName, "Require Unlock", true, "Should we require this item to be unlocked before it appears in runs? (Will only affect items with associated unlockables.)").Value;
			ItemStatusDictionary.Add(item, value);
			if (value)
			{
				itemList.Add(item);
				if (value2)
				{
					item.AIBlacklisted = true;
				}
				item.RequireUnlock = value4;
			}
			return value;
		}
	}
}
namespace Aetherium.Utils
{
	public class MaterialControllerComponents
	{
		public class HGControllerFinder : MonoBehaviour
		{
			public Renderer Renderer;

			public Material[] Materials;

			public void Start()
			{
				Renderer = ((Component)this).gameObject.GetComponent<Renderer>();
				if (Object.op_Implicit((Object)(object)Renderer))
				{
					Materials = Renderer.materials;
					Material[] materials = Materials;
					foreach (Material val in materials)
					{
						if (Object.op_Implicit((Object)(object)val))
						{
							switch (((Object)val.shader).name)
							{
							case "Hopoo Games/Deferred/Standard":
							{
								HGStandardController hGStandardController = ((Component)this).gameObject.AddComponent<HGStandardController>();
								hGStandardController.Material = val;
								hGStandardController.Renderer = Renderer;
								break;
							}
							case "Hopoo Games/Deferred/Snow Topped":
							{
								HGSnowToppedController hGSnowToppedController = ((Component)this).gameObject.AddComponent<HGSnowToppedController>();
								hGSnowToppedController.Material = val;
								hGSnowToppedController.Renderer = Renderer;
								((Object)hGSnowToppedController).name = ((Object)val).name + "(HGSnowTopped) Controller";
								break;
							}
							case "Hopoo Games/Deferred/Triplanar Terrain Blend":
							{
								HGTriplanarTerrainBlend hGTriplanarTerrainBlend = ((Component)this).gameObject.AddComponent<HGTriplanarTerrainBlend>();
								hGTriplanarTerrainBlend.Material = val;
								hGTriplanarTerrainBlend.Renderer = Renderer;
								break;
							}
							case "Hopoo Games/FX/Distortion":
							{
								HGDistortionController hGDistortionController = ((Component)this).gameObject.AddComponent<HGDistortionController>();
								hGDistortionController.Material = val;
								hGDistortionController.Renderer = Renderer;
								break;
							}
							case "Hopoo Games/FX/Solid Parallax":
							{
								HGSolidParallaxController hGSolidParallaxController = ((Component)this).gameObject.AddComponent<HGSolidParallaxController>();
								hGSolidParallaxController.Material = val;
								hGSolidParallaxController.Renderer = Renderer;
								break;
							}
							case "Hopoo Games/FX/Cloud Remap":
							{
								HGCloudRemapController hGCloudRemapController = ((Component)this).gameObject.AddComponent<HGCloudRemapController>();
								hGCloudRemapController.Material = val;
								hGCloudRemapController.Renderer = Renderer;
								break;
							}
							case "Hopoo Games/FX/Cloud Intersection Remap":
							{
								HGIntersectionController hGIntersectionController = ((Component)this).gameObject.AddComponent<HGIntersectionController>();
								hGIntersectionController.Material = val;
								hGIntersectionController.Renderer = Renderer;
								break;
							}
							}
						}
					}
				}
				Object.Destroy((Object)(object)this);
			}
		}

		public class HGBaseController : MonoBehaviour
		{
			public Material Material;

			public Renderer Renderer;

			public GameObject OwnerGameObject;

			public virtual string ShaderName { get; set; }

			public void Start()
			{
				OwnerGameObject = ((Component)this).gameObject;
			}

			public void Update()
			{
				if (!Object.op_Implicit((Object)(object)Material) || !Object.op_Implicit((Object)(object)Renderer))
				{
					Object.Destroy((Object)(object)this);
				}
				if ((Object.op_Implicit((Object)(object)Renderer) && Object.op_Implicit((Object)(object)Material) && !((Object)Material.shader).name.Contains(ShaderName)) || (Object.op_Implicit((Object)(object)Renderer) && (Object)(object)((Component)Renderer).gameObject != (Object)(object)OwnerGameObject))
				{
					HGControllerFinder hGControllerFinder = ((Component)Renderer).gameObject.AddComponent<HGControllerFinder>();
					hGControllerFinder.Renderer = Renderer;
					Object.Destroy((Object)(object)this);
				}
			}
		}

		public class HGStandardController : HGBaseController
		{
			public enum _RampInfoEnum
			{
				TwoTone = 0,
				SmoothedTwoTone = 1,
				Unlitish = 3,
				Subsurface = 4,
				Grass = 5
			}

			public enum _DecalLayerEnum
			{
				Default,
				Environment,
				Character,
				Misc
			}

			public enum _CullEnum
			{
				Off,
				Front,
				Back
			}

			public enum _PrintDirectionEnum
			{
				BottomUp = 0,
				TopDown = 1,
				BackToFront = 3
			}

			public override string ShaderName => "Hopoo Games/Deferred/Standard";

			public bool _EnableCutout
			{
				get
				{
					Material material = Material;
					return material != null && material.IsKeywordEnabled("CUTOUT");
				}
				set
				{
					SetShaderKeywordBasedOnBool(value, Material, "CUTOUT");
				}
			}

			public Color _Color
			{
				get
				{
					//IL_001a: 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_0012: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (Color)((material != null) ? material.GetColor("_Color") : default(Color));
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetColor("_Color", value);
					}
				}
			}

			public Texture _MainTex
			{
				get
				{
					Material material = Material;
					return ((material != null) ? material.GetTexture("_MainTex") : null) ?? null;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetTexture("_MainTex", value);
					}
				}
			}

			public Vector2 _MainTexScale
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureScale("_MainTex") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureScale("_MainTex", value);
					}
				}
			}

			public Vector2 _MainTexOffset
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureOffset("_MainTex") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureOffset("_MainTex", value);
					}
				}
			}

			public float _NormalStrength
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_NormalStrength") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_NormalStrength", Mathf.Clamp(value, 0f, 5f));
					}
				}
			}

			public Texture _NormalTex
			{
				get
				{
					Material material = Material;
					return ((material != null) ? material.GetTexture("_NormalTex") : null) ?? null;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetTexture("_NormalTex", value);
					}
				}
			}

			public Vector2 _NormalTexScale
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureScale("_NormalTex") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureScale("_NormalTex", value);
					}
				}
			}

			public Vector2 _NormalTexOffset
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureOffset("_NormalTex") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureOffset("_NormalTex", value);
					}
				}
			}

			public Color _EmColor
			{
				get
				{
					//IL_001a: 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_0012: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (Color)((material != null) ? material.GetColor("_EmColor") : default(Color));
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetColor("_EmColor", value);
					}
				}
			}

			public Texture _EmTex
			{
				get
				{
					Material material = Material;
					return ((material != null) ? material.GetTexture("_EmTex") : null) ?? null;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetTexture("_EmTex", value);
					}
				}
			}

			public float _EmPower
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_EmPower") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_EmPower", Mathf.Clamp(value, 0f, 10f));
					}
				}
			}

			public float _Smoothness
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_Smoothness") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_Smoothness", Mathf.Clamp(value, 0f, 1f));
					}
				}
			}

			public bool _IgnoreDiffuseAlphaForSpeculars
			{
				get
				{
					Material material = Material;
					return material != null && material.IsKeywordEnabled("FORCE_SPEC");
				}
				set
				{
					SetShaderKeywordBasedOnBool(value, Material, "FORCE_SPEC");
				}
			}

			public _RampInfoEnum _RampChoice
			{
				get
				{
					Material material = Material;
					return (_RampInfoEnum)((material != null) ? material.GetFloat("_RampInfo") : 1f);
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_RampInfo", Convert.ToSingle(value));
					}
				}
			}

			public _DecalLayerEnum _DecalLayer
			{
				get
				{
					Material material = Material;
					return (_DecalLayerEnum)((material != null) ? material.GetFloat("_DecalLayer") : 1f);
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_DecalLayer", Convert.ToSingle(value));
					}
				}
			}

			public float _SpecularStrength
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_SpecularStrength") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_SpecularStrength", Mathf.Clamp(value, 0f, 1f));
					}
				}
			}

			public float _SpecularExponent
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_SpecularExponent") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_SpecularExponent", Mathf.Clamp(value, 0.1f, 20f));
					}
				}
			}

			public _CullEnum _Cull_Mode
			{
				get
				{
					Material material = Material;
					return (_CullEnum)((material != null) ? material.GetFloat("_Cull") : 1f);
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_Cull", Convert.ToSingle(value));
					}
				}
			}

			public bool _EnableDither
			{
				get
				{
					Material material = Material;
					return material != null && material.IsKeywordEnabled("DITHER");
				}
				set
				{
					SetShaderKeywordBasedOnBool(value, Material, "DITHER");
				}
			}

			public float _FadeBias
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_FadeBias") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_FadeBias", Mathf.Clamp(value, 0f, 1f));
					}
				}
			}

			public bool _EnableFresnelEmission
			{
				get
				{
					Material material = Material;
					return material != null && material.IsKeywordEnabled("FRESNEL_EMISSION");
				}
				set
				{
					SetShaderKeywordBasedOnBool(value, Material, "FRESNEL_EMISSION");
				}
			}

			public Texture _FresnelRamp
			{
				get
				{
					Material material = Material;
					return ((material != null) ? material.GetTexture("_FresnelRamp") : null) ?? null;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetTexture("_FresnelRamp", value);
					}
				}
			}

			public float _FresnelPower
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_FresnelPower") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_FresnelPower", Mathf.Clamp(value, 0.1f, 20f));
					}
				}
			}

			public Texture _FresnelMask
			{
				get
				{
					Material material = Material;
					return ((material != null) ? material.GetTexture("_FresnelMask") : null) ?? null;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetTexture("_FresnelMask", value);
					}
				}
			}

			public float _FresnelBoost
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_FresnelBoost") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_FresnelBoost", Mathf.Clamp(value, 0f, 20f));
					}
				}
			}

			public bool _EnablePrinting
			{
				get
				{
					Material material = Material;
					return material != null && material.IsKeywordEnabled("PRINT_CUTOFF");
				}
				set
				{
					SetShaderKeywordBasedOnBool(value, Material, "PRINT_CUTOFF");
				}
			}

			public float _SliceHeight
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_SliceHeight") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_SliceHeight", Mathf.Clamp(value, -25f, 25f));
					}
				}
			}

			public float _PrintBandHeight
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_SliceBandHeight") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_SliceBandHeight", Mathf.Clamp(value, 0f, 10f));
					}
				}
			}

			public float _PrintAlphaDepth
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_SliceAlphaDepth") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_SliceAlphaDepth", Mathf.Clamp(value, 0f, 1f));
					}
				}
			}

			public Texture _PrintAlphaTexture
			{
				get
				{
					Material material = Material;
					return ((material != null) ? material.GetTexture("_SliceAlphaTex") : null) ?? null;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetTexture("_SliceAlphaTex", value);
					}
				}
			}

			public Vector2 _PrintAlphaTextureScale
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureScale("_SliceAlphaTex") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureScale("_SliceAlphaTex", value);
					}
				}
			}

			public Vector2 _PrintAlphaTextureOffset
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureOffset("_SliceAlphaTex") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureOffset("_SliceAlphaTex", value);
					}
				}
			}

			public float _PrintColorBoost
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_PrintBoost") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_PrintBoost", Mathf.Clamp(value, 0f, 10f));
					}
				}
			}

			public float _PrintAlphaBias
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_PrintBias") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_PrintBias", Mathf.Clamp(value, 0f, 4f));
					}
				}
			}

			public float _PrintEmissionToAlbedoLerp
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_PrintEmissionToAlbedoLerp") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_PrintEmissionToAlbedoLerp", Mathf.Clamp(value, 0f, 1f));
					}
				}
			}

			public _PrintDirectionEnum _PrintDirection
			{
				get
				{
					Material material = Material;
					return (_PrintDirectionEnum)((material != null) ? material.GetFloat("_PrintDirection") : 1f);
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_PrintDirection", Convert.ToSingle(value));
					}
				}
			}

			public Texture _PrintRamp
			{
				get
				{
					Material material = Material;
					return ((material != null) ? material.GetTexture("_PrintRamp") : null) ?? null;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetTexture("_PrintRamp", value);
					}
				}
			}

			public float _EliteIndex
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_EliteIndex") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_EliteIndex", value);
					}
				}
			}

			public float _EliteBrightnessMin
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_EliteBrightnessMin") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_EliteBrightnessMin", Mathf.Clamp(value, -10f, 10f));
					}
				}
			}

			public float _EliteBrightnessMax
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_EliteBrightnessMax") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_EliteBrightnessMax", Mathf.Clamp(value, -10f, 10f));
					}
				}
			}

			public bool _EnableSplatmap
			{
				get
				{
					Material material = Material;
					return material != null && material.IsKeywordEnabled("SPLATMAP");
				}
				set
				{
					SetShaderKeywordBasedOnBool(value, Material, "SPLATMAP");
				}
			}

			public bool _UseVertexColorsInstead
			{
				get
				{
					Material material = Material;
					return material != null && material.IsKeywordEnabled("USE_VERTEX_COLORS");
				}
				set
				{
					SetShaderKeywordBasedOnBool(value, Material, "USE_VERTEX_COLORS");
				}
			}

			public float _BlendDepth
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_Depth") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_Depth", Mathf.Clamp(value, 0f, 1f));
					}
				}
			}

			public Texture _SplatmapTex
			{
				get
				{
					Material material = Material;
					return ((material != null) ? material.GetTexture("_SplatmapTex") : null) ?? null;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetTexture("_SplatmapTex", value);
					}
				}
			}

			public Vector2 _SplatmapTexScale
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureScale("_SplatmapTex") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureScale("_SplatmapTex", value);
					}
				}
			}

			public Vector2 _SplatmapTexOffset
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureOffset("_SplatmapTex") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureOffset("_SplatmapTex", value);
					}
				}
			}

			public float _SplatmapTileScale
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_SplatmapTileScale") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_SplatmapTileScale", Mathf.Clamp(value, 0f, 20f));
					}
				}
			}

			public Texture _GreenChannelTex
			{
				get
				{
					Material material = Material;
					return ((material != null) ? material.GetTexture("_GreenChannelTex") : null) ?? null;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetTexture("_GreenChannelTex", value);
					}
				}
			}

			public Texture _GreenChannelNormalTex
			{
				get
				{
					Material material = Material;
					return ((material != null) ? material.GetTexture("_GreenChannelNormalTex") : null) ?? null;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetTexture("_GreenChannelNormalTex", value);
					}
				}
			}

			public float _GreenChannelSmoothness
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_GreenChannelSmoothness") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_GreenChannelSmoothness", Mathf.Clamp(value, 0f, 1f));
					}
				}
			}

			public float _GreenChannelBias
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_GreenChannelBias") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_GreenChannelBias", Mathf.Clamp(value, -2f, 5f));
					}
				}
			}

			public Texture _BlueChannelTex
			{
				get
				{
					Material material = Material;
					return ((material != null) ? material.GetTexture("_BlueChannelTex") : null) ?? null;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetTexture("_BlueChannelTex", value);
					}
				}
			}

			public Texture _BlueChannelNormalTex
			{
				get
				{
					Material material = Material;
					return ((material != null) ? material.GetTexture("_BlueChannelNormalTex") : null) ?? null;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetTexture("_BlueChannelNormalTex", value);
					}
				}
			}

			public float _BlueChannelSmoothness
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_BlueChannelSmoothness") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_BlueChannelSmoothness", Mathf.Clamp(value, 0f, 1f));
					}
				}
			}

			public float _BlueChannelBias
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_BlueChannelBias") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_BlueChannelBias", Mathf.Clamp(value, -2f, 5f));
					}
				}
			}

			public bool _EnableFlowmap
			{
				get
				{
					Material material = Material;
					return material != null && material.IsKeywordEnabled("FLOWMAP");
				}
				set
				{
					SetShaderKeywordBasedOnBool(value, Material, "FLOWMAP");
				}
			}

			public Texture _FlowTexture
			{
				get
				{
					Material material = Material;
					return ((material != null) ? material.GetTexture("_FlowTex") : null) ?? null;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetTexture("_FlowTex", value);
					}
				}
			}

			public Texture _FlowHeightmap
			{
				get
				{
					Material material = Material;
					return ((material != null) ? material.GetTexture("_FlowHeightmap") : null) ?? null;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetTexture("_FlowHeightmap", value);
					}
				}
			}

			public Vector2 _FlowHeightmapScale
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureScale("_FlowHeightmap") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureScale("_FlowHeightmap", value);
					}
				}
			}

			public Vector2 _FlowHeightmapOffset
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureOffset("_FlowHeightmap") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureOffset("_FlowHeightmap", value);
					}
				}
			}

			public Texture _FlowHeightRamp
			{
				get
				{
					Material material = Material;
					return ((material != null) ? material.GetTexture("_FlowHeightRamp") : null) ?? null;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetTexture("_FlowHeightRamp", value);
					}
				}
			}

			public Vector2 _FlowHeightRampScale
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureScale("_FlowHeightRamp") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureScale("_FlowHeightRamp", value);
					}
				}
			}

			public Vector2 _FlowHeightRampOffset
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureOffset("_FlowHeightRamp") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureOffset("_FlowHeightRamp", value);
					}
				}
			}

			public float _FlowHeightBias
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_FlowHeightBias") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_FlowHeightBias", Mathf.Clamp(value, -1f, 1f));
					}
				}
			}

			public float _FlowHeightPower
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_FlowHeightPower") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_FlowHeightPower", Mathf.Clamp(value, 0.1f, 20f));
					}
				}
			}

			public float _FlowEmissionStrength
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_FlowEmissionStrength") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_FlowEmissionStrength", Mathf.Clamp(value, 0.1f, 20f));
					}
				}
			}

			public float _FlowSpeed
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_FlowSpeed") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_FlowSpeed", Mathf.Clamp(value, 0f, 15f));
					}
				}
			}

			public float _MaskFlowStrength
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_FlowMaskStrength") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_FlowMaskStrength", Mathf.Clamp(value, 0f, 5f));
					}
				}
			}

			public float _NormalFlowStrength
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_FlowNormalStrength") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_FlowNormalStrength", Mathf.Clamp(value, 0f, 5f));
					}
				}
			}

			public float _FlowTextureScaleFactor
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_FlowTextureScaleFactor") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_FlowTextureScaleFactor", Mathf.Clamp(value, 0f, 10f));
					}
				}
			}

			public bool _EnableLimbRemoval
			{
				get
				{
					Material material = Material;
					return material != null && material.IsKeywordEnabled("LIMBREMOVAL");
				}
				set
				{
					SetShaderKeywordBasedOnBool(value, Material, "LIMBREMOVAL");
				}
			}

			public float _LimbPrimeMask
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_LimbPrimeMask") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_LimbPrimeMask", Mathf.Clamp(value, 1f, 10000f));
					}
				}
			}

			public Color _FlashColor
			{
				get
				{
					//IL_001a: 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_0012: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (Color)((material != null) ? material.GetColor("_FlashColor") : default(Color));
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetColor("_FlashColor", value);
					}
				}
			}

			public float _Fade
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_Fade") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_Fade", Mathf.Clamp(value, 0f, 1f));
					}
				}
			}
		}

		public class HGSnowToppedController : HGBaseController
		{
			public enum _RampInfoEnum
			{
				TwoTone = 0,
				SmoothedTwoTone = 1,
				Unlitish = 3,
				Subsurface = 4,
				Grass = 5
			}

			public override string ShaderName => "Hopoo Games/Deferred/Snow Topped";

			public Color _Color
			{
				get
				{
					//IL_001a: 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_0012: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (Color)((material != null) ? material.GetColor("_Color") : default(Color));
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetColor("_Color", value);
					}
				}
			}

			public Texture _MainTex
			{
				get
				{
					Material material = Material;
					return ((material != null) ? material.GetTexture("_MainTex") : null) ?? null;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetTexture("_MainTex", value);
					}
				}
			}

			public Vector2 _MainTexScale
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureScale("_MainTex") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureScale("_MainTex", value);
					}
				}
			}

			public Vector2 _MainTexOffset
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureOffset("_MainTex") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureOffset("_MainTex", value);
					}
				}
			}

			public float _NormalStrength
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_NormalStrength") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_NormalStrength", Mathf.Clamp(value, 0f, 1f));
					}
				}
			}

			public Texture _NormalTex
			{
				get
				{
					Material material = Material;
					return ((material != null) ? material.GetTexture("_NormalTex") : null) ?? null;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetTexture("_NormalTex", value);
					}
				}
			}

			public Vector2 _NormalTexScale
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureScale("_NormalTex") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureScale("_NormalTex", value);
					}
				}
			}

			public Vector2 _NormalTexOffset
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureOffset("_NormalTex") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureOffset("_NormalTex", value);
					}
				}
			}

			public Texture _SnowTex
			{
				get
				{
					Material material = Material;
					return ((material != null) ? material.GetTexture("_SnowTex") : null) ?? null;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetTexture("_SnowTex", value);
					}
				}
			}

			public Vector2 _SnowTexScale
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureScale("_SnowTex") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureScale("_SnowTex", value);
					}
				}
			}

			public Vector2 _SnowTexOffset
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureOffset("_SnowTex") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureOffset("_SnowTex", value);
					}
				}
			}

			public Texture _SnowNormalTex
			{
				get
				{
					Material material = Material;
					return ((material != null) ? material.GetTexture("_SnowNormalTex") : null) ?? null;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetTexture("_SnowNormalTex", value);
					}
				}
			}

			public Vector2 _SnowNormalTexScale
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureScale("_SnowNormalTex") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureScale("_SnowNormalTex", value);
					}
				}
			}

			public Vector2 _SnowNormalTexOffset
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureOffset("_SnowNormalTex") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureOffset("_SnowNormalTex", value);
					}
				}
			}

			public float _SnowBias
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_SnowBias") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_SnowBias", Mathf.Clamp(value, -1f, 1f));
					}
				}
			}

			public float _Depth
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_Depth") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_Depth", Mathf.Clamp(value, 0f, 1f));
					}
				}
			}

			public bool _IgnoreAlphaWeights
			{
				get
				{
					Material material = Material;
					return material != null && material.IsKeywordEnabled("IGNORE_BIAS");
				}
				set
				{
					SetShaderKeywordBasedOnBool(value, Material, "IGNORE_BIAS");
				}
			}

			public bool _BlendWeightsBinarily
			{
				get
				{
					Material material = Material;
					return material != null && material.IsKeywordEnabled("BINARYBLEND");
				}
				set
				{
					SetShaderKeywordBasedOnBool(value, Material, "BINARYBLEND");
				}
			}

			public _RampInfoEnum _RampChoice
			{
				get
				{
					Material material = Material;
					return (_RampInfoEnum)((material != null) ? material.GetFloat("_RampInfo") : 1f);
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_RampInfo", Convert.ToSingle(value));
					}
				}
			}

			public bool _IgnoreDiffuseAlphaForSpeculars
			{
				get
				{
					Material material = Material;
					return material != null && material.IsKeywordEnabled("FORCE_SPEC");
				}
				set
				{
					SetShaderKeywordBasedOnBool(value, Material, "FORCE_SPEC");
				}
			}

			public float _SpecularStrength
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_SpecularStrength") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_SpecularStrength", Mathf.Clamp(value, 0f, 1f));
					}
				}
			}

			public float _SpecularExponent
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_SpecularExponent") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_SpecularExponent", Mathf.Clamp(value, 0.1f, 20f));
					}
				}
			}

			public float _Smoothness
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_Smoothness") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_Smoothness", Mathf.Clamp(value, 0f, 1f));
					}
				}
			}

			public float _SnowSpecularStrength
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_SnowSpecularStrength") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_SnowSpecularStrength", Mathf.Clamp(value, 0f, 1f));
					}
				}
			}

			public float _SnowSpecularExponent
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_SnowSpecularExponent") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_SnowSpecularExponent", Mathf.Clamp(value, 0.1f, 20f));
					}
				}
			}

			public float _SnowSmoothness
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_SnowSmoothness") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_SnowSmoothness", Mathf.Clamp(value, 0f, 1f));
					}
				}
			}

			public float _Fade
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_Fade") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_Fade", Mathf.Clamp(value, 0f, 1f));
					}
				}
			}

			public bool _DitherOn
			{
				get
				{
					Material material = Material;
					return material != null && material.IsKeywordEnabled("DITHER");
				}
				set
				{
					SetShaderKeywordBasedOnBool(value, Material, "DITHER");
				}
			}

			public bool _TriplanarOn
			{
				get
				{
					Material material = Material;
					return material != null && material.IsKeywordEnabled("TRIPLANAR");
				}
				set
				{
					SetShaderKeywordBasedOnBool(value, Material, "TRIPLANAR");
				}
			}

			public float _TriplanarTextureFactor
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_TriplanarTextureFactor") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_TriplanarTextureFactor", Mathf.Clamp(value, 0f, 1f));
					}
				}
			}

			public bool _SnowOn
			{
				get
				{
					Material material = Material;
					return material != null && material.IsKeywordEnabled("MICROFACET_SNOW");
				}
				set
				{
					SetShaderKeywordBasedOnBool(value, Material, "MICROFACET_SNOW");
				}
			}

			public bool _GradientBiasOn
			{
				get
				{
					Material material = Material;
					return material != null && material.IsKeywordEnabled("GRADIENTBIAS");
				}
				set
				{
					SetShaderKeywordBasedOnBool(value, Material, "GRADIENTBIAS");
				}
			}

			public Vector4 _GradientBiasVector
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetVector("_GradientBiasVector") : Vector4.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetVector("_GradientBiasVector", value);
					}
				}
			}

			public bool _DirtOn
			{
				get
				{
					Material material = Material;
					return material != null && material.IsKeywordEnabled("DIRTON");
				}
				set
				{
					SetShaderKeywordBasedOnBool(value, Material, "DIRTON");
				}
			}

			public Texture _DirtTex
			{
				get
				{
					Material material = Material;
					return ((material != null) ? material.GetTexture("_DirtTex") : null) ?? null;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetTexture("_DirtTex", value);
					}
				}
			}

			public Vector2 _DirtTexScale
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureScale("_DirtTex") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureScale("_DirtTex", value);
					}
				}
			}

			public Vector2 _DirtTexOffset
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureOffset("_DirtTex") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureOffset("_DirtTex", value);
					}
				}
			}

			public Texture _DirtNormalTex
			{
				get
				{
					Material material = Material;
					return ((material != null) ? material.GetTexture("_DirtNormalTex") : null) ?? null;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetTexture("_DirtNormalTex", value);
					}
				}
			}

			public Vector2 _DirtNormalTexScale
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureScale("_DirtNormalTex") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureScale("_DirtNormalTex", value);
					}
				}
			}

			public Vector2 _DirtNormalTexOffset
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureOffset("_DirtNormalTex") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureOffset("_DirtNormalTex", value);
					}
				}
			}

			public float _DirtBias
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_DirtBias") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_DirtBias", Mathf.Clamp(value, -2f, 2f));
					}
				}
			}

			public float _DirtSpecularStrength
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_DirtSpecularStrength") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_DirtSpecularStrength", Mathf.Clamp(value, 0f, 1f));
					}
				}
			}

			public float _DirtSpecularExponent
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_DirtSpecularExponent") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_DirtSpecularExponent", Mathf.Clamp(value, 0f, 20f));
					}
				}
			}

			public float _DirtSmoothness
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_DirtSmoothness") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_DirtSmoothness", Mathf.Clamp(value, 0f, 1f));
					}
				}
			}
		}

		public class HGTriplanarTerrainBlend : HGBaseController
		{
			public enum _RampInfoEnum
			{
				TwoTone = 0,
				SmoothedTwoTone = 1,
				Unlitish = 3,
				Subsurface = 4,
				Grass = 5
			}

			public enum _DecalLayerEnum
			{
				Default,
				Environment,
				Character,
				Misc
			}

			public enum _CullEnum
			{
				Off,
				Front,
				Back
			}

			public override string ShaderName => "Hopoo Games/Deferred/Triplanar Terrain Blend";

			public bool _Use_Vertex_Colors
			{
				get
				{
					Material material = Material;
					return material != null && material.IsKeywordEnabled("USE_VERTEX_COLORS");
				}
				set
				{
					SetShaderKeywordBasedOnBool(value, Material, "USE_VERTEX_COLORS");
				}
			}

			public bool _Mix_Vertex_Colors
			{
				get
				{
					Material material = Material;
					return material != null && material.IsKeywordEnabled("MIX_VERTEX_COLORS");
				}
				set
				{
					SetShaderKeywordBasedOnBool(value, Material, "MIX_VERTEX_COLORS");
				}
			}

			public bool _Use_Alpha_As_Mask
			{
				get
				{
					Material material = Material;
					return material != null && material.IsKeywordEnabled("USE_ALPHA_AS_MASK");
				}
				set
				{
					SetShaderKeywordBasedOnBool(value, Material, "USE_ALPHA_AS_MASK");
				}
			}

			public bool _Vertical_Bias_On
			{
				get
				{
					Material material = Material;
					return material != null && material.IsKeywordEnabled("USE_VERTICAL_BIAS");
				}
				set
				{
					SetShaderKeywordBasedOnBool(value, Material, "USE_VERTICAL_BIAS");
				}
			}

			public bool _Double_Sample_On
			{
				get
				{
					Material material = Material;
					return material != null && material.IsKeywordEnabled("DOUBLESAMPLE");
				}
				set
				{
					SetShaderKeywordBasedOnBool(value, Material, "DOUBLESAMPLE");
				}
			}

			public Color _Color
			{
				get
				{
					//IL_001a: 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_0012: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (Color)((material != null) ? material.GetColor("_Color") : default(Color));
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetColor("_Color", value);
					}
				}
			}

			public Texture _NormalTex
			{
				get
				{
					Material material = Material;
					return ((material != null) ? material.GetTexture("_NormalTex") : null) ?? null;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetTexture("_NormalTex", value);
					}
				}
			}

			public Vector2 _NormalTexScale
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureScale("_NormalTex") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureScale("_NormalTex", value);
					}
				}
			}

			public Vector2 _NormalTexOffset
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureOffset("_NormalTex") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureOffset("_NormalTex", value);
					}
				}
			}

			public float _NormalStrength
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_NormalStrength") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_NormalStrength", Mathf.Clamp(value, 0f, 1f));
					}
				}
			}

			public _RampInfoEnum _RampChoice
			{
				get
				{
					Material material = Material;
					return (_RampInfoEnum)((material != null) ? material.GetFloat("_RampInfo") : 1f);
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_RampInfo", Convert.ToSingle(value));
					}
				}
			}

			public _DecalLayerEnum _DecalLayer
			{
				get
				{
					Material material = Material;
					return (_DecalLayerEnum)((material != null) ? material.GetFloat("_DecalLayer") : 1f);
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_DecalLayer", Convert.ToSingle(value));
					}
				}
			}

			public _CullEnum _Cull_Mode
			{
				get
				{
					Material material = Material;
					return (_CullEnum)((material != null) ? material.GetFloat("_Cull") : 1f);
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_Cull", Convert.ToSingle(value));
					}
				}
			}

			public float _TextureFactor
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_TextureFactor") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_TextureFactor", Mathf.Clamp(value, 0f, 1f));
					}
				}
			}

			public float _Depth
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_Depth") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_Depth", Mathf.Clamp(value, 0f, 1f));
					}
				}
			}

			public Texture _SplatmapTex
			{
				get
				{
					Material material = Material;
					return ((material != null) ? material.GetTexture("_SplatmapTex") : null) ?? null;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetTexture("_SplatmapTex", value);
					}
				}
			}

			public Vector2 _SplatmapTexScale
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureScale("_SplatmapTex") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureScale("_SplatmapTex", value);
					}
				}
			}

			public Vector2 _SplatmapTexOffset
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureOffset("_SplatmapTex") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureOffset("_SplatmapTex", value);
					}
				}
			}

			public Texture _RedChannelTopTex
			{
				get
				{
					Material material = Material;
					return ((material != null) ? material.GetTexture("_RedChannelTopTex") : null) ?? null;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetTexture("_RedChannelTopTex", value);
					}
				}
			}

			public Vector2 _RedChannelTopTexScale
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureScale("_RedChannelTopTex") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureScale("_RedChannelTopTex", value);
					}
				}
			}

			public Vector2 _RedChannelTopTexOffset
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureOffset("_RedChannelTopTex") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureOffset("_RedChannelTopTex", value);
					}
				}
			}

			public Texture _RedChannelSideTex
			{
				get
				{
					Material material = Material;
					return ((material != null) ? material.GetTexture("_RedChannelSideTex") : null) ?? null;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetTexture("_RedChannelSideTex", value);
					}
				}
			}

			public Vector2 _RedChannelSideTexScale
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureScale("_RedChannelSideTex") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureScale("_RedChannelSideTex", value);
					}
				}
			}

			public Vector2 _RedChannelSideTexOffset
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureOffset("_RedChannelSideTex") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureOffset("_RedChannelSideTex", value);
					}
				}
			}

			public float _RedChannelSmoothness
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_RedChannelSmoothness") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_RedChannelSmoothness", Mathf.Clamp(value, 0f, 1f));
					}
				}
			}

			public float _RedChannelSpecularStrength
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_RedChannelSpecularStrength") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_RedChannelSpecularStrength", Mathf.Clamp(value, 0f, 1f));
					}
				}
			}

			public float _RedChannelSpecularExponent
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_RedChannelSpecularExponent") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_RedChannelSpecularExponent", Mathf.Clamp(value, 0.1f, 20f));
					}
				}
			}

			public float _RedChannelBias
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_RedChannelBias") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_RedChannelBias", Mathf.Clamp(value, -2f, 5f));
					}
				}
			}

			public Texture _GreenChannelTex
			{
				get
				{
					Material material = Material;
					return ((material != null) ? material.GetTexture("_GreenChannelTex") : null) ?? null;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetTexture("_GreenChannelTex", value);
					}
				}
			}

			public Vector2 _GreenChannelTexScale
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureScale("_GreenChannelTex") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureScale("_GreenChannelTex", value);
					}
				}
			}

			public Vector2 _GreenChannelTexOffset
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureOffset("_GreenChannelTex") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureOffset("_GreenChannelTex", value);
					}
				}
			}

			public float _GreenChannelSmoothness
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_GreenChannelSmoothness") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_GreenChannelSmoothness", Mathf.Clamp(value, 0f, 1f));
					}
				}
			}

			public float _GreenChannelSpecularStrength
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_GreenChannelSpecularStrength") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_GreenChannelSpecularStrength", Mathf.Clamp(value, 0f, 1f));
					}
				}
			}

			public float _GreenChannelSpecularExponent
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_GreenChannelSpecularExponent") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_GreenChannelSpecularExponent", Mathf.Clamp(value, 0.1f, 20f));
					}
				}
			}

			public float _GreenChannelBias
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_GreenChannelBias") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_GreenChannelBias", Mathf.Clamp(value, -2f, 5f));
					}
				}
			}

			public Texture _BlueChannelTex
			{
				get
				{
					Material material = Material;
					return ((material != null) ? material.GetTexture("_RedChannelTopTex") : null) ?? null;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetTexture("_BlueChannelTex", value);
					}
				}
			}

			public Vector2 _BlueChannelTexScale
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureScale("_BlueChannelTex") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureScale("_BlueChannelTex", value);
					}
				}
			}

			public Vector2 _BlueChannelTexOffset
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureOffset("_BlueChannelTex") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureOffset("_BlueChannelTex", value);
					}
				}
			}

			public float _BlueChannelSmoothness
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_BlueChannelSmoothness") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_BlueChannelSmoothness", Mathf.Clamp(value, 0f, 1f));
					}
				}
			}

			public float _BlueChannelSpecularStrength
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_BlueChannelSpecularStrength") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_BlueChannelSpecularStrength", Mathf.Clamp(value, 0f, 1f));
					}
				}
			}

			public float _BlueChannelSpecularExponent
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_BlueChannelSpecularExponent") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_BlueChannelSpecularExponent", Mathf.Clamp(value, 0.1f, 20f));
					}
				}
			}

			public float _BlueChannelBias
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_BlueChannelBias") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_BlueChannelBias", Mathf.Clamp(value, -2f, 5f));
					}
				}
			}

			public bool _Treat_Green_Channel_As_Snow
			{
				get
				{
					Material material = Material;
					return material != null && material.IsKeywordEnabled("MICROFACET_SNOW");
				}
				set
				{
					SetShaderKeywordBasedOnBool(value, Material, "MICROFACET_SNOW");
				}
			}
		}

		public class HGDistortionController : HGBaseController
		{
			public Texture _BumpMap
			{
				get
				{
					Material material = Material;
					return ((material != null) ? material.GetTexture("_BumpMap") : null) ?? null;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetTexture("_BumpMap", value);
					}
				}
			}

			public Vector2 _BumpMapScale
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureScale("_BumpMap") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureScale("_BumpMap", value);
					}
				}
			}

			public Vector2 _BumpMapOffset
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureOffset("_BumpMap") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureOffset("_BumpMap", value);
					}
				}
			}

			public Texture _MaskTex
			{
				get
				{
					Material material = Material;
					return ((material != null) ? material.GetTexture("_MaskTex") : null) ?? null;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetTexture("_MaskTex", value);
					}
				}
			}

			public Vector2 _MaskTexScale
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureScale("_MaskTex") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureScale("_MaskTex", value);
					}
				}
			}

			public Vector2 _MaskTexOffset
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureOffset("_MaskTex") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureOffset("_MaskTex", value);
					}
				}
			}

			public float _Magnitude
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_Magnitude") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_Magnitude", Mathf.Clamp(value, 0f, 10f));
					}
				}
			}

			public float _NearFadeZeroDistance
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_NearFadeZeroDistance") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_NearFadeZeroDistance", value);
					}
				}
			}

			public float _NearFadeOneDistance
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_NearFadeOneDistance") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_NearFadeOneDistance", value);
					}
				}
			}

			public float _FarFadeOneDistance
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_FarFadeOneDistance") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_FarFadeOneDistance", value);
					}
				}
			}

			public float _FarFadeZeroDistance
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_FarFadeZeroDistance") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_FarFadeZeroDistance", value);
					}
				}
			}

			public bool _DistanceModulationOn
			{
				get
				{
					Material material = Material;
					return material != null && material.IsKeywordEnabled("DISTANCEMODULATION");
				}
				set
				{
					SetShaderKeywordBasedOnBool(value, Material, "DISTANCEMODULATION");
				}
			}

			public float _DistanceModulationMagnitude
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_DistanceModulationMagnitude") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_DistanceModulationMagnitude", Mathf.Clamp(value, 0f, 1f));
					}
				}
			}

			public float _InvFade
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_InvFade") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_InvFade", Mathf.Clamp(value, 0f, 2f));
					}
				}
			}
		}

		public class HGSolidParallaxController : HGBaseController
		{
			public enum _RampInfoEnum
			{
				TwoTone = 0,
				SmoothedTwoTone = 1,
				Unlitish = 3,
				Subsurface = 4,
				Grass = 5
			}

			public enum _CullEnum
			{
				Off,
				Front,
				Back
			}

			public override string ShaderName => "Hopoo Games/FX/Solid Parallax";

			public string MaterialName
			{
				get
				{
					Material material = Material;
					return ((material != null) ? ((Object)material).name : null) ?? "";
				}
			}

			public Color _Color
			{
				get
				{
					//IL_001a: 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_0012: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (Color)((material != null) ? material.GetColor("_Color") : default(Color));
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetColor("_Color", value);
					}
				}
			}

			public Texture _MainTex
			{
				get
				{
					Material material = Material;
					return ((material != null) ? material.GetTexture("_MainTex") : null) ?? null;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetTexture("_MainTex", value);
					}
				}
			}

			public Vector2 _MainTexScale
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureScale("_MainTex") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureScale("_MainTex", value);
					}
				}
			}

			public Vector2 _MainTexOffset
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureOffset("_MainTex") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureOffset("_MainTex", value);
					}
				}
			}

			public Texture _EmissionTex
			{
				get
				{
					Material material = Material;
					return ((material != null) ? material.GetTexture("_EmissionTex") : null) ?? null;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetTexture("_EmissionTex", value);
					}
				}
			}

			public Vector2 _EmissionTexScale
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureScale("_EmissionTex") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureScale("_EmissionTex", value);
					}
				}
			}

			public Vector2 _EmissionTexOffset
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureOffset("_EmissionTex") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureOffset("_EmissionTex", value);
					}
				}
			}

			public float _EmissionPower
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_EmissionPower") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_EmissionPower", Mathf.Clamp(value, 0.1f, 20f));
					}
				}
			}

			public Texture _Normal
			{
				get
				{
					Material material = Material;
					return ((material != null) ? material.GetTexture("_Normal") : null) ?? null;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetTexture("_Normal", value);
					}
				}
			}

			public Vector2 _NormalScale
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureScale("_Normal") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureScale("_Normal", value);
					}
				}
			}

			public Vector2 _NormalOffset
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureOffset("_Normal") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureOffset("_Normal", value);
					}
				}
			}

			public float _SpecularStrength
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_SpecularStrength") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_SpecularStrength", Mathf.Clamp(value, 0f, 1f));
					}
				}
			}

			public float _SpecularExponent
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_SpecularExponent") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_SpecularExponent", Mathf.Clamp(value, 0.1f, 20f));
					}
				}
			}

			public float _Smoothness
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_Smoothness") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_Smoothness", Mathf.Clamp(value, 0f, 1f));
					}
				}
			}

			public Texture _Height1
			{
				get
				{
					Material material = Material;
					return ((material != null) ? material.GetTexture("_Height1") : null) ?? null;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetTexture("_Height1", value);
					}
				}
			}

			public Vector2 _Height1Scale
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureScale("_Height1") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureScale("_Height1", value);
					}
				}
			}

			public Vector2 _Height1Offset
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureOffset("_Height1") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureOffset("_Height1", value);
					}
				}
			}

			public Texture _Height2
			{
				get
				{
					Material material = Material;
					return ((material != null) ? material.GetTexture("_Height2") : null) ?? null;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetTexture("_Height2", value);
					}
				}
			}

			public Vector2 _Height2Scale
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureScale("_Height2") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureScale("_Height2", value);
					}
				}
			}

			public Vector2 _Height2Offset
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureOffset("_Height2") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureOffset("_Height2", value);
					}
				}
			}

			public float _HeightStrength
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_HeightStrength") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_HeightStrength", Mathf.Clamp(value, 0f, 20f));
					}
				}
			}

			public float _HeightBias
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_HeightBias") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_HeightBias", Mathf.Clamp(value, 0f, 1f));
					}
				}
			}

			public float _Parallax
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_Parallax") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_Parallax", value);
					}
				}
			}

			public Vector4 _ScrollSpeed
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetVector("_ScrollSpeed") : Vector4.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetVector("_ScrollSpeed", value);
					}
				}
			}

			public _RampInfoEnum _RampInfo
			{
				get
				{
					Material material = Material;
					return (_RampInfoEnum)((material != null) ? material.GetFloat("_RampInfo") : 1f);
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_RampInfo", Convert.ToSingle(value));
					}
				}
			}

			public _CullEnum _Cull_Mode
			{
				get
				{
					Material material = Material;
					return (_CullEnum)((material != null) ? material.GetFloat("_Cull") : 1f);
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_Cull", Convert.ToSingle(value));
					}
				}
			}

			public bool _ClipOn
			{
				get
				{
					Material material = Material;
					return material != null && material.IsKeywordEnabled("ALPHACLIP");
				}
				set
				{
					SetShaderKeywordBasedOnBool(value, Material, "ALPHACLIP");
				}
			}
		}

		public class HGCloudRemapController : HGBaseController
		{
			public enum _CullEnum
			{
				Off,
				Front,
				Back
			}

			public override string ShaderName => "Hopoo Games/FX/Cloud Remap";

			public string MaterialName
			{
				get
				{
					Material material = Material;
					return ((material != null) ? ((Object)material).name : null) ?? "";
				}
			}

			public BlendMode _Source_Blend_Mode
			{
				get
				{
					Material material = Material;
					return (BlendMode)(int)((material != null) ? material.GetFloat("_SrcBlend") : 1f);
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_SrcBlend", Convert.ToSingle(value));
					}
				}
			}

			public BlendMode _Destination_Blend_Mode
			{
				get
				{
					Material material = Material;
					return (BlendMode)(int)((material != null) ? material.GetFloat("_DstBlend") : 1f);
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_DstBlend", Convert.ToSingle(value));
					}
				}
			}

			public Color _Tint
			{
				get
				{
					//IL_001a: 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_0012: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (Color)((material != null) ? material.GetColor("_TintColor") : default(Color));
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetColor("_TintColor", value);
					}
				}
			}

			public bool _DisableRemapping
			{
				get
				{
					Material material = Material;
					return material != null && material.IsKeywordEnabled("DISABLEREMAP");
				}
				set
				{
					SetShaderKeywordBasedOnBool(value, Material, "DISABLEREMAP");
				}
			}

			public Texture _MainTex
			{
				get
				{
					Material material = Material;
					return ((material != null) ? material.GetTexture("_MainTex") : null) ?? null;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetTexture("_MainTex", value);
					}
				}
			}

			public Vector2 _MainTexScale
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureScale("_MainTex") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureScale("_MainTex", value);
					}
				}
			}

			public Vector2 _MainTexOffset
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureOffset("_MainTex") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureOffset("_MainTex", value);
					}
				}
			}

			public Texture _RemapTex
			{
				get
				{
					Material material = Material;
					return ((material != null) ? material.GetTexture("_RemapTex") : null) ?? null;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetTexture("_RemapTex", value);
					}
				}
			}

			public Vector2 _RemapTexScale
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureScale("_RemapTex") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureScale("_RemapTex", value);
					}
				}
			}

			public Vector2 _RemapTexOffset
			{
				get
				{
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					return (material != null) ? material.GetTextureOffset("_RemapTex") : Vector2.zero;
				}
				set
				{
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					Material material = Material;
					if (material != null)
					{
						material.SetTextureOffset("_RemapTex", value);
					}
				}
			}

			public float _SoftFactor
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_InvFade") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_InvFade", Mathf.Clamp(value, 0f, 2f));
					}
				}
			}

			public float _BrightnessBoost
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_Boost") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_Boost", Mathf.Clamp(value, 1f, 20f));
					}
				}
			}

			public float _AlphaBoost
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_AlphaBoost") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_AlphaBoost", Mathf.Clamp(value, 0f, 20f));
					}
				}
			}

			public float _AlphaBias
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_AlphaBias") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_AlphaBias", Mathf.Clamp(value, 0f, 20f));
					}
				}
			}

			public bool _UseUV1
			{
				get
				{
					Material material = Material;
					return material != null && material.IsKeywordEnabled("USE_UV1");
				}
				set
				{
					SetShaderKeywordBasedOnBool(value, Material, "USE_UV1");
				}
			}

			public bool _FadeWhenNearCamera
			{
				get
				{
					Material material = Material;
					return material != null && material.IsKeywordEnabled("FADECLOSE");
				}
				set
				{
					SetShaderKeywordBasedOnBool(value, Material, "FADECLOSE");
				}
			}

			public float _FadeCloseDistance
			{
				get
				{
					Material material = Material;
					return (material != null) ? material.GetFloat("_FadeCloseDistance") : 0f;
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_FadeCloseDistance", Mathf.Clamp(value, 0f, 1f));
					}
				}
			}

			public _CullEnum _Cull_Mode
			{
				get
				{
					Material material = Material;
					return (_CullEnum)((material != null) ? material.GetFloat("_Cull") : 1f);
				}
				set
				{
					Material material = Material;
					if (material != null)
					{
						material.SetFloat("_Cull", Convert.ToSingle(value));
					}
				}
			}

			public CompareFunction _ZTest_Mode
			{
				get
				{
					Material material = Material;
					return (CompareFunction)(int)((material != null) ? material.GetFloat("_ZTest") : 1f);
				}
				set
				{