private static IEnumerator WaitForUIManager() { VRCModLogger.Log("WaitForUIManager"); if (uiManagerInstance == null) { FieldInfo[] nonpublicStaticFields = typeof(VRCUiManager).GetFields(BindingFlags.NonPublic | BindingFlags.Static); if (nonpublicStaticFields.Length == 0) { VRCModLogger.Log("[VRCToolsUpdater] nonpublicStaticFields.Length == 0"); yield break; } FieldInfo uiManagerInstanceField = nonpublicStaticFields.First(field => field.FieldType == typeof(VRCUiManager)); if (uiManagerInstanceField == null) { VRCModLogger.Log("[VRCToolsUpdater] uiManagerInstanceField == null"); yield break; } uiManagerInstance = uiManagerInstanceField.GetValue(null) as VRCUiManager; VRCModLogger.Log("[VRCToolsUpdater] Waiting for UI Manager..."); while (uiManagerInstance == null) { uiManagerInstance = uiManagerInstanceField.GetValue(null) as VRCUiManager; yield return(null); } VRCModLogger.Log("[VRCToolsUpdater] UI Manager loaded"); } }
public static void ShowUIPage(VRCUiPage page, bool removeHeader = true, bool setupBody = true) { if (!setupBody) { VRCUiManager.ShowScreen(page); return; } IEnumerator placeUi() { for (int i = 0; i < 4; i++) { yield return(null); } VRCUiManager.PlaceUi(); if (removeHeader) { VRCEUi.ScreenHeader.SetActive(false); } } VRCUiManager.ShowUi(false, true); VRCUiManager.StartCoroutine(placeUi()); VRCUiManager.ShowScreen(page); }
// Fetch the VRCUiManager instance public static VRCUiManager GetVRCUiMInstance() { if (vrcuimInstance == null) { vrcuimInstance = VRCUiManager.prop_VRCUiManager_0; } return(vrcuimInstance); }
// Fetch the VRCUiManager instance public static VRCUiManager GetVRCUiMInstance() { if (vrcuimInstance == null) { vrcuimInstance = VRCUiManager.field_Protected_Static_VRCUiManager_0; } return(vrcuimInstance); }
private static bool PlaceUiPatch(VRCUiManager __instance, bool __0) { if (!Utils.IsInVR() || !_comfyVRMenu) { return(true); } float scale = Utils.GetVRCTrackingManager() != null?Utils.GetVRCTrackingManager().transform.localScale.x : 1f; if (scale <= 0f) { scale = 1f; } __instance.playerTrackingDisplay.position = Utils.GetWorldCameraPosition(); Vector3 rotation = GameObject.Find("Camera (eye)").transform.rotation.eulerAngles; Vector3 euler = new Vector3(rotation.x - 30f, rotation.y, 0f); if (Utils.GetVRCPlayer() == null) { euler.x = euler.z = 0f; } if (!__0) { __instance.playerTrackingDisplay.rotation = Quaternion.Euler(euler); } else { Quaternion quaternion = Quaternion.Euler(euler); if (!(Quaternion.Angle(__instance.playerTrackingDisplay.rotation, quaternion) < __instance.QuantizedAngleDegrees)) { if (!(Quaternion.Angle(__instance.playerTrackingDisplay.rotation, quaternion) < __instance.MaxAngleDegrees)) { __instance.playerTrackingDisplay.rotation = Quaternion.RotateTowards(__instance.playerTrackingDisplay.rotation, quaternion, __instance.MaxDeltaDegreesFast); } else { __instance.playerTrackingDisplay.rotation = Quaternion.RotateTowards(__instance.playerTrackingDisplay.rotation, quaternion, __instance.MaxDeltaDegrees); } } } if (scale >= 0f) { __instance.playerTrackingDisplay.localScale = scale * Vector3.one; } else { __instance.playerTrackingDisplay.localScale = Vector3.one; } if (scale > float.Epsilon) { __instance.unscaledUIRoot.localScale = 1f / scale * Vector3.one; } else { __instance.unscaledUIRoot.localScale = Vector3.one; } return(false); }
public static VRCUiManager GetVRCUiMInstance() { if (ModComponent.VrcuimInstance == null) { var method = typeof(VRCUiManager).GetMethod("get_Instance", BindingFlags.Static | BindingFlags.Public); if (method == null) { return(null); } ModComponent.VrcuimInstance = (VRCUiManager)method.Invoke(null, new object[0]); } return(VrcuimInstance); }
private static void HideCurrentPopup() { VRCUiManager vRCUiManager = GetVRCUiManager(); if (vRCUiManager == null) { return; } if (!vRCUiManager.field_Internal_Dictionary_2_String_VRCUiPage_0.ContainsKey("POPUP")) { return; } VRCUiPage item = vRCUiManager.field_Internal_Dictionary_2_String_VRCUiPage_0["POPUP"]; item.gameObject.SetActive(false); if (item.field_Public_Action_1 != null) { item.field_Public_Action_1.Invoke(); } vRCUiManager.field_Internal_Dictionary_2_String_VRCUiPage_0.Remove("POPUP"); }
public IEnumerator WaitForQM() { while (GameObject.Find("/UserInterface/Canvas_QuickMenu(Clone)/Container/Window/MicButton") == null) //Why wait for the MicButton, because I use this in other mods so I only need to fix one thing if it breaks in the future! Also you can't open the camera without going through the QM { yield return(new WaitForSeconds(1f)); } _uiManagerInstance = (VRCUiManager)typeof(VRCUiManager).GetMethods().First(x => x.ReturnType == typeof(VRCUiManager)).Invoke(null, new object[0]); vertical = VRCInputManager.field_Private_Static_Dictionary_2_String_VRCInput_0["Vertical"]; horizontal = VRCInputManager.field_Private_Static_Dictionary_2_String_VRCInput_0["Horizontal"]; CreateIndicators(); if (movementToggle.Value) { coroutine = MelonCoroutines.Start(AutoSet()); } Logger.Msg(ConsoleColor.Green, $"Listing JoystickNames"); foreach (var name in Input.GetJoystickNames()) { Logger.Msg(ConsoleColor.Green, $"{name}"); } }
public static VRCUiManager GetVRCUiManager() { if (uiManagerInstance == null) { FieldInfo[] nonpublicStaticPopupFields = typeof(VRCUiManager).GetFields(BindingFlags.NonPublic | BindingFlags.Static); if (nonpublicStaticPopupFields.Length == 0) { VRCModLogger.Log("[VRCUiManagerUtils] nonpublicStaticPopupFields.Length == 0"); return(null); } FieldInfo uiManagerInstanceField = nonpublicStaticPopupFields.First(field => field.FieldType == typeof(VRCUiManager)); if (uiManagerInstanceField == null) { VRCModLogger.Log("[VRCUiManagerUtils] uiManagerInstanceField == null"); return(null); } uiManagerInstance = uiManagerInstanceField.GetValue(null) as VRCUiManager; } return(uiManagerInstance); }
public static void ShowScreen(this VRCUiManager vrcUiManager, string screen, bool additive = false) { vrcUiManager.Method_Public_Void_String_Boolean_0(screen, additive); }
public void OnUiManagerInit() { VRCUiPageAuthentication authPage = GetAuthPage(); Button doneButton = authPage.transform.Find("ButtonDone (1)").GetComponent <Button>(); Button.ButtonClickedEvent doneButton_onClick = doneButton.onClick; doneButton.onClick = new Button.ButtonClickedEvent(); doneButton.onClick.AddListener(new Action(() => { SavePlayerPrefs(); doneButton_onClick.Invoke(); })); GameObject.Find("UserInterface/MenuContent/Screens/Authentication/Login2FA/BoxLogin2FA/ButtonBack").GetComponent <Button>().onClick.AddListener(new Action(LoadPlayerPrefs)); Transform popupcheckboxtrans = GameObject.Find("UserInterface/MenuContent/Popups/PerformanceSettingsPopup").GetComponent <PopupPerformanceOptions>().dynamicBoneOptionsPage.transform.Find("Checkboxes/LimitDynamicBoneUsage"); GameObject newcheckbox = GameObject.Instantiate(popupcheckboxtrans.gameObject, authPage.field_Public_UiInputField_0.transform.parent); newcheckbox.name = "RememberMe"; GameObject.Destroy(newcheckbox.transform.GetChild(2).gameObject); GameObject.Destroy(newcheckbox.transform.GetChild(3).gameObject); GameObject.Destroy(newcheckbox.transform.GetChild(4).gameObject); GameObject.Destroy(newcheckbox.transform.GetChild(5).gameObject); Transform newcheckbox_desc_trans = newcheckbox.transform.Find("Description"); newcheckbox_desc_trans.GetComponent <Text>().text = "Remember Me"; Toggle newcheckbox_toggle = newcheckbox.GetComponent <Toggle>(); newcheckbox_toggle.isOn = SecurePlayerPrefs.HasKey(ToggleKey); newcheckbox_toggle.onValueChanged = new Toggle.ToggleEvent(); newcheckbox_toggle.onValueChanged.AddListener(new Action <bool>((newvalue) => { if (!newvalue) { SecurePlayerPrefs.DeleteKey(ToggleKey); } else { SecurePlayerPrefs.SetString(ToggleKey, "true", SecurePlayerPrefsPassword); } })); newcheckbox.transform.localPosition = new Vector3((authPage.field_Public_UiInputField_1.transform.localPosition.x - 130), (authPage.field_Public_UiInputField_1.transform.localPosition.y - 45), authPage.field_Public_UiInputField_1.transform.localPosition.z); authPage.field_Public_UiInputField_0.transform.localPosition = new Vector3(authPage.field_Public_UiInputField_0.transform.localPosition.x, (authPage.field_Public_UiInputField_0.transform.localPosition.y + 30), authPage.field_Public_UiInputField_0.transform.localPosition.z); authPage.field_Public_UiInputField_1.transform.localPosition = new Vector3(authPage.field_Public_UiInputField_1.transform.localPosition.x, (authPage.field_Public_UiInputField_1.transform.localPosition.y + 30), authPage.field_Public_UiInputField_1.transform.localPosition.z); ValidateTextTargetMethod = typeof(InputFieldValidator).GetMethods(BindingFlags.Instance | BindingFlags.Public) .Single(it => it.GetParameters().Length == 1 && XrefScanner.XrefScan(it).Any(jt => jt.Type == XrefType.Global && jt.ReadAsObject()?.ToString() == "^([\\w\\.\\-\\+]+)@([\\w\\-]+)((\\.(\\w){2,3})+)$")); LoadPlayerPrefs(); VRCUiManager uiManager = GetVRCUiManager(); uiManager.field_Private_Action_1_VRCUiPage_0 = ( (uiManager.field_Private_Action_1_VRCUiPage_0 == null) ? new Action <VRCUiPage>(OnPageShown) : Il2CppSystem.Delegate.Combine(uiManager.field_Private_Action_1_VRCUiPage_0, (Il2CppSystem.Action <VRCUiPage>) new Action <VRCUiPage>(OnPageShown)).Cast <Il2CppSystem.Action <VRCUiPage> >() ); }
private static bool PlaceUiPatch(VRCUiManager __instance, bool __0) { if (!Utils.IsInVR()) { return(true); } float num = Utils.GetVRCTrackingManager() != null?Utils.GetVRCTrackingManager().transform.localScale.x : 1f; if (num <= 0f) { num = 1f; } var playerTrackingDisplay = __instance.transform; var unscaledUIRoot = __instance.transform.Find("UnscaledUI"); playerTrackingDisplay.position = Utils.GetWorldCameraPosition(); Vector3 rotation = GameObject.Find("Camera (eye)").transform.rotation.eulerAngles; Vector3 euler = new Vector3(rotation.x - 30f, rotation.y, 0f); //if (rotation.x > 0f && rotation.x < 300f) rotation.x = 0f; if (Utils.GetVRCPlayer() == null) { euler.x = euler.z = 0f; } if (!__0) { playerTrackingDisplay.rotation = Quaternion.Euler(euler); } else { Quaternion quaternion = Quaternion.Euler(euler); if (!(Quaternion.Angle(playerTrackingDisplay.rotation, quaternion) < 15f)) { if (!(Quaternion.Angle(playerTrackingDisplay.rotation, quaternion) < 25f)) { playerTrackingDisplay.rotation = Quaternion.RotateTowards(playerTrackingDisplay.rotation, quaternion, 5f); } else { playerTrackingDisplay.rotation = Quaternion.RotateTowards(playerTrackingDisplay.rotation, quaternion, 1f); } } } if (num >= 0f) { playerTrackingDisplay.localScale = num * Vector3.one; } else { playerTrackingDisplay.localScale = Vector3.one; } if (num > float.Epsilon) { unscaledUIRoot.localScale = 1f / num * Vector3.one; } else { unscaledUIRoot.localScale = Vector3.one; } return(false); }
public static VRCUiPage GetPage(string pageId) => VRCUiManager?.GetPage(pageId);