public void Serialize() { var Referent = NodeReferenceMap.GetObject(this); if (Referent) { Type = Referent.GetType().ToString(); Value = JsonUtility.ToJson(Referent); } }
public bool SerializeObjectReferences() { bool referencesComplete = false; var Referent = NodeReferenceMap.GetObject(this); if (Referent) { var widgetType = Referent.GetType(); foreach (var info in widgetType.GetMembers().Where(m => m.MemberType == System.Reflection.MemberTypes.Field)) { var fieldInfo = info.Module.ResolveField(info.MetadataToken); var field = fieldInfo.GetValue(Referent); if (field is ISerializableReference) { var objects = ((ISerializableReference)field).GetReferencedObjects(); int completeRefs = 0; foreach (var obj in objects) { var objectID = NodeReferenceMap.GetObjectID(obj); if (!string.IsNullOrEmpty(objectID)) { completeRefs++; ((ISerializableReference)field).SetReferenceID(obj, objectID); } } if (objects.Count == completeRefs) { referencesComplete = true; } } } Serialize(); } else { referencesComplete = true; } return(referencesComplete); }
public bool NeedsReferenceSerialization() { System.Reflection.MemberInfo[] memberInfo = new System.Reflection.MemberInfo[0]; var Referent = NodeReferenceMap.GetObject(this); if (Referent) { memberInfo = Referent.GetType().GetMembers(); } else if (!string.IsNullOrEmpty(Type)) { var widgetType = System.Type.GetType(Type); if (widgetType != null) { memberInfo = widgetType.GetMembers(); } } foreach (var info in memberInfo) { if (info.MemberType == System.Reflection.MemberTypes.Field) { var token = info.MetadataToken; var type = info.Module.ResolveField(token); if (type.FieldType.GetInterfaces().Contains(typeof(ISerializableReference))) { return(true); } //Debug.Log("METHOD: " + info + " " + type.FieldType + " " + hasInterface); } } return(false); }