Example #1
0
    public override void Read(ES2Reader reader, object obj)
    {
        Mesh mesh = (Mesh)obj;

        reader.settings.MeshSettingsFromByteArray(reader.ReadMeshSettings());
                #if UNITY_2017_3
        mesh.indexFormat = (UnityEngine.Rendering.IndexFormat)reader.reader.ReadInt32();
                #endif
        mesh.vertices  = reader.ReadArray <Vector3>(new ES2_Vector3());
        mesh.triangles = reader.ReadArray <int>(new ES2_int());

        // Save submeshes
        if (reader.settings.saveSubmeshes)
        {
            mesh.subMeshCount = reader.reader.ReadInt32();

            for (int i = 0; i < mesh.subMeshCount; i++)
            {
                mesh.SetTriangles(reader.ReadArray <int>(new ES2_int()), i);
            }
        }

        // Save skinning
        if (reader.settings.saveSkinning)
        {
            mesh.bindposes   = reader.ReadArray <Matrix4x4>();
            mesh.boneWeights = reader.ReadArray <BoneWeight>();
        }

        if (reader.settings.saveNormals)
        {
            mesh.normals = reader.ReadArray <Vector3>(new ES2_Vector3());
        }
        else
        {
            mesh.RecalculateNormals();
        }

        if (reader.settings.saveUV)
        {
            mesh.uv = reader.ReadArray <Vector2>(new ES2_Vector2());
        }
        if (reader.settings.saveUV2)
        {
            mesh.uv2 = reader.ReadArray <Vector2>(new ES2_Vector2());
        }
        if (reader.settings.saveTangents)
        {
            mesh.tangents = reader.ReadArray <Vector4>(new ES2_Vector4());
        }
        if (reader.settings.saveColors)
        {
            mesh.colors32 = reader.ReadArray <Color32>(new ES2_Color32());
        }
    }