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; }
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; }
public Node() { RegisterCallback <GeometryChangedEvent>(OnGeometryChanged); m_ContextualMenuManipulator = new ContextualMenuManipulator(BuildContextualMenu); this.AddManipulator(m_ContextualMenuManipulator); }
public Port() { m_ContextualMenuManipulator = new ContextualMenuManipulator(BuildContextualMenu); this.AddManipulator(m_ContextualMenuManipulator); RegisterCallback <CustomStyleResolvedEvent>(OnCustomStyleResolved); }
void SetContextMenuManipulator(Button element, ScriptableSettings scriptableSettings) { ContextualMenuManipulator m = new ContextualMenuManipulator(x => ShowButtonContextMenu(scriptableSettings, x)) { target = element }; }
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); }
/// <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); }
private void CreateContextMenu(VisualElement visualElement) { ContextualMenuManipulator menuManipulator = new ContextualMenuManipulator(PopulateContextMenu); visualElement.focusable = true; visualElement.pickingMode = PickingMode.Position; visualElement.AddManipulator(menuManipulator); visualElement.AddManipulator(menuManipulator); }
public Placemat() { focusable = true; usageHints = UsageHints.DynamicTransform; RegisterCallback <AttachToPanelEvent>(OnAttachToPanel); RegisterCallback <DetachFromPanelEvent>(OnDetachFromPanel); m_ContextualMenuManipulator = new ContextualMenuManipulator(BuildContextualMenu); this.AddManipulator(m_ContextualMenuManipulator); }
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); }
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); }); }
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); } }
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); } }
public EdgeConnector() { // ノードの接続は左クリックで行う activators.Add(new ManipulatorActivationFilter() { button = MouseButton.LeftMouse }); m_Active = false; // メニュー選択マニピュレータは作っておくが、この時点ではターゲットが確定していないので、 // RegisterCallbacksOnTarget()で追加する m_AddEdgeMenu = new ContextualMenuManipulator(OnContextualMenuPopulate); }
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); }
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); }
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(); }
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); }
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); }
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); }
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); }