Ejemplo n.º 1
0
        void CreateDefaultTools()
        {
            m_DefaultTools.Clear();

            for (int i = 0; i < (int)Tool.Custom; i++)
            {
                var button = new ToolButton((Tool)i);
                button.displayChanged += () => EditorToolbarUtility.SetupChildrenAsButtonStrip(m_DefaultTools);
                m_DefaultTools.Add(button);
            }

            foreach (var type in EditorToolManager.activeToolContext.GetAdditionalToolTypes())
            {
                if (!typeof(EditorTool).IsAssignableFrom(type))
                {
                    Debug.LogError($"{type} must be assignable to EditorTool, and not abstract.");
                    continue;
                }

                var addl   = EditorToolManager.GetSingleton(type) as EditorTool;
                var button = new ComponentToolButton <EditorTool>(addl);
                m_DefaultTools.Add(button);
            }

            EditorToolbarUtility.SetupChildrenAsButtonStrip(m_DefaultTools);
        }
Ejemplo n.º 2
0
        public PlayModeButtons()
        {
            name = "PlayMode";

            Add(m_UIElementsRoot = new VisualElement());
            m_UIElementsRoot.style.flexDirection = FlexDirection.Row;

            m_UIElementsRoot.Add(m_PlayButton = new EditorToolbarToggle
            {
                name    = "Play",
                onIcon  = EditorGUIUtility.FindTexture("PlayButton On"),
                offIcon = EditorGUIUtility.FindTexture("PlayButton"),
            });
            m_PlayButton.RegisterCallback <MouseDownEvent>(evt => OnPlayButtonRMBClick(evt));
            m_PlayButton.RegisterValueChangedCallback(OnPlayButtonValueChanged);

            m_UIElementsRoot.Add(m_PauseButton = new EditorToolbarToggle
            {
                name    = "Pause",
                onIcon  = EditorGUIUtility.FindTexture("PauseButton On"),
                offIcon = EditorGUIUtility.FindTexture("PauseButton"),
            });
            m_PauseButton.RegisterValueChangedCallback(OnPauseButtonValueChanged);

            m_UIElementsRoot.Add(m_StepButton = new EditorToolbarButton {
                name = "Step"
            });
            m_StepButton.clickable.activators.Add(new ManipulatorActivationFilter {
                button = MouseButton.RightMouse
            });
            m_StepButton.clicked += OnStepButtonClicked;
            m_StepButton.icon     = EditorGUIUtility.FindTexture("StepButton");

            EditorToolbarUtility.SetupChildrenAsButtonStrip(m_UIElementsRoot);

            Add(m_ImguiOverride           = new IMGUIContainer());
            m_ImguiOverride.style.display = DisplayStyle.None;
            m_ImguiOverride.style.width   = k_ImguiOverrideWidth;

            UpdatePlayState();
            UpdatePauseState();
            UpdateStepState();

            //Immediately after a domain reload, Modes might be initialized after the toolbar so we wait a frame to check it
            EditorApplication.delayCall += () =>
            {
                CheckAvailability();
                CheckImguiOverride();
            };

            RegisterCallback <AttachToPanelEvent>(OnAttachedToPanel);
            RegisterCallback <DetachFromPanelEvent>(OnDetachFromPanel);
        }
Ejemplo n.º 3
0
        void Refresh()
        {
            for (int i = childCount - 1; i > -1; i--)
            {
                RemoveAt(i);
            }

            AddToClassList("toolbar-contents");

            if ((EditorToolManager.GetCustomEditorToolsCount(false) + EditorToolManager.availableComponentContextCount) < 1)
            {
                return;
            }

            EditorToolManager.GetComponentToolsForSharedTracker(s_EditorTools);
            s_SortedTools.Clear();

            // Display available tools grouped by their target component
            foreach (var tool in s_EditorTools)
            {
                var component = tool.target;

                if (component == null)
                {
                    continue;
                }

                if (!s_SortedTools.TryGetValue(component, out List <EditorTool> editorTools))
                {
                    editorTools = new List <EditorTool>();
                    s_SortedTools.Add(component, editorTools);
                }
                editorTools.Add(tool);
            }

            foreach (var kvp in s_SortedTools)
            {
                var tools = new VisualElement()
                {
                    name = "Component Tools"
                };
                tools.AddToClassList("toolbar-contents");

                foreach (var tool in kvp.Value)
                {
                    tools.Add(new ComponentToolButton <EditorTool>(tool));
                }
                EditorToolbarUtility.SetupChildrenAsButtonStrip(tools);

                Add(tools);
            }
        }
Ejemplo n.º 4
0
        // Used by MainToolbar, as it doesn't use the same Overlay styling
        internal void LoadToolbarElements(VisualElement root)
        {
            if (root == null)
            {
                throw new ArgumentNullException(nameof(root));
            }

            EditorToolbarUtility.LoadStyleSheets("EditorToolbar", root);

            foreach (var id in m_ToolbarElements)
            {
                if (TryCreateElement(id, m_Context, out var ve))
                {
                    root.Add(ve);
                }
            }
        }
Ejemplo n.º 5
0
        public BuiltinToolsStrip()
        {
            name = "BuiltinTools";

            EditorToolbarUtility.SetupChildrenAsButtonStrip(this);

            // Only show the contexts dropdown if there are non-builtin contexts available
            if (EditorToolUtility.toolContextsInProject > 1)
            {
                var contexts = new ToolContextButton();
                contexts.AddToClassList(EditorToolbarUtility.aloneStripElementClassName);
                Add(contexts);
            }

            // View and Builtin Transform Tools
            m_DefaultTools = new VisualElement()
            {
                name = "Builtin View and Transform Tools"
            };
            m_DefaultTools.AddToClassList("toolbar-contents");
            Add(m_DefaultTools);

            this.RegisterCallback <AttachToPanelEvent>(OnAttachToPanel);
            this.RegisterCallback <DetachFromPanelEvent>(OnDetachFromPanel);

            CreateDefaultTools();

            // Custom global tools button (only shown if custom global tools exist in project)
            // A single "overflow" toggle+dropdown for additional global tools
            var customToolButton = new LastCustomToolButton();

            customToolButton.AddToClassList(EditorToolbarUtility.aloneStripElementClassName);
            Add(customToolButton);

            // Component tools are last
            Add(new ComponentToolsStrip());
        }