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 PlanHide v1.0.0
PlanHide.dll
Decompiled 21 hours agousing System.Collections; using System.Reflection; using System.Runtime.CompilerServices; using BepInEx; using BepInEx.Configuration; using PlanBuild.Plans; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: AssemblyVersion("0.0.0.0")] namespace BakaPlanHide; [BepInPlugin("baka.PlanHide", "Baka PlanHide", "1.0.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class PlanHidePlugin : BaseUnityPlugin { public const string PluginGuid = "baka.PlanHide"; public const string PluginName = "Baka PlanHide"; public const string PluginVersion = "1.0.0"; private ConfigEntry<KeyboardShortcut> _hotKey; private ConfigEntry<bool> _affectVisibility; private ConfigEntry<bool> _affectCollision; private ConfigEntry<bool> _showMessage; private bool _hidden; private void Awake() { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) _hotKey = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>("General", "Toggle Hotkey", new KeyboardShortcut((KeyCode)277, (KeyCode[])(object)new KeyCode[0]), "Key that toggles PlanBuild plan (ghost) projections on/off. While toggled off, plan pieces are made invisible and lose collision so you can edit terrain straight through them. Set/clear in the F1 Configuration Manager."); _affectCollision = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "Disable Collision When Hidden", true, "When hidden, disable plan-piece colliders so terrain tools (Hoe/Cultivator) pass through the projection instead of hitting it."); _affectVisibility = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "Disable Visibility When Hidden", true, "When hidden, disable plan-piece renderers so the semi-transparent ghost is not drawn."); _showMessage = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "Show On-Screen Message", true, "Print a centre-screen message each time the projection is toggled."); ((MonoBehaviour)this).StartCoroutine(ReassertLoop()); ((BaseUnityPlugin)this).Logger.LogInfo((object)("Baka PlanHide 1.0.0 loaded. Toggle key: " + _hotKey.Value)); } private void Update() { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)Player.m_localPlayer == (Object)null) && !IsTextInputActive()) { KeyboardShortcut value = _hotKey.Value; if (((KeyboardShortcut)(ref value)).IsDown()) { Toggle(); } } } private void Toggle() { _hidden = !_hidden; ApplyAll(_hidden); if (_showMessage.Value && (Object)(object)Player.m_localPlayer != (Object)null) { ((Character)Player.m_localPlayer).Message((MessageType)2, _hidden ? "Plan projections: HIDDEN" : "Plan projections: SHOWN", 0, (Sprite)null); } } private IEnumerator ReassertLoop() { WaitForSeconds wait = new WaitForSeconds(0.5f); while (true) { yield return wait; if (_hidden) { ApplyAll(hide: true); } } } private void ApplyAll(bool hide) { PlanPiece[] array = Object.FindObjectsByType<PlanPiece>((FindObjectsSortMode)0); foreach (PlanPiece val in array) { if ((Object)(object)val == (Object)null) { continue; } if (_affectVisibility.Value) { Renderer[] componentsInChildren = ((Component)val).GetComponentsInChildren<Renderer>(true); for (int j = 0; j < componentsInChildren.Length; j++) { componentsInChildren[j].enabled = !hide; } } if (_affectCollision.Value) { Collider[] componentsInChildren2 = ((Component)val).GetComponentsInChildren<Collider>(true); for (int k = 0; k < componentsInChildren2.Length; k++) { componentsInChildren2[k].enabled = !hide; } } } } private static bool IsTextInputActive() { if (Console.IsVisible()) { return true; } if (TextInput.IsVisible()) { return true; } return false; } }