private void AddLayerStyleLayout(FeatureStyle.FilterStyle filterStyle, string name) { EditorConfig.SetColor(EditorConfig.AddButtonColor); if (GUILayout.Button(EditorConfig.AddButtonContent, EditorConfig.SmallButtonWidth)) { // Layers within a filter are identifier by their layer name var queryLayer = filterStyle.LayerStyles.Where(layerStyle => name == layerStyle.LayerName); if (name.Length == 0) { Debug.LogError("Layer name can't be empty"); } else if (queryLayer.Count() > 0) { Debug.LogError("A layer with name " + name + " already exists"); } else { var layerStyle = new FeatureStyle.LayerStyle(name); // Default configuration for the layer layerStyle.PolygonBuilderOptions = PolygonBuilderEditor.DefaultOptions(); layerStyle.PolylineBuilderOptions = PolylineBuilderEditor.DefaultOptions(); layerStyle.Material = new Material(Shader.Find("Diffuse")); filterStyle.AddLayerStyle(layerStyle); // Create the associated layer editor layerStyleEditors.Add(new LayerStyleEditor(layerStyle)); } } EditorConfig.ResetColor(); }
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 FilterStyleEditor(FeatureStyle.FilterStyle filterStyle) : base() { this.filterStyle = filterStyle; this.layerStyleEditors = new List <LayerStyleEditor>(); foreach (var layerStyle in filterStyle.LayerStyles) { layerStyleEditors.Add(new LayerStyleEditor(layerStyle)); } }