Browse Source

Geom now accepts a GeomVertexData in the constructor

David Rose 20 years ago
parent
commit
95f9d58591
33 changed files with 57 additions and 99 deletions
  1. 1 2
      panda/src/collide/collisionInvSphere.cxx
  2. 1 2
      panda/src/collide/collisionLine.cxx
  3. 2 4
      panda/src/collide/collisionPlane.cxx
  4. 2 4
      panda/src/collide/collisionPolygon.cxx
  5. 1 2
      panda/src/collide/collisionRay.cxx
  6. 1 2
      panda/src/collide/collisionSegment.cxx
  7. 1 2
      panda/src/collide/collisionSphere.cxx
  8. 1 2
      panda/src/collide/collisionTube.cxx
  9. 2 4
      panda/src/collide/collisionVisualizer.cxx
  10. 1 2
      panda/src/distort/projectionScreen.cxx
  11. 2 4
      panda/src/egg2pg/eggLoader.cxx
  12. 2 4
      panda/src/framework/windowFramework.cxx
  13. 3 2
      panda/src/gobj/geom.cxx
  14. 1 1
      panda/src/gobj/geom.h
  15. 1 2
      panda/src/gobj/lens.cxx
  16. 1 2
      panda/src/grutil/cardMaker.cxx
  17. 2 4
      panda/src/grutil/lineSegs.cxx
  18. 4 8
      panda/src/parametrics/ropeNode.cxx
  19. 1 2
      panda/src/parametrics/sheetNode.cxx
  20. 2 3
      panda/src/particlesystem/lineParticleRenderer.cxx
  21. 2 3
      panda/src/particlesystem/pointParticleRenderer.cxx
  22. 2 3
      panda/src/particlesystem/sparkleParticleRenderer.cxx
  23. 2 3
      panda/src/particlesystem/spriteParticleRenderer.cxx
  24. 2 4
      panda/src/pgraph/cullTraverser.cxx
  25. 1 2
      panda/src/pgraph/cullableObject.cxx
  26. 2 5
      panda/src/pgraph/portalClipper.cxx
  27. 0 1
      panda/src/pgraph/portalClipper.h
  28. 3 6
      panda/src/pgui/pgFrameStyle.cxx
  29. 1 3
      panda/src/text/dynamicTextGlyph.cxx
  30. 2 1
      panda/src/text/geomTextGlyph.I
  31. 2 1
      panda/src/text/geomTextGlyph.cxx
  32. 2 1
      panda/src/text/geomTextGlyph.h
  33. 4 8
      panda/src/text/textNode.cxx

+ 1 - 2
panda/src/collide/collisionInvSphere.cxx

@@ -328,8 +328,7 @@ fill_viz_geom() {
     strip->close_primitive();
     strip->close_primitive();
   }
   }
   
   
-  PT(Geom) geom = new Geom;
-  geom->set_vertex_data(vdata);
+  PT(Geom) geom = new Geom(vdata);
   geom->add_primitive(strip);
   geom->add_primitive(strip);
   
   
   _viz_geom->add_geom(geom, get_solid_viz_state());
   _viz_geom->add_geom(geom, get_solid_viz_state());

+ 1 - 2
panda/src/collide/collisionLine.cxx

