protected virtual bool LockOn() { if (currentCharaInfo) { if (reduceOffset == true) { CameraTargetPos += targetOffsetSize; targetOffsetSize = new Vector3(); } else if (targetOffsetSize.magnitude > 0f) { reduceOffset = true; return(true); } List <string> targetList = currentCharaInfo is CharFemale?FileManager.GetQuickFemaleTargetNames() : FileManager.GetQuickMaleTargetNames(); if (!lockOnTarget) { return(LockOn(targetList[0])); } else { for (int i = 0; i < targetList.Count; i++) { if (lockOnTarget.name == targetList[i]) { int next = i + 1 > targetList.Count - 1 ? 0 : i + 1; return(LockOn(targetList[next])); } } return(LockOn(targetList[0])); } } return(false); }
private IEnumerator InstallSettingsReloadButton() { Transform systemMenuContent = studio.transform.Find("Canvas Main Menu/04_System/Viewport/Content"); if (systemMenuContent && !GameObject.Find("LockOnPluginReload")) { // wait for HSStudioNEOAddon specifically yield return(new WaitForSeconds(0.1f)); List <Transform> buttonlist = new List <Transform>(); List <GameObject> menuContents = new List <GameObject>(); systemMenuContent.FindLoopAll(menuContents); foreach (GameObject item in menuContents) { if (item.GetComponent <Button>()) { buttonlist.Add(item.transform); } } Transform parentButton = buttonlist[buttonlist.Count - 1]; GameObject newButton = Instantiate(parentButton.gameObject); newButton.name = "LockOnPluginReload"; newButton.transform.SetParent(parentButton.parent); newButton.transform.Find("Text").gameObject.GetComponent <Text>().text = "LockOnPlugin rld"; newButton.transform.localPosition = parentButton.localPosition - new Vector3(0f, 30f, 0f); newButton.transform.localScale = Vector3.one; Button buttonComponent = newButton.GetComponent <Button>(); buttonComponent.onClick = new Button.ButtonClickedEvent(); buttonComponent.onClick.AddListener(() => { LoadSettings(); targetManager.UpdateAllTargets(null); targetManager.UpdateAllTargets(currentCharaInfo); LockOn((currentCharaInfo is CharFemale ? FileManager.GetQuickFemaleTargetNames() : FileManager.GetQuickMaleTargetNames())[0]); reduceOffset = true; }); Console.WriteLine("LockOnPlugin reload button installed"); } yield break; }