public void OnEnable() { VisualElement root = rootVisualElement; var visualTree = Resources.Load <VisualTreeAsset>("GameSettings_Main"); visualTree.CloneTree(root); var styleSheet = Resources.Load <StyleSheet>("GameSettings_Style"); root.styleSheets.Add(styleSheet); ToolbarSearchField _toolbarSearchField = rootVisualElement.Q <ToolbarSearchField>("SearchField"); _toolbarSearchField.RegisterValueChangedCallback(OnSearchFieldChange); _toolbarSearchField.name = "SearchField"; _toolbarSearchField.AddToClassList("ListSearchField"); rootVisualElement.Q <VisualElement>("LeftPanel").style.maxWidth = leftPanelMaxWidth; includeSS = root.Q <Toggle>("IncludeSSToggle"); includeSS.SetValueWithoutNotify(ScriptableSettingsManager.ShowRuntimeScriptableSingleton); includeSS.RegisterValueChangedCallback(OnIncludeSSToggle); PopulateTags(false); PopulatePresetList(); }
void CreateSearchField(string ussClass) { m_SearchField = new ToolbarSearchField { value = string.IsNullOrEmpty(BaseState.SearchFilter) ? string.Empty : BaseState.SearchFilter }; m_SearchField.AddToClassList(ussClass); m_SearchField.Q("unity-cancel").AddToClassList(UssClasses.DotsEditorCommon.SearchFieldCancelButton); m_SearchField.RegisterValueChangedCallback(OnFilterChanged); UIElementHelper.ToggleVisibility(m_SearchField, BaseState.IsSearchFieldVisible); }
public StylePropertyDebugger(VisualElement debuggerSelection) { selectedElement = debuggerSelection; m_Toolbar = new Toolbar(); Add(m_Toolbar); var searchField = new ToolbarSearchField(); searchField.AddToClassList("unity-style-debugger-search"); searchField.RegisterValueChangedCallback(e => { m_SearchFilter = e.newValue; BuildFields(); }); m_Toolbar.Add(searchField); var showAllToggle = new ToolbarToggle(); showAllToggle.AddToClassList("unity-style-debugger-toggle"); showAllToggle.text = "Show all"; showAllToggle.RegisterValueChangedCallback(e => { m_ShowAll = e.newValue; BuildFields(); }); m_Toolbar.Add(showAllToggle); var sortToggle = new ToolbarToggle(); sortToggle.AddToClassList("unity-style-debugger-toggle"); sortToggle.text = "Sort"; sortToggle.RegisterValueChangedCallback(e => { m_Sort = e.newValue; BuildFields(); }); m_Toolbar.Add(sortToggle); m_CustomPropertyFieldsContainer = new VisualElement(); Add(m_CustomPropertyFieldsContainer); m_FieldsContainer = new VisualElement(); Add(m_FieldsContainer); if (selectedElement != null) { BuildFields(); } AddToClassList("unity-style-debugger"); }
public DependencyListView(List <SerializedProperty> itemsSource, int itemHeight, SerializedObject serializedObject) { SetupQueryEngine(); m_SerializedObject = serializedObject; m_OriginalItems = itemsSource; m_FilteredItems = new List <SerializedProperty>(); m_ItemSize = itemHeight; var listViewContainer = new VisualElement(); listViewContainer.AddToClassList(k_ListView); listViewContainer.style.flexGrow = 1; listView = new ListView(m_FilteredItems, itemHeight, MakeItem, BindItem); listView.name = k_ListInternalView; listView.showAlternatingRowBackgrounds = AlternatingRowBackground.ContentOnly; listView.style.flexGrow = 1; listView.RegisterCallback <KeyUpEvent>(OnKeyUpEvent); listView.selectionType = SelectionType.Multiple; listView.itemsChosen += OnDoubleClick; listView.style.maxHeight = Mathf.Max(m_OriginalItems.Count * m_ItemSize + 100, listView.style.maxHeight.value.value); var searchField = new ToolbarSearchField(); searchField.name = "dependency-listview-toolbar-searchfield"; searchField.RegisterValueChangedCallback(evt => { m_CurrentSearchString = evt.newValue; FilterItems(evt.newValue); }); var textField = searchField.Q <TextField>(); if (textField != null) { textField.maxLength = 1024; m_SearchFieldReady = true; } searchField.AddToClassList(k_SearchFieldItem); Add(searchField); header = MakeHeader(); UpdateHeader(); listViewContainer.Add(header); listViewContainer.Add(listView); Add(listViewContainer); FilterItems(searchField.value); }
public SearchBar([CanBeNull] Action <string> searchEvent = null) { // Setup delayed search event to throttle requests. m_SearchEventTimer = new Timer(_ => EditorApplication.delayCall += () => { m_SearchEventFlag = false; Search(m_LatestSearchValue); }); AddToClassList(UssClassName); styleSheets.Add(AssetDatabase.LoadAssetAtPath <StyleSheet>(k_StylePath)); m_SearchField = new ToolbarSearchField(); m_Placeholder = new Label { text = StringAssets.search, pickingMode = PickingMode.Ignore }; m_SearchField.AddToClassList(SearchFieldUssClassName); m_Placeholder.AddToClassList(PlaceholderUssClassName); Add(m_SearchField); Add(m_Placeholder); // Setup search event if (searchEvent != null) { Search += searchEvent; } // Setup events to hide/show placeholder. var textField = m_SearchField.Q <TextField>(className: ToolbarSearchField.textUssClassName); textField.RegisterCallback <FocusInEvent>(e => { m_Focused = true; UpdatePlaceholderVisibility(); }); textField.RegisterCallback <FocusOutEvent>(e => { m_Focused = false; UpdatePlaceholderVisibility(); }); m_SearchField.RegisterValueChangedCallback(SearchEventThrottle); // Set initial placeholder hide/show status. ShowPlaceholder(); }
public static void BuildContainer(DataConfigEditor editor, VisualElement container, SerializedObject so) { var structComponents = new VisualElement(); var removeStructComponents = new VisualElement(); container.Clear(); var searchField = new ToolbarSearchField(); searchField.AddToClassList("search-field"); searchField.RegisterValueChangedCallback((evt) => { var search = evt.newValue.ToLower(); Search(search, structComponents); Search(search, removeStructComponents); }); container.Add(searchField); { var header = new Label("Components:"); header.AddToClassList("header"); container.Add(header); container.Add(structComponents); var usedComponents = new System.Collections.Generic.HashSet <System.Type>(); var source = so.FindProperty("structComponents"); BuildInspectorProperties(editor, usedComponents, source, structComponents, noFields: false); container.Add(CreateButton(editor, usedComponents, source, structComponents, noFields: false)); } { var header = new Label("Remove Components:"); header.AddToClassList("header"); container.Add(header); container.Add(removeStructComponents); var usedComponents = new System.Collections.Generic.HashSet <System.Type>(); var source = so.FindProperty("removeStructComponents"); BuildInspectorProperties(editor, usedComponents, source, removeStructComponents, noFields: true); container.Add(CreateButton(editor, usedComponents, source, removeStructComponents, noFields: true)); } editor.BuildUsedTemplates(container, so); }
public override VisualElement CreateInspectorGUI() { var container = new VisualElement(); container.styleSheets.Add(EditorUtilities.Load <StyleSheet>("Editor/Core/DataConfigs/styles.uss", isRequired: true)); this.rootElement = container; var target = this.target as ME.ECS.Debug.EntityDebugComponent; if (target.world != null && target.world.isActive == true) { this.debug = new ME.ECS.Debug.EntityProxyDebugger(target.entity, target.world); this.temp.components = this.debug.GetComponentsList(); this.temp.sharedComponents = this.debug.GetSharedComponentsList(); container.schedule.Execute(this.Update).Every((long)(target.world.GetTickTime() * 1000f)); var searchField = new ToolbarSearchField(); searchField.AddToClassList("search-field"); searchField.RegisterValueChangedCallback((evt) => { var search = evt.newValue.ToLower(); DataConfigEditor.Search(search, this.componentsContainer); DataConfigEditor.Search(search, this.sharedComponentsContainer); }); container.Add(searchField); { var entityElement = new VisualElement(); this.entityContainer = entityElement; entityElement.name = "EntityContainer"; entityElement.AddToClassList("entity-container"); var id = new Label("ID:"); id.AddToClassList("entity-container-item"); id.AddToClassList("entity-container-item-label"); entityElement.Add(id); var idValue = new Label(); idValue.AddToClassList("entity-container-item"); idValue.AddToClassList("entity-container-item-value"); idValue.name = "EntityId"; this.entityId = idValue; entityElement.Add(idValue); var gen = new Label("Generation:"); gen.AddToClassList("entity-container-item"); gen.AddToClassList("entity-container-item-label"); entityElement.Add(gen); var genValue = new Label(); genValue.AddToClassList("entity-container-item"); genValue.AddToClassList("entity-container-item-value"); genValue.name = "EntityGen"; this.entityGen = genValue; entityElement.Add(genValue); var version = new Label("Version:"); version.AddToClassList("entity-container-item"); version.AddToClassList("entity-container-item-label"); entityElement.Add(version); var versionValue = new Label(); versionValue.AddToClassList("entity-container-item"); versionValue.AddToClassList("entity-container-item-value"); versionValue.name = "EntityVersion"; this.entityVersion = versionValue; entityElement.Add(versionValue); container.Add(entityElement); var changedWarning = new Label("Selected entity is no longer available: generation has been changed."); this.entityContainerWarning = changedWarning; changedWarning.name = "EntityChanged"; changedWarning.AddToClassList("entity-changed-warning"); changedWarning.AddToClassList("hidden"); container.Add(changedWarning); } this.content = new VisualElement(); this.content.name = "Content"; container.Add(this.content); if (target.entity.IsAlive() == true) { this.BuildLists(this.content); } } else { var element = new Label("No active world found"); element.AddToClassList("world-not-found"); this.rootElement.Add(element); } return(this.rootElement); }
public override void OnOpen() { var styleSheet = BuilderPackageUtilities.LoadAssetAtPath <StyleSheet>(k_UssPath); editorWindow.rootVisualElement.styleSheets.Add(styleSheet); editorWindow.rootVisualElement.focusable = true; editorWindow.rootVisualElement.AddToClassList(k_BaseClass); editorWindow.rootVisualElement.AddManipulator(m_NavigationManipulator = new KeyboardNavigationManipulator(Apply)); var searchField = new ToolbarSearchField(); searchField.AddToClassList(k_SearchField); searchField.RegisterCallback <AttachToPanelEvent>(evt => { ((VisualElement)evt.target)?.Focus(); }); searchField.RegisterCallback <KeyDownEvent>(evt => { switch (evt.keyCode) { case KeyCode.UpArrow: case KeyCode.DownArrow: case KeyCode.PageDown: case KeyCode.PageUp: evt.StopPropagation(); m_ScrollView.Focus(); break; case KeyCode.Return: case KeyCode.KeypadEnter: evt.StopPropagation(); if (string.IsNullOrWhiteSpace(searchField.value) || m_SelectedIndex < 0) { m_ScrollView.Focus(); return; } onSelectionChanged?.Invoke(m_Items[m_SelectedIndex].value); editorWindow.Close(); break; } }); editorWindow.rootVisualElement.RegisterCallback <KeyDownEvent>(evt => { searchField.Focus(); }); searchField.RegisterValueChangedCallback(OnSearchChanged); editorWindow.rootVisualElement.Add(searchField); m_ScrollView = new ScrollView(); m_ScrollView.RegisterCallback <GeometryChangedEvent, ScrollView>((evt, sv) => { if (m_SelectedIndex >= 0) { sv.ScrollTo(sv[m_SelectedIndex]); } }, m_ScrollView); var selectionWasSet = false; for (var i = 0; i < m_Items.Count; ++i) { var property = m_Items[i]; var element = GetPooledItem(property, i); m_ScrollView.Add(element); if (selectionWasSet) { continue; } if (property.itemType != ItemType.Item || property.value != m_CurrentActiveValue) { continue; } m_SelectedIndex = i; element.pseudoStates |= PseudoStates.Checked; selectionWasSet = true; } editorWindow.rootVisualElement.RegisterCallback <KeyDownEvent>(evt => { if (evt.keyCode == KeyCode.F && evt.actionKey) { searchField.Focus(); } }, TrickleDown.TrickleDown); editorWindow.rootVisualElement.Add(m_ScrollView); }
void CreateVisualTree() { string[] guids = AssetDatabase.FindAssets("t:GameAssets"); //foreach (string guid in guids) //{ // //Debug.Log("ScriptObj: " + AssetDatabase.GUIDToAssetPath(guid)); //} if (guids != null && guids.Length > 0) { //allGameAssets = ScriptableObject.CreateInstance<GameAssets>(); allGameAssets = (GameAssets)AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(guids[0]), typeof(GameAssets)); } else { if (AssetDatabase.IsValidFolder("Assets/Export")) { //Debug.Log("Exists"); } else { string ret; ret = AssetDatabase.CreateFolder("Assets", "Export"); if (AssetDatabase.GUIDToAssetPath(ret) != "") { Debug.Log("Folder asset created"); } else { Debug.Log("Couldn't find the GUID for the path"); } } AssetDatabase.Refresh(); if (AssetDatabase.IsValidFolder("Assets/Export/Assets")) { //Debug.Log("Exists"); } else { string ret; ret = AssetDatabase.CreateFolder("Assets/Export", "Assets"); if (AssetDatabase.GUIDToAssetPath(ret) != "") { Debug.Log("Folder asset created"); } else { Debug.Log("Couldn't find the GUID for the path"); } } if (AssetDatabase.IsValidFolder("Assets/Export/Assets/Data")) { //Debug.Log("Exists"); } else { string ret; ret = AssetDatabase.CreateFolder("Assets/Export/Assets", "Data"); if (AssetDatabase.GUIDToAssetPath(ret) != "") { Debug.Log("Folder asset created"); } else { Debug.Log("Couldn't find the GUID for the path"); } } AssetDatabase.Refresh(); allGameAssets = ScriptableObject.CreateInstance <GameAssets>(); AssetDatabase.CreateAsset(allGameAssets, "Assets/Export/Data/allGameAssets.asset"); } var visualTree = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>("Assets/Editor/EditorComponents/AssetManager.uxml"); var styleSheet = AssetDatabase.LoadAssetAtPath <StyleSheet>("Assets/Editor/LevelEditorWindow.uss"); assetManager = visualTree.CloneTree(); addAssetContainer = assetManager.Q <Box>("addAssetContainer"); //search field var popupSearchField = new ToolbarSearchField(); popupSearchField.AddToClassList("asset-manager-searchfield"); popupSearchField.RegisterValueChangedCallback(OnSearchTextChanged); assetTypeSelection = new EnumField(AssetType.Texture); assetTypeSelection.RegisterValueChangedCallback(AssetTypeChange); assetSelectionField = new ObjectField { objectType = typeof(UnityEngine.Texture) }; addAssetButton = new Button(); addAssetButton.text = "Add Asset"; addAssetButton.RegisterCallback <MouseUpEvent>(AddAsset); saveAssetsButton = new Button(); saveAssetsButton.text = "Export All Assets"; saveAssetsButton.RegisterCallback <MouseUpEvent>(SaveAssets); assetListBox = new Box(); assetListBox.style.height = 777; assetListBoxContainer = new ScrollView(); assetListBoxContainer.showHorizontal = false; assetListBox.Add(assetListBoxContainer); addAssetContainer.Add(popupSearchField); addAssetContainer.Add(assetTypeSelection); addAssetContainer.Add(assetSelectionField); addAssetContainer.Add(addAssetButton); addAssetContainer.Add(assetListBox); addAssetContainer.Add(saveAssetsButton); #region LoadAssetsFromAssetData foreach (Texture t in allGameAssets.gameTextures) { assetListBoxContainer.Add(CreateAsset(t.name)); } foreach (AudioClip ac in allGameAssets.gameAudioClips) { assetListBoxContainer.Add(CreateAsset(ac.name)); } foreach (Font f in allGameAssets.gameFonts) { assetListBoxContainer.Add(CreateAsset(f.name)); } #endregion }
private void SetupUI() { var styleSheet = AssetDatabase.LoadAssetAtPath <StyleSheet>($"{Utils.packageFolderName}/Editor/StyleSheets/PerformanceTrackerWindow.uss"); rootVisualElement.styleSheets.Add(styleSheet); m_RefreshFromSearch = Delayer.Throttle(RefreshFromSearch); var toolbar = new UnityEditor.UIElements.Toolbar(); toolbar.AddToClassList("perf-toolbar"); toolbar.style.height = PtStyles.itemHeight; var searchBox = new VisualElement(); searchBox.AddToClassList("perf-search-box"); AddSelectorLabel(toolbar, "Tracker"); m_SearchField = new ToolbarSearchField(); m_SearchField.AddToClassList("perf-search-tracker"); m_SearchField.value = m_FilterText; m_SearchField.RegisterCallback <ChangeEvent <string> >((evt) => { m_RefreshFromSearch.Execute(evt.newValue); }); searchBox.Add(m_SearchField); toolbar.Add(searchBox); var resetAllCountersButton = new Button(ResetAllCounters); resetAllCountersButton.text = "Reset all counters"; resetAllCountersButton.AddToClassList("perf-tracker-toolbar-button"); toolbar.Add(resetAllCountersButton); AddSelectorLabel(toolbar, "Update Speed"); var choices = PtModel.RefreshRates.Select(r => r.label).ToList(); var updateSpeedSelector = new UnityEditor.UIElements.PopupField <string>(choices, 0); updateSpeedSelector.value = PtModel.RefreshRates[m_UpdateSpeedIndex].label; updateSpeedSelector.AddToClassList("perf-update-speed-selector"); updateSpeedSelector.RegisterCallback <ChangeEvent <string> >((evt) => { m_UpdateSpeedIndex = Array.FindIndex(PtModel.RefreshRates, (r) => r.label == evt.newValue); ScheduleNextRefresh(); SendAnalytics(Analytics.WindowUsageType.ChangeMonitoringSpeed); }); toolbar.Add(updateSpeedSelector); AddSelectorLabel(toolbar, "Columns"); var columnsChoice = PtModel.ColumnDescriptors.Where(desc => desc.columnsSelectorMaskId > 0).Select(desc => desc.label).ToList(); var columnsSelector = new MaskField(columnsChoice, m_ShownColumn); columnsSelector.RegisterCallback <ChangeEvent <int> >((evt) => { m_ShownColumn = evt.newValue; CreateHeaders(); RefreshTrackers(); SendAnalytics(Analytics.WindowUsageType.ChangeColumnLayout); }); columnsSelector.AddToClassList("perf-columns-selector"); toolbar.Add(columnsSelector); AddSelectorLabel(toolbar, "Sort By"); m_SortBySelector = new EnumField(ColumnId.Name); m_SortBySelector.value = m_SortBy; m_SortBySelector.AddToClassList("perf-sort-by-selector"); m_SortBySelector.RegisterCallback <ChangeEvent <Enum> >((evt) => { ChangeSortOrder((ColumnId)evt.newValue); SendAnalytics(Analytics.WindowUsageType.ChangeSortBy); }); toolbar.Add(m_SortBySelector); var settingsBtn = new Button(() => { SettingsService.OpenUserPreferences(PerformanceTrackerSettings.settingsKey); SendAnalytics(Analytics.WindowUsageType.OpenPreferences); }); settingsBtn.style.backgroundImage = Icons.settings; settingsBtn.style.width = PtStyles.itemHeight - 3; settingsBtn.style.height = PtStyles.itemHeight - 3; toolbar.Add(settingsBtn); rootVisualElement.Add(toolbar); // Set List View Header: m_HeaderRow = new VisualElement(); m_HeaderRow.AddToClassList("perf-header-row-container"); m_HeaderRow.style.flexDirection = FlexDirection.Row; rootVisualElement.Add(m_HeaderRow); CreateHeaders(); m_PinnedTrackersView = new ListView(m_PinnedTrackers, PtStyles.itemHeight, MakeItem, BindPinnedItem); m_PinnedTrackersView.name = k_PinnedTrackerList; m_PinnedTrackersView.AddToClassList("perf-tracker-list"); m_PinnedTrackersView.selectionType = SelectionType.Multiple; m_PinnedTrackersView.style.flexGrow = 0; m_PinnedTrackersView.Q <VisualElement>(null, "unity-scroll-view__content-viewport").RegisterCallback <GeometryChangedEvent>(SyncHeaderAndListsGeometry); rootVisualElement.Add(m_PinnedTrackersView); m_TrackersView = new ListView(m_FilteredTrackers, PtStyles.itemHeight, MakeItem, BindUnpinnedItem); m_TrackersView.name = k_TrackerList; m_TrackersView.AddToClassList("perf-tracker-list"); m_TrackersView.selectionType = SelectionType.Multiple; m_TrackersView.style.flexGrow = 1.0f; m_TrackersView.Q <VisualElement>(null, "unity-scroll-view__content-viewport").RegisterCallback <GeometryChangedEvent>(SyncHeaderAndListsGeometry); rootVisualElement.Add(m_TrackersView); m_NeedsUpdate = true; ScheduleNextRefresh(); UpdateTrackers(); }