Fix for bug #1282477
This commit is contained in:
parent
b0c508827b
commit
3ac369a3b0
|
|
@ -220,9 +220,11 @@ make_geom(BulletSoftBodyNode *node, const GeomVertexFormat *format, bool two_sid
|
|||
|
||||
if (two_sided) {
|
||||
for (int j=0; j<nodes.size(); ++j) {
|
||||
btVector3 &v = nodes[j].m_x;
|
||||
btVector3 v = nodes[j].m_x;
|
||||
btVector3 &n = nodes[j].m_n;
|
||||
|
||||
v = trans.invXform(v);
|
||||
|
||||
vwriter.add_data3((PN_stdfloat)v.getX(), (PN_stdfloat)v.getY(), (PN_stdfloat)v.getZ());
|
||||
nwriter.add_data3((PN_stdfloat)n.getX(), (PN_stdfloat)n.getY(), (PN_stdfloat)n.getZ());
|
||||
fwriter.add_data1i(1);
|
||||
|
|
@ -231,23 +233,29 @@ make_geom(BulletSoftBodyNode *node, const GeomVertexFormat *format, bool two_sid
|
|||
|
||||
// Indices
|
||||
btSoftBody::Node *node0 = &nodes[0];
|
||||
int i0, i1, i2;
|
||||
|
||||
if (use_faces) {
|
||||
|
||||
btSoftBody::tFaceArray &faces(body->m_faces);
|
||||
|
||||
prim = new GeomTriangles(Geom::UH_stream);
|
||||
prim->set_shade_model(Geom::SM_uniform);
|
||||
|
||||
for (int j=0; j<faces.size(); ++j) {
|
||||
prim->add_vertices(int(faces[j].m_n[0] - node0),
|
||||
int(faces[j].m_n[1] - node0),
|
||||
int(faces[j].m_n[2] - node0));
|
||||
i0 = int(faces[j].m_n[0] - node0);
|
||||
i1 = int(faces[j].m_n[1] - node0);
|
||||
i2 = int(faces[j].m_n[2] - node0);
|
||||
|
||||
prim->add_vertices(i0, i1, i2);
|
||||
prim->close_primitive();
|
||||
|
||||
if (two_sided) {
|
||||
prim->add_vertices(nodes.size() + int(faces[j].m_n[0] - node0),
|
||||
nodes.size() + int(faces[j].m_n[2] - node0),
|
||||
nodes.size() + int(faces[j].m_n[1] - node0));
|
||||
i0 = nodes.size() + int(faces[j].m_n[0] - node0);
|
||||
i1 = nodes.size() + int(faces[j].m_n[2] - node0);
|
||||
i2 = nodes.size() + int(faces[j].m_n[1] - node0);
|
||||
|
||||
prim->add_vertices(i0, i1, i2);
|
||||
prim->close_primitive();
|
||||
}
|
||||
}
|
||||
|
|
@ -259,8 +267,10 @@ make_geom(BulletSoftBodyNode *node, const GeomVertexFormat *format, bool two_sid
|
|||
prim->set_shade_model(Geom::SM_uniform);
|
||||
|
||||
for (int j=0; j<links.size(); ++j) {
|
||||
prim->add_vertices(int(links[j].m_n[0] - node0),
|
||||
int(links[j].m_n[1] - node0));
|
||||
i0 = int(links[j].m_n[0] - node0);
|
||||
i1 = int(links[j].m_n[1] - node0);
|
||||
|
||||
prim->add_vertices(i0, i1);
|
||||
prim->close_primitive();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ PUBLISHED:
|
|||
INLINE ~BulletSoftBodyConfig();
|
||||
|
||||
enum CollisionFlag {
|
||||
CF_rigid__vs_soft_mask = 0x000f, // RVSmask: Rigid versus soft mask
|
||||
CF_rigid_vs_soft_mask = 0x000f, // RVSmask: Rigid versus soft mask
|
||||
CF_sdf_rigid_soft = 0x0001, // SDF_RS: SDF based rigid vs soft
|
||||
CF_cluster_rigid_soft = 0x0002, // CL_RS: Cluster vs convex rigid vs soft
|
||||
CF_soft_vs_soft_mask = 0x0030, // SVSmask: Soft versus soft mask
|
||||
|
|
|
|||
Loading…
Reference in New Issue