using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Globalization; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using ModdingTales; using Newtonsoft.Json; using UnityEngine; using UnityEngine.Rendering; using UnityEngine.Video; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("PlaneImagePlugin")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("PlaneImagePlugin")] [assembly: AssemblyCopyright("Copyright © 2026")] [assembly: AssemblyTrademark("PlaneImagePlugin")] [assembly: ComVisible(false)] [assembly: Guid("c303405d-e66c-4316-9cdb-4e3ca15c6360")] [assembly: AssemblyFileVersion("2.0.1.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyVersion("2.0.1.0")] namespace LordAshes; [BepInPlugin("org.lordashes.plugins.planeimage", "Plane Image Plugin", "2.0.1.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] public class PlaneImagePlugin : BaseUnityPlugin { internal static class Camera { private static readonly MethodInfo _ToggleCameraMovement = Reflection.Method(_CameraController, "ToggleCameraMovement", (string[])null); public static void SetCameraMovementEnabled(bool enabled, string context) { try { Reflection.Execute(_ToggleCameraMovement, (object)null, new object[1] { enabled }, 0); LoggingPlugin.LogDebug(context + ": camera movement " + (enabled ? "enabled" : "disabled")); } catch (Exception ex) { LoggingPlugin.LogWarning(context + ": SetCameraMovementEnabled(" + enabled + ") failed: " + ex.Message); } } public static void RecentreCameraOnCurrentPlane(string context, bool transition = true) { //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) if (currentPlaneIndex < 0 || currentPlaneIndex >= planes.Count) { return; } try { Reflection.Execute(m_MoveToPosition, (object)null, new object[4] { planes[currentPlaneIndex].transform.position, transition, false, false }, 0); Vector3 position; if (transition) { position = planes[currentPlaneIndex].transform.position; LoggingPlugin.LogDebug(context + ": camera recentred on " + ((object)(Vector3)(ref position)).ToString()); } else { position = planes[currentPlaneIndex].transform.position; LoggingPlugin.LogTrace(context + ": camera snapped to " + ((object)(Vector3)(ref position)).ToString()); } } catch (Exception ex) { LoggingPlugin.LogWarning(context + ": camera recentre failed: " + ex.Message); } } } public enum GridMode { Off, Partial, Full } public enum PlaneImageMode { game, move, size, rotate } public static class Utility { private static object gameInputInstance; private static MethodInfo gameInputDisable; private static MethodInfo gameInputEnable; private static PropertyInfo isLoadingProp; private static PropertyInfo inBoardProp; public static bool isBoardLoaded() { try { if (inBoardProp == null) { inBoardProp = Reflection.Property(_BoardSessionManager, "InBoard", (string)null); } if (isLoadingProp == null) { isLoadingProp = Reflection.Property(_BoardSessionManager, "IsLoading", (string)null); } bool flag = false; try { flag = (bool)inBoardProp.GetValue(null); } catch { } bool flag2 = false; try { flag2 = (bool)isLoadingProp.GetValue(null); } catch { } return flag && !flag2; } catch (Exception ex) { Reflection.CatchFullError(ex); return false; } } public static float ParseFloat(string value) { return float.Parse(value, CultureInfo.InvariantCulture); } public static void GameInputEnabled(bool setting) { if (gameInputInstance == null || gameInputDisable == null || gameInputEnable == null) { object obj = null; try { gameInputInstance = null; gameInputDisable = null; gameInputEnable = null; LoggingPlugin.LogDebug("Trying To Get Cntroller Instance"); LoggingPlugin.LogDebug("Closed Type = " + _SimpleSingletonBehaviourControllerManager.GetType().Name); obj = Reflection.Execute(Reflection.Method(_SimpleSingletonBehaviourControllerManager, "TryGetInstance", (string[])null), (object)null, new object[1], 1); if (obj != null) { LoggingPlugin.LogDebug("ControllerManager = " + obj); object value = Reflection.Field(_ControllerManager, "_gameInput", (string)null).GetValue(obj); gameInputDisable = Reflection.Method(_GameInput, "Disable", (string[])null); gameInputEnable = Reflection.Method(_GameInput, "Enable", (string[])null); LoggingPlugin.LogDebug("Successfully Obtained References To Game Input"); } else { LoggingPlugin.LogWarning("Unable to obtain ControllerManager instance"); LoggingPlugin.LogDebug("ControllerManager = " + ((obj != null) ? obj.ToString() : "Null")); LoggingPlugin.LogDebug("GameInputDisable = " + ((gameInputDisable != null) ? gameInputDisable.ToString() : "Null")); LoggingPlugin.LogDebug("GameInputEnable = " + ((gameInputEnable != null) ? gameInputEnable.ToString() : "Null")); } } catch (Exception ex) { LoggingPlugin.LogWarning("Unable To Get Game Input Reference Or Reference To One Of Its Methods"); Reflection.CatchFullError(ex); LoggingPlugin.LogDebug("ControllerManager = " + ((obj != null) ? obj.ToString() : "Null")); LoggingPlugin.LogDebug("GameInputDisable = " + ((gameInputDisable != null) ? gameInputDisable.ToString() : "Null")); LoggingPlugin.LogDebug("GameInputEnable = " + ((gameInputEnable != null) ? gameInputEnable.ToString() : "Null")); } } if (gameInputInstance != null && gameInputDisable != null && gameInputEnable != null) { if (setting && gameInputEnable != null) { LoggingPlugin.LogDebug("Enabling Game Input"); gameInputEnable.Invoke(gameInputInstance, new object[0]); } else if (!setting && gameInputDisable != null) { LoggingPlugin.LogDebug("Disabling Game Input"); gameInputDisable.Invoke(gameInputInstance, new object[0]); } } } } [CompilerGenerated] private sealed class <>c__DisplayClass82_0 { public GameObject plane; public VideoPlayer video; internal bool b__0() { return (Object)(object)plane == (Object)null || (Object)(object)video == (Object)null || video.width != 0; } } [CompilerGenerated] private sealed class d__82 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public GameObject plane; public VideoPlayer video; public PlaneImagePlugin <>4__this; private <>c__DisplayClass82_0 <>8__1; private float 5__2; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__82(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>8__1 = null; <>1__state = -2; } private bool MoveNext() { //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Expected O, but got Unknown //IL_017f: Unknown result type (might be due to invalid IL or missing references) //IL_0184: Unknown result type (might be due to invalid IL or missing references) //IL_01be: 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_01f2: 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) switch (<>1__state) { default: return false; case 0: <>1__state = -1; <>8__1 = new <>c__DisplayClass82_0(); <>8__1.plane = plane; <>8__1.video = video; <>2__current = (object)new WaitUntil((Func)(() => (Object)(object)<>8__1.plane == (Object)null || (Object)(object)<>8__1.video == (Object)null || <>8__1.video.width != 0)); <>1__state = 1; return true; case 1: <>1__state = -1; if ((Object)(object)<>8__1.plane == (Object)null || (Object)(object)<>8__1.video == (Object)null) { return false; } if (<>8__1.video.height == 0) { LoggingPlugin.LogWarning("ApplyVideoAspectWhenReady: video reported width=" + <>8__1.video.width + " but height=0; skipping rescale"); return false; } 5__2 = (float)<>8__1.video.height / (float)<>8__1.video.width; LoggingPlugin.LogDebug("ApplyVideoAspectWhenReady: Scaling Plane Based On Video Size " + <>8__1.video.width + "x" + <>8__1.video.height + " With Anchor Size = " + <>8__1.plane.transform.localScale.x); <>8__1.plane.transform.localScale = new Vector3(<>8__1.plane.transform.localScale.x, <>8__1.plane.transform.localScale.y, <>8__1.plane.transform.localScale.x * 5__2); <>4__this.BuildGridForPlane(<>8__1.plane); return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__83 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public PlaneImagePlugin <>4__this; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__83(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Expected O, but got Unknown switch (<>1__state) { default: return false; case 0: <>1__state = -1; <>4__this.displayCurrentPlaneInfo = true; <>2__current = (object)new WaitForSeconds(3f); <>1__state = 1; return true; case 1: <>1__state = -1; <>4__this.displayCurrentPlaneInfo = false; return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } public static readonly Type _BoardSessionManager = Reflection.Type("BoardSessionManager", (string[])null, (string[])null, 0); public static readonly Type _Camera = Reflection.Type("Camera", (string[])null, (string[])null, 0); public static readonly Type _CameraController = Reflection.Type("CameraController", (string[])null, (string[])null, 0); public static readonly Type _ControllerManager = Reflection.Type("ControllerManager", (string[])null, (string[])null, 0); public static readonly Type _GameInput = Reflection.Type("GameInput", (string[])null, (string[])null, 0); public static readonly Type _LocalClient = Reflection.Type("LocalClient", (string[])null, (string[])null, 0); public static readonly Type _SystemMessage = Reflection.Type("SystemMessage", (string[])null, (string[])null, 0); public static readonly Type _SimpleSingletonBehaviourControllerManager = Reflection.ClosedType("SimpleSingletonBehaviour`1", "ControllerManager", (string[])null, (string[])null); public static readonly MethodInfo m_AskForTextInput = Reflection.Method(_SystemMessage, "AskForTextInput", (string[])null); public static readonly MethodInfo m_GetCamera = Reflection.Method(Reflection.Type("CameraController", (string[])null, (string[])null, 0), "GetCamera", (string[])null); public static readonly MethodInfo m_MoveToPosition = Reflection.Method(_CameraController, "MoveToPosition", (string[])null); public static readonly PropertyInfo p_IsInGmMode = Reflection.Property(_LocalClient, "IsInGmMode", (string)null); private const string GridMaterialResourcePath = "Materials/GridLines"; private static readonly int ID_Color = Shader.PropertyToID("_Color"); private static readonly int ID_VisibleDistance = Shader.PropertyToID("_VisibleDistance"); private static readonly int ID_GridWorldFade = Shader.PropertyToID("GridWorldFade"); private const string GridChildName = "_PlaneImageGridOverlay"; private const string GridChildNameMouse = "_PlaneImageGridOverlayMouse"; private const float DefaultStripThickness = 0.07f; private const float DefaultDashRepeat = 8f; private const float DefaultHeightOffset = 0.05f; private const float BrDefaultVisibleDistance = 11.44f; private const float FullVisibleDistanceMultiplier = 10f; private Material gridSourceMaterial = null; private ConfigEntry cfgGridMode; private ConfigEntry cfgGridColor; private ConfigEntry cfgGridAlphaPct; private ConfigEntry cfgGridSpacing; private ConfigEntry cfgGridThickness; private ConfigEntry cfgGridDashRepeat; private ConfigEntry cfgGridHeightOffset; private readonly List _gridVerts = new List(256); private readonly List _gridUVs = new List(256); private readonly List _gridTris = new List(512); private readonly MaterialPropertyBlock _gridFadeBlock = new MaterialPropertyBlock(); private readonly Dictionary _gridRenderers = new Dictionary(); private readonly Dictionary _gridRenderersMouse = new Dictionary(); private readonly List _gridFadeEvict = new List(8); public static bool displayCurrentGridInfo = false; public static object cam = null; public static PropertyInfo p_transform = null; private GameObject prefab = null; private static int currentPlaneIndex = -1; private bool displayCurrentPlaneInfo = false; public static PlaneImageMode activeMode = PlaneImageMode.game; private static List planes = new List(); public const string Name = "Plane Image Plugin"; public const string Guid = "org.lordashes.plugins.planeimage"; public const string Version = "2.0.1.0"; public static PlaneImagePlugin _self = null; private int debounce = -1; private KeyboardShortcut[] applyKeys = (KeyboardShortcut[])(object)new KeyboardShortcut[12] { new KeyboardShortcut((KeyCode)273, Array.Empty()), new KeyboardShortcut((KeyCode)274, Array.Empty()), new KeyboardShortcut((KeyCode)276, Array.Empty()), new KeyboardShortcut((KeyCode)275, Array.Empty()), new KeyboardShortcut((KeyCode)280, Array.Empty()), new KeyboardShortcut((KeyCode)281, Array.Empty()), new KeyboardShortcut((KeyCode)306, (KeyCode[])(object)new KeyCode[1] { (KeyCode)273 }), new KeyboardShortcut((KeyCode)306, (KeyCode[])(object)new KeyCode[1] { (KeyCode)274 }), new KeyboardShortcut((KeyCode)306, (KeyCode[])(object)new KeyCode[1] { (KeyCode)276 }), new KeyboardShortcut((KeyCode)306, (KeyCode[])(object)new KeyCode[1] { (KeyCode)275 }), new KeyboardShortcut((KeyCode)306, (KeyCode[])(object)new KeyCode[1] { (KeyCode)280 }), new KeyboardShortcut((KeyCode)306, (KeyCode[])(object)new KeyCode[1] { (KeyCode)281 }) }; private ConfigEntry[] triggerKeys { get; set; } private void BindGridConfig() { //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Expected O, but got Unknown cfgGridMode = ((BaseUnityPlugin)this).Config.Bind("Grid Overlay", "Mode", GridMode.Partial, "Off: no grid overlay. Partial: dotted grid fades around the camera and mouse cursor using BR's default radius. Full: same overlays but with the fade radius scaled 10x so the grid is effectively always visible across the whole plane."); cfgGridColor = ((BaseUnityPlugin)this).Config.Bind("Grid Overlay", "Line Color (R,G,B 0..1)", "1,1,1", "Grid line color as three comma-separated values between 0 and 1 (e.g. 1,1,1 = white, 1,0,0 = red). Opacity is controlled separately by 'Line Alpha %'."); cfgGridAlphaPct = ((BaseUnityPlugin)this).Config.Bind("Grid Overlay", "Line Alpha %", 60, new ConfigDescription("Grid line opacity from 0 (invisible) to 100 (solid).", (AcceptableValueBase)(object)new AcceptableValueRange(0, 100), Array.Empty())); cfgGridSpacing = ((BaseUnityPlugin)this).Config.Bind("Grid Overlay", "Spacing (tiles)", 1f, "Distance between grid lines, measured in TaleSpire tiles. Leave at 1.0 to match the floor grid; raise for a coarser overlay, lower for a finer one."); cfgGridThickness = ((BaseUnityPlugin)this).Config.Bind("Grid Overlay", "Line Thickness (tiles)", 0.07f, "How wide each grid line is, in tiles. Default matches the look of TaleSpire's own floor grid."); cfgGridDashRepeat = ((BaseUnityPlugin)this).Config.Bind("Grid Overlay", "Dashes Per Tile", 8f, "How many dashes appear along each tile of grid line. Higher = denser dot pattern."); cfgGridHeightOffset = ((BaseUnityPlugin)this).Config.Bind("Grid Overlay", "Height Offset (tiles)", 0.05f, "How far the grid sits above the image surface. Increase if you see the grid flickering through the image, or set to 0 to lay it flush."); LoggingPlugin.LogDebug("Grid Overlay config bound:"); LoggingPlugin.LogDebug(" Mode = " + cfgGridMode.Value); LoggingPlugin.LogDebug(" Color = " + cfgGridColor.Value); LoggingPlugin.LogDebug(" Alpha % = " + cfgGridAlphaPct.Value); LoggingPlugin.LogDebug(" Spacing = " + cfgGridSpacing.Value); LoggingPlugin.LogDebug(" Thickness = " + cfgGridThickness.Value); LoggingPlugin.LogDebug(" Dashes Per Unit = " + cfgGridDashRepeat.Value); LoggingPlugin.LogDebug(" Height Offset = " + cfgGridHeightOffset.Value); EventHandler eventHandler = delegate { RefreshGridOnAllPlanes(); }; cfgGridMode.SettingChanged += eventHandler; cfgGridColor.SettingChanged += eventHandler; cfgGridAlphaPct.SettingChanged += eventHandler; cfgGridSpacing.SettingChanged += eventHandler; cfgGridThickness.SettingChanged += eventHandler; cfgGridDashRepeat.SettingChanged += eventHandler; cfgGridHeightOffset.SettingChanged += eventHandler; } private void LoadGridMaterial() { //IL_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Expected O, but got Unknown try { gridSourceMaterial = Resources.Load("Materials/GridLines"); if ((Object)(object)gridSourceMaterial != (Object)null) { LoggingPlugin.LogInfo("LoadGridMaterial: loaded Bouncyrock material '" + ((Object)gridSourceMaterial).name + "' from Resources/Materials/GridLines (shader='" + (((Object)(object)gridSourceMaterial.shader != (Object)null) ? ((Object)gridSourceMaterial.shader).name : "") + "')"); } else { LoggingPlugin.LogWarning("LoadGridMaterial: Resources/Materials/GridLines not found. Falling back to a stock unlit-transparent shader; the grid will be solid (no dotted pattern)."); Shader val = Shader.Find("Sprites/Default") ?? Shader.Find("Unlit/Transparent") ?? Shader.Find("Unlit/Color"); if ((Object)(object)val == (Object)null) { LoggingPlugin.LogError("LoadGridMaterial: no fallback shader found; grid overlay will be disabled."); return; } gridSourceMaterial = new Material(val); ((Object)gridSourceMaterial).name = "PlaneImageGridFallback"; } } catch (Exception ex) { LoggingPlugin.LogError("LoadGridMaterial caught exception: " + ex); } } private void RefreshGridOnAllPlanes() { try { if (planes == null) { return; } LoggingPlugin.LogDebug("RefreshGridOnAllPlanes: " + planes.Count + " plane(s)"); for (int i = 0; i < planes.Count; i++) { if ((Object)(object)planes[i] != (Object)null) { BuildGridForPlane(planes[i]); } } } catch (Exception ex) { LoggingPlugin.LogError("RefreshGridOnAllPlanes caught exception: " + ex); } } private void BuildGridForPlane(GameObject plane) { if ((Object)(object)plane == (Object)null || (Object)(object)gridSourceMaterial == (Object)null) { return; } try { EnsureGridChild(plane, "_PlaneImageGridOverlay", out var mf, out var mr); EnsureGridChild(plane, "_PlaneImageGridOverlayMouse", out var mf2, out var mr2); _gridRenderers[plane] = mr; _gridRenderersMouse[plane] = mr2; if (cfgGridMode == null || cfgGridMode.Value == GridMode.Off) { if ((Object)(object)mr != (Object)null) { ((Renderer)mr).enabled = false; } if ((Object)(object)mr2 != (Object)null) { ((Renderer)mr2).enabled = false; } return; } if (!RebuildGridMesh(plane, mf)) { if ((Object)(object)mr != (Object)null) { ((Renderer)mr).enabled = false; } if ((Object)(object)mr2 != (Object)null) { ((Renderer)mr2).enabled = false; } return; } if ((Object)(object)mf2 != (Object)null) { mf2.sharedMesh = mf.sharedMesh; } if ((Object)(object)mr != (Object)null) { ((Renderer)mr).enabled = true; } if ((Object)(object)mr2 != (Object)null) { ((Renderer)mr2).enabled = true; } ApplyGridMaterialProps(plane, mr); ApplyGridMaterialProps(plane, mr2); } catch (Exception ex) { LoggingPlugin.LogError("BuildGridForPlane caught exception for plane '" + (((Object)(object)plane != (Object)null) ? ((Object)plane).name : "") + "': " + ex); } } private void EnsureGridChild(GameObject plane, string childName, out MeshFilter mf, out MeshRenderer mr) { //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Expected O, but got Unknown //IL_0057: 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) //IL_0079: 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_00d0: Expected O, but got Unknown Transform val = plane.transform.Find(childName); if ((Object)(object)val != (Object)null) { GameObject gameObject = ((Component)val).gameObject; mf = gameObject.GetComponent(); mr = gameObject.GetComponent(); return; } GameObject val2 = new GameObject(childName); val2.transform.SetParent(plane.transform, false); val2.transform.localPosition = Vector3.zero; val2.transform.localRotation = Quaternion.identity; val2.transform.localScale = Vector3.one; mf = val2.AddComponent(); mr = val2.AddComponent(); ((Renderer)mr).receiveShadows = false; ((Renderer)mr).shadowCastingMode = (ShadowCastingMode)0; ((Renderer)mr).lightProbeUsage = (LightProbeUsage)0; ((Renderer)mr).reflectionProbeUsage = (ReflectionProbeUsage)0; ((Renderer)mr).material = new Material(gridSourceMaterial); ((Object)((Renderer)mr).material).name = "PlaneImageGrid"; LoggingPlugin.LogDebug("EnsureGridChild: created '" + childName + "' for plane '" + ((Object)plane).name + "'"); } private bool RebuildGridMesh(GameObject plane, MeshFilter targetMF) { //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_006a: 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_0082: 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_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: 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_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: 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_00fb: 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_0101: 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) //IL_0107: 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_0110: 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_0117: Unknown result type (might be due to invalid IL or missing references) //IL_0119: 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_011d: Unknown result type (might be due to invalid IL or missing references) //IL_0122: 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_0126: Unknown result type (might be due to invalid IL or missing references) //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_0153: Unknown result type (might be due to invalid IL or missing references) //IL_0157: Unknown result type (might be due to invalid IL or missing references) //IL_015c: 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_0166: Unknown result type (might be due to invalid IL or missing references) //IL_0188: 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_019b: Unknown result type (might be due to invalid IL or missing references) //IL_01a2: Unknown result type (might be due to invalid IL or missing references) //IL_01b5: Unknown result type (might be due to invalid IL or missing references) //IL_01bc: Unknown result type (might be due to invalid IL or missing references) //IL_01c8: Unknown result type (might be due to invalid IL or missing references) //IL_01cf: Unknown result type (might be due to invalid IL or missing references) //IL_01e2: Unknown result type (might be due to invalid IL or missing references) //IL_01e9: Unknown result type (might be due to invalid IL or missing references) //IL_01f5: Unknown result type (might be due to invalid IL or missing references) //IL_01fc: Unknown result type (might be due to invalid IL or missing references) //IL_020f: Unknown result type (might be due to invalid IL or missing references) //IL_0216: Unknown result type (might be due to invalid IL or missing references) //IL_0222: Unknown result type (might be due to invalid IL or missing references) //IL_0229: Unknown result type (might be due to invalid IL or missing references) //IL_017e: Unknown result type (might be due to invalid IL or missing references) //IL_0180: Unknown result type (might be due to invalid IL or missing references) //IL_0185: Unknown result type (might be due to invalid IL or missing references) //IL_02eb: Unknown result type (might be due to invalid IL or missing references) //IL_02ed: Unknown result type (might be due to invalid IL or missing references) //IL_02ef: Unknown result type (might be due to invalid IL or missing references) //IL_02f1: Unknown result type (might be due to invalid IL or missing references) //IL_02f3: Unknown result type (might be due to invalid IL or missing references) //IL_0343: Unknown result type (might be due to invalid IL or missing references) //IL_0345: Unknown result type (might be due to invalid IL or missing references) //IL_0347: Unknown result type (might be due to invalid IL or missing references) //IL_0349: Unknown result type (might be due to invalid IL or missing references) //IL_034b: Unknown result type (might be due to invalid IL or missing references) //IL_0389: Unknown result type (might be due to invalid IL or missing references) //IL_0390: Expected O, but got Unknown MeshFilter component = plane.GetComponent(); if ((Object)(object)component == (Object)null || (Object)(object)component.sharedMesh == (Object)null) { return false; } Bounds bounds = component.sharedMesh.bounds; Vector3 val = default(Vector3); ((Vector3)(ref val))..ctor(((Bounds)(ref bounds)).min.x, ((Bounds)(ref bounds)).center.y, ((Bounds)(ref bounds)).min.z); Vector3 val2 = default(Vector3); ((Vector3)(ref val2))..ctor(((Bounds)(ref bounds)).max.x, ((Bounds)(ref bounds)).center.y, ((Bounds)(ref bounds)).min.z); Vector3 val3 = default(Vector3); ((Vector3)(ref val3))..ctor(((Bounds)(ref bounds)).max.x, ((Bounds)(ref bounds)).center.y, ((Bounds)(ref bounds)).max.z); Vector3 val4 = default(Vector3); ((Vector3)(ref val4))..ctor(((Bounds)(ref bounds)).min.x, ((Bounds)(ref bounds)).center.y, ((Bounds)(ref bounds)).max.z); Transform transform = plane.transform; Vector3 val5 = transform.TransformPoint(val); Vector3 val6 = transform.TransformPoint(val2); Vector3 val7 = transform.TransformPoint(val3); Vector3 val8 = transform.TransformPoint(val4); Vector3 val9 = Vector3.Cross(val6 - val5, val8 - val5); float magnitude = ((Vector3)(ref val9)).magnitude; if (magnitude < 1E-05f) { return false; } val9 /= magnitude; if (Vector3.Dot(val9, plane.transform.up) < 0f) { val9 = -val9; } float num = Mathf.Min(Mathf.Min(val5.x, val6.x), Mathf.Min(val7.x, val8.x)); float num2 = Mathf.Max(Mathf.Max(val5.x, val6.x), Mathf.Max(val7.x, val8.x)); float num3 = Mathf.Min(Mathf.Min(val5.z, val6.z), Mathf.Min(val7.z, val8.z)); float num4 = Mathf.Max(Mathf.Max(val5.z, val6.z), Mathf.Max(val7.z, val8.z)); float num5 = Mathf.Max(0.0001f, cfgGridSpacing.Value); float halfStrip = Mathf.Max(0f, cfgGridThickness.Value) * 0.5f; float dashRepeat = Mathf.Max(0.0001f, cfgGridDashRepeat.Value); float heightOffset = Mathf.Max(0f, cfgGridHeightOffset.Value); _gridVerts.Clear(); _gridUVs.Clear(); _gridTris.Clear(); int num6 = Mathf.CeilToInt(num / num5); int num7 = Mathf.FloorToInt(num2 / num5); for (int i = num6; i <= num7; i++) { float gridValue = (float)i * num5; AddGridStrip(plane, val5, val6, val7, val8, val9, axisX: true, gridValue, halfStrip, dashRepeat, heightOffset); } int num8 = Mathf.CeilToInt(num3 / num5); int num9 = Mathf.FloorToInt(num4 / num5); for (int j = num8; j <= num9; j++) { float gridValue2 = (float)j * num5; AddGridStrip(plane, val5, val6, val7, val8, val9, axisX: false, gridValue2, halfStrip, dashRepeat, heightOffset); } Mesh val10 = targetMF.sharedMesh; if ((Object)(object)val10 == (Object)null) { val10 = new Mesh(); ((Object)val10).name = "PlaneImageGridMesh"; val10.MarkDynamic(); targetMF.sharedMesh = val10; } else { val10.Clear(); } val10.SetVertices(_gridVerts); val10.SetUVs(0, _gridUVs); val10.SetTriangles(_gridTris, 0); val10.RecalculateBounds(); return true; } private void AddGridStrip(GameObject plane, Vector3 wc0, Vector3 wc1, Vector3 wc2, Vector3 wc3, Vector3 worldNormal, bool axisX, float gridValue, float halfStrip, float dashRepeat, float heightOffset) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0020: 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) //IL_0032: 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_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_0067: 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) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_008d: 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_0096: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: 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_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: 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_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: 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_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_00fb: Unknown result type (might be due to invalid IL or missing references) //IL_00fd: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0100: 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) //IL_0107: 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_010e: Unknown result type (might be due to invalid IL or missing references) //IL_010f: Unknown result type (might be due to invalid IL or missing references) //IL_0111: 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_0118: Unknown result type (might be due to invalid IL or missing references) //IL_011d: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Unknown result type (might be due to invalid IL or missing references) //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_0134: Unknown result type (might be due to invalid IL or missing references) //IL_0136: Unknown result type (might be due to invalid IL or missing references) //IL_013b: Unknown result type (might be due to invalid IL or missing references) //IL_013f: Unknown result type (might be due to invalid IL or missing references) //IL_0141: Unknown result type (might be due to invalid IL or missing references) //IL_0146: Unknown result type (might be due to invalid IL or missing references) //IL_014a: Unknown result type (might be due to invalid IL or missing references) //IL_014c: Unknown result type (might be due to invalid IL or missing references) //IL_0151: Unknown result type (might be due to invalid IL or missing references) //IL_0166: Unknown result type (might be due to invalid IL or missing references) //IL_0174: Unknown result type (might be due to invalid IL or missing references) //IL_0182: Unknown result type (might be due to invalid IL or missing references) //IL_0190: Unknown result type (might be due to invalid IL or missing references) //IL_01af: Unknown result type (might be due to invalid IL or missing references) //IL_01ca: Unknown result type (might be due to invalid IL or missing references) //IL_01e2: Unknown result type (might be due to invalid IL or missing references) //IL_01fa: Unknown result type (might be due to invalid IL or missing references) Vector3 firstHit = Vector3.zero; Vector3 secondHit = Vector3.zero; int hitsSoFar = 0; hitsSoFar = TryEdgeIntersection(wc0, wc1, axisX, gridValue, ref firstHit, ref secondHit, hitsSoFar); hitsSoFar = TryEdgeIntersection(wc1, wc2, axisX, gridValue, ref firstHit, ref secondHit, hitsSoFar); hitsSoFar = TryEdgeIntersection(wc2, wc3, axisX, gridValue, ref firstHit, ref secondHit, hitsSoFar); hitsSoFar = TryEdgeIntersection(wc3, wc0, axisX, gridValue, ref firstHit, ref secondHit, hitsSoFar); if (hitsSoFar < 2) { return; } Vector3 val = secondHit - firstHit; float magnitude = ((Vector3)(ref val)).magnitude; if (!(magnitude < 1E-05f)) { val /= magnitude; Vector3 val2 = Vector3.Cross(worldNormal, val); float magnitude2 = ((Vector3)(ref val2)).magnitude; if (!(magnitude2 < 1E-05f)) { val2 = val2 / magnitude2 * halfStrip; Vector3 val3 = worldNormal * heightOffset; Vector3 val4 = firstHit - val2 + val3; Vector3 val5 = firstHit + val2 + val3; Vector3 val6 = secondHit + val2 + val3; Vector3 val7 = secondHit - val2 + val3; Transform transform = plane.transform; Vector3 item = transform.InverseTransformPoint(val4); Vector3 item2 = transform.InverseTransformPoint(val5); Vector3 item3 = transform.InverseTransformPoint(val6); Vector3 item4 = transform.InverseTransformPoint(val7); int count = _gridVerts.Count; _gridVerts.Add(item); _gridVerts.Add(item2); _gridVerts.Add(item3); _gridVerts.Add(item4); float num = magnitude * dashRepeat; _gridUVs.Add(new Vector2(1f, 0f)); _gridUVs.Add(new Vector2(0f, 0f)); _gridUVs.Add(new Vector2(0f, num)); _gridUVs.Add(new Vector2(1f, num)); _gridTris.Add(count); _gridTris.Add(count + 1); _gridTris.Add(count + 2); _gridTris.Add(count); _gridTris.Add(count + 2); _gridTris.Add(count + 3); } } } private static int TryEdgeIntersection(Vector3 a, Vector3 b, bool axisX, float gridValue, ref Vector3 firstHit, ref Vector3 secondHit, int hitsSoFar) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_001c: 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_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_008d: 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_0097: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: 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_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Unknown result type (might be due to invalid IL or missing references) if (hitsSoFar >= 2) { return hitsSoFar; } float num = (axisX ? a.x : a.z); float num2 = (axisX ? b.x : b.z); float num3 = num2 - num; if (Mathf.Abs(num3) < 1E-06f) { return hitsSoFar; } float num4 = (gridValue - num) / num3; if (num4 < 0f || num4 > 1f) { return hitsSoFar; } Vector3 val = a + (b - a) * num4; if (hitsSoFar == 0) { firstHit = val; return 1; } Vector3 val2 = val - firstHit; if (((Vector3)(ref val2)).sqrMagnitude < 1E-10f) { return hitsSoFar; } secondHit = val; return 2; } private void ApplyGridMaterialProps(GameObject plane, MeshRenderer mr) { //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0055: 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) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)mr == (Object)null) && !((Object)(object)((Renderer)mr).material == (Object)null)) { Color val = ParseRgb(cfgGridColor.Value, Color.white); float num = Mathf.Clamp01((float)cfgGridAlphaPct.Value / 100f); Color val2 = default(Color); ((Color)(ref val2))..ctor(val.r, val.g, val.b, num); Material material = ((Renderer)mr).material; if (material.HasProperty(ID_Color)) { material.SetColor(ID_Color, val2); } float num2 = ((cfgGridMode != null && cfgGridMode.Value == GridMode.Full) ? 114.399994f : 11.44f); if (material.HasProperty(ID_VisibleDistance)) { material.SetFloat(ID_VisibleDistance, num2); } } } private void LateUpdate() { //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: 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_016d: Unknown result type (might be due to invalid IL or missing references) //IL_0172: Unknown result type (might be due to invalid IL or missing references) //IL_0176: Unknown result type (might be due to invalid IL or missing references) //IL_017c: Unknown result type (might be due to invalid IL or missing references) //IL_0183: Unknown result type (might be due to invalid IL or missing references) //IL_01ac: Unknown result type (might be due to invalid IL or missing references) //IL_028c: Unknown result type (might be due to invalid IL or missing references) //IL_0291: Unknown result type (might be due to invalid IL or missing references) //IL_0296: Unknown result type (might be due to invalid IL or missing references) //IL_0310: Unknown result type (might be due to invalid IL or missing references) //IL_031c: Unknown result type (might be due to invalid IL or missing references) //IL_0335: Unknown result type (might be due to invalid IL or missing references) //IL_033e: Unknown result type (might be due to invalid IL or missing references) //IL_0368: Unknown result type (might be due to invalid IL or missing references) if (cfgGridMode == null || cfgGridMode.Value == GridMode.Off || (_gridRenderers.Count == 0 && _gridRenderersMouse.Count == 0)) { return; } if (cam == null) { try { cam = Reflection.Execute(m_GetCamera, (object)null, new object[0], 0); } catch { cam = Reflection.Property(_Camera, "main", (string)null).GetValue(null); } } if (p_transform == null) { p_transform = Reflection.Property(_Camera, "transform", (string)null); } if (cam == null || p_transform == null) { return; } Vector3 position = ((Transform)p_transform.GetValue(cam)).position; Vector4 val = default(Vector4); foreach (KeyValuePair gridRenderer in _gridRenderers) { GameObject key = gridRenderer.Key; MeshRenderer value = gridRenderer.Value; if ((Object)(object)key == (Object)null || (Object)(object)value == (Object)null) { _gridFadeEvict.Add(key); } else if (((Renderer)value).enabled) { Vector3 position2 = key.transform.position; ((Vector4)(ref val))..ctor(position.x, position2.y, position.z, 0f); ((Renderer)value).GetPropertyBlock(_gridFadeBlock); _gridFadeBlock.SetVector(ID_GridWorldFade, val); ((Renderer)value).SetPropertyBlock(_gridFadeBlock); } } if (_gridFadeEvict.Count > 0) { for (int i = 0; i < _gridFadeEvict.Count; i++) { _gridRenderers.Remove(_gridFadeEvict[i]); } _gridFadeEvict.Clear(); } if (_gridRenderersMouse.Count <= 0) { return; } object obj2 = cam; Camera val2 = (Camera)((obj2 is Camera) ? obj2 : null); if ((Object)(object)val2 == (Object)null) { val2 = Camera.main; } if (!((Object)(object)val2 != (Object)null)) { return; } Ray ray = val2.ScreenPointToRay(Input.mousePosition); Vector4 val3 = default(Vector4); foreach (KeyValuePair item in _gridRenderersMouse) { GameObject key2 = item.Key; MeshRenderer value2 = item.Value; if ((Object)(object)key2 == (Object)null || (Object)(object)value2 == (Object)null) { _gridFadeEvict.Add(key2); } else if (((Renderer)value2).enabled) { float y = key2.transform.position.y; if (TryRayPlaneIntersect(ray, y, out var hit)) { ((Vector4)(ref val3))..ctor(hit.x, y, hit.z, 0f); ((Renderer)value2).GetPropertyBlock(_gridFadeBlock); _gridFadeBlock.SetVector(ID_GridWorldFade, val3); ((Renderer)value2).SetPropertyBlock(_gridFadeBlock); } } } if (_gridFadeEvict.Count > 0) { for (int j = 0; j < _gridFadeEvict.Count; j++) { _gridRenderersMouse.Remove(_gridFadeEvict[j]); } _gridFadeEvict.Clear(); } } private static bool TryRayPlaneIntersect(Ray ray, float planeY, out Vector3 hit) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0066: 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) hit = Vector3.zero; float y = ((Ray)(ref ray)).direction.y; if (Mathf.Abs(y) < 1E-05f) { return false; } float num = (planeY - ((Ray)(ref ray)).origin.y) / y; if (num <= 0f) { return false; } hit = ((Ray)(ref ray)).origin + ((Ray)(ref ray)).direction * num; return true; } private static Color ParseRgb(string s, Color fallback) { //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_0069: 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_000d: Unknown result type (might be due to invalid IL or missing references) //IL_000e: 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_002e: 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) try { if (string.IsNullOrEmpty(s)) { return fallback; } string[] array = s.Split(new char[1] { ',' }); if (array.Length < 3) { return fallback; } return new Color(Utility.ParseFloat(array[0].Trim()), Utility.ParseFloat(array[1].Trim()), Utility.ParseFloat(array[2].Trim()), 1f); } catch { return fallback; } } private void Awake() { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: 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_0100: Unknown result type (might be due to invalid IL or missing references) //IL_0128: Unknown result type (might be due to invalid IL or missing references) //IL_0150: Unknown result type (might be due to invalid IL or missing references) //IL_0178: Unknown result type (might be due to invalid IL or missing references) //IL_01a0: Unknown result type (might be due to invalid IL or missing references) //IL_0256: Unknown result type (might be due to invalid IL or missing references) //IL_025b: Unknown result type (might be due to invalid IL or missing references) //IL_028f: Unknown result type (might be due to invalid IL or missing references) //IL_0294: Unknown result type (might be due to invalid IL or missing references) //IL_02ea: Unknown result type (might be due to invalid IL or missing references) _self = this; LoggingPlugin.SetLogLevel(((BaseUnityPlugin)this).Config.Bind("Settings", "Diagnostic Level", (DiagnosticLevel)3, (ConfigDescription)null).Value); string? assemblyQualifiedName = ((object)this).GetType().AssemblyQualifiedName; DiagnosticLevel logLevel = LoggingPlugin.GetLogLevel(); LoggingPlugin.LogInfo(assemblyQualifiedName + ": Active. (Diagnostic Mode = " + ((object)(DiagnosticLevel)(ref logLevel)).ToString() + ")"); triggerKeys = new ConfigEntry[8] { ((BaseUnityPlugin)this).Config.Bind("Hotkeys", "Add Plane Image", new KeyboardShortcut((KeyCode)291, Array.Empty()), (ConfigDescription)null), ((BaseUnityPlugin)this).Config.Bind("Hotkeys", "Remove Plane Image", new KeyboardShortcut((KeyCode)303, (KeyCode[])(object)new KeyCode[1] { (KeyCode)291 }), (ConfigDescription)null), ((BaseUnityPlugin)this).Config.Bind("Hotkeys", "Replace Image", new KeyboardShortcut((KeyCode)292, Array.Empty()), (ConfigDescription)null), ((BaseUnityPlugin)this).Config.Bind("Hotkeys", "Cycle Planes", new KeyboardShortcut((KeyCode)282, Array.Empty()), (ConfigDescription)null), ((BaseUnityPlugin)this).Config.Bind("Hotkeys", "Toggle Move Mode", new KeyboardShortcut((KeyCode)283, Array.Empty()), (ConfigDescription)null), ((BaseUnityPlugin)this).Config.Bind("Hotkeys", "Toggle Size Mode", new KeyboardShortcut((KeyCode)284, Array.Empty()), (ConfigDescription)null), ((BaseUnityPlugin)this).Config.Bind("Hotkeys", "Toggle Rotate Mode", new KeyboardShortcut((KeyCode)285, Array.Empty()), (ConfigDescription)null), ((BaseUnityPlugin)this).Config.Bind("Hotkeys", "Toggle Grid Overlay", new KeyboardShortcut((KeyCode)286, Array.Empty()), (ConfigDescription)null) }; AssetDataPlugin.Subscribe("org.lordashes.plugins.planeimage.Create", (Action)RequestHandler); AssetDataPlugin.Subscribe("org.lordashes.plugins.planeimage.Update", (Action)RequestHandler, (Func)CheckPlaneExistance); string[] array = File.Find("/laplane01", (CacheType)0); if (array.Length != 0) { try { LoggingPlugin.LogDebug("Loading asset bundle '" + array[0] + "'"); AssetBundle val = AssetBundle.LoadFromFile(array[0]); LoggingPlugin.LogDebug("Loading asset prefab 'laplane01.prefab'"); prefab = val.LoadAsset("laplane01.prefab"); val.Unload(false); if (prefab.transform.localScale.x.ToString("0.00").ToString().ToUpper() == "NAN" || prefab.transform.localScale.z.ToString("0.00").ToString().ToUpper() == "NAN") { LoggingPlugin.LogTrace("Setting prefab localScale to (1,1,1)"); prefab.transform.localScale = new Vector3(1f, 1f, 1f); } } catch (Exception ex) { LoggingPlugin.LogWarning("Exception: " + ex); } } else { LoggingPlugin.LogWarning("Missing 'laplane01' file"); } Reflection.AddEvent(_BoardSessionManager, "OnCurrentBoardChanged", (Delegate)(Action)delegate { LoggingPlugin.LogDebug("Board Change Event: Removing All Planes"); planes = (from go in Object.FindObjectsOfType() where ((Object)go).name.StartsWith("Plane:") select go).ToList(); for (int i = 0; i < planes.Count; i++) { Object.Destroy((Object)(object)planes[i]); } planes.Clear(); currentPlaneIndex = -1; activeMode = PlaneImageMode.game; Utility.GameInputEnabled(setting: true); Camera.SetCameraMovementEnabled(enabled: true, "Board Change"); LoggingPlugin.LogDebug("Board change cleanup complete; currentPlaneIndex reset to -1, mode reset to game, GameInput + camera-movement re-enabled"); }, (object)null); BindGridConfig(); LoadGridMaterial(); ModdingUtils.AddPluginToMenuList((BaseUnityPlugin)(object)this, "Lord Ashes's"); } private void Update() { //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: 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_1d8a: Unknown result type (might be due to invalid IL or missing references) //IL_1d8f: Unknown result type (might be due to invalid IL or missing references) //IL_1dc9: Unknown result type (might be due to invalid IL or missing references) //IL_1dce: Unknown result type (might be due to invalid IL or missing references) //IL_1e08: Unknown result type (might be due to invalid IL or missing references) //IL_1e0d: Unknown result type (might be due to invalid IL or missing references) //IL_1e47: Unknown result type (might be due to invalid IL or missing references) //IL_1e4c: Unknown result type (might be due to invalid IL or missing references) //IL_1e86: Unknown result type (might be due to invalid IL or missing references) //IL_1e8b: Unknown result type (might be due to invalid IL or missing references) //IL_1ec5: Unknown result type (might be due to invalid IL or missing references) //IL_1eca: Unknown result type (might be due to invalid IL or missing references) //IL_1f04: Unknown result type (might be due to invalid IL or missing references) //IL_1f09: Unknown result type (might be due to invalid IL or missing references) //IL_1f43: Unknown result type (might be due to invalid IL or missing references) //IL_1f48: Unknown result type (might be due to invalid IL or missing references) //IL_1f82: Unknown result type (might be due to invalid IL or missing references) //IL_1f87: 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) //IL_0128: Unknown result type (might be due to invalid IL or missing references) //IL_01ad: Unknown result type (might be due to invalid IL or missing references) //IL_01b2: Unknown result type (might be due to invalid IL or missing references) //IL_02a3: Unknown result type (might be due to invalid IL or missing references) //IL_02a8: Unknown result type (might be due to invalid IL or missing references) //IL_0356: Unknown result type (might be due to invalid IL or missing references) //IL_035b: Unknown result type (might be due to invalid IL or missing references) //IL_057e: Unknown result type (might be due to invalid IL or missing references) //IL_059c: Unknown result type (might be due to invalid IL or missing references) //IL_05ba: Unknown result type (might be due to invalid IL or missing references) //IL_05ca: Unknown result type (might be due to invalid IL or missing references) //IL_0409: Unknown result type (might be due to invalid IL or missing references) //IL_040e: Unknown result type (might be due to invalid IL or missing references) //IL_0d7a: Unknown result type (might be due to invalid IL or missing references) //IL_0d98: Unknown result type (might be due to invalid IL or missing references) //IL_0db6: Unknown result type (might be due to invalid IL or missing references) //IL_0dc6: Unknown result type (might be due to invalid IL or missing references) //IL_0621: Unknown result type (might be due to invalid IL or missing references) //IL_063f: Unknown result type (might be due to invalid IL or missing references) //IL_065d: Unknown result type (might be due to invalid IL or missing references) //IL_066d: Unknown result type (might be due to invalid IL or missing references) //IL_04b9: Unknown result type (might be due to invalid IL or missing references) //IL_04be: Unknown result type (might be due to invalid IL or missing references) //IL_1582: Unknown result type (might be due to invalid IL or missing references) //IL_15a6: Unknown result type (might be due to invalid IL or missing references) //IL_15c4: Unknown result type (might be due to invalid IL or missing references) //IL_15ce: Unknown result type (might be due to invalid IL or missing references) //IL_0e1d: Unknown result type (might be due to invalid IL or missing references) //IL_0e3b: Unknown result type (might be due to invalid IL or missing references) //IL_0e59: Unknown result type (might be due to invalid IL or missing references) //IL_0e69: Unknown result type (might be due to invalid IL or missing references) //IL_06c4: Unknown result type (might be due to invalid IL or missing references) //IL_06e8: Unknown result type (might be due to invalid IL or missing references) //IL_0706: Unknown result type (might be due to invalid IL or missing references) //IL_0710: Unknown result type (might be due to invalid IL or missing references) //IL_1625: Unknown result type (might be due to invalid IL or missing references) //IL_1649: Unknown result type (might be due to invalid IL or missing references) //IL_1667: Unknown result type (might be due to invalid IL or missing references) //IL_1671: Unknown result type (might be due to invalid IL or missing references) //IL_0ec0: Unknown result type (might be due to invalid IL or missing references) //IL_0ee4: Unknown result type (might be due to invalid IL or missing references) //IL_0f02: Unknown result type (might be due to invalid IL or missing references) //IL_0f0c: Unknown result type (might be due to invalid IL or missing references) //IL_0767: Unknown result type (might be due to invalid IL or missing references) //IL_078b: Unknown result type (might be due to invalid IL or missing references) //IL_07a9: Unknown result type (might be due to invalid IL or missing references) //IL_07b3: Unknown result type (might be due to invalid IL or missing references) //IL_16c8: Unknown result type (might be due to invalid IL or missing references) //IL_16e6: Unknown result type (might be due to invalid IL or missing references) //IL_1704: Unknown result type (might be due to invalid IL or missing references) //IL_1714: Unknown result type (might be due to invalid IL or missing references) //IL_0f63: Unknown result type (might be due to invalid IL or missing references) //IL_0f87: Unknown result type (might be due to invalid IL or missing references) //IL_0fa5: Unknown result type (might be due to invalid IL or missing references) //IL_0faf: Unknown result type (might be due to invalid IL or missing references) //IL_080a: Unknown result type (might be due to invalid IL or missing references) //IL_0828: Unknown result type (might be due to invalid IL or missing references) //IL_084c: Unknown result type (might be due to invalid IL or missing references) //IL_0856: Unknown result type (might be due to invalid IL or missing references) //IL_176b: Unknown result type (might be due to invalid IL or missing references) //IL_1789: Unknown result type (might be due to invalid IL or missing references) //IL_17a7: Unknown result type (might be due to invalid IL or missing references) //IL_17b7: Unknown result type (might be due to invalid IL or missing references) //IL_1006: Unknown result type (might be due to invalid IL or missing references) //IL_102a: Unknown result type (might be due to invalid IL or missing references) //IL_1048: Unknown result type (might be due to invalid IL or missing references) //IL_1058: Unknown result type (might be due to invalid IL or missing references) //IL_08ad: Unknown result type (might be due to invalid IL or missing references) //IL_08cb: Unknown result type (might be due to invalid IL or missing references) //IL_08ef: Unknown result type (might be due to invalid IL or missing references) //IL_08f9: Unknown result type (might be due to invalid IL or missing references) //IL_180e: Unknown result type (might be due to invalid IL or missing references) //IL_182c: Unknown result type (might be due to invalid IL or missing references) //IL_1850: Unknown result type (might be due to invalid IL or missing references) //IL_185a: Unknown result type (might be due to invalid IL or missing references) //IL_10af: Unknown result type (might be due to invalid IL or missing references) //IL_10d3: Unknown result type (might be due to invalid IL or missing references) //IL_10f1: Unknown result type (might be due to invalid IL or missing references) //IL_1101: Unknown result type (might be due to invalid IL or missing references) //IL_0950: Unknown result type (might be due to invalid IL or missing references) //IL_096e: Unknown result type (might be due to invalid IL or missing references) //IL_098c: Unknown result type (might be due to invalid IL or missing references) //IL_099c: Unknown result type (might be due to invalid IL or missing references) //IL_18b1: Unknown result type (might be due to invalid IL or missing references) //IL_18cf: Unknown result type (might be due to invalid IL or missing references) //IL_18f3: Unknown result type (might be due to invalid IL or missing references) //IL_18fd: Unknown result type (might be due to invalid IL or missing references) //IL_1158: Unknown result type (might be due to invalid IL or missing references) //IL_1176: Unknown result type (might be due to invalid IL or missing references) //IL_1194: Unknown result type (might be due to invalid IL or missing references) //IL_11a4: Unknown result type (might be due to invalid IL or missing references) //IL_09f3: Unknown result type (might be due to invalid IL or missing references) //IL_0a11: Unknown result type (might be due to invalid IL or missing references) //IL_0a2f: Unknown result type (might be due to invalid IL or missing references) //IL_0a3f: Unknown result type (might be due to invalid IL or missing references) //IL_1954: Unknown result type (might be due to invalid IL or missing references) //IL_1978: Unknown result type (might be due to invalid IL or missing references) //IL_1996: Unknown result type (might be due to invalid IL or missing references) //IL_19a0: Unknown result type (might be due to invalid IL or missing references) //IL_11fb: Unknown result type (might be due to invalid IL or missing references) //IL_1219: Unknown result type (might be due to invalid IL or missing references) //IL_1237: Unknown result type (might be due to invalid IL or missing references) //IL_1247: Unknown result type (might be due to invalid IL or missing references) //IL_0a96: Unknown result type (might be due to invalid IL or missing references) //IL_0aba: Unknown result type (might be due to invalid IL or missing references) //IL_0ad8: Unknown result type (might be due to invalid IL or missing references) //IL_0ae2: Unknown result type (might be due to invalid IL or missing references) //IL_19f7: Unknown result type (might be due to invalid IL or missing references) //IL_1a1b: Unknown result type (might be due to invalid IL or missing references) //IL_1a39: Unknown result type (might be due to invalid IL or missing references) //IL_1a43: Unknown result type (might be due to invalid IL or missing references) //IL_129e: Unknown result type (might be due to invalid IL or missing references) //IL_12c2: Unknown result type (might be due to invalid IL or missing references) //IL_12e0: Unknown result type (might be due to invalid IL or missing references) //IL_12ea: Unknown result type (might be due to invalid IL or missing references) //IL_0b3a: Unknown result type (might be due to invalid IL or missing references) //IL_0b5e: Unknown result type (might be due to invalid IL or missing references) //IL_0b7c: Unknown result type (might be due to invalid IL or missing references) //IL_0b86: Unknown result type (might be due to invalid IL or missing references) //IL_1a9a: Unknown result type (might be due to invalid IL or missing references) //IL_1ab8: Unknown result type (might be due to invalid IL or missing references) //IL_1ad6: Unknown result type (might be due to invalid IL or missing references) //IL_1ae6: Unknown result type (might be due to invalid IL or missing references) //IL_1342: Unknown result type (might be due to invalid IL or missing references) //IL_1366: Unknown result type (might be due to invalid IL or missing references) //IL_1384: Unknown result type (might be due to invalid IL or missing references) //IL_138e: Unknown result type (might be due to invalid IL or missing references) //IL_0bde: Unknown result type (might be due to invalid IL or missing references) //IL_0bfc: Unknown result type (might be due to invalid IL or missing references) //IL_0c20: Unknown result type (might be due to invalid IL or missing references) //IL_0c2a: Unknown result type (might be due to invalid IL or missing references) //IL_1b3e: Unknown result type (might be due to invalid IL or missing references) //IL_1b5c: Unknown result type (might be due to invalid IL or missing references) //IL_1b7a: Unknown result type (might be due to invalid IL or missing references) //IL_1b8a: Unknown result type (might be due to invalid IL or missing references) //IL_13e6: Unknown result type (might be due to invalid IL or missing references) //IL_140a: Unknown result type (might be due to invalid IL or missing references) //IL_1428: Unknown result type (might be due to invalid IL or missing references) //IL_1438: Unknown result type (might be due to invalid IL or missing references) //IL_0c82: Unknown result type (might be due to invalid IL or missing references) //IL_0ca0: Unknown result type (might be due to invalid IL or missing references) //IL_0cc4: Unknown result type (might be due to invalid IL or missing references) //IL_0cce: Unknown result type (might be due to invalid IL or missing references) //IL_1be2: Unknown result type (might be due to invalid IL or missing references) //IL_1c00: Unknown result type (might be due to invalid IL or missing references) //IL_1c24: Unknown result type (might be due to invalid IL or missing references) //IL_1c2e: Unknown result type (might be due to invalid IL or missing references) //IL_1490: Unknown result type (might be due to invalid IL or missing references) //IL_14b4: Unknown result type (might be due to invalid IL or missing references) //IL_14d2: Unknown result type (might be due to invalid IL or missing references) //IL_14e2: Unknown result type (might be due to invalid IL or missing references) //IL_1c86: Unknown result type (might be due to invalid IL or missing references) //IL_1ca4: Unknown result type (might be due to invalid IL or missing references) //IL_1cc8: Unknown result type (might be due to invalid IL or missing references) //IL_1cd2: Unknown result type (might be due to invalid IL or missing references) if (!Utility.isBoardLoaded()) { return; } if ((bool)p_IsInGmMode.GetValue(null)) { KeyboardShortcut value = triggerKeys[0].Value; if (((KeyboardShortcut)(ref value)).IsUp()) { LoggingPlugin.LogDebug("Add Plane Request"); Reflection.Execute(m_AskForTextInput, (object)null, new object[8] { "Plane Image", "Name Of Image", "Set", (Action)delegate(string image) { AssetDataPlugin.SetInfo("Plane:" + System.Guid.NewGuid(), "org.lordashes.plugins.planeimage.Create", image, false); }, null, "Canel", null, "Plane Image" }, 0); } else { value = triggerKeys[1].Value; if (((KeyboardShortcut)(ref value)).IsUp()) { LoggingPlugin.LogDebug("Remove Plane Request"); AssetDataPlugin.ClearInfo(((Object)planes[currentPlaneIndex]).name, "org.lordashes.plugins.planeimage.Update", false); AssetDataPlugin.ClearInfo(((Object)planes[currentPlaneIndex]).name, "org.lordashes.plugins.planeimage.Create", false); } else { value = triggerKeys[2].Value; if (((KeyboardShortcut)(ref value)).IsUp()) { LoggingPlugin.LogDebug("Replace Image Request"); Reflection.Execute(m_AskForTextInput, (object)null, new object[8] { "Replace Image", "Name Of Image", "Set", (Action)delegate(string image) { AssetDataPlugin.SetInfo(((Object)planes[currentPlaneIndex]).name, "org.lordashes.plugins.planeimage.Create", image, false); }, null, "Canel", null, "Plane Image" }, 0); } else { value = triggerKeys[3].Value; if (((KeyboardShortcut)(ref value)).IsUp()) { LoggingPlugin.LogDebug("Cycle Planes Request"); if (planes.Count > 0) { currentPlaneIndex++; if (currentPlaneIndex >= planes.Count) { currentPlaneIndex = 0; } LoggingPlugin.LogDebug("Cycle Planes: (planes=" + planes.Count + ", currentIndex=" + currentPlaneIndex + ", mode=" + activeMode.ToString() + ")"); Camera.RecentreCameraOnCurrentPlane("Cycle Planes"); } ((MonoBehaviour)this).StartCoroutine(TemporarilyDisplayPlaneInformation()); } else { value = triggerKeys[4].Value; if (((KeyboardShortcut)(ref value)).IsUp()) { if (activeMode != PlaneImageMode.move) { activeMode = PlaneImageMode.move; } else { activeMode = PlaneImageMode.game; } LoggingPlugin.LogDebug("Toggle Move Mode Request (Mode = " + activeMode.ToString() + ")"); if (activeMode == PlaneImageMode.move) { Utility.GameInputEnabled(setting: false); Camera.SetCameraMovementEnabled(enabled: true, "Enter Move Mode"); Camera.RecentreCameraOnCurrentPlane("Enter Move Mode"); } else { Utility.GameInputEnabled(setting: true); Camera.SetCameraMovementEnabled(enabled: true, "Exit Move Mode"); } } else { value = triggerKeys[5].Value; if (((KeyboardShortcut)(ref value)).IsUp()) { if (activeMode != PlaneImageMode.size) { activeMode = PlaneImageMode.size; } else { activeMode = PlaneImageMode.game; } LoggingPlugin.LogDebug("Toggle Size Mode Request (Mode = " + activeMode.ToString() + ")"); if (activeMode == PlaneImageMode.size) { Utility.GameInputEnabled(setting: false); Camera.SetCameraMovementEnabled(enabled: true, "Enter Size Mode"); Camera.RecentreCameraOnCurrentPlane("Enter Size Mode"); } else { Utility.GameInputEnabled(setting: true); Camera.SetCameraMovementEnabled(enabled: true, "Exit Size Mode"); } } else { value = triggerKeys[6].Value; if (((KeyboardShortcut)(ref value)).IsUp()) { if (activeMode != PlaneImageMode.rotate) { activeMode = PlaneImageMode.rotate; } else { activeMode = PlaneImageMode.game; } LoggingPlugin.LogDebug("Toggle Rotate Mode Request (Mode = " + activeMode.ToString() + ")"); if (activeMode == PlaneImageMode.rotate) { Utility.GameInputEnabled(setting: false); Camera.SetCameraMovementEnabled(enabled: true, "Enter Rotate Mode"); Camera.RecentreCameraOnCurrentPlane("Enter Rotate Mode"); } else { Utility.GameInputEnabled(setting: true); Camera.SetCameraMovementEnabled(enabled: true, "Exit Rotate Mode"); } } else { value = triggerKeys[7].Value; if (((KeyboardShortcut)(ref value)).IsUp()) { switch (cfgGridMode.Value) { case GridMode.Off: cfgGridMode.Value = GridMode.Partial; break; case GridMode.Partial: cfgGridMode.Value = GridMode.Full; break; default: cfgGridMode.Value = GridMode.Off; break; } ((MonoBehaviour)this).StartCoroutine(TemporarilyDisplayPlaneInformation()); } } } } } } } } if (activeMode == PlaneImageMode.move) { bool flag = false; if (((KeyboardShortcut)(ref applyKeys[0])).IsUp()) { planes[currentPlaneIndex].transform.position = new Vector3(planes[currentPlaneIndex].transform.position.x, planes[currentPlaneIndex].transform.position.y, planes[currentPlaneIndex].transform.position.z + 0.01f); flag = true; } else if (((KeyboardShortcut)(ref applyKeys[1])).IsUp()) { planes[currentPlaneIndex].transform.position = new Vector3(planes[currentPlaneIndex].transform.position.x, planes[currentPlaneIndex].transform.position.y, planes[currentPlaneIndex].transform.position.z - 0.01f); flag = true; } else if (((KeyboardShortcut)(ref applyKeys[2])).IsUp()) { planes[currentPlaneIndex].transform.position = new Vector3(planes[currentPlaneIndex].transform.position.x - 0.01f, planes[currentPlaneIndex].transform.position.y, planes[currentPlaneIndex].transform.position.z); flag = true; } else if (((KeyboardShortcut)(ref applyKeys[3])).IsUp()) { planes[currentPlaneIndex].transform.position = new Vector3(planes[currentPlaneIndex].transform.position.x + 0.01f, planes[currentPlaneIndex].transform.position.y, planes[currentPlaneIndex].transform.position.z); flag = true; } else if (((KeyboardShortcut)(ref applyKeys[4])).IsUp()) { planes[currentPlaneIndex].transform.position = new Vector3(planes[currentPlaneIndex].transform.position.x, planes[currentPlaneIndex].transform.position.y + 0.01f, planes[currentPlaneIndex].transform.position.z); flag = true; } else if (((KeyboardShortcut)(ref applyKeys[5])).IsUp()) { planes[currentPlaneIndex].transform.position = new Vector3(planes[currentPlaneIndex].transform.position.x, planes[currentPlaneIndex].transform.position.y - 0.01f, planes[currentPlaneIndex].transform.position.z); flag = true; } else if (((KeyboardShortcut)(ref applyKeys[6])).IsPressed()) { planes[currentPlaneIndex].transform.position = new Vector3(planes[currentPlaneIndex].transform.position.x, planes[currentPlaneIndex].transform.position.y, planes[currentPlaneIndex].transform.position.z + 0.1f); flag = true; } else if (((KeyboardShortcut)(ref applyKeys[7])).IsPressed()) { planes[currentPlaneIndex].transform.position = new Vector3(planes[currentPlaneIndex].transform.position.x, planes[currentPlaneIndex].transform.position.y, planes[currentPlaneIndex].transform.position.z - 0.1f); flag = true; } else if (((KeyboardShortcut)(ref applyKeys[8])).IsPressed()) { planes[currentPlaneIndex].transform.position = new Vector3(planes[currentPlaneIndex].transform.position.x - 0.1f, planes[currentPlaneIndex].transform.position.y, planes[currentPlaneIndex].transform.position.z); flag = true; } else if (((KeyboardShortcut)(ref applyKeys[9])).IsPressed()) { planes[currentPlaneIndex].transform.position = new Vector3(planes[currentPlaneIndex].transform.position.x + 0.1f, planes[currentPlaneIndex].transform.position.y, planes[currentPlaneIndex].transform.position.z); flag = true; } else if (((KeyboardShortcut)(ref applyKeys[10])).IsPressed()) { planes[currentPlaneIndex].transform.position = new Vector3(planes[currentPlaneIndex].transform.position.x, planes[currentPlaneIndex].transform.position.y + 0.1f, planes[currentPlaneIndex].transform.position.z); flag = true; } else if (((KeyboardShortcut)(ref applyKeys[11])).IsPressed()) { planes[currentPlaneIndex].transform.position = new Vector3(planes[currentPlaneIndex].transform.position.x, planes[currentPlaneIndex].transform.position.y - 0.1f, planes[currentPlaneIndex].transform.position.z); flag = true; } if (flag) { debounce = 30; BuildGridForPlane(planes[currentPlaneIndex]); Camera.RecentreCameraOnCurrentPlane("Move Follow", transition: false); LoggingPlugin.LogTrace("Move change queued; debounce updater reset to 30"); } } else if (activeMode == PlaneImageMode.size) { bool flag2 = false; if (((KeyboardShortcut)(ref applyKeys[0])).IsUp()) { planes[currentPlaneIndex].transform.localScale = new Vector3(planes[currentPlaneIndex].transform.localScale.x, planes[currentPlaneIndex].transform.localScale.y, planes[currentPlaneIndex].transform.localScale.z + 0.01f); flag2 = true; } else if (((KeyboardShortcut)(ref applyKeys[1])).IsUp()) { planes[currentPlaneIndex].transform.localScale = new Vector3(planes[currentPlaneIndex].transform.localScale.x, planes[currentPlaneIndex].transform.localScale.y, planes[currentPlaneIndex].transform.localScale.z - 0.01f); flag2 = true; } else if (((KeyboardShortcut)(ref applyKeys[2])).IsUp()) { planes[currentPlaneIndex].transform.localScale = new Vector3(planes[currentPlaneIndex].transform.localScale.x - 0.01f, planes[currentPlaneIndex].transform.localScale.y, planes[currentPlaneIndex].transform.localScale.z); flag2 = true; } else if (((KeyboardShortcut)(ref applyKeys[3])).IsUp()) { planes[currentPlaneIndex].transform.localScale = new Vector3(planes[currentPlaneIndex].transform.localScale.x + 0.01f, planes[currentPlaneIndex].transform.localScale.y, planes[currentPlaneIndex].transform.localScale.z); flag2 = true; } else if (((KeyboardShortcut)(ref applyKeys[4])).IsUp()) { planes[currentPlaneIndex].transform.localScale = new Vector3(planes[currentPlaneIndex].transform.localScale.x + 0.01f, planes[currentPlaneIndex].transform.localScale.y, planes[currentPlaneIndex].transform.localScale.z + 0.01f); flag2 = true; } else if (((KeyboardShortcut)(ref applyKeys[5])).IsUp()) { planes[currentPlaneIndex].transform.localScale = new Vector3(planes[currentPlaneIndex].transform.localScale.x - 0.01f, planes[currentPlaneIndex].transform.localScale.y, planes[currentPlaneIndex].transform.localScale.z - 0.01f); flag2 = true; } else if (((KeyboardShortcut)(ref applyKeys[6])).IsPressed()) { planes[currentPlaneIndex].transform.localScale = new Vector3(planes[currentPlaneIndex].transform.localScale.x, planes[currentPlaneIndex].transform.localScale.y, planes[currentPlaneIndex].transform.localScale.z + 0.1f); flag2 = true; } else if (((KeyboardShortcut)(ref applyKeys[7])).IsPressed()) { planes[currentPlaneIndex].transform.localScale = new Vector3(planes[currentPlaneIndex].transform.localScale.x, planes[currentPlaneIndex].transform.localScale.y, planes[currentPlaneIndex].transform.localScale.z - 0.1f); flag2 = true; } else if (((KeyboardShortcut)(ref applyKeys[8])).IsPressed()) { planes[currentPlaneIndex].transform.localScale = new Vector3(planes[currentPlaneIndex].transform.localScale.x - 0.1f, planes[currentPlaneIndex].transform.localScale.y, planes[currentPlaneIndex].transform.localScale.z); flag2 = true; } else if (((KeyboardShortcut)(ref applyKeys[9])).IsPressed()) { planes[currentPlaneIndex].transform.localScale = new Vector3(planes[currentPlaneIndex].transform.localScale.x + 0.1f, planes[currentPlaneIndex].transform.localScale.y, planes[currentPlaneIndex].transform.localScale.z); flag2 = true; } else if (((KeyboardShortcut)(ref applyKeys[10])).IsPressed()) { planes[currentPlaneIndex].transform.localScale = new Vector3(planes[currentPlaneIndex].transform.localScale.x + 0.1f, planes[currentPlaneIndex].transform.localScale.y, planes[currentPlaneIndex].transform.localScale.z + 0.1f); flag2 = true; } else if (((KeyboardShortcut)(ref applyKeys[11])).IsPressed()) { planes[currentPlaneIndex].transform.localScale = new Vector3(planes[currentPlaneIndex].transform.localScale.x - 0.1f, planes[currentPlaneIndex].transform.localScale.y, planes[currentPlaneIndex].transform.localScale.z - 0.1f); flag2 = true; } if (flag2) { debounce = 30; BuildGridForPlane(planes[currentPlaneIndex]); LoggingPlugin.LogTrace("Size change queued; debounce updater reset to 30"); } } else if (activeMode == PlaneImageMode.rotate) { bool flag3 = false; if (((KeyboardShortcut)(ref applyKeys[0])).IsUp()) { planes[currentPlaneIndex].transform.eulerAngles = new Vector3(planes[currentPlaneIndex].transform.eulerAngles.x + 1f, planes[currentPlaneIndex].transform.eulerAngles.y, planes[currentPlaneIndex].transform.eulerAngles.z); flag3 = true; } else if (((KeyboardShortcut)(ref applyKeys[1])).IsUp()) { planes[currentPlaneIndex].transform.eulerAngles = new Vector3(planes[currentPlaneIndex].transform.eulerAngles.x - 1f, planes[currentPlaneIndex].transform.eulerAngles.y, planes[currentPlaneIndex].transform.eulerAngles.z); flag3 = true; } else if (((KeyboardShortcut)(ref applyKeys[2])).IsUp()) { planes[currentPlaneIndex].transform.eulerAngles = new Vector3(planes[currentPlaneIndex].transform.eulerAngles.x, planes[currentPlaneIndex].transform.eulerAngles.y, planes[currentPlaneIndex].transform.eulerAngles.z + 1f); flag3 = true; } else if (((KeyboardShortcut)(ref applyKeys[3])).IsUp()) { planes[currentPlaneIndex].transform.eulerAngles = new Vector3(planes[currentPlaneIndex].transform.eulerAngles.x, planes[currentPlaneIndex].transform.eulerAngles.y, planes[currentPlaneIndex].transform.eulerAngles.z - 1f); flag3 = true; } else if (((KeyboardShortcut)(ref applyKeys[4])).IsUp()) { planes[currentPlaneIndex].transform.eulerAngles = new Vector3(planes[currentPlaneIndex].transform.eulerAngles.x, planes[currentPlaneIndex].transform.eulerAngles.y + 1f, planes[currentPlaneIndex].transform.eulerAngles.z); flag3 = true; } else if (((KeyboardShortcut)(ref applyKeys[5])).IsUp()) { planes[currentPlaneIndex].transform.eulerAngles = new Vector3(planes[currentPlaneIndex].transform.eulerAngles.x, planes[currentPlaneIndex].transform.eulerAngles.y - 1f, planes[currentPlaneIndex].transform.eulerAngles.z); flag3 = true; } else if (((KeyboardShortcut)(ref applyKeys[6])).IsPressed()) { planes[currentPlaneIndex].transform.eulerAngles = new Vector3(planes[currentPlaneIndex].transform.eulerAngles.x + 1f, planes[currentPlaneIndex].transform.eulerAngles.y, planes[currentPlaneIndex].transform.eulerAngles.z); flag3 = true; } else if (((KeyboardShortcut)(ref applyKeys[7])).IsPressed()) { planes[currentPlaneIndex].transform.eulerAngles = new Vector3(planes[currentPlaneIndex].transform.eulerAngles.x - 1f, planes[currentPlaneIndex].transform.eulerAngles.y, planes[currentPlaneIndex].transform.eulerAngles.z); flag3 = true; } else if (((KeyboardShortcut)(ref applyKeys[8])).IsPressed()) { planes[currentPlaneIndex].transform.eulerAngles = new Vector3(planes[currentPlaneIndex].transform.eulerAngles.x, planes[currentPlaneIndex].transform.eulerAngles.y, planes[currentPlaneIndex].transform.eulerAngles.z + 1f); flag3 = true; } else if (((KeyboardShortcut)(ref applyKeys[9])).IsPressed()) { planes[currentPlaneIndex].transform.eulerAngles = new Vector3(planes[currentPlaneIndex].transform.eulerAngles.x, planes[currentPlaneIndex].transform.eulerAngles.y, planes[currentPlaneIndex].transform.eulerAngles.z - 1f); flag3 = true; } else if (((KeyboardShortcut)(ref applyKeys[10])).IsPressed()) { planes[currentPlaneIndex].transform.eulerAngles = new Vector3(planes[currentPlaneIndex].transform.eulerAngles.x, planes[currentPlaneIndex].transform.eulerAngles.y + 1f, planes[currentPlaneIndex].transform.eulerAngles.z); flag3 = true; } else if (((KeyboardShortcut)(ref applyKeys[11])).IsPressed()) { planes[currentPlaneIndex].transform.eulerAngles = new Vector3(planes[currentPlaneIndex].transform.eulerAngles.x, planes[currentPlaneIndex].transform.eulerAngles.y - 1f, planes[currentPlaneIndex].transform.eulerAngles.z); flag3 = true; } if (flag3) { debounce = 30; BuildGridForPlane(planes[currentPlaneIndex]); LoggingPlugin.LogTrace("Rotate change queued; debounce updater reset to 30"); } } } if (debounce > 0) { debounce--; } else if (debounce == 0) { LoggingPlugin.LogTrace("Sending Update for plane '" + ((Object)planes[currentPlaneIndex]).name + "' (debounce expired)"); string text = planes[currentPlaneIndex].transform.position.x.ToString("f", CultureInfo.InvariantCulture) + ","; text = text + planes[currentPlaneIndex].transform.position.y.ToString("f", CultureInfo.InvariantCulture) + ","; text = text + planes[currentPlaneIndex].transform.position.z.ToString("f", CultureInfo.InvariantCulture) + ","; text = text + planes[currentPlaneIndex].transform.localScale.x.ToString("f", CultureInfo.InvariantCulture) + ","; text = text + planes[currentPlaneIndex].transform.localScale.y.ToString("f", CultureInfo.InvariantCulture) + ","; text = text + planes[currentPlaneIndex].transform.localScale.z.ToString("f", CultureInfo.InvariantCulture) + ","; text = text + planes[currentPlaneIndex].transform.eulerAngles.x.ToString("f", CultureInfo.InvariantCulture) + ","; text = text + planes[currentPlaneIndex].transform.eulerAngles.y.ToString("f", CultureInfo.InvariantCulture) + ","; text += planes[currentPlaneIndex].transform.eulerAngles.z.ToString("f", CultureInfo.InvariantCulture); AssetDataPlugin.SetInfo(((Object)planes[currentPlaneIndex]).name, "org.lordashes.plugins.planeimage.Update", text, false); debounce--; } } private void OnGUI() { //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: 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_019c: Unknown result type (might be due to invalid IL or missing references) //IL_0274: Unknown result type (might be due to invalid IL or missing references) //IL_0279: Unknown result type (might be due to invalid IL or missing references) //IL_02ad: Unknown result type (might be due to invalid IL or missing references) //IL_02b2: Unknown result type (might be due to invalid IL or missing references) //IL_02e6: Unknown result type (might be due to invalid IL or missing references) //IL_02eb: Unknown result type (might be due to invalid IL or missing references) //IL_031f: Unknown result type (might be due to invalid IL or missing references) //IL_0324: Unknown result type (might be due to invalid IL or missing references) //IL_0358: Unknown result type (might be due to invalid IL or missing references) //IL_035d: Unknown result type (might be due to invalid IL or missing references) //IL_0391: Unknown result type (might be due to invalid IL or missing references) //IL_0396: Unknown result type (might be due to invalid IL or missing references) //IL_03ca: Unknown result type (might be due to invalid IL or missing references) //IL_03cf: Unknown result type (might be due to invalid IL or missing references) //IL_0403: Unknown result type (might be due to invalid IL or missing references) //IL_0408: Unknown result type (might be due to invalid IL or missing references) //IL_0174: Unknown result type (might be due to invalid IL or missing references) if (!displayCurrentPlaneInfo && activeMode == PlaneImageMode.game) { return; } if (planes.Count == 0) { UpdatePlanesCache(0, "Zero Planes When In Non-Game Mode"); } if (planes.Count == 0) { displayCurrentPlaneInfo = false; activeMode = PlaneImageMode.game; currentPlaneIndex = -1; Camera.SetCameraMovementEnabled(enabled: true, "Zero Planes Cleanup"); return; } if (currentPlaneIndex >= planes.Count || currentPlaneIndex < 0) { currentPlaneIndex = 0; } try { if (planes[currentPlaneIndex].transform.localScale.x.ToString("0.00").ToString().ToUpper() == "NAN" || planes[currentPlaneIndex].transform.localScale.z.ToString("0.00").ToString().ToUpper() == "NAN") { LoggingPlugin.LogTrace("Detected NaN localScale on '" + ((Object)planes[currentPlaneIndex]).name + "'; Resetting to (1,1,1)"); planes[currentPlaneIndex].transform.localScale = new Vector3(1f, 1f, 1f); } GUI.Label(new Rect(20f, (float)(Screen.height - 60), (float)(Screen.width - 40), 30f), "Planes: " + planes.Count + ", Plane: " + ((Object)((Renderer)planes[currentPlaneIndex].GetComponentInChildren()).material).name + ", Mode: " + activeMode.ToString().Substring(0, 1).ToUpper() + activeMode.ToString().Substring(1) + ", Grid: " + cfgGridMode.Value.ToString() + ", Position: (" + planes[currentPlaneIndex].transform.position.x.ToString("0.00") + "," + planes[currentPlaneIndex].transform.position.y.ToString("0.00") + "," + planes[currentPlaneIndex].transform.position.z.ToString("0.00") + ") , Size: (" + planes[currentPlaneIndex].transform.localScale.x.ToString("0.00") + "x" + planes[currentPlaneIndex].transform.localScale.z.ToString("0.00") + "), Rotation: (" + planes[currentPlaneIndex].transform.eulerAngles.x.ToString("0.00") + "," + planes[currentPlaneIndex].transform.eulerAngles.y.ToString("0.00") + "," + planes[currentPlaneIndex].transform.eulerAngles.z.ToString("0.00") + ")"); } catch (Exception ex) { LoggingPlugin.LogWarning("OnGUI render failed; reverting to game mode. Exception: " + ex.Message); Reflection.CatchFullError(ex); displayCurrentPlaneInfo = false; activeMode = PlaneImageMode.game; } } private void RequestHandler(DatumChange datum) { //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: Invalid comparison between Unknown and I4 //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Invalid comparison between Unknown and I4 //IL_0167: Unknown result type (might be due to invalid IL or missing references) //IL_016c: Unknown result type (might be due to invalid IL or missing references) LoggingPlugin.LogDebug("Datum = " + JsonConvert.SerializeObject((object)datum)); if (datum.key.EndsWith(".Create")) { if ((int)datum.action != 1) { LoggingPlugin.LogDebug("Routing to PlaneBuild (source='" + datum.source + "', content='" + datum.value?.ToString() + "')"); PlaneBuild(datum.source, datum.value.ToString()); } else { LoggingPlugin.LogDebug("Routing to PlaneRemove (source='" + datum.source + "')"); PlaneRemove(datum.source); } } else if ((int)datum.action != 1 && datum.key.EndsWith(".Update")) { LoggingPlugin.LogDebug("Routing to PlaneUpdate (source='" + datum.source + "', specs='" + datum.value?.ToString() + "')"); PlaneUpdate(datum.source, datum.value.ToString()); } else { string[] obj = new string[5] { "RequestHandler: no route for action=", null, null, null, null }; ChangeAction action = datum.action; obj[1] = ((object)(ChangeAction)(ref action)).ToString(); obj[2] = " key="; obj[3] = datum.key; obj[4] = " (Ignored)"; LoggingPlugin.LogDebug(string.Concat(obj)); } } private bool CheckPlaneExistance(DatumChange datum) { LoggingPlugin.LogDebug("CheckPlaneExistance: Pending Datum " + datum.key + " on " + datum.source + " to " + datum.value); GameObject val = GameObject.Find(datum.source); if ((Object)(object)val == (Object)null) { LoggingPlugin.LogDebug("CheckPlaneExistance: No Go"); return false; } MeshRenderer component = val.GetComponent(); if ((Object)(object)component == (Object)null) { LoggingPlugin.LogDebug("CheckPlaneExistance: No Mesh Renderer"); return false; } if ((Object)(object)((Renderer)component).material == (Object)null) { LoggingPlugin.LogDebug("No Material"); return false; } if ((Object)(object)((Renderer)component).material.mainTexture == (Object)null) { LoggingPlugin.LogDebug("CheckPlaneExistance: No Main Texture"); return false; } if (val.activeInHierarchy && ((Renderer)component).enabled) { LoggingPlugin.LogDebug("CheckPlaneExistance: '" + datum.source + "' active and enabled — applying pending datum"); return true; } LoggingPlugin.LogDebug("CheckPlaneExistance: '" + datum.source + "' not active/enabled (activeInHierarchy=" + val.activeInHierarchy + ", mr.enabled=" + ((Renderer)component).enabled + ") — deferring"); return false; } private void PlaneBuild(string id, string image) { //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_007a: 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_0103: Unknown result type (might be due to invalid IL or missing references) //IL_0108: Unknown result type (might be due to invalid IL or missing references) try { LoggingPlugin.LogInfo("PlaneBuild: id='" + id + "', content='" + image + "'"); GameObject val = GameObject.Find(id); if ((Object)(object)val != (Object)null) { LoggingPlugin.LogDebug("PlaneBuild: Using Existing Plane Game Object"); } else { LoggingPlugin.LogDebug("PlaneBuild: Adding Plane Game Object"); val = Object.Instantiate(prefab, new Vector3(0f, 0.1f, 0f), Quaternion.identity); planes.Add(val); } LoggingPlugin.LogDebug("PlaneBuild: Adding SkinnedMeshRenderer"); MeshRenderer val2 = default(MeshRenderer); val.TryGetComponent(ref val2); if ((Object)(object)val2 != (Object)null) { LoggingPlugin.LogDebug("PlaneBuild: Using Existing SkinnedMeshRenderer Object"); } else { LoggingPlugin.LogDebug("PlaneBuild: Adding A SkinnedMeshRenderer Object"); val2 = val.AddComponent(); } LoggingPlugin.LogDebug("PlaneBuild: Setting Bounds"); ((Renderer)val2).bounds = new Bounds(new Vector3(0f, 0f, 0f), new Vector3(2f, 2f, 2f)); LoggingPlugin.LogDebug("PlaneBuild: Creating Material"); ApplyPlaneTexture(val, val2, image); LoggingPlugin.LogDebug("PlaneBuild: Setting Mesh Name"); ((Object)val2).name = Path.GetFileNameWithoutExtension(image); LoggingPlugin.LogDebug("PlaneBuild: Setting Shadow Settings"); ((Renderer)val2).receiveShadows = false; ((Renderer)val2).staticShadowCaster = false; LoggingPlugin.LogDebug("PlaneBuild: Enabling SkinnedMeshRenderer"); ((Renderer)val2).enabled = true; LoggingPlugin.LogDebug("PlaneBuild: Enabling Plane " + id); ((Object)val).name = id; val.SetActive(true); UpdatePlanesCache(0, "Post Build"); BuildGridForPlane(val); LoggingPlugin.LogInfo("PlaneBuild: Complete for '" + id + "' (planes=" + planes.Count + ", currentIndex=" + currentPlaneIndex + ")"); } catch (Exception ex) { LoggingPlugin.LogWarning("PlaneBuild: Exception: " + ex); Reflection.CatchFullError(ex); } ((MonoBehaviour)this).StartCoroutine(TemporarilyDisplayPlaneInformation()); } private void PlaneUpdate(string id, string data) { //IL_01b7: Unknown result type (might be due to invalid IL or missing references) //IL_01b9: Unknown result type (might be due to invalid IL or missing references) //IL_01d3: Unknown result type (might be due to invalid IL or missing references) //IL_01d5: Unknown result type (might be due to invalid IL or missing references) //IL_01ef: Unknown result type (might be due to invalid IL or missing references) //IL_01f1: Unknown result type (might be due to invalid IL or missing references) //IL_0212: Unknown result type (might be due to invalid IL or missing references) //IL_0220: Unknown result type (might be due to invalid IL or missing references) //IL_022e: Unknown result type (might be due to invalid IL or missing references) try { LoggingPlugin.LogInfo("PlaneBuild: id='" + id + "', data='" + data + "'"); GameObject val = planes.Where((GameObject p) => ((Object)p).name == id).ElementAt(0); if ((Object)(object)val == (Object)null) { UpdatePlanesCache(currentPlaneIndex - 1, "Plane Not Found During Update"); val = planes.Where((GameObject p) => ((Object)p).name == id).ElementAt(0); if ((Object)(object)val != (Object)null) { LoggingPlugin.LogDebug("PlaneUpdate: Updating Plane Not Found"); { foreach (GameObject plane in planes) { LoggingPlugin.LogDebug("PlaneUpdate: Found Plane " + ((Object)plane).name + " While Looking For " + id); } return; } } } string[] array = data.Split(new char[1] { ',' }); if (array.Length == 9) { Vector3 val2 = default(Vector3); ((Vector3)(ref val2))..ctor(Utility.ParseFloat(array[0]), Utility.ParseFloat(array[1]), Utility.ParseFloat(array[2])); Vector3 val3 = default(Vector3); ((Vector3)(ref val3))..ctor(Utility.ParseFloat(array[3]), Utility.ParseFloat(array[4]), Utility.ParseFloat(array[5])); Vector3 val4 = default(Vector3); ((Vector3)(ref val4))..ctor(Utility.ParseFloat(array[6]), Utility.ParseFloat(array[7]), Utility.ParseFloat(array[8])); string[] obj = new string[8] { "PlaneUpdate: Updating Plane ", ((Object)val).name, " To Pos ", null, null, null, null, null }; Vector3 val5 = val2; obj[3] = ((object)(Vector3)(ref val5)).ToString(); obj[4] = " Size "; val5 = val3; obj[5] = ((object)(Vector3)(ref val5)).ToString(); obj[6] = " Rot "; val5 = val4; obj[7] = ((object)(Vector3)(ref val5)).ToString(); LoggingPlugin.LogDebug(string.Concat(obj)); val.transform.position = val2; val.transform.localScale = val3; val.transform.eulerAngles = val4; BuildGridForPlane(val); } else { LoggingPlugin.LogDebug("PlaneUpdate: Unexpected Parameter Count"); } } catch (Exception ex) { LoggingPlugin.LogWarning("PlaneUpdate: Exception: " + ex); Reflection.CatchFullError(ex); } } private void PlaneRemove(string source) { try { LoggingPlugin.LogDebug("PlaneRemove: Destroying Plane " + source); UpdatePlanesCache(currentPlaneIndex - 1, "Plane Not Found During Remove"); LoggingPlugin.LogDebug("PlaneRemove: " + planes.Count + " Planes Exist"); for (int i = 0; i < planes.Count; i++) { if (((Object)planes[i]).name == source) { LoggingPlugin.LogDebug("PlaneRemove: Found Plane '" + ((Object)planes[i]).name + "' Matching " + source + ". Destroying..."); Object.DestroyImmediate((Object)(object)planes[i]); planes[i] = null; planes.RemoveAt(i); break; } LoggingPlugin.LogDebug("PlaneRemove: Found Plane '" + ((Object)planes[i]).name + "' Not Match '" + source + "' . Ignoring..."); } } catch (Exception ex) { LoggingPlugin.LogWarning("PlaneRemove: Exception: " + ex); Reflection.CatchFullError(ex); } ((MonoBehaviour)this).StartCoroutine(TemporarilyDisplayPlaneInformation()); } private void UpdatePlanesCache(int suggestedPlaneIndex, string reason) { try { LoggingPlugin.LogDebug("UpdatePlanesCache: Updating Planes Cache (Reason: " + reason + ")"); planes = (from go in Object.FindObjectsOfType() where ((Object)go).name.StartsWith("Plane:") select go).ToList(); if (suggestedPlaneIndex < planes.Count) { currentPlaneIndex = suggestedPlaneIndex; } else { currentPlaneIndex = planes.Count - 1; } } catch (Exception ex) { LoggingPlugin.LogWarning("UpdatePlaneCache: Exception: " + ex); Reflection.CatchFullError(ex); } } private void ApplyPlaneTexture(GameObject plane, MeshRenderer mr, string image) { //IL_01cd: Unknown result type (might be due to invalid IL or missing references) //IL_01d2: Unknown result type (might be due to invalid IL or missing references) //IL_01f8: Unknown result type (might be due to invalid IL or missing references) //IL_0208: Unknown result type (might be due to invalid IL or missing references) //IL_0218: Unknown result type (might be due to invalid IL or missing references) //IL_0225: Unknown result type (might be due to invalid IL or missing references) try { string text = File.Find(image, (CacheType)999)[0]; string text2 = text.Substring(text.LastIndexOf(".") + 1).ToUpper(); if (text2.Trim() != "" && "|AVI|MKV|MP4|MPG|".Contains(text2)) { LoggingPlugin.LogDebug("ApplyPlaneTexture: Creating Video Texture"); VideoPlayer val = default(VideoPlayer); if (!plane.TryGetComponent(ref val)) { val = plane.AddComponent(); } val.playOnAwake = true; val.source = (VideoSource)1; val.url = ((!image.ToUpper().StartsWith("HTTP")) ? ("file://" + text) : text); val.isLooping = true; LoggingPlugin.LogDebug("ApplyPlaneTexture: Setting White Image Texture"); ((Object)((Renderer)mr).material).name = "Video:" + val.url; ((Renderer)mr).material.mainTexture = (Texture)(object)Texture2D.whiteTexture; val.Play(); ((MonoBehaviour)this).StartCoroutine(ApplyVideoAspectWhenReady(plane, val)); return; } LoggingPlugin.LogDebug("ApplyPlaneTexture: Creating Image Texture"); ((Renderer)mr).material.mainTexture = (Texture)(object)Image.LoadTexture(text, (CacheType)999); float num = (float)((Renderer)mr).material.mainTexture.height / (float)((Renderer)mr).material.mainTexture.width; ((Object)((Renderer)mr).material).name = "Texture:" + Path.GetFileNameWithoutExtension(image); LoggingPlugin.LogDebug("ApplyPlaneTexture: Scaling Plane Based On Texture Size " + (float)((Renderer)mr).material.mainTexture.width + "x" + (float)((Renderer)mr).material.mainTexture.height + " With Anchor Size = " + plane.transform.localScale.x); plane.transform.localScale = new Vector3(plane.transform.localScale.x, plane.transform.localScale.y, plane.transform.localScale.x * num); LoggingPlugin.LogDebug("ApplyPlaneTexture: Destorying Video Texture"); VideoPlayer val2 = default(VideoPlayer); if (plane.TryGetComponent(ref val2)) { Object.Destroy((Object)(object)val2); } } catch (Exception ex) { LoggingPlugin.LogWarning("ApplyPlaneTexture: Exception: " + ex); Reflection.CatchFullError(ex); } } [IteratorStateMachine(typeof(d__82))] private IEnumerator ApplyVideoAspectWhenReady(GameObject plane, VideoPlayer video) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__82(0) { <>4__this = this, plane = plane, video = video }; } [IteratorStateMachine(typeof(d__83))] private IEnumerator TemporarilyDisplayPlaneInformation() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__83(0) { <>4__this = this }; } }