Exemple #1
0
        public GoalView(VisualElement _rootElement, VisualElement _leftPanel, VisualElement _rightPanel, Action <Guid> _updateLastSelectedCallback)
            : base(_rootElement, _leftPanel, _rightPanel)
        {
            m_Label = "Goals";
            tooltip = "Create and configure the goals that agents want to achieve.";

            var visualTreeAsset = Resources.Load <VisualTreeAsset>("LayoutGoalConfigurator");

            visualTreeAsset.CloneTree(m_ConfiguratorElement);

            PuppeteerManager.Instance.LoadDescriptionsOfType <GoalDescription>();

            m_SerialisedGoals = PuppeteerManager.Instance.GetGoalDescriptions();

            for (int i = 0; i < m_SerialisedGoals.Count; ++i)
            {
                CreateGoalListItem(m_SerialisedGoals[i]);
            }

            m_ContextMenuScrollView = new ContextualMenuManipulator(_menubuilder =>
            {
                _menubuilder.menu.AppendAction("Create New Goal", _dropDownMenuAction => { AddNewGoalListItem(); }, DropdownMenuAction.Status.Normal);
            });

            m_OnUpdateSerialisedLastSelected = _updateLastSelectedCallback;
            OnListItemSelectedOrRemoved      = ListItemSelectedOrRemoved;
        }
Exemple #2
0
    private void PopulateTags(bool isOpen)
    {
        Foldout tagsFoldout = rootVisualElement.Q <Foldout>("TagsFoldout");

        tagsFoldout.SetValueWithoutNotify(isOpen);
        tagsFoldout.Clear();
        ListView listView = CreateListViewForTags();

        tagsFoldout.Add(listView);

        List <ScriptableTag> tags = ScriptableSettingsManager.Instance.Tags;

        for (int i = 0; i < tags.Count; i++)
        {
            Toggle toggle = new Toggle();
            toggle.text = " " + tags[i].name;
            int index = i;
            toggle.RegisterValueChangedCallback(x => OnToggleTag(tags[index], x));
            ContextualMenuManipulator manipulator = new ContextualMenuManipulator(x =>
            {
                x.menu.AppendAction("Delete", y => DeleteTag(tags[index]));
            })
            {
                target = toggle
            };
            listView.Add(toggle);
        }

        listView.style.height = Mathf.Min(tags.Count * 20, 100);
        Button tagsAdd = rootVisualElement.Q <Button>("TagsAdd");

        tagsAdd.clicked -= GoToCreateNewTag;
        tagsAdd.clicked += GoToCreateNewTag;
    }
Exemple #3
0
        public Node()
        {
            RegisterCallback <GeometryChangedEvent>(OnGeometryChanged);

            m_ContextualMenuManipulator = new ContextualMenuManipulator(BuildContextualMenu);
            this.AddManipulator(m_ContextualMenuManipulator);
        }
Exemple #4
0
        public Port()
        {
            m_ContextualMenuManipulator = new ContextualMenuManipulator(BuildContextualMenu);
            this.AddManipulator(m_ContextualMenuManipulator);

            RegisterCallback <CustomStyleResolvedEvent>(OnCustomStyleResolved);
        }
Exemple #5
0
 void SetContextMenuManipulator(Button element, ScriptableSettings scriptableSettings)
 {
     ContextualMenuManipulator m = new ContextualMenuManipulator(x => ShowButtonContextMenu(scriptableSettings, x))
     {
         target = element
     };
 }
