Decompiled source of ShipCam Pro v0.2.0

kruft.ShipCamPro.dll

Decompiled a day ago
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Unity.IL2CPP;
using Bossa.Cinematika;
using Bossa.Cinematika.Controllers;
using Bossa.Dynamika.Character;
using HarmonyLib;
using UnityEngine;
using WildSkies.Input;
using WildSkies.Player;
using WildSkies.ShipParts;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")]
[assembly: AssemblyCompany("kruft.ShipCamPro")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+8bce51d70d9a585e721097c8b75d2c3f8f1588af")]
[assembly: AssemblyProduct("kruft.ShipCamPro")]
[assembly: AssemblyTitle("kruft.ShipCamPro")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace ShipCamPro;

internal class ShipCamProPatch
{
	private static bool _isOnTurret;

	private static bool _thirdPerson;

	private static float _angleX;

	private static float _angleY;

	[HarmonyPostfix]
	[HarmonyPatch(typeof(LocalPlayer), "DropInteraction")]
	private static void ResetRemoteAiming(LocalPlayer __instance)
	{
		_isOnTurret = false;
		UserControlShip userControlShip = __instance._userControlShip;
		userControlShip._isRemoteAiming = false;
		ShipWeapon currentRemoteWeapon = userControlShip._currentRemoteWeapon;
		if ((Object)(object)currentRemoteWeapon != (Object)null)
		{
			currentRemoteWeapon.SetPilot((DynamikaCharacter)null);
		}
	}

	[HarmonyPrefix]
	[HarmonyPatch(typeof(LocalPlayer), "PilotTurret")]
	private static void SetOnTurret(LocalPlayer __instance)
	{
		_isOnTurret = true;
	}

	[HarmonyPostfix]
	[HarmonyPatch(typeof(LocalPlayer), "TakeControlOfShip")]
	private static void SyncThirdPersonState(LocalPlayer __instance, Helm helm)
	{
		_isOnTurret = false;
		__instance._cameraManager.GetController<PilotCinematikaController>().ThirdPerson = _thirdPerson;
	}

	[HarmonyPostfix]
	[HarmonyPatch(typeof(PilotCinematikaController), "ThirdPersonToggle")]
	private static void ThirdPersonToggle(PilotCinematikaController __instance)
	{
		_thirdPerson = __instance.ThirdPerson;
	}

	[HarmonyPrefix]
	[HarmonyPatch(typeof(PilotCinematikaController), "UpdateInput")]
	private static void StoreTargetAngles(PilotCinematikaController __instance, CameraInputState iState)
	{
		//IL_0017: Unknown result type (might be due to invalid IL or missing references)
		//IL_0027: Unknown result type (might be due to invalid IL or missing references)
		if (_thirdPerson && !_isOnTurret && !iState.LookEnable)
		{
			_angleX = __instance._targetAngles.x;
			_angleY = __instance._targetAngles.y;
		}
	}

	[HarmonyPostfix]
	[HarmonyPatch(typeof(PilotCinematikaController), "UpdateInput")]
	private static void RestoreTargetAngles(PilotCinematikaController __instance, CameraInputState iState)
	{
		//IL_0021: Unknown result type (might be due to invalid IL or missing references)
		if (_thirdPerson && !_isOnTurret && !iState.LookEnable)
		{
			__instance._targetAngles = new Vector2(_angleX, _angleY);
		}
	}

	[HarmonyPostfix]
	[HarmonyPatch(typeof(PilotCinematikaController), "UpdateTransform")]
	private static void FixCamRotation(PilotCinematikaController __instance, Transform t)
	{
		//IL_001a: 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_0025: Unknown result type (might be due to invalid IL or missing references)
		//IL_002a: Unknown result type (might be due to invalid IL or missing references)
		//IL_002f: Unknown result type (might be due to invalid IL or missing references)
		if (_thirdPerson && !_isOnTurret)
		{
			t.rotation = Quaternion.LookRotation(((CinematikaController)__instance)._manager.Target.position - t.position, Vector3.up);
		}
	}
}
[BepInPlugin("org.kruft.plugins.ShipCamPro", "Ship Cam Pro", "0.2.0")]
public class ShipCamProPlugin : BasePlugin
{
	public override void Load()
	{
		//IL_0005: Unknown result type (might be due to invalid IL or missing references)
		new Harmony("kruft.ShipCamPro").PatchAll(typeof(ShipCamProPatch));
	}
}