Bullet debug node now considers absolute transform.

This commit is contained in:
enn0x 2011-08-03 22:29:55 +00:00
parent da7458efce
commit a1b0bfd018
3 changed files with 13 additions and 18 deletions

View File

@ -188,6 +188,9 @@ add_shape(BulletShape *shape, CPT(TransformState) xform) {
nassertv(get_object());
nassertv(!(shape->ptr()->getShapeType() == CONVEX_HULL_SHAPE_PROXYTYPE
&& ((btConvexHullShape *)shape->ptr())->getNumVertices() == 0));
// Transform
btTransform trans;
if (xform) {

View File

@ -198,6 +198,11 @@ post_step(btDynamicsWorld *world) {
// Collect debug geometry data
world->debugDrawWorld();
// Get inverse of this node's net transform
NodePath np = NodePath::any_path(this);
LMatrix4f m = np.get_net_transform()->get_mat();
m.invert_in_place();
// Render collected data
_prim_lines->clear_vertices();
_prim_triangles->clear_vertices();
@ -213,31 +218,29 @@ post_step(btDynamicsWorld *world) {
for (lit = _drawer._lines.begin(); lit != _drawer._lines.end(); lit++) {
Line line = *lit;
vwriter.add_data3f(line._p0);
vwriter.add_data3f(m.xform_point(line._p0));
vwriter.add_data3f(m.xform_point(line._p1));
cwriter.add_data4f(line._color);
vwriter.add_data3f(line._p1);
cwriter.add_data4f(line._color);
_prim_lines->add_vertex(v++);
_prim_lines->add_vertex(v++);
_prim_lines->close_primitive();
}
for (tit = _drawer._triangles.begin(); tit != _drawer._triangles.end(); tit++) {
Triangle tri = *tit;
vwriter.add_data3f(tri._p0);
vwriter.add_data3f(m.xform_point(tri._p0));
vwriter.add_data3f(m.xform_point(tri._p1));
vwriter.add_data3f(m.xform_point(tri._p2));
cwriter.add_data4f(tri._color);
vwriter.add_data3f(tri._p1);
cwriter.add_data4f(tri._color);
vwriter.add_data3f(tri._p2);
cwriter.add_data4f(tri._color);
_prim_triangles->add_vertex(v++);
_prim_triangles->add_vertex(v++);
_prim_triangles->add_vertex(v++);
_prim_triangles->close_primitive();
}
@ -246,7 +249,6 @@ post_step(btDynamicsWorld *world) {
_drawer._triangles.clear();
// Force recompute of bounds
NodePath np = NodePath::any_path(this);
np.force_recompute_bounds();
}

View File

@ -205,16 +205,6 @@ write(ostream &out, int indent_level) const {
indent(out, indent_level + 4) << "num triangles:" << meshPart.m_numTriangles << endl;
indent(out, indent_level + 4) << "num vertices:" << meshPart.m_numVertices << endl;
// TODO print imesh info...
/*
int m_numTriangles
const unsigned char * m_triangleIndexBase
int m_triangleIndexStride
int m_numVertices
const unsigned char * m_vertexBase
int m_vertexStride
*/
}
}