@@ -100,8 +100,7 @@ fill_viz_geom() {
   line->add_next_vertices(num_points);
   line->add_next_vertices(num_points);
   line->close_primitive();
   line->close_primitive();
   
   
-  PT(Geom) geom = new Geom;
-  geom->set_vertex_data(vdata);
+  PT(Geom) geom = new Geom(vdata);
   geom->add_primitive(line);
   geom->add_primitive(line);
   
   
   _viz_geom->add_geom(geom, get_other_viz_state());
   _viz_geom->add_geom(geom, get_other_viz_state());

+ 2 - 4
panda/src/collide/collisionPlane.cxx

@@ -343,12 +343,10 @@ fill_viz_geom() {
   border->add_vertex(0);
   border->add_vertex(0);
   border->close_primitive();
   border->close_primitive();
   
   
-  PT(Geom) geom1 = new Geom;
-  geom1->set_vertex_data(vdata);
+  PT(Geom) geom1 = new Geom(vdata);
   geom1->add_primitive(body);
   geom1->add_primitive(body);
   
   
-  PT(Geom) geom2 = new Geom;
-  geom2->set_vertex_data(vdata);
+  PT(Geom) geom2 = new Geom(vdata);
   geom2->add_primitive(border);
   geom2->add_primitive(border);
   
   
   _viz_geom->add_geom(geom1, get_solid_viz_state());
   _viz_geom->add_geom(geom1, get_solid_viz_state());

+ 2 - 4
panda/src/collide/collisionPolygon.cxx

@@ -831,12 +831,10 @@ draw_polygon(GeomNode *viz_geom_node, GeomNode *bounds_viz_geom_node,
   border->add_vertex(0);
   border->add_vertex(0);
   border->close_primitive();
   border->close_primitive();
   
   
-  PT(Geom) geom1 = new Geom;
-  geom1->set_vertex_data(vdata);
+  PT(Geom) geom1 = new Geom(vdata);
   geom1->add_primitive(body);
   geom1->add_primitive(body);
   
   
-  PT(Geom) geom2 = new Geom;
-  geom2->set_vertex_data(vdata);
+  PT(Geom) geom2 = new Geom(vdata);
   geom2->add_primitive(border);
   geom2->add_primitive(border);
 
 
   viz_geom_node->add_geom(geom1, ((CollisionPolygon *)this)->get_solid_viz_state());
   viz_geom_node->add_geom(geom1, ((CollisionPolygon *)this)->get_solid_viz_state());

+ 1 - 2
panda/src/collide/collisionRay.cxx

@@ -172,8 +172,7 @@ fill_viz_geom() {
   line->add_next_vertices(num_points);
   line->add_next_vertices(num_points);
   line->close_primitive();
   line->close_primitive();
   
   
-  PT(Geom) geom = new Geom;
-  geom->set_vertex_data(vdata);
+  PT(Geom) geom = new Geom(vdata);
   geom->add_primitive(line);
   geom->add_primitive(line);
   
   
   _viz_geom->add_geom(geom, get_other_viz_state());
   _viz_geom->add_geom(geom, get_other_viz_state());

+ 1 - 2
panda/src/collide/collisionSegment.cxx

@@ -170,8 +170,7 @@ fill_viz_geom() {
   line->add_next_vertices(2);
   line->add_next_vertices(2);
   line->close_primitive();
   line->close_primitive();
   
   
-  PT(Geom) geom = new Geom;
-  geom->set_vertex_data(vdata);
+  PT(Geom) geom = new Geom(vdata);
   geom->add_primitive(line);
   geom->add_primitive(line);
   
   
   _viz_geom->add_geom(geom, get_other_viz_state());
   _viz_geom->add_geom(geom, get_other_viz_state());

+ 1 - 2
panda/src/collide/collisionSphere.cxx

@@ -347,8 +347,7 @@ fill_viz_geom() {
     strip->close_primitive();
     strip->close_primitive();
   }
   }
   
   
-  PT(Geom) geom = new Geom;
-  geom->set_vertex_data(vdata);
+  PT(Geom) geom = new Geom(vdata);
   geom->add_primitive(strip);
   geom->add_primitive(strip);
   
   
   _viz_geom->add_geom(geom, get_solid_viz_state());
   _viz_geom->add_geom(geom, get_solid_viz_state());

+ 1 - 2
panda/src/collide/collisionTube.cxx

@@ -428,8 +428,7 @@ fill_viz_geom() {
     strip->close_primitive();
     strip->close_primitive();
   }
   }
   
   
-  PT(Geom) geom = new Geom;
-  geom->set_vertex_data(vdata);
+  PT(Geom) geom = new Geom(vdata);
   geom->add_primitive(strip);
   geom->add_primitive(strip);
   
   
   // Now transform the vertices to their actual location.
   // Now transform the vertices to their actual location.

+ 2 - 4
panda/src/collide/collisionVisualizer.cxx

@@ -206,8 +206,7 @@ cull_callback(CullTraverser *trav, CullTraverserData &data) {
             points->close_primitive();
             points->close_primitive();
           }
           }
 
 
-          PT(Geom) geom = new Geom;
-          geom->set_vertex_data(point_vdata);
+          PT(Geom) geom = new Geom(point_vdata);
           geom->add_primitive(points);
           geom->add_primitive(points);
             
             
           CullableObject *object = 
           CullableObject *object = 
@@ -235,8 +234,7 @@ cull_callback(CullTraverser *trav, CullTraverserData &data) {
           lines->add_next_vertices(2);
           lines->add_next_vertices(2);
           lines->close_primitive();
           lines->close_primitive();
 
 
-          PT(Geom) geom = new Geom;
-          geom->set_vertex_data(line_vdata);
+          PT(Geom) geom = new Geom(line_vdata);
           geom->add_primitive(lines);
           geom->add_primitive(lines);
           
           
           CullableObject *object = 
           CullableObject *object = 

+ 1 - 2
panda/src/distort/projectionScreen.cxx

@@ -253,8 +253,7 @@ generate_screen(const NodePath &projector, const string &screen_name,
     strip->close_primitive();
     strip->close_primitive();
   }
   }
 
 
-  PT(Geom) geom = new Geom;
-  geom->set_vertex_data(vdata);
+  PT(Geom) geom = new Geom(vdata);
   geom->add_primitive(strip);
   geom->add_primitive(strip);
   
   
   geom_node->add_geom(geom);
   geom_node->add_geom(geom);

+ 2 - 4
panda/src/egg2pg/eggLoader.cxx

@@ -354,8 +354,7 @@ make_polyset(EggBin *egg_bin, PandaNode *parent, const LMatrix4d *transform,
     nassertv(vertex_data != (GeomVertexData *)NULL);
     nassertv(vertex_data != (GeomVertexData *)NULL);
 
 
     // And create a Geom to hold the primitives.
     // And create a Geom to hold the primitives.
-    PT(Geom) geom = new Geom;
-    geom->set_vertex_data(vertex_data);
+    PT(Geom) geom = new Geom(vertex_data);
 
 
     // Add each new primitive to the Geom.
     // Add each new primitive to the Geom.
     Primitives::const_iterator pi;
     Primitives::const_iterator pi;
@@ -566,8 +565,7 @@ show_normals(EggVertexPool *vertex_pool, GeomNode *geom_node) {
     }
     }
   }
   }
 
 
