public override object PopulateMember(string memberName, JsonContract contract, JsonReader reader, Type objectType, object targetObject, JsonSerializerReader internalReader)
        {
            var instance = (UnityEngine.Transform)targetObject;

            switch (memberName)
            {
            case "parent":
                instance.parent = internalReader.DeserializeProperty <UnityEngine.Transform>(reader);
                break;

            case "position":
                instance.position = internalReader.DeserializeProperty <UnityEngine.Vector3>(reader);
                break;

            case "rotation":
                instance.rotation = internalReader.DeserializeProperty <UnityEngine.Quaternion>(reader);
                break;

            case "localScale":
                instance.localScale = internalReader.DeserializeProperty <UnityEngine.Vector3>(reader);
                break;

            case "hideFlags":
                instance.hideFlags = internalReader.DeserializeProperty <UnityEngine.HideFlags>(reader);
                break;

            default:
                reader.Skip();
                break;
            }
            return(instance);
        }
        public override object Create(JsonReader reader, JsonSerializerReader internalReader, JsonObjectContract objectContract, string id, string unityGuid, Type objectType, out bool exit)
        {
            Texture2D texture       = internalReader.DeserializeProperty <UnityEngine.Texture2D>(reader);
            Rect      textureRect   = internalReader.DeserializeProperty <Rect>(reader);
            Vector2   pivot         = internalReader.DeserializeProperty <UnityEngine.Vector2>(reader);
            float     pixelsPerUnit = reader.ReadProperty <float>();
            Vector4   border        = internalReader.DeserializeProperty <Vector4>(reader);

            exit = false;
            return(Sprite.Create(texture, textureRect, pivot, pixelsPerUnit, 0, SpriteMeshType.Tight, border));
        }
        public override object Populate(JsonContract contract, JsonReader reader, Type objectType, object targetObject, JsonSerializerReader internalReader)
        {
            Texture2D instance = (Texture2D)targetObject;

            if (instance == null)
            {
                int           width       = reader.ReadProperty <int>();
                int           height      = reader.ReadProperty <int>();
                TextureFormat format      = internalReader.DeserializeProperty <TextureFormat>(reader);
                int           mipmapCount = reader.ReadProperty <int>();
                instance = new Texture2D(width, height, format, mipmapCount > 1);
            }
            foreach (string propertyName in GetProperties(reader, internalReader))
            {
                switch (propertyName)
                {
                case "anisoLevel":
                    instance.anisoLevel = reader.ReadProperty <int>();
                    break;

                case "filterMode":
                    instance.filterMode = internalReader.DeserializeProperty <FilterMode>(reader);
                    break;

                case "wrapMode":
                    instance.wrapMode = internalReader.DeserializeProperty <TextureWrapMode>(reader);
                    break;

                case "mipMapBias":
                    instance.mipMapBias = reader.ReadProperty <float>();
                    break;

                case "rawTextureData":
                    // LoadRawTextureData requires that the correct width, height, TextureFormat and mipMaps are set before being called.
                    // If an error occurs here, it's likely that we're using LoadInto to load into a Texture which differs in these values.
                    // In this case, LoadInto should be avoided and Load should be used instead.
                    instance.LoadRawTextureData(reader.ReadProperty <byte[]>());
                    instance.Apply();
                    break;

                default:
                    reader.Skip();
                    break;
                }
            }
            return(targetObject);
        }
        public override object PopulateMember(string memberName, JsonContract contract, JsonReader reader, Type objectType, object targetObject, JsonSerializerReader internalReader)
        {
            var instance = (UnityEngine.MeshFilter)targetObject;

            switch (memberName)
            {
            case "sharedMesh":
                instance.sharedMesh = internalReader.DeserializeProperty <UnityEngine.Mesh>(reader);
                break;

            case "hideFlags":
                instance.hideFlags = internalReader.DeserializeProperty <UnityEngine.HideFlags>(reader);
                break;

            default:
                reader.Skip();
                break;
            }
            return(instance);
        }
        public override object PopulateMember(string memberName, JsonContract contract, JsonReader reader, Type objectType, object targetObject, JsonSerializerReader internalReader)
        {
            if (objectType == typeof(Bounds))
            {
                Bounds bounds = (Bounds)targetObject;
                switch (memberName)
                {
                case "center":
                    bounds.center = internalReader.DeserializeProperty <Vector3>(reader);
                    break;

                case "size":
                    bounds.size = internalReader.DeserializeProperty <Vector3>(reader);
                    break;

                default:
                    reader.Skip();
                    break;
                }
                return(bounds);
            }
            else
            {
                BoundsInt bounds = (BoundsInt)targetObject;
                switch (memberName)
                {
                case "position":
                    bounds.position = internalReader.DeserializeProperty <Vector3Int>(reader);
                    break;

                case "size":
                    bounds.size = internalReader.DeserializeProperty <Vector3Int>(reader);
                    break;

                default:
                    reader.Skip();
                    break;
                }
                return(bounds);
            }
        }
        public override object PopulateMember(string memberName, JsonContract contract, JsonReader reader, Type objectType, object targetObject, JsonSerializerReader internalReader)
        {
            var instance = (UnityEngine.AudioClip)targetObject;

            switch (memberName)
            {
            case "name":
                instance.name = reader.ReadProperty <System.String>();
                break;

            case "hideFlags":
                instance.hideFlags = internalReader.DeserializeProperty <UnityEngine.HideFlags>(reader);
                break;

            case "sampleData":
                instance.SetData(internalReader.DeserializeProperty <float[]>(reader), 0);
                break;

            default:
                reader.Skip();
                break;
            }
            return(instance);
        }
        public override object PopulateMember(string memberName, JsonContract contract, JsonReader reader, Type objectType, object targetObject, JsonSerializerReader internalReader)
        {
            var instance = (UnityEngine.Renderer)targetObject;

            switch (memberName)
            {
            case "sharedMaterials":
                instance.sharedMaterials = internalReader.DeserializeProperty <UnityEngine.Material[]>(reader);
                break;

            default:
                base.PopulateMember(memberName, contract, reader, objectType, targetObject, internalReader);
                break;
            }
            return(instance);
        }
        public override object PopulateMember(string memberName, JsonContract contract, JsonReader reader, Type objectType, object targetObject, JsonSerializerReader internalReader)
        {
            var instance = (UnityEngine.Collider)targetObject;

            switch (memberName)
            {
            case "isTrigger":
                instance.isTrigger = reader.ReadProperty <System.Boolean>();
                break;

            case "contactOffset":
                instance.contactOffset = reader.ReadProperty <System.Single>();
                break;

            case "sharedMaterial":
                instance.sharedMaterial = internalReader.DeserializeProperty <UnityEngine.PhysicMaterial>(reader);
                break;

            default:
                base.PopulateMember(memberName, contract, reader, objectType, targetObject, internalReader);
                break;
            }
            return(instance);
        }
