コード例 #1
0
        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;
            }));
        }
コード例 #2
0
 static Il2CppManagedEnumerable()
 {
     ClassInjector.RegisterTypeInIl2Cpp <Il2CppManagedEnumerable>(new RegisterTypeOptions
     {
         Interfaces = new[] { typeof(Il2CppSystem.Collections.IEnumerable) }
     });
 }
コード例 #3
0
 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());
 }
コード例 #4
0
        public override void Load()
        {
            Log = base.Log;

            ClassInjector.RegisterTypeInIl2Cpp <DumbRendererDemosaic>();
            AddComponent <DumbRendererDemosaic>();
        }
コード例 #5
0
 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>();
 }
コード例 #6
0
        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!");
        }
コード例 #7
0
        public override void Load()
        {
            Harmony harmony = new Harmony("ovh.lapinolapidus.gtfo_drp");

            harmony.PatchAll();
            ClassInjector.RegisterTypeInIl2Cpp <RichPresence>();
        }
コード例 #8
0
        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));
            }
        }
コード例 #9
0
        public override void OnApplicationStart()
        {
            //StartConsoleBasedRepl();
            //MelonModLogger.Log("Loaded JS");

            ClassInjector.RegisterTypeInIl2Cpp <JintConsoleGui>();
        }
コード例 #10
0
ファイル: FavCatMod.cs プロジェクト: knah/VRCMods
        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);
        }
コード例 #11
0
ファイル: Program.cs プロジェクト: shalzuth/AutoGunfireReborn
        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));
            }
        }
コード例 #12
0
        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)));
            }
        }
コード例 #13
0
        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");
        }
コード例 #14
0
        public static void LoadUiObjects()
        {
            ClassInjector.RegisterTypeInIl2Cpp <Updater>();

            /* Load async to avoid race with UI Expansion kit */
            MelonCoroutines.Start(LoadUiElements());
        }
コード例 #15
0
        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");
        }
コード例 #16
0
        public JintConsoleGui(Delegate referencedDelegate, IntPtr methodInfo) : base(ClassInjector.DerivedConstructorPointer <JintConsoleGui>())
        {
            ClassInjector.DerivedConstructorBody(this);

            ReferencedDelegate = referencedDelegate;
            MethodInfo         = methodInfo;
        }
コード例 #17
0
        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());
        }
コード例 #18
0
        public override void Load()
        {
            ClassInjector.RegisterTypeInIl2Cpp <SoundPlayerScript>();

            var harmony = new Harmony("com.kasuromi.soundplayer");

            harmony.PatchAll();
        }
コード例 #19
0
ファイル: FreecamMain.cs プロジェクト: GTFO-Modding/Freecam
        public override void Load()
        {
            ClassInjector.RegisterTypeInIl2Cpp <FreecamManager>();
            Harmony harmonyPatches = new Harmony(GUID);

            harmonyPatches.PatchAll();
            log = Log;
        }
コード例 #20
0
        public override void OnApplicationStart()
        {
            ClassInjector.RegisterTypeInIl2Cpp <CustomParticleSettingsUiHandler>();

            MelonPreferences.CreateCategory(SettingsCategory, "Particle and DynBone limits").CreateEntry("dummy", false, "ignore this", true);

            ExpansionKitApi.RegisterWaitConditionBeforeDecorating(WaitForUixPrefabsAndRegister());
        }
コード例 #21
0
        public OffscreenCEF(Delegate referencedDelegate, IntPtr methodInfo) : base(ClassInjector
                                                                                   .DerivedConstructorPointer <OffscreenCEF>())
        {
            ClassInjector.DerivedConstructorBody(this);

            ReferencedDelegate = referencedDelegate;
            MethodInfo         = methodInfo;
        }
コード例 #22
0
        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());
        }
コード例 #23
0
        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();
            }
        }
コード例 #24
0
        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)));
        }
コード例 #25
0
        public override void OnApplicationStart()
        {
            MelonLogger.Msg("Registering components...");
            ClassInjector.RegisterTypeInIl2Cpp <EnableDisableListener>();

            MelonLogger.Msg("Registering settings...");
            Settings.Register();
            Settings.Apply();
        }
コード例 #26
0
        public override void OnApplicationStart()
        {
            _logger = LoggerInstance;

            ClassInjector.RegisterTypeInIl2Cpp <EnableDisableListener>();

            WaitForUiInit();

            _logger.Msg("Successfully loaded!");
        }
コード例 #27
0
        public override void Load()
        {
            //Inject
            ClassInjector.RegisterTypeInIl2Cpp <ExploderBase>();

            log = Log;
            var harmony = new Harmony(GUID);

            harmony.PatchAll();
        }
コード例 #28
0
        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());
        }
コード例 #29
0
        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>();
        }
コード例 #30
0
        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());
        }