diff --git a/panda/src/egg/eggCompositePrimitive.cxx b/panda/src/egg/eggCompositePrimitive.cxx index 7a94f19c76..185cd8bb6e 100644 --- a/panda/src/egg/eggCompositePrimitive.cxx +++ b/panda/src/egg/eggCompositePrimitive.cxx @@ -254,7 +254,8 @@ unify_attributes(EggPrimitive::Shading shading) { { iterator pi; for (pi = begin(); pi != end(); ++pi) { - EggVertex *vertex = (*pi); + EggVertex *orig_vertex = (*pi); + PT(EggVertex) vertex = new EggVertex(*orig_vertex); if (vertex->has_normal()) { if (!has_normal()) { copy_normal(*vertex); @@ -267,6 +268,11 @@ unify_attributes(EggPrimitive::Shading shading) { } vertex->clear_color(); } + + EggVertexPool *vertex_pool = orig_vertex->get_pool(); + nassertv(vertex_pool != (EggVertexPool *)NULL); + vertex = vertex_pool->create_unique_vertex(*vertex); + replace(pi, vertex); } Components::iterator ci; for (ci = _components.begin(); ci != _components.end(); ++ci) { diff --git a/panda/src/egg/eggMesher.cxx b/panda/src/egg/eggMesher.cxx index 05d1f9fbe7..8a03ae9b1a 100644 --- a/panda/src/egg/eggMesher.cxx +++ b/panda/src/egg/eggMesher.cxx @@ -194,7 +194,7 @@ add_polygon(const EggPolygon *egg_poly, EggMesherStrip::MesherOrigin origin) { for (ci = temp_group->begin(); ci != temp_group->end(); ++ci) { add_polygon(DCAST(EggPolygon, *ci), EggMesherStrip::MO_user); } - return true; + return result; } if (_vertex_pool == NULL) { diff --git a/panda/src/egg/eggPrimitive.cxx b/panda/src/egg/eggPrimitive.cxx index 2fc4bc93f9..2b6f8f942d 100644 --- a/panda/src/egg/eggPrimitive.cxx +++ b/panda/src/egg/eggPrimitive.cxx @@ -388,7 +388,8 @@ unify_attributes(EggPrimitive::Shading shading) { { iterator pi; for (pi = begin(); pi != end(); ++pi) { - EggVertex *vertex = (*pi); + EggVertex *orig_vertex = (*pi); + PT(EggVertex) vertex = new EggVertex(*orig_vertex); if (vertex->has_normal()) { if (!has_normal()) { copy_normal(*vertex); @@ -401,6 +402,11 @@ unify_attributes(EggPrimitive::Shading shading) { } vertex->clear_color(); } + + EggVertexPool *vertex_pool = orig_vertex->get_pool(); + nassertv(vertex_pool != (EggVertexPool *)NULL); + vertex = vertex_pool->create_unique_vertex(*vertex); + replace(pi, vertex); } } break;