diff --git a/panda/src/gobj/geomVertexData.cxx b/panda/src/gobj/geomVertexData.cxx index b2fee3e7c0..69ef264418 100644 --- a/panda/src/gobj/geomVertexData.cxx +++ b/panda/src/gobj/geomVertexData.cxx @@ -361,6 +361,7 @@ unclean_set_format(const GeomVertexFormat *format) { for (int ai = 0; ai < format->get_num_arrays(); ++ai) { nassertv(format->get_array(ai)->get_stride() == cdata->_format->get_array(ai)->get_stride()); } + nassertv(cdata->_arrays.size() == cdata->_format->get_num_arrays()); #endif // NDEBUG CDWriter cdataw(_cycler, cdata, true); @@ -368,6 +369,11 @@ unclean_set_format(const GeomVertexFormat *format) { // Assign the new format. cdataw->_format = format; + for (int ai = 0; ai < cdataw->_arrays.size(); ++ai) { + PT(GeomVertexArrayData) array_obj = cdataw->_arrays[ai].get_write_pointer(); + array_obj->_array_format = format->get_array(ai); + } + clear_cache_stage(); cdataw->_modified = Geom::get_next_modified(); cdataw->_animated_vertices.clear();