
Untitled
By: a guest on
May 5th, 2012 | syntax:
None | size: 1.02 KB | hits: 10 | expires: Never
bool BulletWrapper::get_renderdata(float **vtx, size_t *numvtx,
unsigned int **idx, size_t *numidx,
bool getindices) {
bool r = false;
btSoftBodyArray &sbs =
static_cast<btSoftRigidDynamicsWorld*>(world_)->getSoftBodyArray();
for(int ib=0;ib < sbs.size() && ib < 1; ++ib)
{
btSoftBody* psb=sbs[ib];
*vtx = new float[psb->m_nodes.size() * 3];
*numvtx = psb->m_nodes.size();
int i = 0;
for (i = 0; i < psb->m_nodes.size(); ++i) {
(*vtx)[i * 3 + 0] = psb->m_nodes[i].m_x.x();
(*vtx)[i * 3 + 1] = psb->m_nodes[i].m_x.y();
(*vtx)[i * 3 + 2] = psb->m_nodes[i].m_x.z();
}
if (getindices) {
*idx = new unsigned int[psb->m_faces.size() * 3];
*numidx = psb->m_faces.size();
for(i = 0; i < psb->m_faces.size(); ++i) {
(*idx)[i * 3 + 0] = psb->m_faces[i].m_n[0] - &psb->m_nodes[0];
(*idx)[i * 3 + 1] = psb->m_faces[i].m_n[1] - &psb->m_nodes[0];
(*idx)[i * 3 + 2] = psb->m_faces[i].m_n[2] - &psb->m_nodes[0];
}
}
r = true;
}
return r;
}