Exemple #6
0
        public MarkerTrack(Timeline owner) : base(owner)
        {
            name = "Markers";
            AddToClassList("markerTrack");

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

            m_MarkerOverlapIndicators = new List <MarkerOverlapIndicator>();
            var manipulator = new ContextualMenuManipulator(evt =>
            {
                DropdownMenu menu = evt.menu;
                float time        = m_Owner.WorldPositionToTime(evt.mousePosition.x);
                if (m_Owner.ViewMode == TimelineViewMode.frames)
                {
                    time = (float)TimelineUtility.RoundToFrame(time, Clip.SampleRate);
                }

                string timeStr = TimelineUtility.GetTimeString(m_Owner.ViewMode, time, (int)Clip.SampleRate);

                menu.AppendAction($"Add Marker at {timeStr}", null, DropdownMenuAction.Status.Disabled);
                menu.AppendSeparator();
                var menuStatus = EditorApplication.isPlaying ? DropdownMenuAction.Status.Disabled : DropdownMenuAction.Status.Normal;
                foreach (Type markerType in MarkerAttribute.GetMarkerTypes())
                {
                    evt.menu.AppendAction(MarkerAttribute.GetDescription(markerType), action => OnAddAnnotationSelection(markerType, time), a => menuStatus, markerType);
                }
            });

            this.AddManipulator(manipulator);
        }
Exemple #7
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ModelUI"/> class.
        /// </summary>
        protected ModelUI()
        {
            Dependencies = new UIDependencies(this);
            RegisterCallback <CustomStyleResolvedEvent>(OnCustomStyleResolved);
            RegisterCallback <GeometryChangedEvent>(OnGeometryChanged);
            RegisterCallback <DetachFromPanelEvent>(OnDetachedFromPanel);

            ContextualMenuManipulator = new ContextualMenuManipulator(BuildContextualMenu);
        }
Exemple #8
0
    private void CreateContextMenu(VisualElement visualElement)
    {
        ContextualMenuManipulator menuManipulator = new ContextualMenuManipulator(PopulateContextMenu);

        visualElement.focusable   = true;
        visualElement.pickingMode = PickingMode.Position;
        visualElement.AddManipulator(menuManipulator);

        visualElement.AddManipulator(menuManipulator);
    }
Exemple #9
0
        public Placemat()
        {
            focusable  = true;
            usageHints = UsageHints.DynamicTransform;

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

            m_ContextualMenuManipulator = new ContextualMenuManipulator(BuildContextualMenu);
            this.AddManipulator(m_ContextualMenuManipulator);
        }
Exemple #10
0
        public TagElement(Track track, TaggedAnimationClip clip, TagAnnotation tag) : base(track)
        {
            m_Tag     = tag;
            focusable = true;

            AddToClassList("clipTagRoot");

            m_ManipulateStartLabel = new Label();
            m_ManipulateStartLabel.AddToClassList("tagManipulateStartLabel");
            m_ManipulateStartLabel.AddToClassList("tagManipulateLabel");

            m_ManipulateEndLabel = new Label();
            m_ManipulateEndLabel.AddToClassList("tagManipulateEndLabel");
            m_ManipulateEndLabel.AddToClassList("tagManipulateLabel");

            m_BackgroundColor = AnnotationAttribute.GetColor(m_Tag.Type);
            var background = m_BackgroundColor;

            background.r         *= k_BackgroundAlpha;
            background.g         *= k_BackgroundAlpha;
            background.b         *= k_BackgroundAlpha;
            style.backgroundColor = background;
            int   hash = new Random(m_Tag.payload.GetHashedData()).Next();
            Color colorFromValueHash = ColorUtility.FromHtmlString("#" + Convert.ToString(hash, 16));
            Color borderColor        = background;

            borderColor.r           = (borderColor.r + colorFromValueHash.r) / 2;
            borderColor.g           = (borderColor.g + colorFromValueHash.g) / 2;
            borderColor.b           = (borderColor.b + colorFromValueHash.b) / 2;
            style.borderLeftColor   = borderColor;
            style.borderBottomColor = borderColor;
            style.borderRightColor  = borderColor;

            VisualElement startHandle = CreateHandle(TagManipulator.Mode.StartTime);

            startHandle.style.left = -4;
            Insert(0, startHandle);
            startHandle.Add(m_ManipulateStartLabel);

            m_LabelContainer.AddManipulator(new TagManipulator(this, TagManipulator.Mode.Body));
            m_Label.text = string.IsNullOrEmpty(m_Tag.name) ? m_Tag.Name : m_Tag.name;

            VisualElement endHandle = CreateHandle(TagManipulator.Mode.Duration);

            endHandle.style.left = 4;
            Add(endHandle);
            endHandle.Add(m_ManipulateEndLabel);

            var contextMenuManipulator = new ContextualMenuManipulator(OpenTagRemoveMenu);

            this.AddManipulator(contextMenuManipulator);

            RegisterCallback <AttachToPanelEvent>(OnAttachToPanel);
        }
        void SetupManipulators(VisualElement element)
        {
            element.AddManipulator(new MarkerManipulator(this));
            var contextManipulator = new ContextualMenuManipulator((obj) =>
            {
                SelectMarkerMenu(obj);
                obj.menu.AppendSeparator();
            });

            element.AddManipulator(contextManipulator);
        }
