private void VisitObject(UnityEngine.Object value) { var handle = UnityObjectSerializer.ToObjectHandle(value); StringBuffer.Append(' ', Style.Space * Indent); if (false == IsListItem) { StringBuffer.Append("\""); StringBuffer.Append(Property.Name); StringBuffer.Append("\": "); } if (string.IsNullOrEmpty(handle.Guid)) { StringBuffer.Append("{ \"$TypeId\": "); StringBuffer.Append((int)UTinyTypeId.UnityObject); StringBuffer.Append(" },\n"); } else { StringBuffer.Append("{ \"$TypeId\": "); StringBuffer.Append((int)UTinyTypeId.UnityObject); StringBuffer.Append(", \"Guid\": \""); StringBuffer.Append(handle.Guid); StringBuffer.Append("\", \"FileId\": "); StringBuffer.Append(handle.FileId); StringBuffer.Append(", \"Type\": "); StringBuffer.Append(handle.Type); StringBuffer.Append(" },\n"); } }
private void VisitObject(Object value) { var handle = UnityObjectSerializer.ToObjectHandle(value); WriteValuePropertyHeader(TypeCode.Object); Writer.Write((byte)UTinyBinaryToken.UnityObject); Writer.Write(handle.Guid ?? string.Empty); Writer.Write(handle.FileId); Writer.Write(handle.Type); }
public static object Read(BinaryReader reader) { var token = (UTinyBinaryToken)reader.ReadByte(); switch (token) { case UTinyBinaryToken.Id: return(ReadId(reader)); case UTinyBinaryToken.ModuleReference: return(new UTinyModule.Reference(ReadId(reader), reader.ReadString())); case UTinyBinaryToken.TypeReference: return(new UTinyType.Reference(ReadId(reader), reader.ReadString())); case UTinyBinaryToken.SceneReference: return(new UTinyEntityGroup.Reference(ReadId(reader), reader.ReadString())); case UTinyBinaryToken.EntityReference: return(new UTinyEntity.Reference(ReadId(reader), reader.ReadString())); case UTinyBinaryToken.ScriptReference: return(new UTinyScript.Reference(ReadId(reader), reader.ReadString())); case UTinyBinaryToken.SystemReference: return(new UTinySystem.Reference(ReadId(reader), reader.ReadString())); case UTinyBinaryToken.UnityObject: var guid = reader.ReadString(); var fileId = reader.ReadInt64(); var type = reader.ReadInt32(); return(UnityObjectSerializer.FromObjectHandle(new UnityObjectHandle { Guid = guid, FileId = fileId, Type = type })); default: throw new ArgumentOutOfRangeException(); } }
private static Object ParseUnityObject(object obj) { var o = obj as Object; if (o != null) { return(o); } var dictionary = obj as IDictionary <string, object>; if (null == dictionary) { return(null); } var guid = GetValue <string>(dictionary, "Guid"); var fileId = ParseLong(GetValue(dictionary, "FileId")); var type = ParseInt(GetValue(dictionary, "Type")); return(UnityObjectSerializer.FromObjectHandle(new UnityObjectHandle { Guid = guid, FileId = fileId, Type = type })); }