public AnyStatePriorityManagerNodeUI() : base()
        {
            _anyStateList = new NodeItemList(
                "Any States",
                "Any State",
                AnyStates,
                25,
                container => container.Add(new NamedItemFinder <AnyStateNodeUI>(StateMachineEditor.Editor.AnyStates)),
                (container, index) =>
            {
                void SelectAnyState(AnyStateNodeUI previousAnyState, AnyStateNodeUI newAnyState, int selectedIndex)
                {
                    AnyStates[index] = newAnyState;
                }

                var anyStateFinder             = container.Q <NamedItemFinder <AnyStateNodeUI> >();
                anyStateFinder.OnItemSelected -= SelectAnyState;
                anyStateFinder.OnItemSelected += SelectAnyState;
                anyStateFinder.SelectItemWithoutNotify(AnyStates[index], true);
            },
                () => null);
            extensionContainer.Add(_anyStateList);

            Button createAnyStatePriorityPortButton = new Button(() => CreateAnyStatePriorityPort())
            {
                text = "+ Any State"
            };

            //inputContainer.Add(createAnyStatePriorityPortButton);

            RefreshExpandedState();
            RefreshPorts();
        }
示例#2
0
        public AnyStateNodeUI() : base()
        {
            _filterList = new NodeItemList(
                "Filters",
                "Filter",
                _filters,
                20,
                container =>
            {
                container.Add(new AnyStateFilterVisualItem());
                container.AddToClassList("any-state__filters__item");
            },
                (container, index) => container.Q <AnyStateFilterVisualItem>().Bind(_filters[index]),
                () => new AnyStateFilterItem());
            _filterList.List.AddToClassList("any-state__filters");
            extensionContainer.Add(_filterList);
            //Foldout filtersFoldout = new Foldout() { value = false, text = "Filters" };
            //extensionContainer.Add(filtersFoldout);

            //VisualElement filterButtonsContainer = new VisualElement();
            //filterButtonsContainer.AddToClassList("any-state__filter-list-buttons");
            //filterButtonsContainer.style.flexDirection = FlexDirection.RowReverse;
            //filtersFoldout.Add(filterButtonsContainer);

            //Button addFilterButton = new Button(() =>
            //{
            //    _filters.Add(new AnyStateFilterItem());
            //    _filterList.Refresh();
            //}) { text = "Add Filter" };
            //filterButtonsContainer.Add(addFilterButton);

            //Button removeFilterButton = new Button(() =>
            //{
            //    if (_filterList.selectedItem == null) { return; }

            //    int firstIndex = _filterList.selectedIndex;
            //    int indexFixer = 0;

            //    foreach (int index in _filterList.selectedIndices)
            //    {
            //        _filters.RemoveAt(index - indexFixer);
            //        indexFixer++;
            //    }

            //    _filterList.selectedIndex = Mathf.Min(firstIndex, _filters.Count - 1);
            //    _filterList.Refresh();
            //}) { text = "Remove Filter" };
            //filterButtonsContainer.Add(removeFilterButton);

            //VisualElement filterListContainer = new VisualElement();
            //filterListContainer.RegisterCallback<MouseDownEvent>(e => e.StopPropagation());
            //filtersFoldout.Add(filterListContainer);

            //_filterList = new ResizableListView(_filters, 20, () => new AnyStateFilterVisualItem(), (filter, index) =>
            //{
            //    ((AnyStateFilterVisualItem)filter).Bind(_filters[index]);
            //})
            //{ reorderable = true, selectionType = SelectionType.Multiple };
            //_filterList.AddToClassList("any-state__filters");
            //filterListContainer.Add(_filterList);

            PriorityPort           = InstantiatePort(Orientation.Horizontal, Direction.Output, Port.Capacity.Single, typeof(float));
            PriorityPort.portName  = "Priority";
            PriorityPort.portColor = _portColor;

            RefreshExpandedState();
            RefreshPorts();

            RegisterCallback <GeometryChangedEvent>(e => ExitConnections.ForEach(c => c.Refresh()));

            RegisterCallback <DetachFromPanelEvent>(e =>
            {
                if (!StateMachineEditor.IsClosing)
                {
                    this.ClearConnections();
                }
            });
        }