diff --git a/panda/src/gobj/geomVertexArrayData.I b/panda/src/gobj/geomVertexArrayData.I index cfe12f9013..30e5c590e8 100644 --- a/panda/src/gobj/geomVertexArrayData.I +++ b/panda/src/gobj/geomVertexArrayData.I @@ -45,7 +45,9 @@ has_column(const InternalName *name) const { */ INLINE int GeomVertexArrayData:: get_num_rows() const { - return get_handle()->get_num_rows(); + CDReader cdata(_cycler); + nassertr(_array_format->get_stride() != 0, 0); + return cdata->_buffer.get_size() / _array_format->get_stride(); } /** diff --git a/panda/src/gobj/geomVertexData.I b/panda/src/gobj/geomVertexData.I index bfea5a10ef..bd68fc4cf4 100644 --- a/panda/src/gobj/geomVertexData.I +++ b/panda/src/gobj/geomVertexData.I @@ -60,9 +60,20 @@ has_column(const InternalName *name) const { */ INLINE int GeomVertexData:: get_num_rows() const { - GeomVertexDataPipelineReader reader(this, Thread::get_current_thread()); - reader.check_array_readers(); - return reader.get_num_rows(); + CPT(GeomVertexArrayData) array; + { + CDReader cdata(_cycler); + nassertr(cdata->_format->get_num_arrays() == cdata->_arrays.size(), 0); + + if (cdata->_arrays.size() == 0) { + // No arrays means no rows. Weird but legal. + return 0; + } + + array = cdata->_arrays[0].get_read_pointer(); + } + + return array->get_num_rows(); } /**