-  PT(Geom) geom = new Geom;
-  geom->set_vertex_data(vertex_data);
+  PT(Geom) geom = new Geom(vertex_data);
   geom->add_primitive(primitive);
   geom->add_primitive(primitive);
   geom_node->add_geom(geom);
   geom_node->add_geom(geom);
 }
 }

+ 2 - 4
panda/src/framework/windowFramework.cxx

@@ -645,8 +645,7 @@ load_default_model(const NodePath &parent) {
   tri->add_consecutive_vertices(0, 3);
   tri->add_consecutive_vertices(0, 3);
   tri->close_primitive();
   tri->close_primitive();
   
   
-  PT(Geom) geom = new Geom;
-  geom->set_vertex_data(vdata);
+  PT(Geom) geom = new Geom(vdata);
   geom->add_primitive(tri);
   geom->add_primitive(tri);
   
   
   geomnode->add_geom(geom, state);
   geomnode->add_geom(geom, state);
@@ -1034,8 +1033,7 @@ load_image_as_model(const Filename &filename) {
   strip->add_consecutive_vertices(0, 4);
   strip->add_consecutive_vertices(0, 4);
   strip->close_primitive();
   strip->close_primitive();
   
   
-  PT(Geom) geom = new Geom;
-  geom->set_vertex_data(vdata);
+  PT(Geom) geom = new Geom(vdata);
   geom->add_primitive(strip);
   geom->add_primitive(strip);
   
   
   card_node->add_geom(geom);
   card_node->add_geom(geom);

+ 3 - 2
panda/src/gobj/geom.cxx

@@ -35,7 +35,8 @@ TypeHandle Geom::_type_handle;
 //  Description: 
 //  Description: 
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 Geom::
 Geom::
-Geom() {
+Geom(const GeomVertexData *data) {
+  set_vertex_data(data);
 }
 }
 
 
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
@@ -1067,7 +1068,7 @@ write_datagram(BamWriter *manager, Datagram &dg) {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 TypedWritable *Geom::
 TypedWritable *Geom::
 make_from_bam(const FactoryParams &params) {
 make_from_bam(const FactoryParams &params) {
-  Geom *object = new Geom;
+  Geom *object = new Geom(NULL);
   DatagramIterator scan;
   DatagramIterator scan;
   BamReader *manager;
   BamReader *manager;
 
 

+ 1 - 1
panda/src/gobj/geom.h

@@ -53,7 +53,7 @@ class PreparedGraphicsObjects;
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 class EXPCL_PANDA Geom : public TypedWritableReferenceCount, public BoundedObject, public GeomEnums {
 class EXPCL_PANDA Geom : public TypedWritableReferenceCount, public BoundedObject, public GeomEnums {
 PUBLISHED:
 PUBLISHED:
-  Geom();
+  Geom(const GeomVertexData *data);
   Geom(const Geom &copy);
   Geom(const Geom &copy);
   void operator = (const Geom &copy);
   void operator = (const Geom &copy);
   virtual ~Geom();
   virtual ~Geom();

+ 1 - 2
panda/src/gobj/lens.cxx

@@ -956,8 +956,7 @@ make_geometry() {
   line->add_vertex(num_segments * (4 * 2) + 1);
   line->add_vertex(num_segments * (4 * 2) + 1);
   line->close_primitive();
   line->close_primitive();
   
   
-  PT(Geom) geom = new Geom;
-  geom->set_vertex_data(_geom_data);
+  PT(Geom) geom = new Geom(_geom_data);
   geom->add_primitive(line);
   geom->add_primitive(line);
   
   
   return geom.p();
   return geom.p();

+ 1 - 2
panda/src/grutil/cardMaker.cxx

@@ -115,8 +115,7 @@ generate() {
   strip->add_next_vertices(4);
   strip->add_next_vertices(4);
   strip->close_primitive();
   strip->close_primitive();
   
   
-  PT(Geom) geom = new Geom;
-  geom->set_vertex_data(vdata);
+  PT(Geom) geom = new Geom(vdata);
   geom->add_primitive(strip);
   geom->add_primitive(strip);
   
   
   gnode->add_geom(geom);
   gnode->add_geom(geom);

+ 2 - 4
panda/src/grutil/lineSegs.cxx

@@ -256,14 +256,12 @@ create(GeomNode *previous, bool dynamic) {
     }
     }
 
 
     if (lines->get_num_vertices() != 0) {
     if (lines->get_num_vertices() != 0) {
-      PT(Geom) geom = new Geom;
-      geom->set_vertex_data(_created_data);
+      PT(Geom) geom = new Geom(_created_data);
       geom->add_primitive(lines);
       geom->add_primitive(lines);
       previous->add_geom(geom, state);
       previous->add_geom(geom, state);
     }
     }
     if (points->get_num_vertices() != 0) {
     if (points->get_num_vertices() != 0) {
-      PT(Geom) geom = new Geom;
-      geom->set_vertex_data(_created_data);
+      PT(Geom) geom = new Geom(_created_data);
       geom->add_primitive(points);
       geom->add_primitive(points);
       previous->add_geom(geom, state);
       previous->add_geom(geom, state);
     }
     }

+ 4 - 8
panda/src/parametrics/ropeNode.cxx

@@ -350,8 +350,7 @@ render_thread(CullTraverser *trav, CullTraverserData &data,
     strip->close_primitive();
     strip->close_primitive();
   }
   }
   
   
-  PT(Geom) geom = new Geom;
-  geom->set_vertex_data(vdata);
+  PT(Geom) geom = new Geom(vdata);
   geom->add_primitive(strip);
   geom->add_primitive(strip);
   
   
   CPT(RenderAttrib) thick = RenderModeAttrib::make(RenderModeAttrib::M_unchanged, get_thickness());
   CPT(RenderAttrib) thick = RenderModeAttrib::make(RenderModeAttrib::M_unchanged, get_thickness());
@@ -396,8 +395,7 @@ render_tape(CullTraverser *trav, CullTraverserData &data,
     strip->close_primitive();
     strip->close_primitive();
   }
   }
   
   
-  PT(Geom) geom = new Geom;
-  geom->set_vertex_data(vdata);
+  PT(Geom) geom = new Geom(vdata);
   geom->add_primitive(strip);
   geom->add_primitive(strip);
   
   
   CullableObject *object = new CullableObject(geom, data._state,
   CullableObject *object = new CullableObject(geom, data._state,
@@ -446,8 +444,7 @@ render_billboard(CullTraverser *trav, CullTraverserData &data,
     strip->close_primitive();
     strip->close_primitive();
   }
   }
   
   
-  PT(Geom) geom = new Geom;
-  geom->set_vertex_data(vdata);
+  PT(Geom) geom = new Geom(vdata);
   geom->add_primitive(strip);
   geom->add_primitive(strip);
   
   
   CullableObject *object = new CullableObject(geom, data._state,
   CullableObject *object = new CullableObject(geom, data._state,
@@ -503,8 +500,7 @@ render_tube(CullTraverser *trav, CullTraverserData &data,
     vi += (int)segment.size();
     vi += (int)segment.size();
   }
   }
   
   
-  PT(Geom) geom = new Geom;
-  geom->set_vertex_data(vdata);
+  PT(Geom) geom = new Geom(vdata);
   geom->add_primitive(strip);
   geom->add_primitive(strip);
   
   
   CullableObject *object = new CullableObject(geom, data._state,
   CullableObject *object = new CullableObject(geom, data._state,

+ 1 - 2
panda/src/parametrics/sheetNode.cxx

@@ -326,8 +326,7 @@ render_sheet(CullTraverser *trav, CullTraverserData &data,
     }
     }
   }
   }
   
   
-  PT(Geom) geom = new Geom;
-  geom->set_vertex_data(vdata);
+  PT(Geom) geom = new Geom(vdata);
   geom->add_primitive(strip);
   geom->add_primitive(strip);
   
   
   CullableObject *object = new CullableObject(geom, data._state,
   CullableObject *object = new CullableObject(geom, data._state,

+ 2 - 3
panda/src/particlesystem/lineParticleRenderer.cxx

@@ -133,12 +133,11 @@ resize_pool(int new_size) {
 
 
 void LineParticleRenderer::
 void LineParticleRenderer::
 init_geoms() {
 init_geoms() {
-  PT(Geom) geom = new Geom; 
-  _line_primitive = geom;
   _vdata = new GeomVertexData
   _vdata = new GeomVertexData
     ("particles", GeomVertexFormat::get_v3cp(),
     ("particles", GeomVertexFormat::get_v3cp(),
      Geom::UH_dynamic);
      Geom::UH_dynamic);
-  geom->set_vertex_data(_vdata);
+  PT(Geom) geom = new Geom(_vdata);
+  _line_primitive = geom;
   _lines = new GeomLines(Geom::UH_dynamic);
   _lines = new GeomLines(Geom::UH_dynamic);
   geom->add_primitive(_lines);
   geom->add_primitive(_lines);
 
 

+ 2 - 3
panda/src/particlesystem/pointParticleRenderer.cxx

@@ -108,12 +108,11 @@ resize_pool(int new_size) {
 
 
 void PointParticleRenderer::
 void PointParticleRenderer::
 init_geoms() {
 init_geoms() {
-  PT(Geom) geom = new Geom; 
-  _point_primitive = geom;
   _vdata = new GeomVertexData
   _vdata = new GeomVertexData
     ("particles", GeomVertexFormat::get_v3cp(),
     ("particles", GeomVertexFormat::get_v3cp(),
      Geom::UH_dynamic);
      Geom::UH_dynamic);
-  geom->set_vertex_data(_vdata);
+  PT(Geom) geom = new Geom(_vdata);
+  _point_primitive = geom;
   _points = new GeomPoints(Geom::UH_dynamic);
   _points = new GeomPoints(Geom::UH_dynamic);
   geom->add_primitive(_points);
   geom->add_primitive(_points);
   
   

+ 2 - 3
panda/src/particlesystem/sparkleParticleRenderer.cxx

@@ -129,12 +129,11 @@ resize_pool(int new_size) {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 void SparkleParticleRenderer::
 void SparkleParticleRenderer::
 init_geoms() {
 init_geoms() {
-  PT(Geom) geom = new Geom; 
-  _line_primitive = geom;
   _vdata = new GeomVertexData
   _vdata = new GeomVertexData
     ("particles", GeomVertexFormat::get_v3cp(),
     ("particles", GeomVertexFormat::get_v3cp(),
      Geom::UH_dynamic);
      Geom::UH_dynamic);
-  geom->set_vertex_data(_vdata);
+  PT(Geom) geom = new Geom(_vdata);
+  _line_primitive = geom;
   _lines = new GeomLines(Geom::UH_dynamic);
   _lines = new GeomLines(Geom::UH_dynamic);
   geom->add_primitive(_lines);
   geom->add_primitive(_lines);
 
 

+ 2 - 3
panda/src/particlesystem/spriteParticleRenderer.cxx

@@ -498,10 +498,9 @@ init_geoms() {
     // For each frame of the animation...
     // For each frame of the animation...
     for (j = 0; j < _anim_size[i]; ++j) {
     for (j = 0; j < _anim_size[i]; ++j) {
       _ttl_count[i] = new int[_anim_size[i]];
       _ttl_count[i] = new int[_anim_size[i]];
-      PT(Geom) geom = new Geom;
-      _sprite_primitive[i].push_back((Geom*)geom);
       _vdata[i].push_back(new GeomVertexData("particles", format, Geom::UH_dynamic));
       _vdata[i].push_back(new GeomVertexData("particles", format, Geom::UH_dynamic));
-      geom->set_vertex_data(_vdata[i][j]);
+      PT(Geom) geom = new Geom(_vdata[i][j]);
+      _sprite_primitive[i].push_back((Geom*)geom);
       _sprites[i].push_back(new GeomPoints(Geom::UH_dynamic));
       _sprites[i].push_back(new GeomPoints(Geom::UH_dynamic));
       geom->add_primitive(_sprites[i][j]);
       geom->add_primitive(_sprites[i][j]);
       
       

+ 2 - 4
panda/src/pgraph/cullTraverser.cxx

@@ -333,8 +333,7 @@ make_bounds_viz(const BoundingVolume &vol) {
       strip->close_primitive();
       strip->close_primitive();
     }
     }
     
     
-    geom = new Geom;
-    geom->set_vertex_data(vdata);
+    geom = new Geom(vdata);
     geom->add_primitive(strip);
     geom->add_primitive(strip);
 
 
   } else {
   } else {
@@ -398,8 +397,7 @@ make_tight_bounds_viz(PandaNode *node) {
     strip->add_vertex(1);
     strip->add_vertex(1);
     strip->close_primitive();
     strip->close_primitive();
       
       
-    PT(Geom) geom = new Geom;
-    geom->set_vertex_data(vdata);
+    PT(Geom) geom = new Geom(vdata);
     geom->add_primitive(strip);
     geom->add_primitive(strip);
     geom = geom.p();
     geom = geom.p();
   }
   }

+ 1 - 2
panda/src/pgraph/cullableObject.cxx

@@ -250,8 +250,7 @@ munge_points_to_quads(const CullTraverser *traverser) {
   GeomVertexWriter new_texcoord(new_data, InternalName::get_texcoord());
   GeomVertexWriter new_texcoord(new_data, InternalName::get_texcoord());
   int new_vi = 0;
   int new_vi = 0;
 
 
-  PT(Geom) new_geom = new Geom();
-  new_geom->set_vertex_data(new_data);
+  PT(Geom) new_geom = new Geom(new_data);
 
 
   const LMatrix4f &modelview = _modelview_transform->get_mat();
   const LMatrix4f &modelview = _modelview_transform->get_mat();
 
 

+ 2 - 5
panda/src/pgraph/portalClipper.cxx

@@ -45,7 +45,6 @@ TypeHandle PortalClipper::_type_handle;
 PortalClipper::
 PortalClipper::
 PortalClipper(GeometricBoundingVolume *frustum, SceneSetup *scene_setup) {
 PortalClipper(GeometricBoundingVolume *frustum, SceneSetup *scene_setup) {
   _previous = new GeomNode("my_frustum");
   _previous = new GeomNode("my_frustum");
-  _geom = new Geom;
 
 
   _view_frustum = _reduced_frustum = DCAST(BoundingHexahedron, frustum);
   _view_frustum = _reduced_frustum = DCAST(BoundingHexahedron, frustum);
 
 
@@ -204,14 +203,12 @@ draw_lines() {
     }
     }
 
 
     if (lines->get_num_vertices() != 0) {
     if (lines->get_num_vertices() != 0) {
-      PT(Geom) geom = new Geom;
-      geom->set_vertex_data(vdata);
+      PT(Geom) geom = new Geom(vdata);
       geom->add_primitive(lines);
       geom->add_primitive(lines);
       _previous->add_geom(geom, state);
       _previous->add_geom(geom, state);
     }
     }
     if (points->get_num_vertices() != 0) {
     if (points->get_num_vertices() != 0) {
-      PT(Geom) geom = new Geom;
-      geom->set_vertex_data(vdata);
+      PT(Geom) geom = new Geom(vdata);
       geom->add_primitive(points);
       geom->add_primitive(points);
       _previous->add_geom(geom, state);
       _previous->add_geom(geom, state);
     }
     }

+ 0 - 1
panda/src/pgraph/portalClipper.h

@@ -124,7 +124,6 @@ private:
   float _thick;
   float _thick;
 
 
   PT(GeomVertexData) _created_data;
   PT(GeomVertexData) _created_data;
-  PT(Geom) _geom;
 
 
   BoundingHexahedron *_view_frustum;
   BoundingHexahedron *_view_frustum;
   BoundingHexahedron *_reduced_frustum;
   BoundingHexahedron *_reduced_frustum;

+ 3 - 6
panda/src/pgui/pgFrameStyle.cxx

@@ -218,8 +218,7 @@ generate_flat_geom(const LVecBase4f &frame) {
   strip->add_next_vertices(4);
   strip->add_next_vertices(4);
   strip->close_primitive();
   strip->close_primitive();
   
   
-  PT(Geom) geom = new Geom;
-  geom->set_vertex_data(vdata);
+  PT(Geom) geom = new Geom(vdata);
   geom->add_primitive(strip);
   geom->add_primitive(strip);
   gnode->add_geom(geom);
   gnode->add_geom(geom);
   
   
@@ -389,8 +388,7 @@ generate_bevel_geom(const LVecBase4f &frame, bool in) {
   strip->close_primitive();
   strip->close_primitive();
   strip->set_shade_model(Geom::SM_flat_last_vertex);
   strip->set_shade_model(Geom::SM_flat_last_vertex);
   
   
-  PT(Geom) geom = new Geom;
-  geom->set_vertex_data(vdata);
+  PT(Geom) geom = new Geom(vdata);
   geom->add_primitive(strip);
   geom->add_primitive(strip);
   
   
   CPT(RenderState) flat_state = RenderState::make(ShadeModelAttrib::make(ShadeModelAttrib::M_flat));
   CPT(RenderState) flat_state = RenderState::make(ShadeModelAttrib::make(ShadeModelAttrib::M_flat));
@@ -631,8 +629,7 @@ generate_groove_geom(const LVecBase4f &frame, bool in) {
   
   
   strip->set_shade_model(Geom::SM_flat_last_vertex);
   strip->set_shade_model(Geom::SM_flat_last_vertex);
   
   
-  PT(Geom) geom = new Geom;
-  geom->set_vertex_data(vdata);
+  PT(Geom) geom = new Geom(vdata);
   geom->add_primitive(strip);
   geom->add_primitive(strip);
   
   
   CPT(RenderState) flat_state = RenderState::make(ShadeModelAttrib::make(ShadeModelAttrib::M_flat));
   CPT(RenderState) flat_state = RenderState::make(ShadeModelAttrib::make(ShadeModelAttrib::M_flat));

+ 1 - 3
panda/src/text/dynamicTextGlyph.cxx

@@ -22,7 +22,6 @@
 
 
 #include "dynamicTextPage.h"
 #include "dynamicTextPage.h"
 #include "geomTextGlyph.h"
 #include "geomTextGlyph.h"
-#include "geomTextGlyph.h"
 #include "geomVertexData.h"
 #include "geomVertexData.h"
 #include "geomVertexFormat.h"
 #include "geomVertexFormat.h"
 #include "geomTriangles.h"
 #include "geomTriangles.h"
@@ -151,8 +150,7 @@ make_geom(int bitmap_top, int bitmap_left, float advance, float poly_margin,
   tris->add_vertex(3);
   tris->add_vertex(3);
   tris->close_primitive();
   tris->close_primitive();
 
 
-  PT(Geom) geom = new GeomTextGlyph(this);
-  geom->set_vertex_data(vdata);
+  PT(Geom) geom = new GeomTextGlyph(this, vdata);
   geom->add_primitive(tris);
   geom->add_primitive(tris);
   _geom = geom;
   _geom = geom;
   
   

+ 2 - 1
panda/src/text/geomTextGlyph.I

@@ -23,7 +23,8 @@
 //  Description: 
 //  Description: 
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE GeomTextGlyph::
 INLINE GeomTextGlyph::
-GeomTextGlyph(DynamicTextGlyph *glyph) :
+GeomTextGlyph(DynamicTextGlyph *glyph, const GeomVertexData *data) :
+  Geom(data),
   _glyph(glyph)
   _glyph(glyph)
 {
 {
   if (_glyph != (DynamicTextGlyph *)NULL) {
   if (_glyph != (DynamicTextGlyph *)NULL) {

+ 2 - 1
panda/src/text/geomTextGlyph.cxx

@@ -87,7 +87,8 @@ register_with_read_factory() {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 TypedWritable* GeomTextGlyph::
 TypedWritable* GeomTextGlyph::
 make_GeomTextGlyph(const FactoryParams &params) {
 make_GeomTextGlyph(const FactoryParams &params) {
-  GeomTextGlyph *me = new GeomTextGlyph((DynamicTextGlyph *)NULL);
+  GeomTextGlyph *me = new GeomTextGlyph((DynamicTextGlyph *)NULL, 
+					(GeomVertexData *)NULL);
   DatagramIterator scan;
   DatagramIterator scan;
   BamReader *manager;
   BamReader *manager;
 
 

+ 2 - 1
panda/src/text/geomTextGlyph.h

@@ -37,7 +37,8 @@
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 class EXPCL_PANDA GeomTextGlyph : public Geom {
 class EXPCL_PANDA GeomTextGlyph : public Geom {
 public:
 public:
-  INLINE GeomTextGlyph(DynamicTextGlyph *glyph);
+  INLINE GeomTextGlyph(DynamicTextGlyph *glyph,
+		       const GeomVertexData *data);
   INLINE GeomTextGlyph(const GeomTextGlyph &copy);
   INLINE GeomTextGlyph(const GeomTextGlyph &copy);
   void operator = (const GeomTextGlyph &copy);
   void operator = (const GeomTextGlyph &copy);
   virtual ~GeomTextGlyph();
   virtual ~GeomTextGlyph();

+ 4 - 8
panda/src/text/textNode.cxx

@@ -640,16 +640,14 @@ make_frame() {
   frame->add_vertex(0);
   frame->add_vertex(0);
   frame->close_primitive();
   frame->close_primitive();
   
   
-  PT(Geom) geom = new Geom;
-  geom->set_vertex_data(vdata);
+  PT(Geom) geom = new Geom(vdata);
   geom->add_primitive(frame);
   geom->add_primitive(frame);
   frame_node->add_geom(geom, state);
   frame_node->add_geom(geom, state);
   
   
   if (get_frame_corners()) {
   if (get_frame_corners()) {
     PT(GeomPoints) corners = new GeomPoints(get_usage_hint());
     PT(GeomPoints) corners = new GeomPoints(get_usage_hint());
     corners->add_consecutive_vertices(0, 4);
     corners->add_consecutive_vertices(0, 4);
-    PT(Geom) geom2 = new Geom;
-    geom2->set_vertex_data(vdata);
+    PT(Geom) geom2 = new Geom(vdata);
     geom2->add_primitive(corners);
     geom2->add_primitive(corners);
     frame_node->add_geom(geom2, state);
     frame_node->add_geom(geom2, state);
   }
   }
@@ -691,8 +689,7 @@ make_card() {
   card->add_consecutive_vertices(0, 4);
   card->add_consecutive_vertices(0, 4);
   card->close_primitive();
   card->close_primitive();
   
   
-  PT(Geom) geom = new Geom;
-  geom->set_vertex_data(vdata);
+  PT(Geom) geom = new Geom(vdata);
   geom->add_primitive(card);
   geom->add_primitive(card);
   
   
   card_node->add_geom(geom);
   card_node->add_geom(geom);
@@ -798,8 +795,7 @@ make_card_with_border() {
   card->add_consecutive_vertices(8, 8);
   card->add_consecutive_vertices(8, 8);
   card->close_primitive();
   card->close_primitive();
   
   
-  PT(Geom) geom = new Geom;
-  geom->set_vertex_data(vdata);
+  PT(Geom) geom = new Geom(vdata);
   geom->add_primitive(card);
   geom->add_primitive(card);
   
   
   card_node->add_geom(geom);
   card_node->add_geom(geom);