using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Reflection; using Unity.Entities; using UnityEditor.UIElements; using UnityEditorInternal; using UnityEngine; using UnityEngine.Perception.GroundTruth; using UnityEngine.PlayerLoop; using UnityEngine.Rendering.UI; using UnityEngine.UIElements; using Object = System.Object; namespace UnityEditor.Perception.GroundTruth { class AddToConfigWindow : EditorWindow { private VisualElement m_Root; private string m_UxmlDir = "Packages/com.unity.perception/Editor/GroundTruth/Uxml/"; private string m_UxmlPath; private static string m_LabelValue; private static Label m_TitleLabel; private List m_ConfigsContainingLabel = new List(); private List m_ConfigsNotContainingLabel = new List(); private ListView m_PresentConfigsListview; private ListView m_NonPresentConfigsListview; public static void ShowWindow(string labelValue) { m_LabelValue = labelValue; var window = GetWindow(); window.Init(); window.Show(); } void Init() { m_ConfigsContainingLabel.Clear(); if(m_TitleLabel != null) m_TitleLabel.text = "Add " + m_LabelValue + "to Label Configurations"; var types = FindAllRelevant(); AssetDatabase.Refresh(); List labelConfigGuids = new List(); foreach (var type in types) { labelConfigGuids.AddRange(AssetDatabase.FindAssets("t:"+type.Name)); } CheckInclusionInConfigs(labelConfigGuids, types, m_LabelValue, this); Func makeItem = () => new Label(); Action bindItem = (e, i) => (e as Label).text = m_ConfigsContainingLabel[i]; m_PresentConfigsListview.itemHeight = 30; m_PresentConfigsListview.itemsSource = m_ConfigsContainingLabel; m_PresentConfigsListview.bindItem = bindItem; m_PresentConfigsListview.makeItem = makeItem; Func makeItem1 = () => new Label(); Action bindItem1 = (e, i) => (e as Label).text = m_ConfigsNotContainingLabel[i]; m_NonPresentConfigsListview.itemHeight = 30; m_NonPresentConfigsListview.itemsSource = m_ConfigsNotContainingLabel; m_NonPresentConfigsListview.bindItem = bindItem1; m_NonPresentConfigsListview.makeItem = makeItem1; } void OnEnable() { m_UxmlPath = m_UxmlDir + "AddToConfigWindow.uxml"; m_Root = rootVisualElement; AssetDatabase.LoadAssetAtPath(m_UxmlPath).CloneTree(m_Root); m_TitleLabel = m_Root.Query