public override void Load() { log = Log; Log.LogMessage("Application Start"); ClassInjector.RegisterTypeInIl2Cpp <LightManager>(); ClassInjector.RegisterTypeInIl2Cpp <InvoidableManager>(); ClassInjector.RegisterTypeInIl2Cpp <InvoidableEndTrigger>(); ClassInjector.RegisterTypeInIl2Cpp <ElevatorLight>(); var harmony = new Harmony(GUID); harmony.PatchAll(); AssetShardManager.add_OnEnemyAssetsLoaded((Action)(() => { GameObject shooterProjectile = AssetShardManager.GetLoadedAsset <GameObject>("Assets/AssetPrefabs/Characters/Enemies/Abilities/ProjTargetingSmall.prefab", false); GameObject hybridProjectile = AssetShardManager.GetLoadedAsset <GameObject>("Assets/AssetPrefabs/Characters/Enemies/Abilities/ProjSemiTargetingQuick.prefab", false); AssetShardManager.GetLoadedAsset <GameObject>("Assets/AssetPrefabs/Characters/Enemies/Abilities/ProjTargetingSmall.prefab", false); ProjectileBase projectile = shooterProjectile.GetComponent <ProjectileBase>(); ProjectileBase hybrid = hybridProjectile.GetComponent <ProjectileBase>(); projectile.m_maxDamage = 1.0f; hybrid.m_maxDamage = 2f; })); }
static Il2CppManagedEnumerable() { ClassInjector.RegisterTypeInIl2Cpp <Il2CppManagedEnumerable>(new RegisterTypeOptions { Interfaces = new[] { typeof(Il2CppSystem.Collections.IEnumerable) } }); }
private static ISupportModule_To Initialize(ISupportModule_From interface_from) { Interface = interface_from; LogSupport.RemoveAllHandlers(); if (MelonDebug.IsEnabled()) { LogSupport.InfoHandler += MelonLogger.Msg; } LogSupport.WarningHandler += MelonLogger.Warning; LogSupport.ErrorHandler += MelonLogger.Error; if (MelonDebug.IsEnabled()) { LogSupport.TraceHandler += MelonLogger.Msg; } ClassInjector.DoHook = MelonUtils.NativeHookAttach; InitializeUnityVersion(); ConsoleCleaner(); SceneManager.sceneLoaded = ( (SceneManager.sceneLoaded == null) ? new Action <Scene, LoadSceneMode>(OnSceneLoad) : Il2CppSystem.Delegate.Combine(SceneManager.sceneLoaded, (UnityAction <Scene, LoadSceneMode>) new Action <Scene, LoadSceneMode>(OnSceneLoad)).Cast <UnityAction <Scene, LoadSceneMode> >() ); Camera.onPostRender = ( (Camera.onPostRender == null) ? new Action <Camera>(OnPostRender) : Il2CppSystem.Delegate.Combine(Camera.onPostRender, (Camera.CameraCallback) new Action <Camera>(OnPostRender)).Cast <Camera.CameraCallback>() ); ClassInjector.RegisterTypeInIl2Cpp <Component>(); Component.Create(); return(new SupportModule_To()); }
public override void Load() { Log = base.Log; ClassInjector.RegisterTypeInIl2Cpp <DumbRendererDemosaic>(); AddComponent <DumbRendererDemosaic>(); }
private void SetupIL2CPPClassInjections() { ClassInjector.RegisterTypeInIl2Cpp <VRSystems>(); ClassInjector.RegisterTypeInIl2Cpp <VRAssets>(); ClassInjector.RegisterTypeInIl2Cpp <VRKeyboard>(); ClassInjector.RegisterTypeInIl2Cpp <VR_UI_Overlay>(); ClassInjector.RegisterTypeInIl2Cpp <VRWorldSpaceUI>(); ClassInjector.RegisterTypeInIl2Cpp <Controllers>(); ClassInjector.RegisterTypeInIl2Cpp <HMD>(); ClassInjector.RegisterTypeInIl2Cpp <VRRendering>(); ClassInjector.RegisterTypeInIl2Cpp <CollisionFade>(); ClassInjector.RegisterTypeInIl2Cpp <LaserPointer>(); ClassInjector.RegisterTypeInIl2Cpp <PlayerOrigin>(); ClassInjector.RegisterTypeInIl2Cpp <VRPlayer>(); ClassInjector.RegisterTypeInIl2Cpp <Haptics>(); ClassInjector.RegisterTypeInIl2Cpp <BhapticsIntegration>(); ClassInjector.RegisterTypeInIl2Cpp <BhapticsElevatorSequence>(); ClassInjector.RegisterTypeInIl2Cpp <Snapturn>(); ClassInjector.RegisterTypeInIl2Cpp <Watch>(); ClassInjector.RegisterTypeInIl2Cpp <VRHammer>(); ClassInjector.RegisterTypeInIl2Cpp <DividedBarShaderController>(); ClassInjector.RegisterTypeInIl2Cpp <MovementVignette>(); ClassInjector.RegisterTypeInIl2Cpp <RadialMenu>(); ClassInjector.RegisterTypeInIl2Cpp <RadialItem>(); ClassInjector.RegisterTypeInIl2Cpp <WeaponRadialMenu>(); ClassInjector.RegisterTypeInIl2Cpp <WeaponAmmoHologram>(); }
public override void VRChat_OnUiManagerInit() { ClassInjector.RegisterTypeInIl2Cpp <EnableDisableListener>(); Config.RegisterSettings(); // Initialize Constants util Constants.UIInit(); LoadAssetBundle(); // Initialize UIManager UIManager.Init(); // Initialize submenu for the list MenuManager.CreateMainSubMenu(); // TODO: Add opacity options, maybe color too, (maybe even for each stage of ping and fps??) MenuManager.AddMenuListeners(); MenuManager.CreateSubMenus(); PlayerEntry.Patch(Harmony); EntryManager.AddGeneralInfoEntries(); MenuManager.CreateGeneralInfoSubMenus(); MenuManager.AdjustSubMenus(); // Initialize on leave and join events NetworkHooks.NetworkInit(); NetworkHooks.OnPlayerJoin += new Action <Player>((player) => OnPlayerJoin(player)); NetworkHooks.OnPlayerLeave += new Action <Player>((player) => OnPlayerLeave(player)); MelonLogger.Msg("Initialized!"); }
public override void Load() { Harmony harmony = new Harmony("ovh.lapinolapidus.gtfo_drp"); harmony.PatchAll(); ClassInjector.RegisterTypeInIl2Cpp <RichPresence>(); }
public static void Setup() { #if DEBUG Console.WriteLine(Environment.Version); Console.WriteLine(Application.unityVersion); Console.WriteLine(Directory.GetCurrentDirectory()); LogSupport.RemoveAllHandlers(); LogSupport.TraceHandler += LogSupport_TraceHandler; LogSupport.ErrorHandler += LogSupport_TraceHandler; LogSupport.InfoHandler += LogSupport_TraceHandler; LogSupport.WarningHandler += LogSupport_TraceHandler; #endif ClassInjector.DoHook?.GetInvocationList().ToList().ForEach(d => ClassInjector.DoHook -= (Action <IntPtr, IntPtr>)d); ClassInjector.DoHook += JmpPatch; UnityVersionHandler.Initialize(2019, 3, 14); ClassInjector.RegisterTypeInIl2Cpp <ModManager>(); while (BaseObject = GameObject.Find("ModManager")) { GameObject.DestroyImmediate(BaseObject); } BaseObject = new GameObject("ModManager"); GameObject.DontDestroyOnLoad(BaseObject); var modMgr = BaseObject.AddComponent <ModManager>(); var types = Assembly.GetExecutingAssembly().GetTypes().ToList().Where(t => t.BaseType == typeof(ModBase) && !t.IsNested); foreach (var type in types) { modMgr.Mods.Add((ModBase)Activator.CreateInstance(type)); } }
public override void OnApplicationStart() { //StartConsoleBasedRepl(); //MelonModLogger.Log("Loaded JS"); ClassInjector.RegisterTypeInIl2Cpp <JintConsoleGui>(); }
public override void OnApplicationStart() { Instance = this; if (!CheckWasSuccessful || !MustStayTrue || MustStayFalse) { return; } Directory.CreateDirectory("./UserData/FavCatImport"); ClassInjector.RegisterTypeInIl2Cpp <CustomPickerList>(); ClassInjector.RegisterTypeInIl2Cpp <CustomPicker>(); ApiSnifferPatch.DoPatch(); FavCatSettings.RegisterSettings(); MelonLogger.Msg("Creating database"); Database = new LocalStoreDatabase(FavCatSettings.DatabasePath.Value, FavCatSettings.ImageCachePath.Value); Database.ImageHandler.TrimCache(FavCatSettings.MaxCacheSizeBytes).NoAwait(); foreach (var methodInfo in typeof(AvatarPedestal).GetMethods(BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public).Where(it => it.Name.StartsWith("Method_Private_Void_ApiContainer_") && it.GetParameters().Length == 1)) { HarmonyInstance.Patch(methodInfo, new HarmonyMethod(typeof(FavCatMod), nameof(AvatarPedestalPatch))); } DoAfterUiManagerInit(OnUiManagerInit); }
public static void Setup() { IL2CPP.il2cpp_thread_attach(IL2CPP.il2cpp_domain_get()); AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; Console.WriteLine(Environment.Version); Console.WriteLine(Application.unityVersion); Console.WriteLine(Directory.GetCurrentDirectory()); UnhollowerBaseLib.Runtime.UnityVersionHandler.Initialize(2018, 4, 20); LogSupport.RemoveAllHandlers(); LogSupport.TraceHandler += LogSupport_TraceHandler; LogSupport.ErrorHandler += LogSupport_TraceHandler; LogSupport.InfoHandler += LogSupport_TraceHandler; LogSupport.WarningHandler += LogSupport_TraceHandler; ClassInjector.Detour = new DoHookDetour(); //ClassInjector.DoHook?.GetInvocationList().ToList().ForEach(d => ClassInjector.DoHook -= (Action<IntPtr, IntPtr>)d); //ClassInjector.DoHook += JmpPatch; ClassInjector.RegisterTypeInIl2Cpp <ModManager>(); while (BaseObject = GameObject.Find("ModManager")) { GameObject.DestroyImmediate(BaseObject); } BaseObject = new GameObject("ModManager"); GameObject.DontDestroyOnLoad(BaseObject); var modMgr = BaseObject.AddComponent <ModManager>(); var types = Assembly.GetExecutingAssembly().GetTypes().ToList().Where(t => t.BaseType == typeof(ModBase) && !t.IsNested); foreach (var type in types) { modMgr.Mods.Add((ModBase)Activator.CreateInstance(type)); } }
public override void OnApplicationStart() { Instance = this; Directory.CreateDirectory("./UserData/FavCatImport"); ClassInjector.RegisterTypeInIl2Cpp <CustomPickerList>(); ClassInjector.RegisterTypeInIl2Cpp <CustomPicker>(); ApiSnifferPatch.DoPatch(); FavCatSettings.RegisterSettings(); MelonLogger.Log("Creating database"); Database = new LocalStoreDatabase(FavCatSettings.DatabasePath, FavCatSettings.ImageCachePath); Database.ImageHandler.TrimCache(FavCatSettings.MaxCacheSizeBytes).NoAwait(); ExpansionKitApi.RegisterWaitConditionBeforeDecorating(WaitForInitDone()); foreach (var methodInfo in typeof(AvatarPedestal).GetMethods(BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public).Where(it => it.Name.StartsWith("Method_Private_Void_ApiContainer_") && it.GetParameters().Length == 1)) { Harmony.Patch(methodInfo, new HarmonyMethod(typeof(FavCatMod), nameof(AvatarPedestalPatch))); } }
private void UiManagerInit() { MelonLogger.Msg("BTK Standalone: Immersive Hud - Starting Up"); Instance = this; if (MelonHandler.Mods.Any(x => x.Info.Name.Equals("BTKCompanionLoader", StringComparison.OrdinalIgnoreCase))) { MelonLogger.Msg("Hold on a sec! Looks like you've got BTKCompanion installed, this mod is built in and not needed!"); MelonLogger.Error("BTKSAImmersiveHud has not started up! (BTKCompanion Running)"); return; } MelonPreferences.CreateCategory(SettingsCategory, "Immersive Hud"); MelonPreferences.CreateEntry(SettingsCategory, HUDEnable, true, "Immersive Hud Enable"); MelonPreferences.CreateEntry(SettingsCategory, HUDStayOnUntilClear, false, "Keep Hud Visible Until Notification Cleared"); MelonPreferences.CreateEntry(SettingsCategory, HUDTimeout, 10f, "Hud Appear Duration"); //Apply patches applyPatches(typeof(RoomManagerPatches)); //Register our MonoBehavior to let us use OnEnable ClassInjector.RegisterTypeInIl2Cpp <HudEvent>(); DefaultTalkController.Method_Public_Static_add_Void_Action_0(new Action(OnHudUpdateEvent)); hudContent = GameObject.Find("/UserInterface/UnscaledUI/HudContent/Hud"); gestureParent = GameObject.Find("/UserInterface/UnscaledUI/HudContent/Hud/GestureToggleParent"); notificationParent = GameObject.Find("/UserInterface/UnscaledUI/HudContent/Hud/NotificationDotParent"); afkParent = GameObject.Find("/UserInterface/UnscaledUI/HudContent/Hud/AFK"); }
public static void LoadUiObjects() { ClassInjector.RegisterTypeInIl2Cpp <Updater>(); /* Load async to avoid race with UI Expansion kit */ MelonCoroutines.Start(LoadUiElements()); }
public override void OnApplicationStart() { // Setup MonoBehaviors ClassInjector.RegisterTypeInIl2Cpp <ServerSyncedObject>(); ClassInjector.RegisterTypeInIl2Cpp <IDHolder>(); // Register Prefs ModPrefs.RegisterCategory("MPMod", "Multiplayer Settings"); ModPrefs.RegisterPrefString("MPMod", "HostSteamID", "0"); ModPrefs.RegisterPrefBool("MPMod", "ForceLargePlayspace", true); // Start Server Stuff SteamClient.Init(448280); // MelonModLogger.LogWarning("ALPHA TESTING BUILD"); MelonModLogger.Log($"Multiplayer initialising with protocol version {PROTOCOL_VERSION}."); SteamNetworking.AllowP2PPacketRelay(true); client = new Client(); server = new Server(); PlayerRep.LoadPlayer(); // Setup Discord Presence RichPresence.Initialise(736050983335100436); client.SetupRP(); MelonModLogger.Log("MPMod Loaded"); }
public JintConsoleGui(Delegate referencedDelegate, IntPtr methodInfo) : base(ClassInjector.DerivedConstructorPointer <JintConsoleGui>()) { ClassInjector.DerivedConstructorBody(this); ReferencedDelegate = referencedDelegate; MethodInfo = methodInfo; }
private static ISupportModule Initialize() { LogSupport.RemoveAllHandlers(); if (true) { LogSupport.InfoHandler += MelonLogger.Log; } LogSupport.WarningHandler += MelonLogger.LogWarning; LogSupport.ErrorHandler += MelonLogger.LogError; if (true) { LogSupport.TraceHandler += MelonLogger.Log; } ClassInjector.DoHook += Imports.Hook; GetUnityVersionNumbers(out var major, out var minor, out var patch); UnityVersionHandler.Initialize(major, minor, patch); // Il2CppSystem.Console.SetOut(new Il2CppSystem.IO.StreamWriter(Il2CppSystem.IO.Stream.Null)); try { var il2CppSystemAssembly = Assembly.Load("Il2Cppmscorlib"); var consoleType = il2CppSystemAssembly.GetType("Il2CppSystem.Console"); var streamWriterType = il2CppSystemAssembly.GetType("Il2CppSystem.IO.StreamWriter"); var streamType = il2CppSystemAssembly.GetType("Il2CppSystem.IO.Stream"); var setOutMethod = consoleType.GetMethod("SetOut", BindingFlags.Static | BindingFlags.Public); var nullStreamField = streamType.GetProperty("Null", BindingFlags.Static | BindingFlags.Public).GetGetMethod(); var streamWriterCtor = streamWriterType.GetConstructor(new[] { streamType }); var nullStream = nullStreamField.Invoke(null, new object[0]); var steamWriter = streamWriterCtor.Invoke(new[] { nullStream }); setOutMethod.Invoke(null, new[] { steamWriter }); } catch (Exception ex) { MelonLogger.LogError($"Console cleaning failed: {ex}"); } SetAsLastSiblingDelegateField = IL2CPP.ResolveICall <SetAsLastSiblingDelegate>("UnityEngine.Transform::SetAsLastSibling"); ClassInjector.RegisterTypeInIl2Cpp <MelonLoaderComponent>(); //MelonLogger.Log("ClassInjector.RegisterTypeInIl2Cpp<MelonLoaderComponent> done"); MelonLoaderComponent.Create(); //MelonLogger.Log("MelonLoaderComponent.Create() done"); SceneManager.sceneLoaded = ( (SceneManager.sceneLoaded == null) ? new Action <Scene, LoadSceneMode>(OnSceneLoad) : Il2CppSystem.Delegate.Combine(SceneManager.sceneLoaded, (UnityAction <Scene, LoadSceneMode>) new Action <Scene, LoadSceneMode>(OnSceneLoad)).Cast <UnityAction <Scene, LoadSceneMode> >() ); Camera.onPostRender = ( (Camera.onPostRender == null) ? new Action <Camera>(OnPostRender) : Il2CppSystem.Delegate.Combine(Camera.onPostRender, (Camera.CameraCallback) new Action <Camera>(OnPostRender)).Cast <Camera.CameraCallback>() ); return(new Module()); }
public override void Load() { ClassInjector.RegisterTypeInIl2Cpp <SoundPlayerScript>(); var harmony = new Harmony("com.kasuromi.soundplayer"); harmony.PatchAll(); }
public override void Load() { ClassInjector.RegisterTypeInIl2Cpp <FreecamManager>(); Harmony harmonyPatches = new Harmony(GUID); harmonyPatches.PatchAll(); log = Log; }
public override void OnApplicationStart() { ClassInjector.RegisterTypeInIl2Cpp <CustomParticleSettingsUiHandler>(); MelonPreferences.CreateCategory(SettingsCategory, "Particle and DynBone limits").CreateEntry("dummy", false, "ignore this", true); ExpansionKitApi.RegisterWaitConditionBeforeDecorating(WaitForUixPrefabsAndRegister()); }
public OffscreenCEF(Delegate referencedDelegate, IntPtr methodInfo) : base(ClassInjector .DerivedConstructorPointer <OffscreenCEF>()) { ClassInjector.DerivedConstructorBody(this); ReferencedDelegate = referencedDelegate; MethodInfo = methodInfo; }
private static ISupportModule_To Initialize(ISupportModule_From interface_from) { Interface = interface_from; UnityMappers.RegisterMappers(); LogSupport.RemoveAllHandlers(); if (MelonDebug.IsEnabled()) { LogSupport.InfoHandler += MelonLogger.Msg; } LogSupport.WarningHandler += MelonLogger.Warning; LogSupport.ErrorHandler += MelonLogger.Error; if (MelonDebug.IsEnabled()) { LogSupport.TraceHandler += MelonLogger.Msg; } ClassInjector.Detour = new UnhollowerDetour(); UnityVersionHandler.Initialize( InternalUtils.UnityInformationHandler.EngineVersion.Major, InternalUtils.UnityInformationHandler.EngineVersion.Minor, InternalUtils.UnityInformationHandler.EngineVersion.Build); if (MelonLaunchOptions.Console.CleanUnityLogs) { ConsoleCleaner(); } try { SceneManager.sceneLoaded = ( (ReferenceEquals(SceneManager.sceneLoaded, null)) ? new Action <Scene, LoadSceneMode>(OnSceneLoad) : Il2CppSystem.Delegate.Combine(SceneManager.sceneLoaded, (UnityAction <Scene, LoadSceneMode>) new Action <Scene, LoadSceneMode>(OnSceneLoad)).Cast <UnityAction <Scene, LoadSceneMode> >() ); } catch (Exception ex) { MelonLogger.Error($"SceneManager.sceneLoaded override failed: {ex}"); } try { SceneManager.sceneUnloaded = ( (ReferenceEquals(SceneManager.sceneUnloaded, null)) ? new Action <Scene>(OnSceneUnload) : Il2CppSystem.Delegate.Combine(SceneManager.sceneUnloaded, (UnityAction <Scene>) new Action <Scene>(OnSceneUnload)).Cast <UnityAction <Scene> >() ); } catch (Exception ex) { MelonLogger.Error($"SceneManager.sceneUnloaded override failed: {ex}"); } MonoEnumeratorWrapper.Register(); ClassInjector.RegisterTypeInIl2Cpp <SM_Component>(); SM_Component.Create(); unhollower = new UnhollowerInterface(); Interface.SetUnhollowerSupportInterface(unhollower); HarmonyLib.Public.Patching.PatchManager.ResolvePatcher += HarmonyMethodPatcher.TryResolve; return(new SupportModule_To()); }
public override void OnApplicationStart() { Logger = new MelonLogger.Instance("NearClipPlaneAdj", ConsoleColor.DarkYellow); MelonPreferences.CreateCategory("NearClipAdj", "NearClipPlane Adjuster"); changeClipOnLoad = MelonPreferences.CreateEntry <bool>("NearClipAdj", "changeClipOnLoad", true, "Change NearClip on world load"); UIX_butts_QM = MelonPreferences.CreateEntry("NearClipAdj", "UIX_butts_QM", true, "Place buttons in Settings QM instead of Settings Big Menu"); keybindsEnabled = MelonPreferences.CreateEntry <bool>("NearClipAdj", "Keyboard", true, "Keyboard Shortcuts: '[' - 0.0001, ']' - 0.05"); changeUIcam = MelonPreferences.CreateEntry <bool>("NearClipAdj", "changeUIcam", true, "Change UI Camera Nearclip"); smallerDefault = MelonPreferences.CreateEntry <bool>("NearClipAdj", "SmallerDefault", false, "Smaller Default Nearclip on World Change - 0.001 vs 0.01"); raiseNearClip = MelonPreferences.CreateEntry <bool>("NearClipAdj", "RaiseOnQuickMenu", false, "If using smaller Default Nearclip (0.001) raise to 0.01 when Quick Menu opens."); AMAPI_en = MelonPreferences.CreateEntry <bool>("NearClipAdj", "AMAPI_en", true, "Action Menu API Support (Requires Restart)"); amapi_ModsFolder = MelonPreferences.CreateEntry("NearClipAdj", "amapi_ModsFolder", false, "Place Action Menu in 'Mods' Sub Menu instead of 'Config' menu (Restert Required)"); defaultChangeBlackList = MelonPreferences.CreateEntry("NearClipAdj", "defaultChangeBlackList", true, "Check a blacklist for worlds to not auto change the NearClip on (Restart Required to Enable)"); ExpansionKitApi.GetExpandedMenu(ExpandedMenu.SettingsMenu).AddSimpleButton("Nearplane-0.05", (() => ChangeNearClipPlane(.05f, true)), (butt) => { n05 = butt; butt.SetActive(!UIX_butts_QM.Value); }); ExpansionKitApi.GetExpandedMenu(ExpandedMenu.SettingsMenu).AddSimpleButton("Nearplane-0.01", (() => ChangeNearClipPlane(.01f, true)), (butt) => { n01 = butt; butt.SetActive(!UIX_butts_QM.Value); }); ExpansionKitApi.GetExpandedMenu(ExpandedMenu.SettingsMenu).AddSimpleButton("Nearplane-0.001", (() => ChangeNearClipPlane(.001f, true)), (butt) => { n001 = butt; butt.SetActive(!UIX_butts_QM.Value); }); ExpansionKitApi.GetExpandedMenu(ExpandedMenu.SettingsMenu).AddSimpleButton("Nearplane-0.0001", (() => ChangeNearClipPlane(.0001f, true)), (butt) => { n0001 = butt; butt.SetActive(!UIX_butts_QM.Value); }); var clips = new float[] { .05f, .01f, .001f, .0001f, }; var Menu = ExpansionKitApi.CreateCustomQuickMenuPage(LayoutDescriptionCustom.QuickMenu1Column6Row); ExpansionKitApi.GetExpandedMenu(ExpandedMenu.UiElementsQuickMenu).AddSimpleButton("Near Clipping Plane Distance", () => Menu.Show(), (butt) => { QMbutt = butt; butt.SetActive(UIX_butts_QM.Value); }); Menu.AddLabel("Near Clipping Plane Distance"); foreach (var clip in clips) { Menu.AddSimpleButton($"Nearplane-{clip}", (() => ChangeNearClipPlane(clip, true))); } Menu.AddSimpleButton("Close", () => Menu.Hide()); Logger.Msg("Registering components..."); ClassInjector.RegisterTypeInIl2Cpp <EnableDisableListener>(); MelonCoroutines.Start(OnLoad()); if (MelonHandler.Mods.Any(m => m.Info.Name == "ActionMenuApi") && AMAPI_en.Value) { CustomActionMenu.InitUi(); } else { Logger.Msg("ActionMenuApi is missing, or setting is toggled off in Mod Settings - Not adding controls to ActionMenu"); } if (defaultChangeBlackList.Value) { GetBlackList(); } }
public override void OnApplicationStart() { CameraParsers = new VRCBhaptics_CameraParser[VRCBhaptics_Config.PositionArr.Length]; VRCBhaptics_Config.Initialize(); ClassInjector.RegisterTypeInIl2Cpp <VRCBhaptics_CameraParser>(); HarmonyInstance harmonyInstance = HarmonyInstance.Create("VRCBhapticsIntegration"); harmonyInstance.Patch(typeof(VRCAvatarManager).GetMethod("Awake", BindingFlags.Public | BindingFlags.Instance), null, new HarmonyMethod(typeof(VRCBhapticsIntegration).GetMethod("AwakePatch", BindingFlags.NonPublic | BindingFlags.Static))); }
public override void OnApplicationStart() { MelonLogger.Msg("Registering components..."); ClassInjector.RegisterTypeInIl2Cpp <EnableDisableListener>(); MelonLogger.Msg("Registering settings..."); Settings.Register(); Settings.Apply(); }
public override void OnApplicationStart() { _logger = LoggerInstance; ClassInjector.RegisterTypeInIl2Cpp <EnableDisableListener>(); WaitForUiInit(); _logger.Msg("Successfully loaded!"); }
public override void Load() { //Inject ClassInjector.RegisterTypeInIl2Cpp <ExploderBase>(); log = Log; var harmony = new Harmony(GUID); harmony.PatchAll(); }
internal static ISupportModule_To Initialize(ISupportModule_From interface_from) { Interface = interface_from; UnityMappers.RegisterMappers(); LogSupport.RemoveAllHandlers(); if (MelonDebug.IsEnabled()) { LogSupport.InfoHandler += MelonLogger.Msg; } LogSupport.WarningHandler += MelonLogger.Warning; LogSupport.ErrorHandler += MelonLogger.Error; if (MelonDebug.IsEnabled()) { LogSupport.TraceHandler += MelonLogger.Msg; } ClassInjector.Detour = new UnhollowerDetour(); InitializeUnityVersion(); ConsoleCleaner(); try { SceneManager.sceneLoaded = ( (SceneManager.sceneLoaded == null) ? new Action <Scene, LoadSceneMode>(OnSceneLoad) : Il2CppSystem.Delegate.Combine(SceneManager.sceneLoaded, (UnityAction <Scene, LoadSceneMode>) new Action <Scene, LoadSceneMode>(OnSceneLoad)).Cast <UnityAction <Scene, LoadSceneMode> >() ); } catch (Exception ex) { MelonLogger.Error($"SceneManager.sceneLoaded override failed: {ex}"); } try { SceneManager.sceneUnloaded = ( (SceneManager.sceneUnloaded == null) ? new Action <Scene>(OnSceneUnload) : Il2CppSystem.Delegate.Combine(SceneManager.sceneUnloaded, (UnityAction <Scene>) new Action <Scene>(OnSceneUnload)).Cast <UnityAction <Scene> >() ); } catch (Exception ex) { MelonLogger.Error($"SceneManager.sceneUnloaded override failed: {ex}"); } try { Camera.onPostRender = ( (Camera.onPostRender == null) ? new Action <Camera>(OnPostRender) : Il2CppSystem.Delegate.Combine(Camera.onPostRender, (Camera.CameraCallback) new Action <Camera>(OnPostRender)).Cast <Camera.CameraCallback>() ); } catch (Exception ex) { MelonLogger.Error($"Camera.onPostRender override failed: {ex}"); } ClassInjector.RegisterTypeInIl2Cpp <SM_Component>(); SM_Component.Create(); return(new SupportModule_To()); }
internal static void Setup() { #if CPP ClassInjector.RegisterTypeInIl2Cpp <ExplorerBehaviour>(); #endif var obj = new GameObject("ExplorerBehaviour"); GameObject.DontDestroyOnLoad(obj); obj.hideFlags |= HideFlags.HideAndDontSave; Instance = obj.AddComponent <ExplorerBehaviour>(); }
public static void OnApplicationStart() { ClassInjector.RegisterTypeInIl2Cpp <QuickMenuHideAvatarButtonHandler>(); ExpansionKitApi.RegisterSimpleMenuButton(ExpandedMenu.UserDetailsMenu, "Hide all avatars by this author", OnHideBigClick, ConsumeHideBigInstance); ExpansionKitApi.RegisterSimpleMenuButton(ExpandedMenu.UserQuickMenu, "Hide this avatar (on anyone)", OnHideAvatarClick, ConsumeOnHideAvatar); ExpansionKitApi.RegisterSimpleMenuButton(ExpandedMenu.SettingsMenu, "Reload all avatars", ReloadAllAvatars); MelonCoroutines.Start(InitThings()); }