Пример #1
0
static bool decodeRig(fsMsgRig &_msg, const std::string &buffer, Size &start) {
    bool success = true;
    success &= read_vector(_msg.mesh().m_quads,buffer,start);                 // read quads
    success &= read_vector(_msg.mesh().m_tris,buffer,start);                  // read triangles
    success &= read_vector(_msg.mesh().m_vertex_data.m_vertices,buffer,start);// read neutral vertices
    success &= read_small_vector(_msg.blendshape_names(),buffer,start);       // read names
    uint16_t bsize = 0;
    success &= read_pod(bsize,buffer,start);
    _msg.blendshapes().resize(bsize);
    for(uint16_t i = 0;i < bsize; i++)
        success &= read_vector(_msg.blendshapes()[i].m_vertices,buffer,start);                  // read blendshapes
    return success;
}
Пример #2
0
void fsBinaryStream::encode_message(std::string &msg_out, const fsMsgRig                 &msg) {
    Size start = msg_out.size();

    BlockHeader header(msg.id());
    write_pod(msg_out, header);

    write_vector(msg_out, msg.mesh().m_quads); // write quads
    write_vector(msg_out, msg.mesh().m_tris);// write triangles
    write_vector(msg_out, msg.mesh().m_vertex_data.m_vertices);// write neutral vertices
    write_small_vector(msg_out, msg.blendshape_names());// write names
    write_pod(msg_out,uint16_t(msg.blendshapes().size()));
    for(uint16_t i = 0;i < uint16_t(msg.blendshapes().size()); i++)
        write_vector(msg_out, msg.blendshapes()[i].m_vertices); // write blendshapes

    update_msg_size(msg_out, start);
}