Exemplo n.º 1
0
    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();
    }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 5
0
        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();
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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();
        }