Пример #1
0
        public BuilderNewSelectorField()
        {
            AddToClassList(s_UssClassName);

            styleSheets.Add(AssetDatabase.LoadAssetAtPath <StyleSheet>(s_UssPath));

#if UNITY_2019_2
            styleSheets.Add(AssetDatabase.LoadAssetAtPath <StyleSheet>(s_UssPath2019_2));
            if (EditorGUIUtility.isProSkin)
            {
                styleSheets.Add(AssetDatabase.LoadAssetAtPath <StyleSheet>(s_UssPathDark2019_2));
            }
            else
            {
                styleSheets.Add(AssetDatabase.LoadAssetAtPath <StyleSheet>(s_UssPathLight2019_2));
            }
#endif

            var template = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>(s_UxmlPath);
            template.CloneTree(this);

            m_TextField = this.Q <TextField>(s_TextFieldName);

            var popupContainer = this.Q(s_OptionsPopupContainerName);
            m_OptionsPopup = new ToolbarMenu();
            m_OptionsPopup.AddToClassList(s_OptionsPopupUssClassName);
            popupContainer.Add(m_OptionsPopup);

            SetUpPseudoStatesMenu();
            m_OptionsPopup.text = ":";
            m_OptionsPopup.SetEnabled(false);

            m_TextField.RegisterValueChangedCallback <string>(OnTextFieldValueChange);
        }
Пример #2
0
        protected ToolbarMenu CreateDropDownSettings(string ussClass)
        {
            var dropdownSettings = new ToolbarMenu()
            {
                name    = "dropdownSettings",
                variant = ToolbarMenu.Variant.Popup
            };

            Resources.Templates.DotsEditorCommon.AddStyles(dropdownSettings);
            dropdownSettings.AddToClassList(UssClasses.DotsEditorCommon.CommonResources);
            dropdownSettings.AddToClassList(ussClass);

            var arrow = dropdownSettings.Q(className: "unity-toolbar-menu__arrow");

            arrow.style.backgroundImage = null;

            return(dropdownSettings);
        }
Пример #3
0
        private VisualElement GetCreateShapeActionVisualElement()
        {
            ToolbarMenu shapeActionTypesList = new ToolbarMenu {
                text = "Add Action", style = { flexDirection = FlexDirection.Row }
            };

            shapeActionTypesList.RemoveFromClassList("unity-toolbar-menu");
            shapeActionTypesList.AddToClassList("unity-button");
            shapeActionTypesList.AddToClassList("create");

            foreach (ShapeActionFactory.ShapeActionType actionType in Enum
                     .GetValues(typeof(ShapeActionFactory.ShapeActionType))
                     .Cast <ShapeActionFactory.ShapeActionType>())
            {
                shapeActionTypesList.menu.AppendAction(
                    actionType.ToString(),
                    menuAction => AddShapeAction(actionType),
                    DropdownMenuAction.AlwaysEnabled);
            }

            return(shapeActionTypesList);
        }
        private VisualElement GetBottomVisualElement()
        {
            VisualElement visualElement = new VisualElement();

            if (m_ShapeBlueprintFactory == null)
            {
                return(visualElement);
            }

            ToolbarMenu blueprintsList = new ToolbarMenu {
                text = "Create new Blueprint", style = { flexDirection = FlexDirection.Row }
            };

            blueprintsList.RemoveFromClassList("unity-toolbar-menu");
            blueprintsList.AddToClassList("unity-button");
            blueprintsList.AddToClassList("create");

            CreateDropdown(blueprintsList.menu);
            visualElement.Add(blueprintsList);

            return(visualElement);
        }
Пример #5
0
        public ChoseShapeDataField(ShapeDataFactory shapeDataFactory, CanDependOnShapeBlueprint dependent,
                                   string fieldName, Func <TShapeData> getShapeDataFunc, Action <TShapeData> setShapeDataFunc)
        {
            m_DataFactory      = shapeDataFactory;
            m_Dependent        = dependent;
            m_FieldName        = fieldName;
            m_GetShapeDataFunc = getShapeDataFunc;
            m_SetShapeDataFunc = setShapeDataFunc;

            VisualElement firstRow = new VisualElement {
                style = { flexDirection = FlexDirection.Row }
            };

            firstRow.Add(m_Label = new Label());

            m_ToolbarMenu = new ToolbarMenu {
                text = "Change", style = { flexDirection = FlexDirection.Row }
            };
            m_ToolbarMenu.RemoveFromClassList("unity-toolbar-menu");
            m_ToolbarMenu.AddToClassList("unity-button");

            firstRow.Add(m_ToolbarMenu);

            Add(firstRow);

            IValidator pointNotEmptyValidator =
                new DataNotEmptyValidator <TShapeData>(getShapeDataFunc, action => m_UpdateValidatorAction = action);
            VisualElement validatorField = new ValidatorField(pointNotEmptyValidator);

            Add(validatorField);

            m_DataFactory.BecameDirty.Subscribe(BecameDirty);
            m_AutoSaveScheduler = schedule.Execute(Update);
            m_AutoSaveScheduler.Every(200);

            UpdateList();
            UpdateName();
            m_UpdateValidatorAction?.Invoke();
        }
        public BuilderNewSelectorField()
        {
            AddToClassList(s_UssClassName);

            styleSheets.Add(BuilderPackageUtilities.LoadAssetAtPath <StyleSheet>(s_UssPath));

            var template = BuilderPackageUtilities.LoadAssetAtPath <VisualTreeAsset>(s_UxmlPath);

            template.CloneTree(this);

            m_TextField = this.Q <TextField>(s_TextFieldName);

            var popupContainer = this.Q(s_OptionsPopupContainerName);

            m_OptionsPopup = new ToolbarMenu();
            m_OptionsPopup.AddToClassList(s_OptionsPopupUssClassName);
            popupContainer.Add(m_OptionsPopup);

            SetUpPseudoStatesMenu();
            m_OptionsPopup.text = ":";
            m_OptionsPopup.SetEnabled(false);

            m_TextField.RegisterValueChangedCallback <string>(OnTextFieldValueChange);
        }
