Geom now accepts a GeomVertexData in the constructor

This commit is contained in:
David Rose 2005-08-11 03:16:12 +00:00
parent 74b498d355
commit 95f9d58591
33 changed files with 57 additions and 99 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -206,8 +206,7 @@ cull_callback(CullTraverser *trav, CullTraverserData &data) {
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);
CullableObject *object =
@ -235,8 +234,7 @@ cull_callback(CullTraverser *trav, CullTraverserData &data) {
lines->add_next_vertices(2);
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);
CullableObject *object =

View File

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

View File

@ -354,8 +354,7 @@ make_polyset(EggBin *egg_bin, PandaNode *parent, const LMatrix4d *transform,
nassertv(vertex_data != (GeomVertexData *)NULL);
// 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.
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_node->add_geom(geom);
}

View File

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

View File

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

View File

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

View File

@ -956,8 +956,7 @@ make_geometry() {
line->add_vertex(num_segments * (4 * 2) + 1);
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);
return geom.p();

View File

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

View File

@ -256,14 +256,12 @@ create(GeomNode *previous, bool dynamic) {
}
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);
previous->add_geom(geom, state);
}
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);
previous->add_geom(geom, state);
}

View File

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

View File

@ -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);
CullableObject *object = new CullableObject(geom, data._state,

View File

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

View File

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

View File

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

View File

@ -498,10 +498,9 @@ init_geoms() {
// For each frame of the animation...
for (j = 0; j < _anim_size[i]; ++j) {
_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));
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));
geom->add_primitive(_sprites[i][j]);

View File

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

View File

@ -250,8 +250,7 @@ munge_points_to_quads(const CullTraverser *traverser) {
GeomVertexWriter new_texcoord(new_data, InternalName::get_texcoord());
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();

View File

@ -45,7 +45,6 @@ TypeHandle PortalClipper::_type_handle;
PortalClipper::
PortalClipper(GeometricBoundingVolume *frustum, SceneSetup *scene_setup) {
_previous = new GeomNode("my_frustum");
_geom = new Geom;
_view_frustum = _reduced_frustum = DCAST(BoundingHexahedron, frustum);
@ -204,14 +203,12 @@ draw_lines() {
}
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);
_previous->add_geom(geom, state);
}
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);
_previous->add_geom(geom, state);
}

View File

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

View File

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

View File

@ -22,7 +22,6 @@
#include "dynamicTextPage.h"
#include "geomTextGlyph.h"
#include "geomTextGlyph.h"
#include "geomVertexData.h"
#include "geomVertexFormat.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->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 = geom;

View File

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

View File

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

View File

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

View File

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