using System.Collections;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using UnityEngine;
using UnityEngine.SceneManagement;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = "")]
[assembly: AssemblyCompany("SolosBodycams")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyDescription("Solo's Bodycams")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("SolosBodycams")]
[assembly: AssemblyTitle("SolosBodycams")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace SolosBodycams;
[BepInPlugin("SolosBodycams", "Solo's Bodycams", "1.0")]
public class Plugin : BaseUnityPlugin
{
private GameObject ShipExternalCamera = null;
private int TransformIndexCopy;
private bool ActivateCamera1 = false;
private bool ActivateCamera2 = false;
private bool SwitchedMonitors = false;
private RenderTexture NewRT;
private Vector3 CameraOriginalPosition;
private Quaternion CameraOriginalRotation;
private string Spine4Addition = "";
private float yadd = 0f;
private static Plugin Instance;
private static ConfigFile SoloBodycamConfigs { get; set; }
internal static ConfigEntry<bool> BodycamOrHeadcam { get; set; }
internal static ConfigEntry<int> RenderTextureX { get; set; }
public void Awake()
{
//IL_0055: Unknown result type (might be due to invalid IL or missing references)
//IL_005f: Expected O, but got Unknown
//IL_017d: Unknown result type (might be due to invalid IL or missing references)
//IL_0187: Expected O, but got Unknown
if ((Object)(object)Instance == (Object)null)
{
Instance = this;
((Object)((Component)this).gameObject).hideFlags = (HideFlags)61;
}
else if ((Object)(object)Instance != (Object)(object)this)
{
Object.Destroy((Object)(object)((Component)this).gameObject);
}
SoloBodycamConfigs = new ConfigFile(Paths.ConfigPath + "\\SoloMods\\CameraPlacement.cfg", true);
BodycamOrHeadcam = SoloBodycamConfigs.Bind<bool>("CameraPlacement", "Bool", true, "True for HEADCAM, False for BODYCAM");
((BaseUnityPlugin)this).Logger.LogInfo((object)("Headcam: " + BodycamOrHeadcam.Value));
((BaseUnityPlugin)this).Logger.LogInfo((object)("Bodycam: " + !BodycamOrHeadcam.Value));
RenderTextureX = SoloBodycamConfigs.Bind<int>("Camera Resolution", "Width (pixels)", 160, "Width of the camera display, Height is calculated internally from width (4:3). WARNING: SETTING THIS NUMBER HIGHER THAN 160 COULD CAUSE PERFORMANCE ISSUES");
((BaseUnityPlugin)this).Logger.LogInfo((object)("Render Texture X value: " + RenderTextureX.Value));
((BaseUnityPlugin)this).Logger.LogInfo((object)("Render Texture Y value: " + RenderTextureX.Value / 4 * 3));
if (BodycamOrHeadcam.Value)
{
Spine4Addition = "/spine.004";
}
else
{
Spine4Addition = "";
}
Object.DontDestroyOnLoad((Object)((Component)this).gameObject);
((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin SolosBodycams is loaded!");
SceneManager.sceneLoaded += OnSceneLoaded;
}
public void OnSceneLoaded(Scene scene, LoadSceneMode mode)
{
ActivateCamera2 = false;
if (!(((Scene)(ref scene)).name == "MainMenu") && !(((Scene)(ref scene)).name == "InitScene") && !(((Scene)(ref scene)).name == "InitSceneLaunchOptions"))
{
ActivateCamera1 = true;
((MonoBehaviour)this).StartCoroutine(LoadSceneEnter());
}
else
{
ActivateCamera1 = false;
SwitchedMonitors = false;
}
}
private IEnumerator LoadSceneEnter()
{
yield return (object)new WaitForSeconds(5f);
ActivateCamera2 = true;
if (!((Object)(object)GameObject.Find("Environment/HangarShip/Cameras/ShipCamera") == (Object)null) && !SwitchedMonitors)
{
NewRT = new RenderTexture(RenderTextureX.Value, RenderTextureX.Value / 4 * 3, 32, (RenderTextureFormat)0);
((Renderer)GameObject.Find("Environment/HangarShip/ShipModels2b/MonitorWall/Cube").GetComponent<MeshRenderer>()).materials[2].mainTexture = ((Renderer)GameObject.Find("Environment/HangarShip/ShipModels2b/MonitorWall/Cube.001").GetComponent<MeshRenderer>()).materials[2].mainTexture;
((Renderer)GameObject.Find("Environment/HangarShip/ShipModels2b/MonitorWall/Cube.001").GetComponent<MeshRenderer>()).materials[2].mainTexture = (Texture)(object)NewRT;
if ((Object)(object)ShipExternalCamera == (Object)null)
{
ShipExternalCamera = Object.Instantiate<GameObject>(GameObject.Find("Environment/HangarShip/Cameras/ShipCamera"));
ShipExternalCamera.transform.SetParent(GameObject.Find("Environment/HangarShip/Cameras/ShipCamera").transform.parent);
ShipExternalCamera.transform.SetLocalPositionAndRotation(GameObject.Find("Environment/HangarShip/Cameras/ShipCamera").transform.localPosition, GameObject.Find("Environment/HangarShip/Cameras/ShipCamera").transform.localRotation);
ShipExternalCamera.AddComponent<Camera>();
ShipExternalCamera.GetComponent<Camera>().cullingMask = 557520895;
ShipExternalCamera.GetComponent<Camera>().nearClipPlane = 0.35f;
CameraOriginalPosition = ShipExternalCamera.transform.localPosition;
CameraOriginalRotation = ShipExternalCamera.transform.localRotation;
Object.Destroy((Object)(object)((Component)ShipExternalCamera.transform.Find("VolumeMain (1)")).GetComponent<BoxCollider>());
Object.Destroy((Object)(object)ShipExternalCamera.GetComponent<Animator>());
Object.Destroy((Object)(object)ShipExternalCamera.GetComponent<MeshRenderer>());
}
ShipExternalCamera.GetComponent<Camera>().targetTexture = NewRT;
SwitchedMonitors = true;
}
}
public void Update()
{
//IL_01ec: Unknown result type (might be due to invalid IL or missing references)
//IL_0200: Unknown result type (might be due to invalid IL or missing references)
//IL_0205: Unknown result type (might be due to invalid IL or missing references)
//IL_0210: Unknown result type (might be due to invalid IL or missing references)
//IL_022b: 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_0235: Unknown result type (might be due to invalid IL or missing references)
//IL_008b: Unknown result type (might be due to invalid IL or missing references)
//IL_009f: Unknown result type (might be due to invalid IL or missing references)
//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
//IL_00c4: 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_00dd: Unknown result type (might be due to invalid IL or missing references)
//IL_0148: 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_0161: Unknown result type (might be due to invalid IL or missing references)
//IL_0189: Unknown result type (might be due to invalid IL or missing references)
//IL_019d: 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)
if (!ActivateCamera1 || !ActivateCamera2)
{
return;
}
TransformIndexCopy = GameObject.Find("Environment/HangarShip/ShipModels2b/MonitorWall/Cube.001/CameraMonitorScript").GetComponent<ManualCameraRenderer>().targetTransformIndex;
TransformAndName val = GameObject.Find("Environment/HangarShip/ShipModels2b/MonitorWall/Cube.001/CameraMonitorScript").GetComponent<ManualCameraRenderer>().radarTargets[TransformIndexCopy];
if (!val.isNonPlayer)
{
ShipExternalCamera.transform.SetPositionAndRotation(val.transform.Find("ScavengerModel/metarig/spine/spine.001/spine.002/spine.003" + Spine4Addition).position + new Vector3(0f, 0.1f, 0f), val.transform.Find("ScavengerModel/metarig/spine/spine.001/spine.002/spine.003" + Spine4Addition).rotation * Quaternion.Euler(0f, 0f, 0f));
DeadBodyInfo[] array = Object.FindObjectsOfType<DeadBodyInfo>();
for (int i = 0; i < array.Length; i++)
{
if (array[i].playerScript.playerUsername == val.name)
{
ShipExternalCamera.transform.SetPositionAndRotation(((Component)array[i]).gameObject.transform.Find("spine.001/spine.002/spine.003" + Spine4Addition).position + new Vector3(0f, 0.1f, 0f), ((Component)array[i]).gameObject.transform.Find("spine.001/spine.002/spine.003" + Spine4Addition).rotation * Quaternion.Euler(0f, 0f, 0f));
}
}
}
else
{
yadd += 1f;
ShipExternalCamera.transform.SetPositionAndRotation(val.transform.position + new Vector3(0f, 1.6f, 0f), Quaternion.Euler(val.transform.eulerAngles + new Vector3(0f, -90f + yadd, 0f)));
}
}
}
public static class PluginInfo
{
public const string PLUGIN_GUID = "SolosBodycams";
public const string PLUGIN_NAME = "SolosBodycams";
public const string PLUGIN_VERSION = "1.0.0";
}