예제 #1
0
        // TODO: maybe move this to GraphView since it's so connected?
        private void SetupToolbar()
        {
            _toolbar = new Toolbar()
            {
                name = "UdonToolbar",
            };
            _rootView.Add(_toolbar);

            _toolbar.Add(new ToolbarButton(() => { ReloadWelcome(); })
            {
                text = "Welcome"
            });

            _graphAssetName = new Label()
            {
                name = "assetName",
            };
            _toolbar.Add(_graphAssetName);

#if UNITY_2019_3_OR_NEWER
            _toolbar.Add(new ToolbarSpacer()
            {
                flex = true,
            });
#else
            _toolbar.Add(new ToolbarFlexSpacer());
#endif
            _updateOrderField = new VisualElement()
            {
                visible = false,
            };
            _updateOrderField.Add(new Label("UpdateOrder"));
            _updateOrderIntField = new IntegerField()
            {
                name  = "UpdateOrderIntegerField",
                value = (_graphAsset == null) ? 0 : _graphAsset.graphData.updateOrder,
            };
#if UNITY_2019_3_OR_NEWER
            _updateOrderIntField.RegisterValueChangedCallback((e) =>
#else
            _updateOrderIntField.OnValueChanged(e =>
#endif
            {
                _graphView.graphProgramAsset.graphData.updateOrder = e.newValue;
                _updateOrderField.visible = false;
            });
            _updateOrderIntField.isDelayed = true;
            _updateOrderField.Add(_updateOrderIntField);
            _toolbar.Add(_updateOrderField);

            _toolbarOptions = new ToolbarMenu
            {
                text = "Settings"
            };
            // Show Variables Window
            _toolbarOptions.menu.AppendAction("Show Variables",
                                              (m) => { _graphView.ToggleShowVariables(!_graphView.GetBlackboardVisible()); },
                                              (s) => { return(BoolToStatus(_graphView.GetBlackboardVisible())); });
            // Show Minimap
            _toolbarOptions.menu.AppendAction("Show MiniMap",
                                              (m) => { _graphView.ToggleShowMiniMap(!_graphView.GetMinimapVisible()); },
                                              (s) => { return(BoolToStatus(_graphView.GetMinimapVisible())); });
            _toolbarOptions.menu.AppendSeparator();
            // Show Update Order
            _toolbarOptions.menu.AppendAction("Show UpdateOrder", (m) =>
            {
#if UNITY_2019_3_OR_NEWER
                _updateOrderField.visible = !(m.status == DropdownMenuAction.Status.Checked);
#else
                _updateOrderField.visible = !(m.status == DropdownMenu.MenuAction.StatusFlags.Checked);
#endif
                if (_updateOrderField.visible)
                {
                    _updateOrderIntField.value = _graphAsset.graphData.updateOrder;
                }

                _updateOrderIntField.Focus();
                _updateOrderIntField.SelectAll();
            }, (s) => { return(BoolToStatus(_updateOrderField.visible)); });
            // Search On Noodle Drop
            _toolbarOptions.menu.AppendAction("Search on Noodle Drop",
                                              (m) => { Settings.SearchOnNoodleDrop = !Settings.SearchOnNoodleDrop; },
                                              (s) => { return(BoolToStatus(Settings.SearchOnNoodleDrop)); });
            // Search On Selected Node
            _toolbarOptions.menu.AppendAction("Search on Selected Node",
                                              (m) => { Settings.SearchOnSelectedNodeRegistry = !Settings.SearchOnSelectedNodeRegistry; },
                                              (s) => { return(BoolToStatus(Settings.SearchOnSelectedNodeRegistry)); });
            _toolbar.Add(_toolbarOptions);

            _graphCompile = new ToolbarButton(() =>
            {
                if (_graphAsset != null && _graphAsset is AbstractUdonProgramSource udonProgramSource)
                {
                    UdonEditorManager.Instance.QueueAndRefreshProgram(udonProgramSource);
                }
            })
            {
                text = "Compile"
            };
            _toolbar.Add(_graphCompile);

            _graphReload = new ToolbarButton(() => { _graphView.Reload(); })
            {
                text = "Reload"
            };
            _toolbar.Add(_graphReload);

            _graphStatus = new UdonGraphStatus(_rootView);
            _toolbar.Add(_graphStatus);

            ShowGraphTools(false);
        }