/// <summary> /// Adds a new interaction. /// </summary> /// <param name="index"></param> public void AddInteraction(ImpactInteractionBase impactInteraction) { _interactions.Add(impactInteraction); }
private void drawInteractionsList(ImpactMaterialInteractionSet interactionSet) { EditorGUILayout.LabelField("Interactions", EditorStyles.boldLabel); for (int i = 0; i < interactionSet.InteractionCount; i++) { EditorGUILayout.BeginHorizontal(); interactionSet[i] = EditorGUILayout.ObjectField(interactionSet[i], typeof(ImpactInteractionBase), false) as ImpactInteractionBase; Color originalColor = GUI.color; GUI.color = warningColor; if (GUILayout.Button(new GUIContent("X", "Remove"), GUILayout.Width(20), GUILayout.Height(15))) { interactionSet.RemoveInteraction(i); EditorUtility.SetDirty(target); } GUI.color = originalColor; EditorGUILayout.EndHorizontal(); } EditorGUILayout.HelpBox("You can drag-and-drop Interactions here to add them.", MessageType.Info); GUILayout.Space(2); EditorGUILayout.EndVertical(); //Drag and drop Rect listRect = GUILayoutUtility.GetLastRect(); string[] paths; bool drop = ImpactEditorUtilities.DragAndDropArea(listRect, out paths); if (drop && paths != null) { for (int i = 0; i < paths.Length; i++) { ImpactInteractionBase a = AssetDatabase.LoadAssetAtPath <ImpactInteractionBase>(paths[i]); if (a != null) { interactionSet.AddInteraction(a); } } EditorUtility.SetDirty(target); } EditorGUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); if (GUILayout.Button("Add Interaction")) { interactionSet.AddInteraction(null); EditorUtility.SetDirty(target); } EditorGUILayout.EndHorizontal(); GUILayout.Space(2); EditorGUILayout.EndVertical(); }