Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        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();
        }
Esempio n. 3
0
        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();
        }
Esempio n. 4
0
        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);
        }