RUMBLE does not support other mod managers. If you want to use a manager, you must use the RUMBLE Mod Manager, a manager specifically designed for this game.
Decompiled source of RockCamDetachedPreviewManager v1.1.3
Mods/RockCamDetachedPreviewManager.dll
Decompiled a week agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using HarmonyLib; using Il2CppInterop.Runtime.InteropTypes.Arrays; using Il2CppRUMBLE.Recording.LCK; using Il2CppTMPro; using MelonLoader; using RockCamDetachedPreviewManager; using Rock_Cam_Essentials; using RumbleModdingAPI.RMAPI; using UnityEngine; using UnityEngine.InputSystem; using UnityEngine.InputSystem.Controls; [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), "RockCamDetachedPreviewManager", "1.1.4", "Deterraleon", null)] [assembly: MelonGame("Buckethead Entertainment", "RUMBLE")] [assembly: MelonColor(255, 100, 100, 255)] [assembly: MelonAuthorColor(255, 195, 119, 255)] [assembly: VerifyLoaderVersion(0, 6, 6, true)] [assembly: TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")] [assembly: AssemblyCompany("RockCamDetachedPreviewManager")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+1182bdc9157ae1f3e0117402e84fe7d5c884d5e6")] [assembly: AssemblyProduct("RockCamDetachedPreviewManager")] [assembly: AssemblyTitle("RockCamDetachedPreviewManager")] [assembly: AssemblyVersion("1.0.0.0")] namespace RockCamDetachedPreviewManager; public static class BuildInfo { public const string ModName = "RockCamDetachedPreviewManager"; public const string ModVersion = "1.1.4"; public const string Author = "Deterraleon"; } public class Main : MelonMod { public class DetachedPreview { public Preview preview; public string name; public Func<Rock_Cam, bool> Start; public Func<Rock_Cam, bool> End; public Func<Rock_Cam, bool> Initiate; } [HarmonyPatch(typeof(LCKTabletDetachedPreview), "SwitchPreview")] public static class NameBlupdateOther { private static void Prefix(LCKTabletDetachedPreview __instance) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Expected O, but got Unknown if (Camera == null) { try { Camera = new Rock_Cam(); } catch (Exception ex) { ((MelonBase)Melon<Main>.Instance).LoggerInstance.Error("Couldn't initialize rockcam while listening to SP in prefix"); ((MelonBase)Melon<Main>.Instance).LoggerInstance.Error((object)ex); return; } } if (Camera._DetachedPreviewManager.ActivePreviewNo >= 6 && customPreviews[Camera._DetachedPreviewManager.ActivePreviewNo - 6].End != null) { customPreviews[Camera._DetachedPreviewManager.ActivePreviewNo - 6].End(Camera); } } private static void Postfix(LCKTabletDetachedPreview __instance) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Expected O, but got Unknown if (Camera == null) { try { Camera = new Rock_Cam(); } catch (Exception ex) { ((MelonBase)Melon<Main>.Instance).LoggerInstance.Error("Couldn't initialize rockcam while listening to SP in postfix"); ((MelonBase)Melon<Main>.Instance).LoggerInstance.Error((object)ex); return; } } ((TMP_Text)((Component)((Component)__instance.nextButton).gameObject.transform.FindChild("Value")).GetComponent<TextMeshPro>()).text = names[__instance.ActivePreviewNo]; if (Camera._DetachedPreviewManager.ActivePreviewNo >= 6 && customPreviews[Camera._DetachedPreviewManager.ActivePreviewNo - 6].Start != null) { customPreviews[Camera._DetachedPreviewManager.ActivePreviewNo - 6].Start(Camera); } } } [HarmonyPatch(typeof(LCKTabletDetachedPreview), "SwitchToNextPreview")] public static class NameBlupdate { private static void Prefix(LCKTabletDetachedPreview __instance) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Expected O, but got Unknown if (Camera == null) { try { Camera = new Rock_Cam(); } catch (Exception ex) { ((MelonBase)Melon<Main>.Instance).LoggerInstance.Error("Couldn't initialize rockcam while listening to STNP in prefix"); ((MelonBase)Melon<Main>.Instance).LoggerInstance.Error((object)ex); return; } } if (Camera._DetachedPreviewManager.ActivePreviewNo >= 6 && customPreviews[Camera._DetachedPreviewManager.ActivePreviewNo - 6].End != null) { customPreviews[Camera._DetachedPreviewManager.ActivePreviewNo - 6].End(Camera); } } private static void Postfix(LCKTabletDetachedPreview __instance) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Expected O, but got Unknown if (Camera == null) { try { Camera = new Rock_Cam(); } catch (Exception ex) { ((MelonBase)Melon<Main>.Instance).LoggerInstance.Error("Couldn't initialize rockcam while listening to STNP in postfix"); ((MelonBase)Melon<Main>.Instance).LoggerInstance.Error((object)ex); return; } } ((TMP_Text)((Component)((Component)__instance.nextButton).gameObject.transform.FindChild("Value")).GetComponent<TextMeshPro>()).text = names[__instance.ActivePreviewNo]; if (Camera._DetachedPreviewManager.ActivePreviewNo >= 6 && customPreviews[Camera._DetachedPreviewManager.ActivePreviewNo - 6].Start != null) { customPreviews[Camera._DetachedPreviewManager.ActivePreviewNo - 6].Start(Camera); } } } public static List<string> names = new List<string> { "OFF", "ON Wrist L", "ON Wrist R", "ON HP Bar", "ON View", "ON Monitor" }; public static List<DetachedPreview> customPreviews = new List<DetachedPreview>(); private string currentScene = "Loader"; private bool enabled = true; public Il2CppReferenceArray<Preview> previews; public static Rock_Cam Camera = null; public override void OnSceneWasLoaded(int buildIndex, string sceneName) { currentScene = sceneName; } public override void OnLateInitializeMelon() { Actions.onMapInitialized += mapLoaded; } public int AddPreview(DetachedPreview preview) { if (preview == null) { ((MelonBase)Melon<Main>.Instance).LoggerInstance.Error("Preview is null during adding preview"); return -1; } if (preview.name == null) { ((MelonBase)Melon<Main>.Instance).LoggerInstance.Error("Preview.name is null during adding preview"); return -1; } ((MelonBase)Melon<Main>.Instance).LoggerInstance.Msg("Adding " + preview.name); customPreviews.Add(preview); names.Add(preview.name); ((MelonBase)Melon<Main>.Instance).LoggerInstance.Msg("Total previews: " + names.Count); return names.Count - 1; } private void InjectPreviews() { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Expected O, but got Unknown if (Camera == null) { try { Camera = new Rock_Cam(); } catch (Exception) { ((MelonBase)Melon<Main>.Instance).LoggerInstance.Error("Couldn't initialize rockcam while injecting"); return; } } List<Preview> list = ((IEnumerable<Preview>)Camera._DetachedPreviewManager.availablePreviews).ToArray().ToList(); foreach (DetachedPreview customPreview in customPreviews) { try { if (customPreview.Initiate != null) { customPreview.Initiate(Camera); } list.Add(customPreview.preview); if (customPreview.name != null) { ((MelonBase)Melon<Main>.Instance).LoggerInstance.Msg("Injecting " + customPreview.name); } else { ((MelonBase)Melon<Main>.Instance).LoggerInstance.Error("Preview name is null"); } } catch (Exception ex2) { if (customPreview != null && customPreview.name != null) { ((MelonBase)Melon<Main>.Instance).LoggerInstance.Error("Failed to inject preview " + customPreview.name); } else { ((MelonBase)Melon<Main>.Instance).LoggerInstance.Error("Null preview or null preview name"); } ((MelonBase)Melon<Main>.Instance).LoggerInstance.Error((object)ex2); } } Camera._DetachedPreviewManager.availablePreviews = new Il2CppReferenceArray<Preview>(list.ToArray()); ((MelonBase)Melon<Main>.Instance).LoggerInstance.Msg("Total previews: " + ((Il2CppArrayBase<Preview>)(object)Camera._DetachedPreviewManager.availablePreviews).Length); } public int ForceInjectPreview(DetachedPreview preview) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Expected O, but got Unknown if (Camera == null) { try { Camera = new Rock_Cam(); } catch (Exception ex) { ((MelonBase)Melon<Main>.Instance).LoggerInstance.Error("Couldn't initialize rockcam while force injecting"); ((MelonBase)Melon<Main>.Instance).LoggerInstance.Error((object)ex); return -1; } } if (preview == null) { ((MelonBase)Melon<Main>.Instance).LoggerInstance.Error("Preview is null during force injecting"); return -1; } if (preview.name == null) { ((MelonBase)Melon<Main>.Instance).LoggerInstance.Error("Preview.name is null during force injecting"); return -1; } List<Preview> list = ((IEnumerable<Preview>)Camera._DetachedPreviewManager.availablePreviews).ToArray().ToList(); if (preview.Initiate != null) { preview.Initiate(Camera); } list.Add(preview.preview); ((MelonBase)Melon<Main>.Instance).LoggerInstance.Msg("Force injecting " + preview.name); Camera._DetachedPreviewManager.availablePreviews = new Il2CppReferenceArray<Preview>(list.ToArray()); ((MelonBase)Melon<Main>.Instance).LoggerInstance.Msg("Total previews: " + ((Il2CppArrayBase<Preview>)(object)Camera._DetachedPreviewManager.availablePreviews).Length); return names.Count - 1; } public override void OnUpdate() { if (Camera == null) { return; } Camera.POVUpdate(); Camera.IsShownUpdate(); if (((ButtonControl)Keyboard.current.eKey).isPressed) { if (((ButtonControl)Keyboard.current.rKey).wasPressedThisFrame) { DetachedPreview detachedPreview = new DetachedPreview(); detachedPreview.preview = ((Il2CppArrayBase<Preview>)(object)Camera._DetachedPreviewManager.availablePreviews)[0]; detachedPreview.name = "Aboba"; AddPreview(detachedPreview); } if (((ButtonControl)Keyboard.current.tKey).wasPressedThisFrame) { Camera._DetachedPreviewManager.SwitchToNextPreview(); } } } public void mapLoaded(string currentScene) { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Expected O, but got Unknown if (currentScene != "Loader") { Camera = new Rock_Cam(); InjectPreviews(); } } }