Decompiled source of HandDistanceRecorder v2.2.0

Mods/HandDistanceRecorder.dll

Decompiled 3 weeks ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using HandDistanceRecorder;
using Il2CppRUMBLE.Managers;
using Il2CppRUMBLE.Utilities;
using Il2CppTMPro;
using MelonLoader;
using RumbleModdingAPI;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: MelonInfo(typeof(main), "HandDistanceRecorder", "2.2.0", "UlvakSkillz", null)]
[assembly: MelonGame("Buckethead Entertainment", "RUMBLE")]
[assembly: MelonColor(255, 195, 0, 255)]
[assembly: MelonAuthorColor(255, 195, 0, 255)]
[assembly: VerifyLoaderVersion(0, 6, 2, true)]
[assembly: AssemblyTitle("HandDistanceRecorder")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("HandDistanceRecorder")]
[assembly: AssemblyCopyright("Copyright ©  2024")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("b14d69ae-fbeb-434d-bea3-7c74f1b85b50")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace HandDistanceRecorder;

public class main : MelonMod
{
	[CompilerGenerated]
	private sealed class <SetInitialHandPositions>d__17 : IEnumerator<object>, IDisposable, IEnumerator
	{
		private int <>1__state;

		private object <>2__current;

		public int sceneChanges;

		public main <>4__this;

		private bool <gotHands>5__1;

		private GameObject <VR>5__2;

		private GameObject <textLeft>5__3;

		private GameObject <textRight>5__4;

		object IEnumerator<object>.Current
		{
			[DebuggerHidden]
			get
			{
				return <>2__current;
			}
		}

		object IEnumerator.Current
		{
			[DebuggerHidden]
			get
			{
				return <>2__current;
			}
		}

		[DebuggerHidden]
		public <SetInitialHandPositions>d__17(int <>1__state)
		{
			this.<>1__state = <>1__state;
		}

		[DebuggerHidden]
		void IDisposable.Dispose()
		{
			<VR>5__2 = null;
			<textLeft>5__3 = null;
			<textRight>5__4 = null;
			<>1__state = -2;
		}

		private bool MoveNext()
		{
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_003f: Expected O, but got Unknown
			//IL_0060: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Expected O, but got Unknown
			//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00eb: Expected O, but got Unknown
			//IL_00f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fb: Expected O, but got Unknown
			//IL_020b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0230: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_02dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0394: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_044b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0461: Unknown result type (might be due to invalid IL or missing references)
			//IL_0466: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_04c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_04de: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_0514: Unknown result type (might be due to invalid IL or missing references)
			//IL_051e: Expected O, but got Unknown
			switch (<>1__state)
			{
			default:
				return false;
			case 0:
				<>1__state = -1;
				<>2__current = (object)new WaitForFixedUpdate();
				<>1__state = 1;
				return true;
			case 1:
				<>1__state = -1;
				<gotHands>5__1 = false;
				goto IL_0545;
			case 2:
				<>1__state = -1;
				goto IL_007b;
			case 3:
				{
					<>1__state = -1;
					goto IL_052f;
				}
				IL_0545:
				if (!<gotHands>5__1)
				{
					goto IL_007b;
				}
				<>4__this.init = true;
				return false;
				IL_052f:
				<VR>5__2 = null;
				<textLeft>5__3 = null;
				<textRight>5__4 = null;
				goto IL_0545;
				IL_007b:
				if ((Object)(object)Singleton<PlayerManager>.instance.localPlayer.Controller == (Object)null)
				{
					<>2__current = (object)new WaitForFixedUpdate();
					<>1__state = 2;
					return true;
				}
				if (<>4__this.sceneCount != sceneChanges)
				{
					return false;
				}
				<VR>5__2 = ((Component)((Component)Singleton<PlayerManager>.instance.localPlayer.Controller).gameObject.transform.GetChild(2)).gameObject;
				<>4__this.lastHandPositionL = new GameObject();
				<>4__this.lastHandPositionR = new GameObject();
				<>4__this.lastHandPositionL.transform.parent = <VR>5__2.transform;
				<>4__this.lastHandPositionR.transform.parent = <VR>5__2.transform;
				<>4__this.handLTransform = <VR>5__2.transform.GetChild(1);
				<>4__this.handRTransform = <VR>5__2.transform.GetChild(2);
				<textLeft>5__3 = Create.NewText();
				((Object)<textLeft>5__3).name = "TextLeft";
				<textLeft>5__3.transform.parent = ((Component)Singleton<PlayerManager>.instance.localPlayer.Controller).gameObject.transform.GetChild(1).GetChild(1).GetChild(0)
					.GetChild(4)
					.GetChild(0)
					.GetChild(1)
					.GetChild(0)
					.GetChild(0)
					.GetChild(0);
				<textLeft>5__3.transform.localPosition = new Vector3(0.0372f, 0.115f, 0f);
				<textLeft>5__3.transform.localRotation = Quaternion.Euler(7.2175f, 269.9012f, 358.3884f);
				<>4__this.textL = <textLeft>5__3.GetComponent<TextMeshPro>();
				((TMP_Text)<>4__this.textL).autoSizeTextContainer = true;
				((TMP_Text)<>4__this.textL).enableWordWrapping = false;
				((TMP_Text)<>4__this.textL).alignment = (TextAlignmentOptions)514;
				((TMP_Text)<>4__this.textL).text = "0";
				((TMP_Text)<>4__this.textL).fontSize = 0.25f;
				((TMP_Text)<>4__this.textL).color = Color.white;
				((TMP_Text)<>4__this.textL).outlineColor = Color32.op_Implicit(Color.black);
				((TMP_Text)<>4__this.textL).outlineWidth = 0.25f;
				<textRight>5__4 = Create.NewText();
				((Object)<textRight>5__4).name = "TextRight";
				<textRight>5__4.transform.parent = ((Component)Singleton<PlayerManager>.instance.localPlayer.Controller).gameObject.transform.GetChild(1).GetChild(1).GetChild(0)
					.GetChild(4)
					.GetChild(0)
					.GetChild(2)
					.GetChild(0)
					.GetChild(0)
					.GetChild(0);
				<textRight>5__4.transform.localPosition = new Vector3(-0.0372f, 0.1148f, 0f);
				<textRight>5__4.transform.localRotation = Quaternion.Euler(7.1158f, 93.6177f, 0.9292f);
				<>4__this.textR = <textRight>5__4.GetComponent<TextMeshPro>();
				((TMP_Text)<>4__this.textR).autoSizeTextContainer = true;
				((TMP_Text)<>4__this.textR).enableWordWrapping = false;
				((TMP_Text)<>4__this.textR).alignment = (TextAlignmentOptions)514;
				((TMP_Text)<>4__this.textR).text = "0";
				((TMP_Text)<>4__this.textR).fontSize = 0.25f;
				((TMP_Text)<>4__this.textR).color = Color.white;
				((TMP_Text)<>4__this.textR).outlineColor = Color32.op_Implicit(Color.black);
				((TMP_Text)<>4__this.textR).outlineWidth = 0.25f;
				<>4__this.lastHandPositionL.transform.position = <>4__this.handLTransform.localPosition;
				<>4__this.lastHandPositionR.transform.position = <>4__this.handRTransform.localPosition;
				_ = <>4__this.handLTransform.position;
				_ = <>4__this.handRTransform.position;
				if (true)
				{
					<gotHands>5__1 = true;
				}
				if (!<gotHands>5__1)
				{
					<>2__current = (object)new WaitForFixedUpdate();
					<>1__state = 3;
					return true;
				}
				goto IL_052f;
			}
		}

		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 <WaitBeforeRunningInit>d__16 : IEnumerator<object>, IDisposable, IEnumerator
	{
		private int <>1__state;

		private object <>2__current;

		public int sceneChanges;

		public main <>4__this;

		object IEnumerator<object>.Current
		{
			[DebuggerHidden]
			get
			{
				return <>2__current;
			}
		}

		object IEnumerator.Current
		{
			[DebuggerHidden]
			get
			{
				return <>2__current;
			}
		}

		[DebuggerHidden]
		public <WaitBeforeRunningInit>d__16(int <>1__state)
		{
			this.<>1__state = <>1__state;
		}

		[DebuggerHidden]
		void IDisposable.Dispose()
		{
			<>1__state = -2;
		}

		private bool MoveNext()
		{
			//IL_0026: Unknown result type (might be due to invalid IL or missing references)
			//IL_0030: Expected O, but got Unknown
			switch (<>1__state)
			{
			default:
				return false;
			case 0:
				<>1__state = -1;
				<>2__current = (object)new WaitForSeconds(1f);
				<>1__state = 1;
				return true;
			case 1:
				<>1__state = -1;
				if (sceneChanges == <>4__this.sceneCount)
				{
					MelonCoroutines.Start(<>4__this.SetInitialHandPositions(sceneChanges));
				}
				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();
		}
	}

	private bool init = false;

	private GameObject lastHandPositionL;

	private GameObject lastHandPositionR;

	private Transform handLTransform;

	private Transform handRTransform;

	private float distanceL = 0f;

	private float distanceR = 0f;

	private DateTime waitTill;

	private int sceneCount = 0;

	private TextMeshPro textL;

	private TextMeshPro textR;

	private string currentScene = "Loader";

	public override void OnLateInitializeMelon()
	{
		Calls.onMapInitialized += SceneLoaded;
	}

	private void SceneLoaded()
	{
		if (currentScene != "Loader")
		{
			MelonCoroutines.Start(WaitBeforeRunningInit(sceneCount));
		}
	}

	public override void OnSceneWasLoaded(int buildIndex, string sceneName)
	{
		currentScene = sceneName;
		sceneCount++;
		init = false;
		waitTill = DateTime.Now.AddSeconds(2.0);
	}

	public override void OnUpdate()
	{
		//IL_00eb: 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_0118: 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_017c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0198: 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_00c9: Unknown result type (might be due to invalid IL or missing references)
		if (init && !((Object)(object)lastHandPositionL == (Object)null) && !((Object)(object)lastHandPositionR == (Object)null))
		{
			if (DateTime.Now < waitTill)
			{
				GameObject gameObject = ((Component)((Component)Singleton<PlayerManager>.instance.localPlayer.Controller).gameObject.transform.GetChild(2)).gameObject;
				handLTransform = gameObject.transform.GetChild(1);
				handRTransform = gameObject.transform.GetChild(2);
				lastHandPositionL.transform.position = handLTransform.position;
				lastHandPositionR.transform.position = handRTransform.position;
			}
			else
			{
				distanceL += Vector3.Distance(lastHandPositionL.transform.position, handLTransform.position);
				distanceR += Vector3.Distance(lastHandPositionR.transform.position, handRTransform.position);
				((TMP_Text)textL).text = distanceL.ToString("0.#");
				((TMP_Text)textR).text = distanceR.ToString("0.#");
				lastHandPositionL.transform.position = handLTransform.position;
				lastHandPositionR.transform.position = handRTransform.position;
			}
		}
	}

	[IteratorStateMachine(typeof(<WaitBeforeRunningInit>d__16))]
	public IEnumerator WaitBeforeRunningInit(int sceneChanges)
	{
		//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
		return new <WaitBeforeRunningInit>d__16(0)
		{
			<>4__this = this,
			sceneChanges = sceneChanges
		};
	}

	[IteratorStateMachine(typeof(<SetInitialHandPositions>d__17))]
	public IEnumerator SetInitialHandPositions(int sceneChanges)
	{
		//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
		return new <SetInitialHandPositions>d__17(0)
		{
			<>4__this = this,
			sceneChanges = sceneChanges
		};
	}
}