private IEnumerator VRCToolsSetup() { VRCModLogger.Log("[VRCTools] Waiting for UI Manager..."); yield return(VRCUiManagerUtils.WaitForUiManagerInit()); VRCModLogger.Log("[VRCTools] UIManager initialised ! Resuming setup"); VRCModLogger.Log("[VRCTools] CheckDownloadFiles"); yield return(DependenciesDownloader.CheckDownloadFiles()); VRCModLogger.Log("[VRCTools] CheckVRCModLoaderHash"); yield return(VRCModLoaderUpdater.CheckVRCModLoaderHash()); if (ModPrefs.GetBool("vrctools", "enablediscordrichpresence")) { VRCModLogger.Log("[VRCTools] DiscordManager Init"); DiscordManager.Init(); } VRCModLogger.Log("[VRCTools] CheckForPermissions"); yield return(CheckForPermissions()); VRCModLogger.Log("[VRCTools] VRCModNetworkStatus Setup"); VRCModNetworkStatus.Setup(); VRCModLogger.Log("[VRCTools] ModConfigPage Setup"); ModConfigPage.Setup(); VRCModLogger.Log("[VRCTools] ModdedUsersManager Init"); ModdedUsersManager.Init(); VRCModLogger.Log("[VRCTools] Init done !"); VRCFlowManagerUtils.EnableVRCFlowManager(); initialising = false; Initialised = true; }
private IEnumerator VRCToolsSetup() { yield return(VRCUiManagerUtils.WaitForUiManagerInit()); yield return(DependenciesDownloader.CheckDownloadFiles()); yield return(VRCModLoaderUpdater.CheckVRCModLoaderHash()); if (ModPrefs.GetBool("vrctools", "enablediscordrichpresence")) { DiscordManager.Init(); } yield return(CheckForPermissions()); if (ModPrefs.GetBool("vrctools", "enableramexploitpatch")) { RamExploitPatcher.Patch(); } VRCModNetworkStatus.Setup(); ModConfigPage.Setup(); ModdedUsersManager.Init(); if (ModPrefs.GetBool("vrctools", "enablestealerdetector")) { AvatarStealerChecker.Setup(); } VRCFlowManagerUtils.EnableVRCFlowManager(); initialising = false; Initialised = true; }
private IEnumerator VRCToolsSetup() { VRCModLogger.Log("[VRCTools] Initialising VRCTools"); yield return(VRCUiManagerUtils.WaitForUiManagerInit()); VRCModLogger.Log("[VRCTools] Overwriting login button event"); VRCUiPageAuthentication loginPage = Resources.FindObjectsOfTypeAll <VRCUiPageAuthentication>().FirstOrDefault((page) => page.gameObject.name == "LoginUserPass"); if (loginPage != null) { Button loginButton = loginPage.transform.Find("ButtonDone (1)")?.GetComponent <Button>(); if (loginButton != null) { ButtonClickedEvent bce = loginButton.onClick; loginButton.onClick = new ButtonClickedEvent(); loginButton.onClick.AddListener(() => { VRCModNetworkManager.SetCredentials(GetTextFromUiInputField(loginPage.loginUserName) + ":" + GetTextFromUiInputField(loginPage.loginPassword)); bce?.Invoke(); }); } else { VRCModLogger.Log("[VRCTools] Unable to find login button in login page"); } } else { VRCModLogger.Log("[VRCTools] Unable to find login page"); } yield return(VRCModLoaderUpdater.CheckVRCModLoaderHash()); try { VRCModNetworkStatus.Setup(); ModConfigPage.Setup(); ModdedUsersManager.Init(); } catch (Exception ex) { VRCModLogger.Log("[VRCTools]" + ex.ToString()); } VRCModLogger.Log("[VRCTools] Init done !"); VRCUiPopupManagerUtils.GetVRCUiPopupManager().HideCurrentPopup(); Initialised = true; if (!usingVRCMenuUtils) { VRCFlowManagerUtils.EnableVRCFlowManager(); } VRCModNetworkManager.ConnectAsync(); }
//Copied from QuickMenu public static IEnumerator PlaceUiAfterPause() { yield return(null); yield return(null); yield return(null); yield return(null); VRCUiManagerUtils.GetVRCUiManager().PlaceUi(); GameObject.Find("UserInterface/MenuContent/Backdrop/Header").gameObject.SetActive(false); yield break; }
public static void Setup() { //Create mods config page GameObject screens = GameObject.Find("UserInterface/MenuContent/Screens"); GameObject avatarscreen = GameObject.Find("UserInterface/MenuContent/Screens/Avatar"); if (avatarscreen != null) { GameObject go = new GameObject("ModConfig", typeof(RectTransform), typeof(VRCUiPage)); go.transform.SetParent(screens.transform, false); go.GetComponent <VRCUiPage>().screenType = avatarscreen.GetComponent <VRCUiPage>().screenType; go.GetComponent <VRCUiPage>().displayName = "Mod Conf"; go.GetComponent <VRCUiPage>().AudioShow = avatarscreen.GetComponent <VRCUiPage>().AudioShow; go.GetComponent <VRCUiPage>().AudioLoop = avatarscreen.GetComponent <VRCUiPage>().AudioLoop; go.GetComponent <VRCUiPage>().AudioHide = avatarscreen.GetComponent <VRCUiPage>().AudioHide; go.AddComponent <ModConfigPage>(); //SCREEN CONTENT SIZE: 1500x1000 //Create mods config quickmenu button Transform baseButtonTransform = QuickMenuUtils.GetQuickMenuInstance().transform.Find("ShortcutMenu/CloseButton"); if (baseButtonTransform != null) { Transform modconf = UnityUiUtils.DuplicateButton(baseButtonTransform, "Mod\nConfigs", new Vector2(-420, 0)); modconf.name = "ModConfigsButton"; modconf.GetComponentInChildren <Text>().color = new Color(1, 0.5f, 0.1f); //modconf.GetComponent<Button>().interactable = false; modconf.GetComponent <Button>().onClick.RemoveAllListeners(); modconf.GetComponent <Button>().onClick.AddListener(() => { VRCUiManagerUtils.GetVRCUiManager().ShowUi(false, true); ModManager.StartCoroutine(QuickMenuUtils.PlaceUiAfterPause()); VRCUiManagerUtils.GetVRCUiManager().ShowScreen("UserInterface/MenuContent/Screens/ModConfig"); }); } else { VRCModLogger.Log("[ModConfigPage] QuickMenu/ShortcutMenu/CloseButton is null"); } } else { VRCModLogger.Log("[ModConfigPage] UserInterface/MenuContent/Screens/Avatar is null"); } }
void Awake() { scrollContent = UnityUiUtils.CreateScrollView(GetComponent <RectTransform>(), 1500, 850, 0, 875, false, true); // 1000 -> 800 scrollContent.parent.parent.localPosition = new Vector2(0, 62); CreateButton("Apply", -300, () => { ModPrefs.SaveConfigs(); VRCUiManagerUtils.GetVRCUiManager().CloseUi(true); VRCUiCursorManager.SetUiActive(false); }); CreateButton("Close", 300, () => { ResetConfigs(); VRCUiManagerUtils.GetVRCUiManager().CloseUi(true); VRCUiCursorManager.SetUiActive(false); }); SetupConfigs(); }
public static void Setup() { try { //Create mods config page VRCModLogger.Log("[ModConfigPage] Setup"); GameObject avatarscreen = GameObject.Find("UserInterface/MenuContent/Screens/Avatar"); GameObject cameramenu = GameObject.Find("UserInterface/MenuContent/Screens/CameraMenu"); VRCModLogger.Log("[ModConfigPage] avatarscreen: " + avatarscreen); if (avatarscreen != null) { VRCModLogger.Log("[ModConfigPage] Setting up ModConfigPage"); GameObject go = new GameObject("ModConfig", typeof(RectTransform), typeof(VRCUiPage)); go.transform.SetParent(avatarscreen.transform.parent, false); go.GetComponent <VRCUiPage>().screenType = avatarscreen.GetComponent <VRCUiPage>().screenType; go.GetComponent <VRCUiPage>().displayName = "Mod Conf"; go.GetComponent <VRCUiPage>().AudioShow = avatarscreen.GetComponent <VRCUiPage>().AudioShow; go.GetComponent <VRCUiPage>().AudioHide = avatarscreen.GetComponent <VRCUiPage>().AudioHide; VRCModLogger.Log("[ModConfigPage] Adding ModConfigPage component"); go.AddComponent <ModConfigPage>(); //SCREEN CONTENT SIZE: 1500x1000 VRCModLogger.Log("[ModConfigPage] Editing QuickMenu's Settings button"); Transform settingsButtonTransform = QuickMenuUtils.GetQuickMenuInstance().transform.Find("ShortcutMenu/SettingsButton"); settingsButtonTransform.GetComponentInChildren <Text>().text = "Mod/Game\nSettings"; settingsButtonTransform.GetComponent <UiTooltip>().text = "Tune Control, Audio, Video and Mod Settings. Log Out or Quit."; VRCModLogger.Log("[ModConfigPage] Editing QuickMenu's InfoBar"); Transform infobarpanelTransform = QuickMenuUtils.GetQuickMenuInstance().transform.Find("QuickMenu_NewElements/_InfoBar/Panel"); RectTransform infobarpanelRectTransform = infobarpanelTransform.GetComponent <RectTransform>(); infobarpanelRectTransform.sizeDelta = new Vector2(infobarpanelRectTransform.sizeDelta.x, infobarpanelRectTransform.sizeDelta.y + 80); infobarpanelRectTransform.anchoredPosition = new Vector2(infobarpanelRectTransform.anchoredPosition.x, infobarpanelRectTransform.anchoredPosition.y - 40); VRCModLogger.Log("[ModConfigPage] Setting up SettingsMenu"); Transform cameraMenuTransform = QuickMenuUtils.GetQuickMenuInstance().transform.Find("CameraMenu"); Transform settingsMenuTransform = Instantiate(cameraMenuTransform, QuickMenuUtils.GetQuickMenuInstance().transform); settingsMenuTransform.name = "SettingsMenu"; Button.ButtonClickedEvent showGameConfigMenu = settingsButtonTransform.GetComponent <Button>().onClick; settingsButtonTransform.GetComponent <Button>().onClick = new Button.ButtonClickedEvent(); settingsButtonTransform.GetComponent <Button>().onClick.AddListener(() => { QuickMenuUtils.ShowQuickmenuPage("SettingsMenu"); }); VRCModLogger.Log("[ModConfigPage] Editing QuickMenu's SettingsMenu buttons"); int i = 0; foreach (Transform child in settingsMenuTransform) { if (child != null) { if (i == 0) { child.name = "Game Settings"; child.GetComponentInChildren <Text>().text = "Game\nSettings"; child.GetComponent <UiTooltip>().text = "Tune Control, Audio and Video Settings. Log Out or Quit."; child.GetComponent <Button>().onClick = showGameConfigMenu; } else if (i == 1) { child.name = "Mod Settings"; child.GetComponentInChildren <Text>().text = "Mod\nSettings"; child.GetComponent <UiTooltip>().text = "Enable Features or Configure Installed Mods"; child.GetComponent <Button>().onClick = new Button.ButtonClickedEvent(); child.GetComponent <Button>().onClick.AddListener(() => { VRCUiManagerUtils.GetVRCUiManager().ShowUi(false, true); ModManager.StartCoroutine(QuickMenuUtils.PlaceUiAfterPause()); VRCUiManagerUtils.GetVRCUiManager().ShowScreen("UserInterface/MenuContent/Screens/ModConfig"); }); } else if (child.name != "BackButton") { Destroy(child.gameObject); } } i++; } } else { VRCModLogger.Log("[ModConfigPage] UserInterface/MenuContent/Screens/Avatar is null"); } } catch (Exception ex) { VRCModLoader.VRCModLogger.Log("[ModConfigPage] " + ex.ToString()); } }
private IEnumerator VRCToolsSetup() { initialising = true; VRCModLogger.Log("[VRCTools] Initialising VRCTools"); try { OculusUtils.ApplyPatches(); } catch (Exception e) { VRCModLogger.Log("[VRCTools] Error while applying Oculus patches: " + e); } yield return(VRCUiManagerUtils.WaitForUiManagerInit()); VRCModLogger.Log("[VRCTools] Overwriting login button event"); VRCUiPageAuthentication[] authpages = Resources.FindObjectsOfTypeAll <VRCUiPageAuthentication>(); VRCUiPageAuthentication loginPage = authpages.First((page) => page.gameObject.name == "LoginUserPass"); if (loginPage != null) { Button loginButton = loginPage.transform.Find("ButtonDone (1)")?.GetComponent <Button>(); if (loginButton != null) { ButtonClickedEvent bce = loginButton.onClick; loginButton.onClick = new ButtonClickedEvent(); loginButton.onClick.AddListener(() => { VRCModNetworkManager.SetCredentials(GetTextFromUiInputField(loginPage.loginUserName) + ":" + GetTextFromUiInputField(loginPage.loginPassword)); bce?.Invoke(); }); } else { VRCModLogger.Log("[VRCTools] Unable to find login button in login page"); } } else { VRCModLogger.Log("[VRCTools] Unable to find login page"); } yield return(DependenciesDownloader.CheckDownloadFiles()); yield return(VRCModLoaderUpdater.CheckVRCModLoaderHash()); if (ModPrefs.GetBool("vrctools", "enablediscordrichpresence")) { DiscordManager.Init(); } yield return(AvatarFavUpdater.CheckForAvatarFavUpdate()); VRCModNetworkStatus.Setup(); ModConfigPage.Setup(); ModdedUsersManager.Init(); /* * if (ApiCredentials.Load()) * { * VRCModLogger.Log("ApiCredentials.GetAuthTokenProviderUserId() => " + ApiCredentials.()); * if (!SecurePlayerPrefs.HasKey("vrcmnw_token_" + ApiCredentials.GetAuthTokenProviderUserId())) * { * ApiCredentials.Clear(); * } * } */ ApiCredentials.Clear(); VRCModLogger.Log("[VRCTools] Init done !"); VRCUiPopupManagerUtils.GetVRCUiPopupManager().HideCurrentPopup(); VRCFlowManagerUtils.EnableVRCFlowManager(); initialising = false; Initialised = true; VRCModNetworkManager.ConnectAsync(); }
private IEnumerator VRCToolsSetup() { VRCModLogger.Log("[VRCTools] Initialising VRCTools"); VRCModLogger.Log("[VRCTools] Current scene: " + SceneManager.GetActiveScene().name + "(index: " + SceneManager.GetActiveScene().buildIndex + ", path: " + SceneManager.GetActiveScene().path + ")"); VRCModLogger.Log("[VRCTools] ModComponent Sibling index: " + ModComponent.Instance.transform.GetSiblingIndex()); VRCModLogger.Log("[VRCTools] Root gameobjects:"); foreach (GameObject g in SceneManager.GetActiveScene().GetRootGameObjects()) { VRCModLogger.Log(" - " + g); } VRCModLogger.Log("[VRCTools] Call trace - THIS IS NOT AN ERROR:"); VRCModLogger.Log(new System.Diagnostics.StackTrace().ToString()); initializing = true; yield return(VRCUiManagerUtils.WaitForUiManagerInit()); if (!HarmonyLoaded()) { bool waitforpopup = true; VRCUiPopupManagerUtils.ShowPopup("VRCTools", "Missing library: Harmony. Please install it using the VRChat Mod Manager (see #how-to on discord.gg/rCqKSvR)", "Close game", () => Application.Quit(), "Ignore", () => waitforpopup = false); while (waitforpopup) { yield return(null); } Initialized = true; if (!usingVRCMenuUtils) { VRCFlowManagerUtils.EnableVRCFlowManager(); } yield break; } VRCModLogger.Log("[VRCTools] Overwriting login button event"); VRCUiPageAuthentication loginPage = Resources.FindObjectsOfTypeAll <VRCUiPageAuthentication>().FirstOrDefault((page) => page.gameObject.name == "LoginUserPass"); if (loginPage != null) { Button loginButton = loginPage.transform.Find("ButtonDone (1)")?.GetComponent <Button>(); if (loginButton != null) { ButtonClickedEvent bce = loginButton.onClick; loginButton.onClick = new ButtonClickedEvent(); loginButton.onClick.AddListener(() => { VRCModNetworkManager.SetCredentials(Uri.EscapeDataString(GetTextFromUiInputField(loginPage.loginUserName)) + ":" + Uri.EscapeDataString(GetTextFromUiInputField(loginPage.loginPassword))); bce?.Invoke(); }); } else { VRCModLogger.Log("[VRCTools] Unable to find login button in login page"); } } else { VRCModLogger.Log("[VRCTools] Unable to find login page"); } yield return(VRCModLoaderUpdater.CheckVRCModLoaderHash()); yield return(VRCToolsAutoUpdater.CheckAndUpdate()); try { VRCModNetworkStatus.Setup(); VRCModNetworkLogin.SetupVRCModNetworkLoginPage(); ModConfigPage.Setup(); ModdedUsersManager.Init(); } catch (Exception ex) { VRCModLogger.Log("[VRCTools]" + ex.ToString()); } VRCModLogger.Log("[VRCTools] Injecting VRCModNetwork login page"); VRCModNetworkLogin.InjectVRCModNetworkLoginPage(); yield return(VRCModNetworkManager.ConnectInit()); VRCUiPopupManagerUtils.GetVRCUiPopupManager().HideCurrentPopup(); Initialized = true; initializing = false; if (!usingVRCMenuUtils) { VRCFlowManagerUtils.EnableVRCFlowManager(); } }
private IEnumerator VRCToolsSetup() { VRCModLogger.Log("[VRCTools] Waiting for UI Manager..."); yield return(VRCUiManagerUtils.WaitForUiManagerInit()); VRCModLogger.Log("[VRCTools] UIManager initialised ! Resuming setup"); VRCModLogger.Log("[VRCTools] Overwriting login button event"); VRCUiPageAuthentication[] authpages = Resources.FindObjectsOfTypeAll <VRCUiPageAuthentication>(); VRCUiPageAuthentication loginPage = authpages.First((page) => page.gameObject.name == "LoginUserPass"); if (loginPage != null) { Button loginButton = loginPage.transform.Find("ButtonDone (1)")?.GetComponent <Button>(); if (loginButton != null) { ButtonClickedEvent bce = loginButton.onClick; loginButton.onClick = new ButtonClickedEvent(); loginButton.onClick.AddListener(() => { VRCModNetworkManager.SetCredentials(GetTextFromUiInputField(loginPage.loginUserName) + ":" + GetTextFromUiInputField(loginPage.loginPassword)); bce?.Invoke(); }); } else { VRCModLogger.Log("[VRCTools] Unable to find login button in login page"); } } else { VRCModLogger.Log("[VRCTools] Unable to find login page"); } VRCModLogger.Log("[VRCTools] CheckDownloadFiles"); yield return(DependenciesDownloader.CheckDownloadFiles()); VRCModLogger.Log("[VRCTools] CheckVRCModLoaderHash"); yield return(VRCModLoaderUpdater.CheckVRCModLoaderHash()); if (ModPrefs.GetBool("vrctools", "enablediscordrichpresence")) { VRCModLogger.Log("[VRCTools] DiscordManager Init"); DiscordManager.Init(); } VRCModLogger.Log("[VRCTools] CheckForPermissions"); yield return(CheckForPermissions()); VRCModLogger.Log("[VRCTools] VRCModNetworkStatus Setup"); VRCModNetworkStatus.Setup(); VRCModLogger.Log("[VRCTools] ModConfigPage Setup"); ModConfigPage.Setup(); VRCModLogger.Log("[VRCTools] ModdedUsersManager Init"); ModdedUsersManager.Init(); VRCUiManagerUtils.OnPageShown += (page) => { VRCModLogger.Log("[VRCTools] OnPageShown: " + page.screenType + " " + (string.IsNullOrEmpty(page.displayName) ? "" : page.displayName + " ") + "(" + page.GetType() + ")"); }; VRCModLogger.Log("[VRCTools] Init done !"); VRCFlowManagerUtils.EnableVRCFlowManager(); initialising = false; Initialised = true; //DebugUtils.PrintHierarchy(VRCUiManagerUtils.GetVRCUiManager().transform.root, 0); }