Example #1
0
        void AddSettingsMenu(ISettingsMenuProvider provider, MainMenuUI.ButtonData buttonData, ITooltip tooltip)
        {
            buttonData.sectionName = k_SettingsMenuSectionName;

            CreateFaceButton(buttonData, tooltip, () =>
            {
                var instance = m_MainMenuUI.AddSubmenu(k_SettingsMenuSectionName, provider.settingsMenuPrefab);
                m_SettingsMenus[provider]     = instance;
                provider.settingsMenuInstance = instance;
            });
        }
Example #2
0
        void AddSettingsMenu(ISettingsMenuProvider provider, MainMenuUI.ButtonData buttonData, ITooltip tooltip)
        {
            buttonData.sectionName = k_SettingsMenuSectionName;

            var button = CreateFaceButton(buttonData, tooltip, () =>
            {
                var instance = m_MainMenuUI.AddSubmenu(k_SettingsMenuSectionName, provider.settingsMenuPrefab);
                m_SettingsMenus[provider]     = instance;
                provider.settingsMenuInstance = instance;
                AddToggleHaptics(instance);
            });

            button.hovered += OnButtonHovered;
            button.clicked += OnButtonClicked;
        }
Example #3
0
        void CreateFaceButtons(List <Type> types)
        {
            foreach (var type in types)
            {
                var customMenuAttribute = (MainMenuItemAttribute)type.GetCustomAttributes(typeof(MainMenuItemAttribute), false).FirstOrDefault();
                if (customMenuAttribute != null && !customMenuAttribute.shown)
                {
                    continue;
                }

                var isTool             = typeof(ITool).IsAssignableFrom(type);
                var isWorkspace        = typeof(Workspace).IsAssignableFrom(type);
                var isSettingsProvider = typeof(ISettingsMenuProvider).IsAssignableFrom(type);

                var buttonData = new MainMenuUI.ButtonData();
                buttonData.name = type.Name;

                if (customMenuAttribute != null)
                {
                    buttonData.name        = customMenuAttribute.name;
                    buttonData.sectionName = customMenuAttribute.sectionName;
                    buttonData.description = customMenuAttribute.description;
                }
                else if (isTool)
                {
                    buttonData.name = type.Name.Replace("Tool", string.Empty);
                }
                else if (isWorkspace)
                {
                    // For workspaces that haven't specified a custom attribute, do some menu categorization automatically
                    buttonData.name        = type.Name.Replace("Workspace", string.Empty);
                    buttonData.sectionName = "Workspaces";
                }
                else if (isSettingsProvider)
                {
                    // For workspaces that haven't specified a custom attribute, do some menu categorization automatically
                    buttonData.name        = type.Name.Replace("Module", string.Empty);
                    buttonData.sectionName = "Settings";
                }

                var selectedType = type;                 // Local variable for proper closure
                m_MainMenuUI.CreateFaceButton(buttonData, b =>
                {
                    b.button.onClick.RemoveAllListeners();
                    if (isTool)
                    {
                        m_ToolButtons[selectedType] = b;

                        b.button.onClick.AddListener(() =>
                        {
                            if (visible && targetRayOrigin)
                            {
                                this.SelectTool(targetRayOrigin, selectedType);
                                UpdateToolButtons();
                            }
                        });
                    }
                    else if (isWorkspace)
                    {
                        b.button.onClick.AddListener(() =>
                        {
                            if (visible)
                            {
                                this.CreateWorkspace(selectedType);
                            }
                        });
                    }
                    else if (isSettingsProvider)
                    {
                        b.button.onClick.AddListener(() =>
                        {
                            var provider = settingsMenuProviders[selectedType];
                            provider.settingsMenuInstance = m_MainMenuUI.AddSubmenu(buttonData.sectionName, provider.settingsMenuPrefab);
                        });
                    }

                    if (customMenuAttribute != null && customMenuAttribute.tooltip != null)
                    {
                        b.tooltipText = customMenuAttribute.tooltip.tooltipText;
                    }
                });
            }
        }