Exemple #12
0
    public EdgeConnector()
    {
        activators.Add(new ManipulatorActivationFilter()
        {
            button = MouseButton.LeftMouse
        });

        m_Active = false;

        m_AddEdgeMenu = new ContextualMenuManipulator(OnContextualMenuPopulate);
    }
        public AnnotationsTrack(Timeline owner) : base(owner)
        {
            m_TracksContextManipulator = new ContextualMenuManipulator(evt =>
            {
                string timeStr = TimelineUtility.GetTimeString(m_Owner.ViewMode, m_Owner.ActiveTime, (int)Clip.SampleRate);
                evt.menu.AppendAction($"Add Annotation at {timeStr}", null, DropdownMenuAction.Status.Disabled);
                evt.menu.AppendSeparator();

                AddTagMenu(evt, action => OnAddAnnotationSelection(action.userData as Type), EditorApplication.isPlaying ? DropdownMenuAction.Status.Disabled : DropdownMenuAction.Status.Normal);
                evt.menu.AppendSeparator();
                AddMarkerMenu(evt, action => OnAddAnnotationSelection(action.userData as Type), EditorApplication.isPlaying ? DropdownMenuAction.Status.Disabled : DropdownMenuAction.Status.Normal);
            });
        }
Exemple #14
0
        void SetupSoundBankMenu()
        {
            //Setup the dropdown menu
            ContextualMenuManipulator loadSoundBanksMenu = new ContextualMenuManipulator(BuildSoundBankMenu);

            loadSoundBanksMenu.target = _RootElement;

            Label soundBankLabel = _ControlElement.Query <Label>("LoadSoundBank");

            if (soundBankLabel != null)
            {
                soundBankLabel.AddManipulator(loadSoundBanksMenu);
            }
        }
Exemple #15
0
        void SetupLoadSavedMenu()
        {
            //Setup the dropdown menu
            ContextualMenuManipulator m = new ContextualMenuManipulator(BuildSavedPatternMenu);

            m.target = _RootElement;

            Label label = _ControlElement.Query <Label>("Load");

            if (label != null)
            {
                label.AddManipulator(m);
            }
        }
Exemple #16
0
    public EdgeConnector()
    {
        // ノードの接続は左クリックで行う
        activators.Add(new ManipulatorActivationFilter()
        {
            button = MouseButton.LeftMouse
        });

        m_Active = false;

        // メニュー選択マニピュレータは作っておくが、この時点ではターゲットが確定していないので、
        // RegisterCallbacksOnTarget()で追加する
        m_AddEdgeMenu = new ContextualMenuManipulator(OnContextualMenuPopulate);
    }