Exemple #9
0
        public override object PopulateMember(string memberName, JsonContract contract, JsonReader reader, Type objectType, object targetObject, JsonSerializerReader internalReader)
        {
            var instance = (UnityEngine.Mesh)targetObject;

            switch (memberName)
            {
#if UNITY_2017_3
            case "indexFormat":
                instance.indexFormat = internalReader.DeserializeProperty <UnityEngine.Rendering.IndexFormat>(reader);
                break;
#endif
            case "bindposes":
                instance.bindposes = internalReader.DeserializeProperty <UnityEngine.Matrix4x4[]>(reader);
                break;

            case "subMeshCount":
                instance.subMeshCount = reader.ReadProperty <System.Int32>();
                break;

            case "bounds":
                instance.bounds = internalReader.DeserializeProperty <UnityEngine.Bounds>(reader);
                break;

            case "vertices":
                instance.vertices = internalReader.DeserializeProperty <UnityEngine.Vector3[]>(reader);
                break;

            case "normals":
                instance.normals = internalReader.DeserializeProperty <UnityEngine.Vector3[]>(reader);
                break;

            case "tangents":
                instance.tangents = internalReader.DeserializeProperty <UnityEngine.Vector4[]>(reader);
                break;

            case "uv":
                instance.uv = internalReader.DeserializeProperty <UnityEngine.Vector2[]>(reader);
                break;

            case "uv2":
                instance.uv2 = internalReader.DeserializeProperty <UnityEngine.Vector2[]>(reader);
                break;

            case "uv3":
                instance.uv3 = internalReader.DeserializeProperty <UnityEngine.Vector2[]>(reader);
                break;

            case "uv4":
                instance.uv4 = internalReader.DeserializeProperty <UnityEngine.Vector2[]>(reader);
                break;

            case "colors":
                instance.colors = internalReader.DeserializeProperty <UnityEngine.Color[]>(reader);
                break;

            case "colors32":
                instance.colors32 = internalReader.DeserializeProperty <UnityEngine.Color32[]>(reader);
                break;

            case "triangles":
                var triangles = internalReader.DeserializeProperty <System.Int32[][]>(reader);
                for (int i = 0; i < triangles.GetLength(0); i++)
                {
                    instance.SetTriangles(triangles[i], i);
                }
                break;

            case "indices":
                var indices = internalReader.DeserializeProperty <SerializedIndices[]>(reader);
                for (int i = 0; i < indices.GetLength(0); i++)
                {
                    instance.SetIndices(indices[i].indices, indices[i].meshTopology, i);
                }
                break;

            case "boneWeights":
                instance.boneWeights = internalReader.DeserializeProperty <UnityEngine.BoneWeight[]>(reader);
                break;

            case "name":
                instance.name = reader.ReadProperty <System.String>();
                break;

            case "hideFlags":
                instance.hideFlags = internalReader.DeserializeProperty <UnityEngine.HideFlags>(reader);
                break;

            default:
                reader.Skip();
                break;
            }
            return(instance);
        }
        public override object PopulateMember(string memberName, JsonContract contract, JsonReader reader, Type objectType, object targetObject, JsonSerializerReader internalReader)
        {
            Material material = (Material)targetObject;

            switch (memberName)
            {
            case "shader":
                Shader shader = internalReader.DeserializeProperty <Shader>(reader);
                if (material == null)
                {
                    material = new Material(shader);
                }
                else
                {
                    material.shader = shader;
                }
                break;

            case "name":
                material.name = reader.ReadProperty <string>();
                break;

            case "shaderKeywords":
                material.shaderKeywords = internalReader.DeserializeProperty <string[]>(reader);
                break;

            case "renderQueue":
                material.renderQueue = reader.ReadProperty <int>();
                break;

            case "globalIlluminationFlag":
                material.globalIlluminationFlags = internalReader.DeserializeProperty <MaterialGlobalIlluminationFlags>(reader);
                break;

            case "color":
                material.color = internalReader.DeserializeProperty <Color>(reader);
                break;

            case "doubleSidedGI":
                material.doubleSidedGI = reader.ReadProperty <bool>();
                break;

            case "enableInstancing":
                material.enableInstancing = reader.ReadProperty <bool>();
                break;

            case "mainTexture":
                material.mainTexture = internalReader.DeserializeProperty <Texture2D>(reader);
                break;

            case "mainTextureOffset":
                material.mainTextureOffset = internalReader.DeserializeProperty <Vector2>(reader);
                break;

            case "mainTextureScale":
                material.mainTextureScale = internalReader.DeserializeProperty <Vector2>(reader);
                break;

            case MaterialPropertiesName:
                List <JsonSerializedMaterialProperty> serializedProperties = internalReader.DeserializeProperty <List <JsonSerializedMaterialProperty> >(reader);
                foreach (JsonSerializedMaterialProperty serializedProperty in serializedProperties)
                {
                    if (serializedProperty.value != null)
                    {
                        switch (serializedProperty.type)
                        {
                        case RuntimeMaterialPropertyType.Color:
                            material.SetColor(serializedProperty.name, (Color)serializedProperty.value);
                            break;

                        case RuntimeMaterialPropertyType.Vector:
                            material.SetVector(serializedProperty.name, (Vector4)serializedProperty.value);
                            break;

                        case RuntimeMaterialPropertyType.Float:
                            material.SetFloat(serializedProperty.name, (float)Convert.ChangeType(serializedProperty.value, typeof(float)));
                            break;

                        case RuntimeMaterialPropertyType.Range:
                            material.SetFloat(serializedProperty.name, (float)Convert.ChangeType(serializedProperty.value, typeof(float)));
                            break;

                        case RuntimeMaterialPropertyType.Texture:
                            material.SetTexture(serializedProperty.name, (Texture)serializedProperty.value);
                            break;
                        }
                    }
                }
                break;

            default:
                reader.Skip();
                break;
            }
            return(material);
        }