Ejemplo n.º 1
0
            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();
                }
            }
Ejemplo n.º 4
0
        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
            }));
        }