From 61dc8316781a4535fc78688d0da117ed495b96d0 Mon Sep 17 00:00:00 2001 From: David Rose Date: Wed, 20 Feb 2008 04:16:36 +0000 Subject: [PATCH] fix color-flatten issue some more --- panda/src/pgraph/geomNode.cxx | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/panda/src/pgraph/geomNode.cxx b/panda/src/pgraph/geomNode.cxx index 88515a58f7..0989150f54 100644 --- a/panda/src/pgraph/geomNode.cxx +++ b/panda/src/pgraph/geomNode.cxx @@ -884,7 +884,18 @@ finalize(BamReader *manager) { for (gi = geoms->begin(); gi != geoms->end(); ++gi) { GeomEntry &entry = (*gi); CPT(Geom) geom = entry._geom.get_read_pointer(); - if (geom->get_vertex_data(current_thread)->has_column(color) && + + // Force the various GeomVertexArrayFormat objects to finalize + // themselves. We have to do this before we can reliably call + // GeomVertexData::has_column(). + CPT(GeomVertexData) vdata = geom->get_vertex_data(current_thread); + CPT(GeomVertexFormat) vformat = vdata->get_format(); + for (int i = 0; i < vformat->get_num_arrays(); ++i) { + const GeomVertexArrayFormat *varray = vformat->get_array(i); + manager->finalize_now((GeomVertexArrayFormat *)varray); + } + + if (vdata->has_column(color) && entry._state->get_color() == (ColorAttrib *)NULL) { // We'll be reassigning the RenderState. Therefore, save it // temporarily to increment its reference count.