void FaceSpatializeIndexed<BasicTraits>::CategoryGeneral::addData (OpenSGFaceBase<OpenSGTraits>* node, const FaceIterator& face) { u32 offsetSize = m_offset.size(); CategoryColor::addData(node, face); if (m_hasTex) { if (offsetSize < m_offset.size()) { m_offsetIt->second.tex1 = m_texCoord->size(); GeoTexCoords2f::StoredFieldType* t = m_texCoord->getFieldPtr(); GeoTexCoordsPtr faceT = m_original.getTexCoords(); for (u32 k=0; k<faceT->getSize(); ++k) { t->addValue(faceT->getValue(k)); } } // set indices for TexCoords if (face.getLength() == 3) { u32 i = m_quadOffset - 3*m_indexStride + m_indexOffset.tex1; for (u32 k=0; k<3; ++k) { m_index->setValue(face.getTexCoordsIndex(k)+m_offsetIt->second.tex1, i); assert(face.getTexCoordsIndex(k)+m_offsetIt->second.tex1 < m_texCoord->size()); i += m_indexStride; } } else { u32 i = m_index->size() - 4*m_indexStride + m_indexOffset.tex1; for (u32 k=0; k<4; ++k) { m_index->setValue(face.getTexCoordsIndex(k)+m_offsetIt->second.tex1, i); assert(face.getTexCoordsIndex(k)+m_offsetIt->second.tex1 < m_texCoord->size()); i += m_indexStride; } } } }