Example #1
0
        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();
        }
Example #2
0
        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();
 }