public static bool DrawDatasetTrackableInspector(SerializedDataSetTrackable serializedObject, bool resetTrackable, Func <ConfigData, string[]> getTrackableNamesFunc, string trackableLabel)
        {
            bool result = false;

            string[] array = new string[ConfigDataManager.Instance.NumConfigDataObjects];
            ConfigDataManager.Instance.GetConfigDataNames(array);
            int num = -1;

            if (!serializedObject.DataSetPathProperty.hasMultipleDifferentValues)
            {
                num = VuforiaUtilities.GetIndexFromString(serializedObject.GetDataSetName(), array);
                if (num < 0)
                {
                    num = 0;
                }
            }
            EditorGUI.BeginChangeCheck();
            int  num2 = EditorGUILayout.Popup("Database", num, array, new GUILayoutOption[0]);
            bool flag = EditorGUI.EndChangeCheck();

            if (resetTrackable && num2 < 0)
            {
                num2 = 0;
                flag = true;
            }
            if (num2 >= 0)
            {
                string     dataSetName = array[num2];
                ConfigData configData  = ConfigDataManager.Instance.GetConfigData(dataSetName);
                string[]   array2      = getTrackableNamesFunc(configData);
                int        num3        = -1;
                if (!serializedObject.TrackableNameProperty.hasMultipleDifferentValues)
                {
                    num3 = VuforiaUtilities.GetIndexFromString(serializedObject.TrackableName, array2);
                    if (num3 < 0)
                    {
                        num3 = 0;
                    }
                }
                if (flag)
                {
                    num3 = 0;
                }
                EditorGUI.BeginChangeCheck();
                int  num4  = EditorGUILayout.Popup(trackableLabel, num3, array2, new GUILayoutOption[0]);
                bool flag2 = EditorGUI.EndChangeCheck();
                if (array2.Length != 0 && (flag | flag2 | resetTrackable))
                {
                    result = true;
                    serializedObject.DataSetPath = "";
                    serializedObject.DataSetPath = VuforiaRuntimeUtilities.StripStreamingAssetsFromPath(ConfigDataManager.Instance.GetConfigData(array[num2]).FullPath);
                    if (num4 >= 0)
                    {
                        string trackableName = array2[num4];
                        serializedObject.TrackableName = "";
                        serializedObject.TrackableName = trackableName;
                    }
                }
            }
            else
            {
                EditorGUILayout.Popup(trackableLabel, -1, new string[0], new GUILayoutOption[0]);
            }
            return(result);
        }
Ejemplo n.º 2
0
 public override void OnInspectorGUI()
 {
     VuforiaUtilities.DisableGuiForPrefab(base.target);
     base.DrawDefaultInspector();
     using (base.serializedObject.Edit())
     {
         TextConfigData textConfigData = ConfigDataManager.Instance.GetTextConfigData();
         if (textConfigData.NumDictionaries > 1)
         {
             EditorGUILayout.HelpBox("The list of words the TextTracker can detect and track.\nThe word list is loaded from a binary file and can be extended by a list of custom words.", MessageType.Info);
             string[] array  = new string[textConfigData.NumDictionaries];
             string[] array2 = new string[textConfigData.NumDictionaries];
             textConfigData.CopyDictionaryNamesAndFiles(array, array2, 0);
             int num = VuforiaUtilities.GetIndexFromString(this.mWordListFile.stringValue, array2);
             if (num < 0)
             {
                 num = 0;
             }
             int num2 = EditorGUILayout.Popup("Word List", num, array, new GUILayoutOption[0]);
             this.mWordListFile.stringValue = array2[num2];
             if (num2 == 0)
             {
                 GUI.enabled = false;
             }
         }
         else
         {
             if (GUILayout.Button("No word list available. \nPlease copy it from the TextRecognition sample app. \nPress here to go to the download page for sample apps!", new GUILayoutOption[0]))
             {
                 SceneManager.Instance.GoToSampleAppPage();
             }
             GUI.enabled = false;
         }
         int      expr_D8 = textConfigData.NumWordLists;
         string[] array3  = new string[expr_D8];
         string[] array4  = new string[expr_D8];
         textConfigData.CopyWordListNamesAndFiles(array3, array4, 0);
         int num3 = VuforiaUtilities.GetIndexFromString(this.mCustomWordListFile.stringValue, array4);
         if (num3 < 0)
         {
             num3 = 0;
         }
         int num4 = EditorGUILayout.Popup("Additional Word File", num3, array3, new GUILayoutOption[0]);
         if (num4 != num3)
         {
             if (num4 != 0)
             {
                 TextRecoEditor.TestValidityOfWordListFile(array4[num4]);
             }
             this.mCustomWordListFile.stringValue = array4[num4];
         }
         EditorGUILayout.LabelField("Additional Words:", new GUILayoutOption[0]);
         EditorGUILayout.HelpBox("Write one word per line. Open compound words can be specified using whitespaces.", MessageType.None);
         this.mAdditionalCustomWords.stringValue = EditorGUILayout.TextArea(this.mAdditionalCustomWords.stringValue, new GUILayoutOption[0]);
         EditorGUILayout.Space();
         EditorGUILayout.Space();
         EditorGUILayout.HelpBox("The filter list allows to specify subset of words that will be detected and tracked.", MessageType.Info);
         EditorGUILayout.PropertyField(this.mFilterMode, new GUIContent("Filter Mode"), new GUILayoutOption[0]);
         if (this.mFilterMode.enumValueIndex != 0)
         {
             int num5 = VuforiaUtilities.GetIndexFromString(this.mFilterListFile.stringValue, array4);
             if (num5 < 0)
             {
                 num5 = 0;
             }
             int num6 = EditorGUILayout.Popup("Filter List File", num5, array3, new GUILayoutOption[0]);
             if (num6 != num5)
             {
                 if (num6 != 0)
                 {
                     TextRecoEditor.TestValidityOfWordListFile(array4[num6]);
                 }
                 this.mFilterListFile.stringValue = array4[num6];
             }
             EditorGUILayout.LabelField("Additional Filter Words:", new GUILayoutOption[0]);
             EditorGUILayout.HelpBox("Write one word per line. Open compound words can be specified using whitespaces.", MessageType.None);
             this.mAdditionalFilterWords.stringValue = EditorGUILayout.TextArea(this.mAdditionalFilterWords.stringValue, new GUILayoutOption[0]);
         }
         EditorGUILayout.HelpBox("It is possible to use Word Prefabs to define augmentations for detected words. Each Word Prefab can be instantiated up to a maximum number.", MessageType.Info);
         if (EditorGUILayout.Toggle("Use Word Prefabs", this.mWordPrefabCreationMode.enumValueIndex == 1, new GUILayoutOption[0]))
         {
             this.mWordPrefabCreationMode.enumValueIndex = 1;
             EditorGUILayout.PropertyField(this.mMaximumWordInstances, new GUIContent("Max Simultaneous Words"), new GUILayoutOption[0]);
         }
         else
         {
             this.mWordPrefabCreationMode.enumValueIndex = 0;
         }
     }
     GUI.enabled = true;
 }