public override void VRChat_OnUiManagerInit() { ShowUserMethod = typeof(QuickMenu).GetMethods().Where(it => it.GetParameters().Length == 2 && it.GetParameters()[0].ParameterType.ToString() == "System.Int32" && it.GetParameters()[1].ParameterType.ToString() == "System.Boolean").First(); GameObject pageUserInfoObj = GameObject.Find("UserInterface/MenuContent/Screens/UserInfo"); if (pageUserInfoObj != null) { pageUserInfo = pageUserInfoObj.GetComponent <VRC.UI.PageUserInfo>(); if (pageUserInfo != null) { pageAvatar = Resources.FindObjectsOfTypeAll <VRC.UI.PageAvatar>().First(p => (p.transform.Find("Change Button") != null)); if (pageAvatar != null) { GameObject statspopup = GameObject.Find("UserInterface/MenuContent/Popups/AvatarStatsPopup"); if (statspopup != null) { Transform documentationbutton = statspopup.transform.Find("AvatarStatsMenu/_Buttons/DocumentationButton"); if (documentationbutton != null) { RectTransform recttrans = documentationbutton.GetComponent <RectTransform>(); if (recttrans != null) { recttrans.sizeDelta = new Vector2((recttrans.sizeDelta.x - 600), recttrans.sizeDelta.y); recttrans.localPosition = new Vector3((recttrans.localPosition.x - 300), recttrans.localPosition.y, recttrans.localPosition.z); } Transform buttontxt_trans = documentationbutton.Find("Text"); if (buttontxt_trans != null) { Text buttontxt = buttontxt_trans.GetComponent <Text>(); if (buttontxt != null) { buttontxt.fontSize -= 10; } } Transform buttonoverheadtxt_trans = documentationbutton.Find("Text (1)"); if (buttonoverheadtxt_trans != null) { RectTransform recttranstxt = buttonoverheadtxt_trans.GetComponent <RectTransform>(); if (recttranstxt != null) { recttranstxt.sizeDelta = new Vector2((recttranstxt.sizeDelta.x + 600), recttranstxt.sizeDelta.y); recttranstxt.localPosition = new Vector3((recttranstxt.localPosition.x + 300), recttranstxt.localPosition.y, recttranstxt.localPosition.z); } } Transform showcreatorbutton_trans = DuplicateButton(documentationbutton, "Show Avatar Author", new Vector2(600, 0)); Button showcreatorbutton = showcreatorbutton_trans.GetComponent <Button>(); showcreatorbutton.onClick = new Button.ButtonClickedEvent(); showcreatorbutton.onClick.AddListener(DelegateSupport.ConvertDelegate <UnityAction>(new Action(() => { if ((pageUserInfo != null) && (pageAvatar != null) && (pageAvatar.field_Public_SimpleAvatarPedestal_0 != null)) { VRC.Core.ApiAvatar currentApiAvatar = pageAvatar.field_Public_SimpleAvatarPedestal_0.field_Internal_ApiAvatar_0; if (currentApiAvatar != null) { string authorid = currentApiAvatar.authorId; if (!string.IsNullOrEmpty(authorid)) { HideCurrentPopup(); VRCUiManager.prop_VRCUiManager_0.Method_Public_Void_Boolean_1(true); VRC.Core.APIUser.FetchUser(authorid, new Action <VRC.Core.APIUser>((user) => { QuickMenu.prop_QuickMenu_0.prop_APIUser_0 = user; ShowUserMethod.Invoke(QuickMenu.prop_QuickMenu_0, new object[] { 4, false }); }), null); } } } }))); } } } } } }
IEnumerator WaitForUIManager() { yield return(VRCUiManagerUtils.WaitForUiManagerInit()); GameObject pageUserInfoObj = GameObject.Find("UserInterface/MenuContent/Screens/UserInfo"); if (pageUserInfoObj != null) { pageUserInfo = pageUserInfoObj.GetComponent <VRC.UI.PageUserInfo>(); if (pageUserInfo != null) { pageAvatar = Resources.FindObjectsOfTypeAll <VRC.UI.PageAvatar>().First(p => (p.transform.Find("Change Button") != null)); if (pageAvatar != null) { GameObject statspopup = GameObject.Find("UserInterface/MenuContent/Popups/AvatarStatsPopup"); if (statspopup != null) { Transform documentationbutton = statspopup.transform.Find("AvatarStatsMenu/_Buttons/DocumentationButton"); if (documentationbutton != null) { RectTransform recttrans = documentationbutton.GetComponent <RectTransform>(); if (recttrans != null) { recttrans.sizeDelta = new Vector2((recttrans.sizeDelta.x - 600), recttrans.sizeDelta.y); recttrans.localPosition = new Vector3((recttrans.localPosition.x - 300), recttrans.localPosition.y, recttrans.localPosition.z); } Transform buttontxt_trans = documentationbutton.Find("Text"); if (buttontxt_trans != null) { Text buttontxt = buttontxt_trans.GetComponent <Text>(); if (buttontxt != null) { buttontxt.fontSize -= 10; } } Transform buttonoverheadtxt_trans = documentationbutton.Find("Text (1)"); if (buttonoverheadtxt_trans != null) { RectTransform recttranstxt = buttonoverheadtxt_trans.GetComponent <RectTransform>(); if (recttranstxt != null) { recttranstxt.sizeDelta = new Vector2((recttranstxt.sizeDelta.x + 600), recttranstxt.sizeDelta.y); recttranstxt.localPosition = new Vector3((recttranstxt.localPosition.x + 300), recttranstxt.localPosition.y, recttranstxt.localPosition.z); } } Transform showcreatorbutton_trans = UnityUiUtils.DuplicateButton(documentationbutton, "Show Avatar Author", new Vector2(600, 0)); Button showcreatorbutton = showcreatorbutton_trans.GetComponent <Button>(); showcreatorbutton.onClick = new Button.ButtonClickedEvent(); showcreatorbutton.onClick.AddListener(() => { if ((pageUserInfo != null) && (pageAvatar != null) && (pageAvatar.avatar != null)) { VRC.Core.ApiAvatar currentApiAvatar = pageAvatar.avatar.apiAvatar; if (currentApiAvatar != null) { string authorid = currentApiAvatar.authorId; if (!string.IsNullOrEmpty(authorid)) { VRC.Core.APIUser.FetchUser(authorid, (VRC.Core.APIUser user) => { VRCUiManagerUtils.GetVRCUiManager().ShowScreen(pageUserInfo); pageUserInfo.SetupUserInfo(user); VRCUiPopupManagerUtils.GetVRCUiPopupManager().HideCurrentPopup(); }, null); } } } }); } } } } } }