コード例 #1
0
 /// <summary>
 /// Adds a new interaction.
 /// </summary>
 /// <param name="index"></param>
 public void AddInteraction(ImpactInteractionBase impactInteraction)
 {
     _interactions.Add(impactInteraction);
 }
コード例 #2
0
        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();
        }