Exemple #17
0
        public Edge()
        {
            GraphElementsHelper.LoadTemplateAndStylesheet(this, "Edge", "ge-edge");

            Container = this.Q("container");
            Debug.Assert(Container != null);

            this.AddManipulator(new EdgeManipulator());

            m_ContextualMenuManipulator = new ContextualMenuManipulator(BuildContextualMenu);
            this.AddManipulator(m_ContextualMenuManipulator);

            RegisterCallback <AttachToPanelEvent>(OnEdgeAttach);
            RegisterCallback <GeometryChangedEvent>(OnGeometryChanged);
        }
        protected override void CreateVisualElements(SerializedProperty property)
        {
            _currentNameLabel = new Label("None");
            _currentNameLabel.AddToClassList("bb-name-dropdown");
            FieldsContainer.Add(_currentNameLabel);

            UpdateNames(property);
            var currentName = property.FindPropertyRelative("_name").stringValue;

            SetNewName(currentName);

            var manipulator = new ContextualMenuManipulator(PopulateContextMenu);

            _currentNameLabel.AddManipulator(manipulator);
        }
Exemple #19
0
        public TreeSelector()
        {
            var targetLabel = new Label("Target:");

            targetLabel.AddToClassList("target-label");
            Add(targetLabel);

            _dropdownElement = new VisualElement();
            _dropdownElement.AddToClassList("tree-selector-dropdown");
            Add(_dropdownElement);

            _currentName = new Label(NoTargetText);
            _dropdownElement.Add(_currentName);

            var manipulator = new ContextualMenuManipulator(CreateMenu);

            this.AddManipulator(manipulator);
        }
Exemple #20
0
        public NodeTaskProvider(TaskNodeData data)
        {
            CurrentType       = data?.TaskImplementation?.GetType();
            _currentTaskIndex = TaskFactory.GetIndex(CurrentType);

            var manipulator = new ContextualMenuManipulator(CreateMenu);

            manipulator.activators.Add(new ManipulatorActivationFilter()
            {
                button = MouseButton.LeftMouse, clickCount = 1
            });

            _label                = new Label();
            _label.text           = ObjectNames.NicifyVariableName(TaskFactory.NamesEditor[_currentTaskIndex]);
            _label.style.fontSize = 13;
            _label.AddToClassList("node-task-button");
            _label.AddManipulator(manipulator);
            Add(_label);
        }
        public BoundaryAnimationClipElement()
        {
            AddToClassList("boundaryClip");
            AddToClassList("unity-button");

            m_Clips = new List <TaggedAnimationClip>();

            m_Button           = new Button();
            m_Button.clickable = null;
            m_Button.RemoveFromClassList("unity-button");
            Add(m_Button);

            var selectClipContextManipulator = new ContextualMenuManipulator(evt =>
            {
                evt.menu.AppendAction("None", dropDownMenuAction => { Select(null); });
                evt.menu.AppendSeparator();
                foreach (var clip in m_Clips)
                {
                    var statusCallback = clip == m_Selection ? DropdownMenuAction.Status.Checked : DropdownMenuAction.Status.Normal;
                    evt.menu.AppendAction(clip.ClipName, dropDownMenuAction =>
                    {
                        Select(dropDownMenuAction.userData as TaggedAnimationClip);
                    }, e => statusCallback, clip);
                }
            });

            selectClipContextManipulator.activators.Add(new ManipulatorActivationFilter {
                button = MouseButton.LeftMouse
            });

            this.AddManipulator(selectClipContextManipulator);

            m_WarningIcon = new Image();
            m_WarningIcon.AddToClassList("warningImage");

            m_WarningIcon.tooltip       = TaggedAnimationClip.k_MissingClipText;
            m_WarningIcon.style.display = DisplayStyle.None;

            Add(m_WarningIcon);

            Reset();
        }
Exemple #22
0
    private VisualElement CreateItemSelectionButton(BaseItem baseItem)
    {
        VisualElement visualElement = new VisualElement();
        Button        button        = new Button();

        button.style.height = 50;
        button.style.width  = 50;
        button.text         = string.Empty;

        Sprite icon = baseItem.icon;

        button.style.backgroundImage = new StyleBackground(icon?icon.texture:null);
        button.style.alignSelf       = new StyleEnum <Align>(Align.Center);
        Label label = new Label {
            text = baseItem.name
        };

        label.style.alignSelf = new StyleEnum <Align>(Align.Center);

        visualElement.Add(button);
        visualElement.Add(label);
        button.clicked += () => SelectItem(baseItem);

        Manipulator manipulator = new ContextualMenuManipulator(
            contextualMenuPopulateEvent =>
            AddContextMenuOptions(
                contextualMenuPopulateEvent,
                new []
        {
            new Tuple <string, Action>("ChangeID", () => ChangeItemName(baseItem)),
            new Tuple <string, Action>("Delete", () => DestroyItem(baseItem))
        }
                ))
        {
            target = button
        };

        button.AddManipulator(manipulator);
        return(visualElement);
    }
