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; }
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); }