/// <summary> /// Set the global watermark to show that the player has hmd only custom notes. /// </summary> public static void CreateWatermark() { if (_watermarkObject != null) { return; } _watermarkObject = new GameObject("CustomNotes Watermark"); _watermarkObject.transform.localScale = new Vector3(0.05f, 0.05f, 0.05f); _watermarkObject.transform.position = new Vector3(0f, 0.025f, 0.8f); _watermarkObject.transform.rotation = Quaternion.Euler(90, 0, 0); Canvas watermarkCanvas = _watermarkObject.AddComponent <Canvas>(); watermarkCanvas.renderMode = RenderMode.WorldSpace; ((RectTransform)watermarkCanvas.transform).sizeDelta = new Vector2(100, 50); CurvedCanvasSettings canvasSettings = _watermarkObject.AddComponent <CurvedCanvasSettings>(); canvasSettings.SetRadius(0f); CurvedTextMeshPro text = (CurvedTextMeshPro)BeatSaberUI.CreateText((RectTransform)watermarkCanvas.transform, "Custom Notes Enabled", new Vector2(0, 0)); text.alignment = TextAlignmentOptions.Center; text.color = new Color(0.95f, 0.95f, 0.95f); SetLayer(_watermarkObject, NoteLayer.ThirdPerson); }
private void Awake() { Logger.Log("Awake call"); this.rootObject = new GameObject("Nowplay Canvas", typeof(Canvas), typeof(CurvedCanvasSettings), typeof(VerticalLayoutGroup), typeof(ContentSizeFitter)); var sizeFitter = this.rootObject.GetComponent <ContentSizeFitter>(); sizeFitter.verticalFit = ContentSizeFitter.FitMode.PreferredSize; sizeFitter.horizontalFit = ContentSizeFitter.FitMode.PreferredSize; this._canvas = this.rootObject.GetComponent <Canvas>(); this._canvas.sortingOrder = 3; this._curvedCanvasSettings = this.rootObject.GetComponent <CurvedCanvasSettings>(); this._curvedCanvasSettings.SetRadius(0); this._canvas.renderMode = RenderMode.WorldSpace; var rectTransform = this._canvas.transform as RectTransform; rectTransform.sizeDelta = CanvasSize; this.SetLocation((Location)PluginConfig.Instance.NowPlayingLocation); this._nowPlayingText = this.CreateText(this._canvas.transform as RectTransform, String.Empty, new Vector2(10, 31)); rectTransform = this._nowPlayingText.transform as RectTransform; rectTransform.SetParent(this._canvas.transform, false); rectTransform.anchoredPosition = Vector2.one / 2; this._nowPlayingText.text = String.Empty; this._nowPlayingText.fontSize = 14; this.SetTextColor(); }
public void Initialize() { SetupTemplates(); GameObject = new GameObject(GetType().Namespace + " UI"); GameObject.transform.SetParent(_baseGameUiHandler.GetUIParent(), false); GameObject.transform.localPosition = new Vector3(0, 1.1f, 2.6f); GameObject.transform.localScale = new Vector3(0.02f, 0.02f, 0.02f); _curvedGO = GameObject.CreateGameObject("Curved UI"); _curvedGO.AddComponent <Canvas>().sortingOrder = 3; var canvasScaler = _curvedGO.AddComponent <CanvasScaler>(); canvasScaler.referencePixelsPerUnit = 10; canvasScaler.scaleFactor = 3.44f; var vrgr = _curvedGO.AddComponent <VRGraphicRaycaster>(); vrgr.SetField("_physicsRaycaster", _physicsRaycaster); _curvedGO.AddComponent <CanvasRenderer>(); _curvedCanvasSettings = _curvedGO.AddComponent <CurvedCanvasSettings>(); SetupUI(); }
public Canvas CreateCanvasWithConfig(HUDCanvas canvasSettings) { GameObject canvasGameObject = new GameObject($"Counters+ | {canvasSettings.Name} Canvas"); canvasGameObject.layer = UILayer; Vector3 canvasPos = canvasSettings.Position; if (canvasSettings.MatchBaseGameHUDDepth) { canvasPos.Set(canvasPos.x, canvasPos.y, hudDepth); } Vector3 canvasRot = canvasSettings.Rotation; float canvasSize = canvasSettings.Size; Canvas canvas = canvasGameObject.AddComponent <Canvas>(); canvas.renderMode = RenderMode.WorldSpace; canvasGameObject.transform.localScale = Vector3.one / canvasSize; canvasGameObject.transform.position = canvasPos; canvasGameObject.transform.rotation = Quaternion.Euler(canvasRot); CurvedCanvasSettings curvedCanvasSettings = canvasGameObject.AddComponent <CurvedCanvasSettings>(); curvedCanvasSettings.SetRadius(canvasSettings.CurveRadius); // Inherit canvas properties from the Energy Bar to ignore the shockwave effect. // However, a caveat as that, when viewing through walls, UI elements will not appear. if (canvasSettings.IgnoreShockwaveEffect && energyCanvas != null) { canvas.overrideSorting = energyCanvas.overrideSorting; canvas.sortingLayerID = energyCanvas.sortingLayerID; canvas.sortingLayerName = energyCanvas.sortingLayerName; canvas.sortingOrder = energyCanvas.sortingOrder; canvas.gameObject.layer = energyCanvas.gameObject.layer; } return(canvas); }