Exemple #1
0
        public static void PasteComponentValues(object userData)
        {
            InspectableProperty   inspectableProperty = (InspectableProperty)userData;
            InspectableObjectData data = clipboard[inspectableProperty.InspectableObject.Type];

            JsonUtility.FromJsonOverwrite(data.Data, inspectableProperty.InspectableObject.Object);
            inspectableProperty.InspectableObject.ParentProperty.SetInspectableObjectData(data);
            inspectableProperty.InspectableObject.SerializedObject.ApplyModifiedProperties();
        }
 public static bool SetInspectableObjectData(this SerializedProperty property, InspectableObjectData data)
 {
     if (IsInspectableObjectData(property))
     {
         var property2 = property.Copy();
         if (property2.NextVisible(true))
         {
             foreach (var o in data.ToDictionary().Select(kvp => kvp.Value).ToArray())
             {
                 if (o != null && !data.ToDictionary().ContainsKey(o.GetInstanceID()))
                 {
                     data.ToDictionary().Add(o.GetInstanceID(), o);
                 }
             }
             do
             {
                 if (property2.name == TypeStr)
                 {
                     property2.stringValue = data.Type;
                 }
                 else if (property2.name == DataStr)
                 {
                     property2.stringValue = data.Data;
                 }
                 else if (property2.name == KeysStr)
                 {
                     var keys = data.ToDictionary().Keys.Where(key => data.Data.Contains(string.Format(InstanceIDStr, key.ToString()))).ToArray();
                     property2.arraySize = keys.Length;
                     for (int i = 0; i < keys.Length; i++)
                     {
                         property2.GetArrayElementAtIndex(i).intValue = keys[i];
                     }
                 }
                 else if (property2.name == ValuesStr)
                 {
                     var values = data.ToDictionary().Where(kvp => data.Data.Contains(string.Format(InstanceIDStr, kvp.Key.ToString()))).Select(kvp => kvp.Value).ToArray();
                     property2.arraySize = values.Length;
                     for (int i = 0; i < values.Length; i++)
                     {
                         property2.GetArrayElementAtIndex(i).objectReferenceValue = values[i];
                     }
                 }
             } while (property2.NextVisible(false));
         }
         return(true);
     }
     return(false);
 }
Exemple #3
0
 public static InspectableObject CreateInstance(SerializedProperty serializedProperty, InspectableObjectData data)
 {
     if (data != null)
     {
         var o = data.CreateInstance();
         if (o != null)
         {
             var inspectableObject = LoadFromCache(GetHashCode(serializedProperty, o));
             if (inspectableObject == null)
             {
                 inspectableObject = new InspectableObject(serializedProperty, o);
             }
             inspectableObject.SerializedObject = serializedProperty.serializedObject;
             return(inspectableObject);
         }
     }
     return(null);
 }