Exemple #23
0
        VisualElement MakeAnimationItem()
        {
            var ve = new VisualElement();

            var highlight = new VisualElement();

            highlight.AddToClassList("animationClipHighlight");
            highlight.style.visibility = Visibility.Hidden;
            ve.Add(highlight);

            var clipLabel = new Label();

            clipLabel.AddToClassList("animationClipLabel");
            clipLabel.text = "Anim";
            ve.Add(clipLabel);

            var warningIcon = new Image();

            warningIcon.AddToClassList("warningImage");
            warningIcon.tooltip       = TaggedAnimationClip.k_MissingClipText;
            warningIcon.style.display = DisplayStyle.Flex;
            ve.Add(warningIcon);

            ve.style.flexDirection  = FlexDirection.Row;
            ve.style.justifyContent = Justify.SpaceBetween;

            ContextualMenuManipulator itemContext = new ContextualMenuManipulator(evt => BuildAnimationClipItemMenu(evt, ve));

            ve.AddManipulator(itemContext);

            Clickable doubleClick = new Clickable(() => OnAnimationLibraryItemDoubleClick(ve));

            doubleClick.activators.Clear();
            doubleClick.activators.Add(new ManipulatorActivationFilter {
                button = MouseButton.LeftMouse, clickCount = 2
            });
            ve.AddManipulator(doubleClick);

            return(ve);
        }
Exemple #24
0
    private VisualElement CreateProductSelectionButton(BaseProduct baseProduct, Action <BaseProduct> OnProductSelected, Tuple <string, Action>[] contextualMenuOptions)
    {
        VisualElement visualElement = new VisualElement();
        Button        button        = new Button();

        button.style.height    = 50;
        button.style.width     = 50;
        button.text            = string.Empty;
        button.style.alignSelf = new StyleEnum <Align>(Align.Center);
        Sprite icon = baseProduct.Icon;

        button.style.backgroundImage = new StyleBackground(icon?icon.texture:null);
        Label label = new Label {
            text = RemoveUntilFirstPoint(baseProduct.name)
        };

        label.style.alignSelf  = new StyleEnum <Align>(Align.Center);
        button.style.alignSelf = new StyleEnum <Align>(Align.Center);

        visualElement.Add(button);
        visualElement.Add(label);
        button.clicked += () => OnProductSelected.Invoke(baseProduct);

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


        Manipulator manipulator = new ContextualMenuManipulator(contextualMenuPopulateEvent => AddContextMenuOptions(contextualMenuPopulateEvent.menu, contextualMenuOptions))
        {
            target = button
        };

        button.AddManipulator(manipulator);

        return(visualElement);
    }
