Browse Source

fix bug in GeomVertexData::unclean_set_format()

David Rose 12 years ago
parent
commit
335c80f8ac
1 changed files with 6 additions and 0 deletions
  1. 6 0
      panda/src/gobj/geomVertexData.cxx

+ 6 - 0
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) {
   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(format->get_array(ai)->get_stride() == cdata->_format->get_array(ai)->get_stride());
   }
   }
+  nassertv(cdata->_arrays.size() == cdata->_format->get_num_arrays());
 #endif  // NDEBUG
 #endif  // NDEBUG
 
 
   CDWriter cdataw(_cycler, cdata, true);
   CDWriter cdataw(_cycler, cdata, true);
@@ -368,6 +369,11 @@ unclean_set_format(const GeomVertexFormat *format) {
   // Assign the new format.
   // Assign the new format.
   cdataw->_format = 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();
   clear_cache_stage();
   cdataw->_modified = Geom::get_next_modified();
   cdataw->_modified = Geom::get_next_modified();
   cdataw->_animated_vertices.clear();
   cdataw->_animated_vertices.clear();