Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of Show Hitbox v0.1.4
HKSS.ShowHitbox.dll
Decompiled 7 months agousing System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using BepInExUtils.Attributes; using BepInExUtils.Extensions; using BepInExUtils.Interfaces; using BepInExUtils.Logging; using HKSS.ShowHitbox.Behaviour; using HKSS.ShowHitbox.Extensions; using HarmonyLib; using JetBrains.Annotations; using Microsoft.CodeAnalysis; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyCompany("HKSS.ShowHitbox")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+8e39d9177d84e9929511ebb0018319d894c92d78")] [assembly: AssemblyProduct("HKSS.ShowHitbox")] [assembly: AssemblyTitle("HKSS.ShowHitbox")] [assembly: AssemblyVersion("1.0.0.0")] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace HKSS.ShowHitbox { [BepInUtils("io.github.ykysnk.HKSS.ShowHitbox", "Show Hitbox", "0.1.4")] [BepInDependency("io.github.ykysnk.BepinExUtils", "1.0.0")] [BepInProcess("Hollow Knight Silksong.exe")] [ConfigBind<KeyCode>(/*Could not decode attribute arguments.*/)] [ConfigBind<bool>("ShowHitbox", "Options", false, "Show the hitbox.")] [ConfigBind<bool>("MoreInfos", "Options", true, "Show more info.")] [BepInPlugin("io.github.ykysnk.HKSS.ShowHitbox", "Show Hitbox", "0.1.4")] public class Main : BaseUnityPlugin, IBepInUtils { private const string SectionOptions = "Options"; private const string Version = "0.1.4"; private static Main? _instance; private readonly Harmony _harmony = new Harmony("io.github.ykysnk.HKSS.ShowHitbox"); private void Update() { //IL_0005: Unknown result type (might be due to invalid IL or missing references) if (UnityInput.Current.GetKeyDown(Configs.ToggleKey)) { Configs.ShowHitbox = !Configs.ShowHitbox; } } public void Init() { Configs.OnShowHitboxValueChanged += OnToggleHitbox; DebugDrawColliderRuntime.IsShowing = Configs.ShowHitbox; } private static void OnToggleHitbox(bool oldValue, bool newValue) { Utils.Logger.Info((object)("Debug hitbox is now turn " + (newValue ? "on" : "off") + "!")); DebugDrawColliderRuntime.IsShowing = newValue; } public Main() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Expected O, but got Unknown //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Expected O, but got Unknown //IL_004b: Expected O, but got Unknown //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Expected O, but got Unknown //IL_007b: Expected O, but got Unknown //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Expected O, but got Unknown //IL_00ab: Expected O, but got Unknown _instance = this; Configs._ToggleKey = ((BaseUnityPlugin)this).Config.Bind<KeyCode>(new ConfigDefinition("Options", "ToggleKey"), (KeyCode)292, new ConfigDescription("The toggle key to toggle the hitbox display.", (AcceptableValueBase)null, Array.Empty<object>())); Configs._ShowHitbox = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Options", "ShowHitbox"), false, new ConfigDescription("Show the hitbox.", (AcceptableValueBase)null, Array.Empty<object>())); Configs._MoreInfos = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Options", "MoreInfos"), true, new ConfigDescription("Show more info.", (AcceptableValueBase)null, Array.Empty<object>())); Configs.Init(); Utils.Logger.Info((object)"Plugin Show Hitbox is loaded, version 0.1.4"); _harmony.PatchAll(Assembly.GetExecutingAssembly()); Init(); } } public static class Utils { internal const string GameName = "Hollow Knight Silksong.exe"; internal const string Guid = "io.github.ykysnk.HKSS.ShowHitbox"; internal const string Name = "Show Hitbox"; internal const string Version = "0.1.4"; private static Logger? _logger; public static Logger Logger { get { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Expected O, but got Unknown object obj = _logger; if (obj == null) { Logger val = new Logger("Show Hitbox"); _logger = val; obj = (object)val; } return (Logger)obj; } } } public static class Configs { public delegate void OnToggleKeyValueChangedEvent(KeyCode oldValue, KeyCode newValue); public delegate void OnShowHitboxValueChangedEvent(bool oldValue, bool newValue); public delegate void OnMoreInfosValueChangedEvent(bool oldValue, bool newValue); internal static ConfigEntry<KeyCode>? _ToggleKey; internal static ConfigEntry<bool>? _ShowHitbox; internal static ConfigEntry<bool>? _MoreInfos; private static KeyCode? _oldToggleKey; private static bool? _oldShowHitbox; private static bool? _oldMoreInfos; public static KeyCode ToggleKey { get { //IL_000b: Unknown result type (might be due to invalid IL or missing references) return (KeyCode)(((??)_ToggleKey?.Value) ?? 0); } set { //IL_000d: Unknown result type (might be due to invalid IL or missing references) if (_ToggleKey != null) { _ToggleKey.Value = value; } } } public static bool ShowHitbox { get { return _ShowHitbox?.Value ?? false; } set { if (_ShowHitbox != null) { _ShowHitbox.Value = value; } } } public static bool MoreInfos { get { return _MoreInfos?.Value ?? false; } set { if (_MoreInfos != null) { _MoreInfos.Value = value; } } } public static event OnToggleKeyValueChangedEvent? OnToggleKeyValueChanged; public static event OnShowHitboxValueChangedEvent? OnShowHitboxValueChanged; public static event OnMoreInfosValueChangedEvent? OnMoreInfosValueChanged; internal static void Init() { //IL_0014: Unknown result type (might be due to invalid IL or missing references) _oldToggleKey = _ToggleKey?.Value; ConfigEntry<KeyCode>? toggleKey = _ToggleKey; if (toggleKey != null) { toggleKey.SettingChanged += delegate { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) Configs.OnToggleKeyValueChanged?.Invoke(_oldToggleKey.GetValueOrDefault(), _ToggleKey.Value); _oldToggleKey = _ToggleKey.Value; }; } _oldShowHitbox = _ShowHitbox?.Value; ConfigEntry<bool>? showHitbox = _ShowHitbox; if (showHitbox != null) { showHitbox.SettingChanged += delegate { Configs.OnShowHitboxValueChanged?.Invoke(_oldShowHitbox.GetValueOrDefault(), _ShowHitbox.Value); _oldShowHitbox = _ShowHitbox.Value; }; } _oldMoreInfos = _MoreInfos?.Value; ConfigEntry<bool>? moreInfos = _MoreInfos; if (moreInfos != null) { moreInfos.SettingChanged += delegate { Configs.OnMoreInfosValueChanged?.Invoke(_oldMoreInfos.GetValueOrDefault(), _MoreInfos.Value); _oldMoreInfos = _MoreInfos.Value; }; } } } } namespace HKSS.ShowHitbox.Patches { [HarmonyPatch(typeof(DebugDrawColliderRuntime))] internal class DebugDrawColliderRuntimePatches { [HarmonyPatch("Init")] [HarmonyPrefix] private static void Init(DebugDrawColliderRuntime __instance) { if (!DebugDrawColliderRuntimeExtensions.get_isInitialized(__instance)) { MoreInfosController moreInfosController = default(MoreInfosController); MoreInfosController moreInfosController2 = (((Component)__instance).TryGetComponent<MoreInfosController>(ref moreInfosController) ? moreInfosController : ((Component)__instance).gameObject.AddComponent<MoreInfosController>()); if (Object.op_Implicit((Object)(object)moreInfosController2)) { moreInfosController2.DebugDrawColliderRuntime = __instance; } } } } } namespace HKSS.ShowHitbox.Extensions { [AccessExtensions] [AccessInstance<DebugDrawColliderRuntime>] [AccessField<bool>("isInitialized")] [AccessField<ColorType>("type")] [PublicAPI] public static class DebugDrawColliderRuntimeExtensions { public sealed class <>E__0 { public bool isInitialized { get { throw null; } set { throw null; } } public ColorType type { get { throw null; } set { throw null; } } } [SpecialName] public static bool get_isInitialized(DebugDrawColliderRuntime instance) { return ObjectExtensions.GetFieldValue<bool>((object)instance, "isInitialized"); } [SpecialName] public static void set_isInitialized(DebugDrawColliderRuntime instance, bool value) { ObjectExtensions.SetFieldValue<bool>((object)instance, "isInitialized", value); } [SpecialName] public static ColorType get_type(DebugDrawColliderRuntime instance) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) return ObjectExtensions.GetFieldValue<ColorType>((object)instance, "type"); } [SpecialName] public static void set_type(DebugDrawColliderRuntime instance, ColorType value) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) ObjectExtensions.SetFieldValue<ColorType>((object)instance, "type", value); } } } namespace HKSS.ShowHitbox.Behaviour { public class MoreInfosController : MonoBehaviour { private const float Width = 200f; private const float Height = 200f; internal DebugDrawColliderRuntime? DebugDrawColliderRuntime; private void OnGUI() { //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) if (Configs.ShowHitbox && Configs.MoreInfos) { Camera mainCamera = GameCameras.instance.mainCamera; if (Object.op_Implicit((Object)(object)mainCamera)) { Vector3 val = mainCamera.WorldToScreenPoint(((Component)this).transform.position); SetGUIColour(); GUI.Label(new Rect(val.x - 100f, (float)Screen.height - (val.y - 100f), 200f, 200f), GameObjectExtensions.FullName(((Component)this).gameObject)); } } } private void SetGUIColour() { //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Expected I4, but got Unknown //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Unknown result type (might be due to invalid IL or missing references) //IL_0116: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_0124: Unknown result type (might be due to invalid IL or missing references) //IL_011e: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)DebugDrawColliderRuntime)) { ColorType val = DebugDrawColliderRuntimeExtensions.get_type(DebugDrawColliderRuntime); GUI.color = (Color)((int)val switch { 0 => new Color(0f, 0.44f, 0f), 1 => Color.green, 2 => Color.red, 3 => new Color(0.8f, 1f, 0f), 4 => new Color(0.4f, 0.75f, 1f), 5 => new Color(1f, 0.7f, 0f), 6 => new Color(0.2f, 0.5f, 1f), 7 => Color.magenta, 8 => new Color(1f, 0.7f, 0.7f), 9 => Color.grey, 10 => new Color(0.16f, 0.17f, 0.28f), _ => Color.white, }); } } } }