Exemple #25
0
        public void LoadTemplate(VisualElement parentElement)
        {
            UIElements.UIElementsUtils.CloneTemplateInto(k_Template, this);
            UIElements.UIElementsUtils.ApplyStyleSheet(k_Stylesheet, this);
            AddToClassList("flexGrowClass");
            Button button = parentElement.Q <Button>(classes: "viewMode");

            button.clickable = null;
            var manipulator = new ContextualMenuManipulator(ViewToggleMenu);

            manipulator.activators.Add(new ManipulatorActivationFilter {
                button = MouseButton.LeftMouse
            });
            button.AddManipulator(manipulator);

            m_PreviewWarning = parentElement.Q <Image>("warningImage");
            m_PreviewWarning.style.display = DisplayStyle.None;
            m_PreviewWarning.tooltip       = "Debugging using the Asset Builder requires setting a Preview Target before entering Play Mode";

            var previewTargetSelector = parentElement.Q <PreviewSelector>();

            previewTargetSelector.RegisterValueChangedCallback(OnPreviewTargetSelectorChanged);
            PreviewDisposed      += () => previewTargetSelector.SetValueWithoutNotify(null);
            PreviewTargetChanged += (newTarget) => previewTargetSelector.SetValueWithoutNotify(newTarget);

            ConnectToPlayControls(parentElement.Q <PlayControls>());

            m_TimelineWorkArea = this.Q <VisualElement>(k_TimelineWorkAreaName);

            m_TimelineScrollableArea = this.Q <VisualElement>(k_ScrollableTimeAreaName);
            m_TimelineScrollableArea.RegisterCallback <GeometryChangedEvent>(OnGeometryChanged);

            ZoomManipulator zoomManipulator = new ZoomManipulator(m_TimelineScrollableArea);

            zoomManipulator.ScaleChangeEvent += OnTimelineMouseScroll;
            var panManipulator = new PanManipulator(m_TimelineScrollableArea);

            panManipulator.HorizontalOnly = true;
            panManipulator.Panned        += OnTimelinePanned;

            m_ScrollViewContainer = this.Q <VisualElement>("trackScrollViewContainer");
            m_ScrollViewContainer.AddManipulator(panManipulator);
            m_ScrollViewContainer.AddManipulator(zoomManipulator);
            m_ScrollViewContainer.RegisterCallback <GeometryChangedEvent>(OnGeometryChanged);

            m_ActiveTimeField           = parentElement.Q <FloatField>("frameField");
            m_ActiveTimeField.isDelayed = true;
            m_ActiveTimeField.RegisterValueChangedCallback(OnActiveTimeFieldValueChanged);

            UpdateTimeRange();

            m_GutterTracks = this.Q <VisualElement>(classes: "gutter");
            ZoomManipulator gutterZoom = new ZoomManipulator(m_GutterTracks);

            gutterZoom.ScaleChangeEvent += OnTimelineMouseScroll;
            m_GutterTracks.AddManipulator(gutterZoom);
            var gutterPan = new PanManipulator(m_GutterTracks);

            gutterPan.HorizontalOnly = true;
            gutterPan.Panned        += OnTimelinePanned;
            m_GutterTracks.AddManipulator(gutterPan);

            m_Tracks        = m_TimelineScrollableArea.Q <VisualElement>("tracks");
            m_TrackElements = new List <Track>();
            CreateBuiltInTracks();

            if (!EditorApplication.isPlaying)
            {
                SetActiveTime(0f);
            }

            m_ClipArea = new VisualElement();
            m_ClipArea.AddToClassList("clipArea");

            ScrollView sv = m_ScrollViewContainer.Q <ScrollView>();

            sv.Insert(0, m_ClipArea);
            m_TimelineWorkArea.Add(ActiveTick);
            m_TimelineWorkArea.Add(ActiveDebugTick);

            m_ClipLengthBar = this.Q <VisualElement>("clipLength");

            m_TimeRuler = this.Q <TimeRuler>();
            m_TimeRuler.Init(this, panManipulator, zoomManipulator);
            m_TimeRuler.AddManipulator(new PlayheadManipulator(this));

            string storedViewMode = EditorPrefs.GetString(k_TimelineUnitsPreferenceKey);

            if (storedViewMode == string.Empty)
            {
                TimelineUnits = TimelineViewMode.frames;
            }
            else
            {
                int intVal;
                if (int.TryParse(storedViewMode, out intVal))
                {
                    TimelineUnits = (TimelineViewMode)intVal;
                }
                else
                {
                    TimelineUnits = TimelineViewMode.frames;
                }
            }

            Undo.undoRedoPerformed += OnUndoRedoPerformed;

            focusable = true;

            RegisterCallback <KeyDownEvent>(OnKeyDownEvent);
            RegisterCallback <GeometryChangedEvent>(OnGeometryChanged);
        }