public void OnInspectorGUI() { EditorGUILayout.BeginHorizontal(); { filterName = EditorGUILayout.TextField("Filter name: ", filterName); EditorConfig.SetColor(EditorConfig.AddButtonColor); if (GUILayout.Button(EditorConfig.AddButtonContent, EditorConfig.SmallButtonWidth)) { // Filters within a style are identified by their filter name var queryFilterStyleName = style.FilterStyles.Where(filterStyle => filterStyle.Name == filterName); if (filterName.Length == 0) { Debug.LogError("The filter name can't be empty"); } else if (queryFilterStyleName.Count() > 0) { Debug.LogError("Filter with name " + filterName + " already exists"); } else { var filterStyle = new FeatureStyle.FilterStyle(filterName); style.AddFilterStyle(filterStyle); filterStyleEditors.Add(new FilterStyleEditor(filterStyle)); } } EditorConfig.ResetColor(); } EditorGUILayout.EndHorizontal(); EditorGUI.indentLevel++; for (int i = filterStyleEditors.Count - 1; i >= 0; i--) { var editor = filterStyleEditors[i]; var filterStyle = editor.FilterStyle; var state = FoldoutEditor.OnInspectorGUI(editor.GUID.ToString(), filterStyle.Name); if (state.show) { editor.OnInspectorGUI(); } if (state.markedForDeletion) { style.RemoveFilterStyle(filterStyle); // Remove the editor for this filter filterStyleEditors.RemoveAt(i); } } EditorGUI.indentLevel--; }
public void OnInspectorGUI() { // Default layers EditorGUILayout.BeginHorizontal(); { selectedLayer = EditorGUILayout.Popup("Default layer:", selectedLayer, defaultLayers.ToArray()); AddLayerStyleLayout(filterStyle, defaultLayers[selectedLayer]); } EditorGUILayout.EndHorizontal(); // Custom layer entry EditorGUILayout.BeginHorizontal(); { customFeatureCollection = EditorGUILayout.TextField("Custom layer:", customFeatureCollection); AddLayerStyleLayout(filterStyle, customFeatureCollection); } EditorGUILayout.EndHorizontal(); EditorGUI.indentLevel++; for (int i = layerStyleEditors.Count - 1; i >= 0; i--) { var editor = layerStyleEditors[i]; var layerStyling = editor.LayerStyle; var state = FoldoutEditor.OnInspectorGUI(editor.GUID.ToString(), layerStyling.LayerName); if (state.show) { editor.OnInspectorGUI(); } if (state.markedForDeletion) { // Remove the layer from the filter styles filterStyle.RemoveLayerStyle(layerStyling); // Remove the associated layer editor layerStyleEditors.RemoveAt(i); } } EditorGUI.indentLevel--; // TODO: Matchers }