private InSongBoard SetupLeaderboardObject() { GameObject Leaderboard = new GameObject("InSongLeaderboard"); Canvas canvas = Leaderboard.AddComponent <Canvas>(); canvas.renderMode = RenderMode.WorldSpace; CanvasScaler cs = Leaderboard.AddComponent <CanvasScaler>(); cs.scaleFactor = 1.0f; cs.dynamicPixelsPerUnit = 10f; GraphicRaycaster gr = Leaderboard.AddComponent <GraphicRaycaster>(); // Leaderboard.GetComponent<RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, 1f); // Leaderboard.GetComponent<RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, 1f); GameObject coreGameHUD = Resources.FindObjectsOfTypeAll <CoreGameHUDController>()?.FirstOrDefault(x => x.isActiveAndEnabled)?.gameObject ?? null; FlyingGameHUDRotation flyingGameHUD = Resources.FindObjectsOfTypeAll <FlyingGameHUDRotation>().FirstOrDefault(x => x.isActiveAndEnabled); if (coreGameHUD != null) { Leaderboard.transform.SetParent(coreGameHUD.transform, true); } // textObj.transform.position = new Vector3(0, 0f, 0); float depth = coreGameHUD != null?coreGameHUD.transform.GetChild(1).transform.position.z : 9f; if (flyingGameHUD != null) { depth = flyingGameHUD.transform.GetChild(0).transform.position.z / 2; // Leaderboard.transform.localPosition = new Vector3(0, 0.75f, 6f); Leaderboard.transform.eulerAngles = new Vector3(345f, 0f, 0f); } Leaderboard.transform.localPosition = new Vector3(PluginConfig.Instance.position.x, PluginConfig.Instance.position.y, depth); Leaderboard.transform.localRotation = Quaternion.identity; Leaderboard.transform.localScale = PluginConfig.Instance.scale * new Vector3(0.06f, 0.06f, 0.06f); var canvasSettings = Leaderboard.AddComponent <CurvedCanvasSettings>(); canvasSettings.SetRadius(0); var boardHandler = Leaderboard.AddComponent <InSongBoard>(); BSMLParser.instance.Parse(BeatSaberMarkupLanguage.Utilities. GetResourceContent(Assembly.GetExecutingAssembly(), "InSongLeaderboard.board.bsml"), Leaderboard, boardHandler); return(boardHandler); }
IEnumerator Init() { yield return(new WaitForSeconds(0.1f)); GameObject display = new GameObject("GMPDisplay"); GameObject textObj = new GameObject("GMPDisplayText"); if (Config.uiOnTop) { textObj.transform.position = new Vector3(0.1f, 3f, 7f); textObj.transform.localScale *= 1.5f; } else { textObj.transform.position = new Vector3(0.2f, -1f, 7f); textObj.transform.localScale *= 2.0f; } textObj.transform.SetParent(display.transform); var counterImage = Resources.FindObjectsOfTypeAll <ScoreMultiplierUIController>().First(). GetField <Image, ScoreMultiplierUIController>("_multiplierProgressImage"); GameObject canvasobj = new GameObject("GMPDisplayCanvas"); Canvas canvas = canvasobj.AddComponent <Canvas>(); canvas.renderMode = RenderMode.WorldSpace; CanvasScaler cs = canvasobj.AddComponent <CanvasScaler>(); cs.scaleFactor = 10.0f; cs.dynamicPixelsPerUnit = 10f; GraphicRaycaster gr = canvasobj.AddComponent <GraphicRaycaster>(); canvasobj.GetComponent <RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, 1f); canvasobj.GetComponent <RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, 1f); GameObject counter = new GameObject("GMPDisplayCounter"); chargeCounter = counter.AddComponent <ImageView>(); counter.transform.parent = canvasobj.transform; counter.GetComponent <RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, 0.5f); counter.GetComponent <RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, 0.5f); counter.transform.localScale = new Vector3(1f, 1f, 1f); chargeCounter.sprite = counterImage.sprite; chargeCounter.type = Image.Type.Filled; chargeCounter.fillMethod = Image.FillMethod.Radial360; chargeCounter.fillOrigin = (int)Image.Origin360.Top; chargeCounter.fillClockwise = true; chargeCounter.fillAmount = GameModifiersController.charges / Config.maxCharges; chargeCounter.color = Color.green; GameObject background = new GameObject("GMPDisplayBackGround"); var bg = background.AddComponent <ImageView>(); background.transform.parent = canvasobj.transform; background.GetComponent <RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, 0.5f); background.GetComponent <RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, 0.5f); background.transform.localScale = new Vector3(1f, 1f, 1f); bg.sprite = counterImage.sprite; bg.CrossFadeAlpha(0.05f, 1f, false); canvasobj.GetComponent <RectTransform>().SetParent(textObj.transform, false); canvasobj.transform.localPosition = new Vector3(-0.1f, -.1f, 0f); chargeText = BeatSaberMarkupLanguage.BeatSaberUI.CreateText(canvas.transform as RectTransform, "Charges", new Vector2(-0.25f, 0.5f)) as CurvedTextMeshPro; chargeText.fontSize = 3; chargeText.transform.localScale *= .08f; chargeText.color = Color.white; // chargeText.font = Resources.Load<TMP_FontAsset>("Teko-Medium SDF No Glow"); chargeText.GetComponent <RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, 1f); chargeText.GetComponent <RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, 1f); chargeText.GetComponent <RectTransform>().SetParent(canvas.transform, false); chargeCountText = BeatSaberMarkupLanguage.BeatSaberUI.CreateText(canvas.transform as RectTransform, GameModifiersController.charges.ToString(), new Vector2(0, 0)) as CurvedTextMeshPro; chargeCountText.text = GameModifiersController.charges.ToString(); chargeCountText.alignment = TextAlignmentOptions.Center; chargeCountText.transform.localScale *= .08f; chargeCountText.fontSize = 2.5f; chargeCountText.color = Color.white; chargeCountText.GetComponent <RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, 1f); chargeCountText.GetComponent <RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, 1f); chargeCountText.GetComponent <RectTransform>().SetParent(canvas.transform, false); // chargeCountText.transform.localPosition = new Vector3(-0.0925f, -.13f, 0f); cooldownText = BeatSaberMarkupLanguage.BeatSaberUI.CreateText(canvas.transform as RectTransform, GameModifiersController.charges.ToString(), new Vector2(-1f, 0.015f)) as CurvedTextMeshPro; cooldownText.text = ""; cooldownText.alignment = TextAlignmentOptions.MidlineRight; cooldownText.fontSize = 2.5f; cooldownText.transform.localScale *= .08f; cooldownText.color = Color.red; // cooldownText.font = Resources.Load<TMP_FontAsset>("Teko-Medium SDF No Glow"); cooldownText.GetComponent <RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, 10f); cooldownText.GetComponent <RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, 1f); cooldownText.GetComponent <RectTransform>().SetParent(canvas.transform, false); activeCommandText = BeatSaberMarkupLanguage.BeatSaberUI.CreateText(canvas.transform as RectTransform, GameModifiersController.charges.ToString(), new Vector2(1f, 0.015f)) as CurvedTextMeshPro; activeCommandText.text = ""; activeCommandText.alignment = TextAlignmentOptions.MidlineLeft; activeCommandText.fontSize = 2.5f; activeCommandText.transform.localScale *= .08f; activeCommandText.color = Color.yellow; // activeCommandText.font = Resources.Load<TMP_FontAsset>("Teko-Medium SDF No Glow"); activeCommandText.GetComponent <RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, 10f); activeCommandText.GetComponent <RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, 1f); activeCommandText.GetComponent <RectTransform>().SetParent(canvas.transform, false); GameObject coreGameHUD = Resources.FindObjectsOfTypeAll <CoreGameHUDController>()?.FirstOrDefault(x => x.isActiveAndEnabled)?.gameObject ?? null; FlyingGameHUDRotation flyingGameHUD = Resources.FindObjectsOfTypeAll <FlyingGameHUDRotation>().FirstOrDefault(x => x.isActiveAndEnabled); if (coreGameHUD != null) { display.transform.SetParent(coreGameHUD.transform, true); } // textObj.transform.position = new Vector3(0, 0f, 0); display.transform.localPosition = new Vector3(0, 0f, 0f); display.transform.localRotation = Quaternion.identity; if (flyingGameHUD != null) { display.transform.localPosition = new Vector3(0, 0.75f, 6f); display.transform.eulerAngles = new Vector3(345f, 0f, 0f); } var canvasSettings = canvasobj.AddComponent <CurvedCanvasSettings>(); canvasSettings.SetRadius(0); display.SetActive(GMPUI.chatIntegration); initialized = true; }
public static Canvas CreateCanvas(Vector3 Position, bool floatingHUD = false, float CanvasScaleFactor = 10) { Canvas canvas; GameObject CanvasGO = new GameObject("Counters+ | Counters Canvas"); canvas = CanvasGO.AddComponent <Canvas>(); System.DateTime date = System.DateTime.Now; if (date.Month == 4 && date.Day == 1 && CountersController.settings.AprilFoolsTomfoolery) { CanvasGO.AddComponent <OopsAllAprilFools>(); } canvas.renderMode = RenderMode.WorldSpace; CanvasGO.transform.localScale = Vector3.one / CanvasScaleFactor; CanvasGO.transform.position = Position; CanvasGO.transform.rotation = Quaternion.Euler(CountersController.settings.hudConfig.HUDRotation); GameObject coreGameHUD = Resources.FindObjectsOfTypeAll <CoreGameHUDController>()?.FirstOrDefault(x => x.isActiveAndEnabled)?.gameObject ?? null; FlyingGameHUDRotation flyingGameHUD = Resources.FindObjectsOfTypeAll <FlyingGameHUDRotation>().FirstOrDefault(x => x.isActiveAndEnabled); bool attachToHUD = flyingGameHUD != null && CountersController.settings.hudConfig.AttachToBaseGameHUDFor360; if (CountersController.settings.hudConfig.AttachBaseGameHUD && !attachToHUD && coreGameHUD != null) { coreGameHUD.transform.SetParent(CanvasGO.transform, true); coreGameHUD.transform.localScale = Vector3.one * 10; coreGameHUD.transform.localPosition = Vector3.zero; coreGameHUD.transform.localRotation = Quaternion.identity; foreach (Transform children in coreGameHUD.transform) { if (children.Find("BG")) { children.Find("BG").gameObject.SetActive(false); } if (children.Find("Top")) { children.Find("Top").gameObject.SetActive(false); } children.localPosition = new Vector3(children.localPosition.x, children.localPosition.y, 0); } if (flyingGameHUD != null) { Object.Destroy(coreGameHUD.GetComponent <FlyingGameHUDRotation>()); Transform container = coreGameHUD.transform.GetChild(0); container.localPosition = new Vector3(0, 1.8f, 0); container.localRotation = Quaternion.identity; foreach (Transform children in container) { switch (children.name) { default: break; case "EnergyPanel": children.localPosition = new Vector3(0, -120, 0); break; case "ComboPanel": children.localPosition = new Vector3(-160, -57.5f, 0); break; case "MultiplierCanvas": children.localPosition = new Vector3(160, 0, 0); break; } } } } else if (attachToHUD) { CanvasGO.transform.SetParent(coreGameHUD.transform.GetChild(0), false); CanvasGO.transform.localPosition = Vector3.down * 70; CanvasGO.transform.localRotation = Quaternion.identity; CanvasGO.transform.localScale = Vector3.one * 4; } if (floatingHUD && !attachToHUD) { CanvasGO.AddComponent <AssignedFloatingWindow>(); } return(canvas); }