private void AddNewList(SerializedProperty property) { if (feedbackList.objectReferenceValue != null) { return; } GameObject gameObject = (property.serializedObject.targetObject as Component)? .gameObject; JuicyFeedbackList feedback = Undo.AddComponent <JuicyFeedbackList>(gameObject); feedback.displayName = property.displayName; feedbackList.objectReferenceValue = feedback; property.serializedObject.ApplyModifiedProperties(); }
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { height = 0; CacheProperty(ref feedbackList, property, nameof(feedbackList)); Rect addRect = new Rect(position) { x = position.width - 6, width = 25 }; bool hasReference = feedbackList.objectReferenceValue != null; Rect referenceRect = new Rect(position) { width = position.width - (hasReference ? 0 : addRect.width) }; string name = property.displayName; if (hasReference) { listReference = feedbackList.objectReferenceValue as JuicyFeedbackList; name = $"{name} ({listReference.displayName})"; } EditorGUI.PropertyField(referenceRect, feedbackList, new GUIContent(name)); if (hasReference) { return; } if (GUI.Button(addRect, new GUIContent(JuicyStyles.IconToolbarPlus.image, "Adds a feedback component"), JuicyStyles.RlPreButton)) { AddNewList(property); } }
protected override void Initialize() { juicyFeedbackList = target as JuicyFeedbackList; editors = new Dictionary <JuicyFeedbackBase, Editor>(); CacheProperty(ref displayName, "displayName"); CacheProperty(ref feedbackListProp, "feedbackList"); CacheProperty(ref debugView, "debugView"); for (int i = 0; i < feedbackListProp.arraySize; i++) { AddEditor(feedbackListProp.GetArrayElementAtIndex(i) .objectReferenceValue as JuicyFeedbackBase); } CreateContextMenu(); CreateAddFeedbackMenu(); showElementContextMenu = ShowElementContextMenu; }
public void Play(JuicyFeedbackList list) { list.Play(); }