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 WeeWeeProximityMinimap v0.1.2
BepInEx/plugins/WeeWeeProximityMinimap/WeeWeeProximityMinimap.dll
Decompiled 8 hours agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using GameNetcodeStuff; using HarmonyLib; using LobbyCompatibility.Attributes; using UnityEngine; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyTitle("WeeWee Proximity Minimap")] [assembly: AssemblyDescription("Circular proximity minimap for Lethal Company")] [assembly: AssemblyCompany("LilWeeWee")] [assembly: AssemblyProduct("WeeWee Proximity Minimap")] [assembly: ComVisible(false)] [assembly: Guid("c99d05a6-a637-468a-97b8-6895050a8a27")] [assembly: AssemblyFileVersion("0.1.2.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyVersion("0.1.2.0")] namespace WeeWeeProximityMinimap; [BepInPlugin("LilWeeWee.LethalCompany.ProximityMinimap", "WeeWee Proximity Minimap", "0.1.2")] [BepInDependency(/*Could not decode attribute arguments.*/)] [LobbyCompatibility(/*Could not decode attribute arguments.*/)] public sealed class Plugin : BaseUnityPlugin { public const string Guid = "LilWeeWee.LethalCompany.ProximityMinimap"; public const string Name = "WeeWee Proximity Minimap"; public const string Version = "0.1.2"; internal ConfigEntry<bool> Enabled; internal ConfigEntry<bool> RotateWithPlayer; internal ConfigEntry<bool> ShowPlayers; internal ConfigEntry<bool> ShowItems; internal ConfigEntry<bool> ShowMonsters; internal ConfigEntry<bool> ShowExitArrow; internal ConfigEntry<float> NearbyMarkerRange; internal ConfigEntry<float> MapZoom; internal ConfigEntry<int> MapSize; internal ConfigEntry<float> PositionX; internal ConfigEntry<float> PositionY; internal ConfigEntry<float> PlayerArrowSize; internal ConfigEntry<float> ExitArrowSize; internal ConfigEntry<KeyboardShortcut> ToggleKey; private Harmony harmony; internal static Plugin Instance { get; private set; } internal void LogError(string message) { ((BaseUnityPlugin)this).Logger.LogError((object)message); } private void Awake() { //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0204: Unknown result type (might be due to invalid IL or missing references) //IL_020e: Expected O, but got Unknown Instance = this; Enabled = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "Enabled", true, "Show the minimap while landed on a moon."); ToggleKey = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>("General", "ToggleKey", new KeyboardShortcut((KeyCode)283, Array.Empty<KeyCode>()), "Key used to show or hide the minimap."); RotateWithPlayer = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "RotateWithPlayer", true, "Rotate the map so the direction you face is always at the top."); ShowPlayers = ((BaseUnityPlugin)this).Config.Bind<bool>("Markers", "ShowPlayers", true, "Show other living players regardless of their distance."); ShowItems = ((BaseUnityPlugin)this).Config.Bind<bool>("Markers", "ShowItems", true, "Show grabbable items only when they are within NearbyMarkerRange."); ShowMonsters = ((BaseUnityPlugin)this).Config.Bind<bool>("Markers", "ShowMonsters", true, "Show monsters only when they are within NearbyMarkerRange."); ShowExitArrow = ((BaseUnityPlugin)this).Config.Bind<bool>("Markers", "ShowExitArrow", true, "Show an edge arrow toward the main entrance while inside and toward the ship while outside."); NearbyMarkerRange = ((BaseUnityPlugin)this).Config.Bind<float>("Markers", "NearbyMarkerRange", 5f, "Maximum distance in metres for item and monster markers."); MapZoom = ((BaseUnityPlugin)this).Config.Bind<float>("Display", "MapZoom", 18f, "Orthographic map zoom. Lower values show a smaller area."); MapSize = ((BaseUnityPlugin)this).Config.Bind<int>("Display", "MapSize", 180, "Circular minimap diameter in pixels."); PositionX = ((BaseUnityPlugin)this).Config.Bind<float>("Display", "PositionX", -20f, "Horizontal offset from the top-right corner."); PositionY = ((BaseUnityPlugin)this).Config.Bind<float>("Display", "PositionY", -20f, "Vertical offset from the top-right corner."); PlayerArrowSize = ((BaseUnityPlugin)this).Config.Bind<float>("Display", "PlayerArrowSize", 10f, "Size in pixels of the centre arrow showing your facing direction."); ExitArrowSize = ((BaseUnityPlugin)this).Config.Bind<float>("Display", "ExitArrowSize", 12f, "Size in pixels of the entrance/ship direction arrow."); harmony = new Harmony("LilWeeWee.LethalCompany.ProximityMinimap"); harmony.PatchAll(); ((BaseUnityPlugin)this).Logger.LogInfo((object)"WeeWee Proximity Minimap v0.1.2 loaded."); } private void OnDestroy() { MinimapController.DisposeCurrent(); Harmony obj = harmony; if (obj != null) { obj.UnpatchSelf(); } } } [HarmonyPatch(typeof(PlayerControllerB), "ConnectClientToPlayerObject")] internal static class PlayerConnectPatch { private static void Postfix(PlayerControllerB __instance) { if ((Object)(object)GameNetworkManager.Instance != (Object)null && (Object)(object)GameNetworkManager.Instance.localPlayerController == (Object)(object)__instance) { MinimapController.CreateOrReplace(__instance); } } } internal sealed class MinimapController : MonoBehaviour { private struct MarkerState { internal GameObject Marker; internal bool WasActive; } private static MinimapController current; private readonly List<MarkerState> changedMarkers = new List<MarkerState>(); private readonly List<GameObject> enemyMarkers = new List<GameObject>(); private readonly List<GameObject> hazardMarkers = new List<GameObject>(); private PlayerControllerB localPlayer; private GameObject root; private RawImage mapImage; private Image exitArrow; private Image selfArrow; private Camera mapCamera; private RenderTexture mapTexture; private float nextMarkerRefresh; private EntranceTeleport[] entrances = (EntranceTeleport[])(object)new EntranceTeleport[0]; internal static void CreateOrReplace(PlayerControllerB player) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Expected O, but got Unknown DisposeCurrent(); GameObject val = new GameObject("WeeWeeProximityMinimap_Controller"); Object.DontDestroyOnLoad((Object)val); current = val.AddComponent<MinimapController>(); current.Initialise(player); } internal static void DisposeCurrent() { if ((Object)(object)current != (Object)null) { Object.Destroy((Object)(object)((Component)current).gameObject); } current = null; } private void Initialise(PlayerControllerB player) { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Expected O, but got Unknown //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Expected O, but got Unknown //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Expected O, but got Unknown //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Expected O, but got Unknown localPlayer = player; CreateUI(); CreateCamera(); Camera.onPreCull = (CameraCallback)Delegate.Combine((Delegate?)(object)Camera.onPreCull, (Delegate?)new CameraCallback(BeforeCameraRender)); Camera.onPostRender = (CameraCallback)Delegate.Combine((Delegate?)(object)Camera.onPostRender, (Delegate?)new CameraCallback(AfterCameraRender)); } private void CreateUI() { //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Expected O, but got Unknown //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_0112: Unknown result type (might be due to invalid IL or missing references) //IL_0152: Unknown result type (might be due to invalid IL or missing references) //IL_0158: Expected O, but got Unknown //IL_01bc: Unknown result type (might be due to invalid IL or missing references) //IL_01c1: Unknown result type (might be due to invalid IL or missing references) //IL_01d8: Unknown result type (might be due to invalid IL or missing references) //IL_0203: Unknown result type (might be due to invalid IL or missing references) //IL_023d: Unknown result type (might be due to invalid IL or missing references) //IL_0266: Unknown result type (might be due to invalid IL or missing references) //IL_0295: Unknown result type (might be due to invalid IL or missing references) Transform transform = ((Component)HUDManager.Instance.playerScreenTexture).transform; int num = Mathf.Clamp(Plugin.Instance.MapSize.Value, 80, 600); root = new GameObject("WeeWeeProximityMinimap_UI", new Type[3] { typeof(RectTransform), typeof(Image), typeof(Mask) }); root.transform.SetParent(transform, false); RectTransform component = root.GetComponent<RectTransform>(); component.anchorMin = Vector2.one; component.anchorMax = Vector2.one; component.pivot = Vector2.one; component.sizeDelta = new Vector2((float)num, (float)num); component.anchoredPosition = new Vector2(Plugin.Instance.PositionX.Value, Plugin.Instance.PositionY.Value); Image component2 = root.GetComponent<Image>(); component2.sprite = RuntimeSprites.CreateCircle(256, Color.white); ((Graphic)component2).color = new Color(0.03f, 0.08f, 0.08f, 0.92f); root.GetComponent<Mask>().showMaskGraphic = true; GameObject val = new GameObject("Map", new Type[2] { typeof(RectTransform), typeof(RawImage) }); val.transform.SetParent(root.transform, false); mapImage = val.GetComponent<RawImage>(); ((Graphic)mapImage).raycastTarget = false; Stretch(((Graphic)mapImage).rectTransform); GameObject val2 = new GameObject("Border", new Type[2] { typeof(RectTransform), typeof(Image) }); val2.transform.SetParent(root.transform, false); Stretch(val2.GetComponent<RectTransform>()); Image component3 = val2.GetComponent<Image>(); component3.sprite = RuntimeSprites.CreateRing(256, 7, new Color(0.12f, 0.85f, 0.9f, 0.95f)); ((Graphic)component3).raycastTarget = false; selfArrow = CreateArrow(root.transform, "PlayerHeading", new Color(0.2f, 1f, 1f, 1f), Plugin.Instance.PlayerArrowSize.Value); ((Graphic)selfArrow).rectTransform.anchoredPosition = Vector2.zero; exitArrow = CreateArrow(root.transform, "ExitDirection", new Color(1f, 0.78f, 0.15f, 1f), Plugin.Instance.ExitArrowSize.Value); } private void CreateCamera() { //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Expected O, but got Unknown //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Expected O, but got Unknown Camera val = (((Object)(object)StartOfRound.Instance != (Object)null && (Object)(object)StartOfRound.Instance.mapScreen != (Object)null) ? StartOfRound.Instance.mapScreen.cam : null); if ((Object)(object)val == (Object)null) { Plugin.Instance.LogError("Could not locate the ship radar camera."); return; } GameObject val2 = new GameObject("WeeWeeProximityMinimap_Camera"); val2.transform.SetParent(((Component)this).transform, false); mapCamera = val2.AddComponent<Camera>(); mapCamera.CopyFrom(val); ((Behaviour)mapCamera).enabled = false; mapCamera.depth = val.depth - 1f; int num = Mathf.Clamp(Plugin.Instance.MapSize.Value * 2, 256, 1024); mapTexture = new RenderTexture(num, num, 16, (RenderTextureFormat)0) { name = "WeeWeeProximityMinimap_Texture", filterMode = (FilterMode)1 }; mapTexture.Create(); mapCamera.targetTexture = mapTexture; mapImage.texture = (Texture)(object)mapTexture; } private void Update() { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)localPlayer == (Object)null || (Object)(object)Plugin.Instance == (Object)null) { return; } KeyboardShortcut value = Plugin.Instance.ToggleKey.Value; if (((KeyboardShortcut)(ref value)).IsDown()) { Plugin.Instance.Enabled.Value = !Plugin.Instance.Enabled.Value; ((BaseUnityPlugin)Plugin.Instance).Config.Save(); HUDManager instance = HUDManager.Instance; if (instance != null) { instance.DisplayTip("Proximity Minimap", Plugin.Instance.Enabled.Value ? "Enabled" : "Disabled", false, false, "LC_Tip1"); } } bool flag = (Object)(object)StartOfRound.Instance != (Object)null && !StartOfRound.Instance.inShipPhase; bool flag2 = Plugin.Instance.Enabled.Value && flag; if ((Object)(object)root != (Object)null && root.activeSelf != flag2) { root.SetActive(flag2); } if (!flag2) { return; } if ((Object)(object)mapCamera == (Object)null) { CreateCamera(); if ((Object)(object)mapCamera == (Object)null) { return; } } UpdateCamera(); UpdateArrowSizes(); UpdateExitArrow(); if (Time.unscaledTime >= nextMarkerRefresh) { nextMarkerRefresh = Time.unscaledTime + 0.35f; RefreshMarkerCache(); } mapCamera.Render(); } private void UpdateCamera() { //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_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_010c: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) Vector3 position = ((Component)StartOfRound.Instance.mapScreen.cam).transform.position; Vector3 position2 = ((Component)localPlayer).transform.position; ((Component)mapCamera).transform.position = new Vector3(position2.x, position.y, position2.z); float num = (Plugin.Instance.RotateWithPlayer.Value ? ((Component)localPlayer).transform.eulerAngles.y : 0f); ((Component)mapCamera).transform.rotation = Quaternion.Euler(90f, num, 0f); mapCamera.orthographicSize = Mathf.Clamp(Plugin.Instance.MapZoom.Value, 4f, 80f); ((Transform)((Graphic)selfArrow).rectTransform).localEulerAngles = (Vector3)(Plugin.Instance.RotateWithPlayer.Value ? Vector3.zero : new Vector3(0f, 0f, 0f - ((Component)localPlayer).transform.eulerAngles.y)); } private void UpdateArrowSizes() { //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) float num = Mathf.Clamp(Plugin.Instance.PlayerArrowSize.Value, 4f, 40f); float num2 = Mathf.Clamp(Plugin.Instance.ExitArrowSize.Value, 4f, 40f); ((Graphic)selfArrow).rectTransform.sizeDelta = new Vector2(num, num); ((Graphic)exitArrow).rectTransform.sizeDelta = new Vector2(num2, num2); } private void UpdateExitArrow() { //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0075: 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_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: 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_010c: Unknown result type (might be due to invalid IL or missing references) //IL_015e: Unknown result type (might be due to invalid IL or missing references) //IL_0165: Unknown result type (might be due to invalid IL or missing references) //IL_0186: Unknown result type (might be due to invalid IL or missing references) bool value = Plugin.Instance.ShowExitArrow.Value; if (((Component)exitArrow).gameObject.activeSelf != value) { ((Component)exitArrow).gameObject.SetActive(value); } if (!value) { return; } Vector3 position; if (localPlayer.isInsideFactory) { EntranceTeleport val = FindNearestMainEntrance(); if ((Object)(object)val == (Object)null) { ((Component)exitArrow).gameObject.SetActive(false); return; } position = ((Component)val).transform.position; } else { if (!((Object)(object)StartOfRound.Instance != (Object)null) || !((Object)(object)StartOfRound.Instance.elevatorTransform != (Object)null)) { ((Component)exitArrow).gameObject.SetActive(false); return; } position = StartOfRound.Instance.elevatorTransform.position; } Vector3 val2 = position - ((Component)localPlayer).transform.position; float num = Mathf.Atan2(val2.x, val2.z) * 57.29578f - (Plugin.Instance.RotateWithPlayer.Value ? ((Component)localPlayer).transform.eulerAngles.y : 0f); float num2 = num * ((float)Math.PI / 180f); float num3 = (float)Mathf.Clamp(Plugin.Instance.MapSize.Value, 80, 600) * 0.39f; ((Graphic)exitArrow).rectTransform.anchoredPosition = new Vector2(Mathf.Sin(num2), Mathf.Cos(num2)) * num3; ((Transform)((Graphic)exitArrow).rectTransform).localEulerAngles = new Vector3(0f, 0f, 0f - num); } private EntranceTeleport FindNearestMainEntrance() { //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) if (entrances == null || entrances.Length == 0) { entrances = Object.FindObjectsOfType<EntranceTeleport>(); } EntranceTeleport result = null; float num = float.MaxValue; EntranceTeleport[] array = entrances; foreach (EntranceTeleport val in array) { if (!((Object)(object)val == (Object)null) && val.entranceId == 0) { Vector3 val2 = ((Component)val).transform.position - ((Component)localPlayer).transform.position; float sqrMagnitude = ((Vector3)(ref val2)).sqrMagnitude; if (sqrMagnitude < num) { num = sqrMagnitude; result = val; } } } return result; } private void RefreshMarkerCache() { enemyMarkers.Clear(); EnemyAI[] array = Object.FindObjectsOfType<EnemyAI>(); for (int i = 0; i < array.Length; i++) { GameObject val = FindNamedChild(((Component)array[i]).transform, "MapDot"); if ((Object)(object)val != (Object)null) { enemyMarkers.Add(val); } } hazardMarkers.Clear(); Turret[] array2 = Object.FindObjectsOfType<Turret>(); for (int i = 0; i < array2.Length; i++) { GameObject val2 = FindNamedChild(((Component)array2[i]).transform, "MapDot"); if ((Object)(object)val2 != (Object)null) { hazardMarkers.Add(val2); } } Landmine[] array3 = Object.FindObjectsOfType<Landmine>(); for (int i = 0; i < array3.Length; i++) { GameObject val3 = FindNamedChild(((Component)array3[i]).transform, "MapDot"); if ((Object)(object)val3 != (Object)null) { hazardMarkers.Add(val3); } } entrances = Object.FindObjectsOfType<EntranceTeleport>(); } private void BeforeCameraRender(Camera camera) { //IL_010c: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Unknown result type (might be due to invalid IL or missing references) //IL_0121: Unknown result type (might be due to invalid IL or missing references) //IL_0126: Unknown result type (might be due to invalid IL or missing references) //IL_018f: Unknown result type (might be due to invalid IL or missing references) //IL_019f: Unknown result type (might be due to invalid IL or missing references) //IL_01a4: Unknown result type (might be due to invalid IL or missing references) //IL_01a9: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)camera != (Object)(object)mapCamera || (Object)(object)localPlayer == (Object)null) { return; } changedMarkers.Clear(); float num = Mathf.Max(0f, Plugin.Instance.NearbyMarkerRange.Value); float num2 = num * num; if ((Object)(object)StartOfRound.Instance != (Object)null && StartOfRound.Instance.allPlayerScripts != null) { PlayerControllerB[] allPlayerScripts = StartOfRound.Instance.allPlayerScripts; foreach (PlayerControllerB val in allPlayerScripts) { if (!((Object)(object)val == (Object)null) && !((Object)(object)val.mapRadarDotAnimator == (Object)null)) { bool flag = (Object)(object)val != (Object)(object)localPlayer && val.isPlayerControlled && !val.isPlayerDead; SetForThisRender(((Component)val.mapRadarDotAnimator).gameObject, Plugin.Instance.ShowPlayers.Value && flag); } } } GrabbableObject[] array = Object.FindObjectsOfType<GrabbableObject>(); Vector3 val3; foreach (GrabbableObject val2 in array) { if (!((Object)(object)val2 == (Object)null) && !((Object)(object)val2.radarIcon == (Object)null)) { val3 = ((Component)val2).transform.position - ((Component)localPlayer).transform.position; bool flag2 = ((Vector3)(ref val3)).sqrMagnitude <= num2; SetForThisRender(((Component)val2.radarIcon).gameObject, Plugin.Instance.ShowItems.Value && flag2); } } foreach (GameObject enemyMarker in enemyMarkers) { if (!((Object)(object)enemyMarker == (Object)null)) { val3 = enemyMarker.transform.position - ((Component)localPlayer).transform.position; bool flag3 = ((Vector3)(ref val3)).sqrMagnitude <= num2; SetForThisRender(enemyMarker, Plugin.Instance.ShowMonsters.Value && flag3); } } foreach (GameObject hazardMarker in hazardMarkers) { SetForThisRender(hazardMarker, active: false); } TerminalAccessibleObject[] array2 = Object.FindObjectsOfType<TerminalAccessibleObject>(); foreach (TerminalAccessibleObject val5 in array2) { if ((Object)(object)val5 != (Object)null && (Object)(object)val5.mapRadarObject != (Object)null) { SetForThisRender(val5.mapRadarObject, active: false); } } } private void AfterCameraRender(Camera camera) { if (!((Object)(object)camera != (Object)(object)mapCamera)) { RestoreMarkers(); } } private void SetForThisRender(GameObject marker, bool active) { if (!((Object)(object)marker == (Object)null) && marker.activeSelf != active) { changedMarkers.Add(new MarkerState { Marker = marker, WasActive = marker.activeSelf }); marker.SetActive(active); } } private void RestoreMarkers() { for (int num = changedMarkers.Count - 1; num >= 0; num--) { MarkerState markerState = changedMarkers[num]; if ((Object)(object)markerState.Marker != (Object)null) { markerState.Marker.SetActive(markerState.WasActive); } } changedMarkers.Clear(); } private static GameObject FindNamedChild(Transform rootTransform, string prefix) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Expected O, but got Unknown foreach (Transform item in rootTransform) { Transform val = item; if (((Object)val).name.StartsWith(prefix, StringComparison.OrdinalIgnoreCase)) { return ((Component)val).gameObject; } GameObject val2 = FindNamedChild(val, prefix); if ((Object)(object)val2 != (Object)null) { return val2; } } return null; } private static Image CreateArrow(Transform parent, string name, Color color, float size) { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0026: 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_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) GameObject val = new GameObject(name, new Type[2] { typeof(RectTransform), typeof(Image) }); val.transform.SetParent(parent, false); Image component = val.GetComponent<Image>(); component.sprite = RuntimeSprites.CreateTriangle(64, color); ((Graphic)component).raycastTarget = false; ((Graphic)component).rectTransform.anchorMin = new Vector2(0.5f, 0.5f); ((Graphic)component).rectTransform.anchorMax = new Vector2(0.5f, 0.5f); ((Graphic)component).rectTransform.pivot = new Vector2(0.5f, 0.5f); ((Graphic)component).rectTransform.sizeDelta = new Vector2(size, size); return component; } private static void Stretch(RectTransform rect) { //IL_0001: 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_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) rect.anchorMin = Vector2.zero; rect.anchorMax = Vector2.one; rect.offsetMin = Vector2.zero; rect.offsetMax = Vector2.zero; } private void OnDestroy() { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Expected O, but got Unknown //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Expected O, but got Unknown //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Expected O, but got Unknown Camera.onPreCull = (CameraCallback)Delegate.Remove((Delegate?)(object)Camera.onPreCull, (Delegate?)new CameraCallback(BeforeCameraRender)); Camera.onPostRender = (CameraCallback)Delegate.Remove((Delegate?)(object)Camera.onPostRender, (Delegate?)new CameraCallback(AfterCameraRender)); RestoreMarkers(); if ((Object)(object)mapTexture != (Object)null) { mapTexture.Release(); Object.Destroy((Object)(object)mapTexture); } if ((Object)(object)root != (Object)null) { Object.Destroy((Object)(object)root); } if ((Object)(object)current == (Object)(object)this) { current = null; } } } internal static class RuntimeSprites { internal static Sprite CreateCircle(int size, Color color) { //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) Texture2D texture = NewTexture(size); Color[] array = (Color[])(object)new Color[size * size]; float num = (float)(size - 1) * 0.5f; float num2 = num - 1f; float num3 = num2 * num2; for (int i = 0; i < size; i++) { for (int j = 0; j < size; j++) { float num4 = (float)j - num; float num5 = (float)i - num; array[i * size + j] = ((num4 * num4 + num5 * num5 <= num3) ? color : Color.clear); } } return Finish(texture, array); } internal static Sprite CreateRing(int size, int thickness, Color color) { //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006c: 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) Texture2D texture = NewTexture(size); Color[] array = (Color[])(object)new Color[size * size]; float num = (float)(size - 1) * 0.5f; float num2 = num - 1f; float num3 = num2 - (float)thickness; float num4 = num2 * num2; float num5 = num3 * num3; for (int i = 0; i < size; i++) { for (int j = 0; j < size; j++) { float num6 = (float)j - num; float num7 = (float)i - num; float num8 = num6 * num6 + num7 * num7; array[i * size + j] = ((num8 <= num4 && num8 >= num5) ? color : Color.clear); } } return Finish(texture, array); } internal static Sprite CreateTriangle(int size, Color color) { //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) Texture2D texture = NewTexture(size); Color[] array = (Color[])(object)new Color[size * size]; float num = (float)(size - 1) * 0.5f; for (int i = 0; i < size; i++) { float num2 = (1f - (float)i / (float)(size - 1)) * num; for (int j = 0; j < size; j++) { array[i * size + j] = ((Mathf.Abs((float)j - num) <= num2) ? color : Color.clear); } } return Finish(texture, array); } private static Texture2D NewTexture(int size) { //IL_0004: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Expected O, but got Unknown return new Texture2D(size, size, (TextureFormat)4, false) { name = "WeeWeeProximityMinimap_RuntimeSprite", wrapMode = (TextureWrapMode)1, filterMode = (FilterMode)1 }; } private static Sprite Finish(Texture2D texture, Color[] pixels) { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) texture.SetPixels(pixels); texture.Apply(false, true); return Sprite.Create(texture, new Rect(0f, 0f, (float)((Texture)texture).width, (float)((Texture)texture).height), new Vector2(0.5f, 0.5f), 100f); } }