From 3262f702a3dcf0f0f1d64e4b1eda51de512885f6 Mon Sep 17 00:00:00 2001 From: enn0x Date: Fri, 11 Nov 2011 20:52:51 +0000 Subject: [PATCH] Fix debug rendering: switch from modify_geom to set_geom --- panda/src/bullet/bulletDebugNode.cxx | 62 +++++++++++++--------------- 1 file changed, 28 insertions(+), 34 deletions(-) diff --git a/panda/src/bullet/bulletDebugNode.cxx b/panda/src/bullet/bulletDebugNode.cxx index 384d3425f4..af4baf5e3d 100644 --- a/panda/src/bullet/bulletDebugNode.cxx +++ b/panda/src/bullet/bulletDebugNode.cxx @@ -52,20 +52,10 @@ BulletDebugNode(const char *name) : GeomNode(name) { prim = new GeomLines(Geom::UH_stream); prim->set_shade_model(Geom::SM_uniform); -/* - // Draw something in oder to prevent getting optimized away - GeomVertexWriter vwriter(vdata, InternalName::get_vertex()); - vwriter.add_data3(0.0, 0.0, 0.0); - vwriter.add_data3(0.0, 0.0, 0.0); - vwriter.add_data3(0.0, 0.0, 0.0); - prim->add_next_vertices(2); - prim->close_primitive(); -*/ - geom = new Geom(vdata); geom->add_primitive(prim); - this->add_geom(geom); + add_geom(geom); } // Triangles @@ -79,20 +69,10 @@ BulletDebugNode(const char *name) : GeomNode(name) { prim = new GeomTriangles(Geom::UH_stream); prim->set_shade_model(Geom::SM_uniform); -/* - // Draw something in oder to prevent getting optimized away - GeomVertexWriter vwriter(vdata, InternalName::get_vertex()); - vwriter.add_data3(0.0, 0.0, 0.0); - vwriter.add_data3(0.0, 0.0, 0.0); - vwriter.add_data3(0.0, 0.0, 0.0); - prim->add_next_vertices(3); - prim->close_primitive(); -*/ - geom = new Geom(vdata); geom->add_primitive(prim); - this->add_geom(geom); + add_geom(geom); } } @@ -230,6 +210,8 @@ sync_b2p(btDynamicsWorld *world) { if (is_overall_hidden()) return; + nassertv(get_num_geoms() == 2); + // Collect debug geometry data _drawer._lines.clear(); _drawer._triangles.clear(); @@ -243,13 +225,14 @@ sync_b2p(btDynamicsWorld *world) { // Render lines { - PT(Geom) geom = modify_geom(0); // TODO idx "0" is assumed - PT(GeomVertexData) vdata = geom->modify_vertex_data(); - PT(GeomPrimitive) prim = geom->modify_primitive(0); + PT(GeomVertexData) vdata; + PT(Geom) geom; + PT(GeomLines) prim; - geom->clear_cache(); - vdata->clear_rows(); - prim->clear_vertices(); + vdata = new GeomVertexData("", GeomVertexFormat::get_v3c4(), Geom::UH_stream); + + prim = new GeomLines(Geom::UH_stream); + prim->set_shade_model(Geom::SM_uniform); GeomVertexWriter vwriter = GeomVertexWriter(vdata, InternalName::get_vertex()); GeomVertexWriter cwriter = GeomVertexWriter(vdata, InternalName::get_color()); @@ -269,17 +252,23 @@ sync_b2p(btDynamicsWorld *world) { prim->add_vertex(v++); prim->close_primitive(); } + + geom = new Geom(vdata); + geom->add_primitive(prim); + + set_geom(0, geom); } // Render triangles { - PT(Geom) geom = modify_geom(1); // TODO idx "1" is assumed - PT(GeomVertexData) vdata = geom->modify_vertex_data(); - PT(GeomPrimitive) prim = geom->modify_primitive(0); + PT(GeomVertexData) vdata; + PT(Geom) geom; + PT(GeomTriangles) prim; - geom->clear_cache(); - vdata->clear_rows(); - prim->clear_vertices(); + vdata = new GeomVertexData("", GeomVertexFormat::get_v3c4(), Geom::UH_stream); + + prim = new GeomTriangles(Geom::UH_stream); + prim->set_shade_model(Geom::SM_uniform); GeomVertexWriter vwriter = GeomVertexWriter(vdata, InternalName::get_vertex()); GeomVertexWriter cwriter = GeomVertexWriter(vdata, InternalName::get_color()); @@ -302,6 +291,11 @@ sync_b2p(btDynamicsWorld *world) { prim->add_vertex(v++); prim->close_primitive(); } + + geom = new Geom(vdata); + geom->add_primitive(prim); + + set_geom(1, geom); } }