Пример #7
0
        private void CreateToolbar()
        {
            _graphButton = new TextElement {
                tooltip = "Select a graph to edit"
            };
            _graphButton.AddToClassList(ToolbarButtonUssClassName);
            _graphButton.AddToClassList(ToolbarButtonLargeUssClassName);
            _graphButton.AddToClassList(ToolbarButtonFirstUssClassName);
            _graphButton.AddToClassList(ToolbarButtonGraphUssClassName);
            _graphButton.AddManipulator(new Clickable(() => ShowGraphPicker(GUIUtility.GUIToScreenPoint(_graphButton.worldBound.position))));

            _editButton = CreateEditMenu();
            _editButton.AddToClassList(ToolbarMenuUssClassName);

            _viewButton = CreateViewMenu();
            _viewButton.AddToClassList(ToolbarMenuUssClassName);

            _playButton = new Image {
                image = _playIcon.Texture, tooltip = "Resume execution of the graph"
            };
            _playButton.AddToClassList(ToolbarButtonUssClassName);
            _playButton.AddToClassList(ToolbarButtonSmallUssClassName);
            _playButton.AddManipulator(new Clickable(() => CurrentGraph.DebugPlay()));

            _pauseButton = new Image {
                image = _pauseIcon.Texture, tooltip = "Pause the execution of the graph"
            };
            _pauseButton.AddToClassList(ToolbarButtonUssClassName);
            _pauseButton.AddToClassList(ToolbarButtonSmallUssClassName);
            _pauseButton.AddManipulator(new Clickable(() => CurrentGraph.DebugPause()));

            _stepButton = new Image {
                image = _stepIcon.Texture, tooltip = "Step forward one node in the graph"
            };
            _stepButton.AddToClassList(ToolbarButtonUssClassName);
            _stepButton.AddToClassList(ToolbarButtonSmallUssClassName);
            _stepButton.AddManipulator(new Clickable(() => CurrentGraph.DebugStep()));

            _stopButton = new Image {
                image = _stopIcon.Texture, tooltip = "Stop executing the graph", tintColor = Color.gray
            };
            _stopButton.AddToClassList(ToolbarButtonUssClassName);
            _stopButton.AddToClassList(ToolbarButtonSmallUssClassName);
            _stopButton.AddManipulator(new Clickable(() => CurrentGraph.DebugStop()));

            _breakButton = new VisualElement {
                tooltip = "Enable/Disable node breakpoints for all graphs"
            };
            _breakButton.AddToClassList(ToolbarButtonUssClassName);
            _breakButton.AddToClassList(ToolbarButtonSmallUssClassName);
            _breakButton.AddToClassList(ToolbarButtonFirstUssClassName);
            _breakButton.AddManipulator(new Clickable(ToggleBreakpointsEnabled));

            var breakButton = new VisualElement();

            breakButton.AddToClassList(ToolbarButtonBreakpointUssClassName);

            _breakButton.Add(breakButton);

            _loggingButton = new Image {
                image = _logIcon.Texture, tooltip = "Enable/Disable logging of graph execution for all graphs"
            };
            _loggingButton.AddToClassList(ToolbarButtonUssClassName);
            _loggingButton.AddToClassList(ToolbarButtonSmallUssClassName);
            _loggingButton.AddManipulator(new Clickable(ToggleLoggingEnabled));

            _lockButton = new Image {
                tintColor = Color.black, tooltip = "Lock/Unlock this window so it won't be used when other graphs are opened"
            };
            _lockButton.AddToClassList(ToolbarButtonUssClassName);
            _lockButton.AddToClassList(ToolbarButtonSmallUssClassName);
            _lockButton.AddToClassList(ToolbarButtonLockUssClassName);
            _lockButton.AddManipulator(new Clickable(ToggleLockingEnabled));

            var watchButton = new Image {
                image = Icon.View.Texture, tooltip = "Open the Watch Window"
            };

            watchButton.AddToClassList(ToolbarButtonUssClassName);
            watchButton.AddToClassList(ToolbarButtonSmallUssClassName);
            watchButton.AddManipulator(new Clickable(WatchWindow.ShowWindow));

            RefreshToolbar();

            var toolbar = new Toolbar();

            toolbar.AddToClassList(ToolbarUssClassName);
            toolbar.Add(_graphButton);
            toolbar.Add(_editButton);
            toolbar.Add(_viewButton);
            toolbar.Add(_playButton);
            toolbar.Add(_pauseButton);
            toolbar.Add(_stepButton);
            toolbar.Add(_stopButton);
            toolbar.Add(new ToolbarSpacer {
                flex = true
            });
            toolbar.Add(_breakButton);
            toolbar.Add(_loggingButton);
            toolbar.Add(watchButton);
            toolbar.Add(_lockButton);

            Add(toolbar);
        }