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); }
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); }