private static void UpdateExistingRules() { // clear current list assetRules = new List <AssetAuditor.AssetRule>(); // get all assets in the proxyassets folder foreach (var asset in AssetDatabase.FindAssets("", new[] { AssetAuditorPreferences.ProxyAssetsDirectory })) { var guidToAssetPath = AssetDatabase.GUIDToAssetPath(asset); var assetImporter = AssetImporter.GetAtPath(guidToAssetPath); AssetAuditor.AssetRule ar = new AssetAuditor.AssetRule(); ar = JsonUtility.FromJson <AssetAuditor.AssetRule>(assetImporter.userData); assetRules.Add(ar); } int i = 0; // make sure that the current asset is selected from assetRules foreach (var assetRule in assetRules) { if (assetRule.AssetGuid == currentAsset) { selected = i; return; } i++; } // if we get to here we couldnt find and asset to be the currently selected // set it to -1 and ignore anything to be currently selected selected = -1; currentAsset = ""; }
private void DoRuleSelectionGUI() { EditorGUI.BeginChangeCheck(); selected = EditorGUI.Popup(ruleSelectRect, "Rule Name", selected, assetRuleNames.ToArray()); if (EditorGUI.EndChangeCheck()) { selectedSelective = 0; GatherData(); } // make wildcard editable and update selection from it if (assetRules != null && selected != -1)// && !string.IsNullOrEmpty(assetRules[selected].WildCard)) { AssetAuditor.AssetRule ar = assetRules[selected]; EditorGUI.BeginChangeCheck(); ar.WildCard = EditorGUI.TextField(wildCardDisplayRect, "WildCard ", ar.WildCard); if (EditorGUI.EndChangeCheck()) { assetRules[selected] = ar; GatherData(); AssetAuditor.WriteUserData(AssetDatabase.GUIDToAssetPath(ar.AssetGuid), ar); } if (ar.SelectiveProperties != null && ar.SelectiveProperties.Count > 0) { selectedSelective = EditorGUI.Popup(SelectivePropRect, "Selective Properties", selectedSelective, ar.SelectiveProperties.ToArray()); } else { EditorGUI.LabelField(SelectivePropRect, " No Selective Properties in the Asset Rule"); } if (GUI.Button(AddSelectivePropRect, "+")) { // add a new selective property if (ar.SelectiveProperties != null && !ar.SelectiveProperties.Contains("Unnasigned property")) { ar.SelectiveProperties.Add("Unnasigned property"); } assetRules[selected] = ar; GatherData(); AssetAuditor.WriteUserData(AssetDatabase.GUIDToAssetPath(ar.AssetGuid), ar); } if (ar.SelectiveProperties != null && ar.SelectiveProperties.Count > 0) { if (GUI.Button(RemoveSelectivePropRect, "-")) { // remove last selective property ar.SelectiveProperties.RemoveAt(ar.SelectiveProperties.Count - 1); if (ar.SelectiveProperties.Count == 0) { ar.SelectiveMode = false; } assetRules[selected] = ar; GatherData(); AssetAuditor.WriteUserData(AssetDatabase.GUIDToAssetPath(ar.AssetGuid), ar); } editSelective = GUI.Toggle(EditSelectedPropButtonRect, editSelective, "Edit", "Button"); if (editSelective) { SerializedObject so = new SerializedObject( AssetImporter.GetAtPath(AssetDatabase.GUIDToAssetPath(ar.AssetGuid))); EditorGUI.BeginChangeCheck(); editSelectiveProp = EditorGUI.Popup(EditSelectedPropDropDownRect, editSelectiveProp, AssetAuditor.GetPropertyNames(so)); if (EditorGUI.EndChangeCheck()) { ar.SelectiveProperties[selectedSelective] = AssetAuditor.GetPropertyNames(so)[editSelectiveProp]; assetRules[selected] = ar; GatherData(); AssetAuditor.WriteUserData(AssetDatabase.GUIDToAssetPath(ar.AssetGuid), ar); } } } } }