private void AddCustomSaberButton()
        {
            _rightScreen = ReflectionUtil.GetPrivateField <VRUIViewController>(_mainMenuViewController, "_releaseInfoViewController");
            _rightPos    = _rightScreen.rectTransform;
            var customSaberButton = CreateButton(_rightPos);

            if (customSaberButton == null)
            {
                return;
            }

            SetButtonText(ref customSaberButton, "Saber Menu");
            customSaberButton.onClick.AddListener(delegate
            {
                if (_sabersMasterViewController == null)
                {
                    _sabersMasterViewController = CreateViewController <CustomSaberMasterViewController>();
                }

                _rightScreen.PresentModalViewController(_sabersMasterViewController, null);
            });
        }
        protected override void DidActivate(bool firstActivation, ActivationType activationType)
        {
            previewparent = Instantiate(new GameObject("preview parent"));
            previewparent.transform.position = new Vector3(2.5f, 1, 0.3f);
            previewparent.transform.Rotate(new Vector3(0, -30, 0));
            _customSaberUI        = CustomSaberUI.Instance;
            _parentViewController = GetComponentInParent <CustomSaberMasterViewController>();
            try
            {
                if (_pageDownButton == null)
                {
                    try
                    {
                        _pageDownButton = _customSaberUI.CreateButton(rectTransform, "PageDownButton");
                        ((RectTransform)_pageDownButton.transform).anchorMin        = new Vector2(0.5f, 0f);
                        ((RectTransform)_pageDownButton.transform).anchorMax        = new Vector2(0.5f, 0f);
                        ((RectTransform)_pageDownButton.transform).anchoredPosition = new Vector2(0f, 10f);
                        _pageDownButton.interactable = true;
                        _pageDownButton.onClick.AddListener(delegate()
                        {
                            _sabersTableView.PageScrollDown();
                        });
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e);
                        throw;
                    }
                }
                if (_pageUpButton == null)
                {
                    try
                    {
                        _pageUpButton = _customSaberUI.CreateButton(rectTransform, "PageUpButton");
                        ((RectTransform)_pageUpButton.transform).anchorMin        = new Vector2(0.5f, 1f);
                        ((RectTransform)_pageUpButton.transform).anchorMax        = new Vector2(0.5f, 1f);
                        ((RectTransform)_pageUpButton.transform).anchoredPosition = new Vector2(0f, -14f);
                        _pageUpButton.interactable = true;
                        _pageUpButton.onClick.AddListener(delegate()
                        {
                            _sabersTableView.PageScrollUp();
                        });
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e);
                        throw;
                    }
                }


                if (_sabersTableView == null)
                {
                    _sabersTableView = new GameObject().AddComponent <TableView>();

                    _sabersTableView.transform.SetParent(rectTransform, false);

                    var viewportMask = Instantiate(Resources.FindObjectsOfTypeAll <Mask>().First(), _sabersTableView.transform, false);
                    viewportMask.transform.DetachChildren();
                    _sabersTableView.GetComponentsInChildren <RectTransform>().First(x => x.name == "Content").transform.SetParent(viewportMask.rectTransform, false);

                    ((RectTransform)_sabersTableView.transform).anchorMin        = new Vector2(0f, 0.5f);
                    ((RectTransform)_sabersTableView.transform).anchorMax        = new Vector2(1f, 0.5f);
                    ((RectTransform)_sabersTableView.transform).sizeDelta        = new Vector2(0f, 60f);
                    ((RectTransform)_sabersTableView.transform).anchoredPosition = new Vector2(0f, 0f);

                    _sabersTableView.didSelectRowEvent += _sabersTableView_DidSelectRowEvent;

                    ReflectionUtil.SetPrivateField(_sabersTableView, "_pageUpButton", _pageUpButton);
                    ReflectionUtil.SetPrivateField(_sabersTableView, "_pageDownButton", _pageDownButton);

                    _sabersTableView.dataSource = this;

                    _sabersTableView.ScrollToRow(0, false);
                }
                else
                {
                    _sabersTableView.ReloadData();
                    _sabersTableView.ScrollToRow(0, false);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }


            _songListTableCellInstance = Resources.FindObjectsOfTypeAll <StandardLevelListTableCell>().First(x => (x.name == "StandardLevelListTableCell"));

            LoadSabers();

            base.DidActivate(true, ActivationType.AddedToHierarchy);
        }