Exemplo n.º 1
0
        public static void Paste(SerializedProperty feedbacks, Action removeAll,
                                 Func <Type, JuicyFeedbackBase> addAction)
        {
            if (feedbacks == null)
            {
                return;
            }

            removeAll.Invoke();

            foreach (FeedbackCopyData data in CopiedFeedbacks)
            {
                addAction.Invoke(data.type);
            }

            for (int i = 0; i < feedbacks.arraySize; i++)
            {
                SerializedProperty feedback = feedbacks.GetArrayElementAtIndex(i);
                JuicyFeedbackBase  f        = feedback.objectReferenceValue as JuicyFeedbackBase;
                FeedbackCopyData   data     = CopiedFeedbacks[i];

                JuicyEditorUtils.PasteFeedback(feedback, f);

                foreach (var property in data.properties)
                {
                    SerializedObject obj = new SerializedObject(f);
                    obj.CopyFromSerializedProperty(property);
                    obj.ApplyModifiedProperties();
                }
            }

            CopiedFeedbacks.Clear();
        }
Exemplo n.º 2
0
        public static void Copy(SerializedProperty feedbackList)
        {
            if (feedbackList == null)
            {
                return;
            }

            CopiedFeedbacks.Clear();

            for (int i = 0; i < feedbackList.arraySize; i++)
            {
                SerializedProperty prop = feedbackList.GetArrayElementAtIndex(i);

                FeedbackCopyData data = new FeedbackCopyData {
                    type = prop.objectReferenceValue.GetType(),
                };

                SerializedProperty property = new SerializedObject(prop
                                                                   .objectReferenceValue).GetIterator();
                property.Next(true);

                do
                {
                    if (!FeedbackCopyHelper.IgnoreList.Contains(property.name))
                    {
                        data.properties.Add(property.Copy());
                    }
                } while (property.Next(false));

                CopiedFeedbacks.Add(data);
            }
        }