PyObject *KX_MeshProxy::pyattr_get_materials(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef) { KX_MeshProxy* self = static_cast<KX_MeshProxy*>(self_v); int tot= self->m_meshobj->NumMaterials(); int i; PyObject *materials = PyList_New( tot ); list<RAS_MeshMaterial>::iterator mit= self->m_meshobj->GetFirstMaterial(); for (i=0; i<tot; mit++, i++) { RAS_IPolyMaterial *polymat = mit->m_bucket->GetPolyMaterial(); /* Why do we need to check for RAS_BLENDERMAT if both are cast to a (PyObject *)? - Campbell */ if (polymat->GetFlag() & RAS_BLENDERMAT) { KX_BlenderMaterial *mat = static_cast<KX_BlenderMaterial*>(polymat); PyList_SET_ITEM(materials, i, mat->GetProxy()); } else { KX_PolygonMaterial *mat = static_cast<KX_PolygonMaterial*>(polymat); PyList_SET_ITEM(materials, i, mat->GetProxy()); } } return materials; }
PyObject *KX_MeshProxy::pyattr_get_materials(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef) { KX_MeshProxy* self = static_cast<KX_MeshProxy*>(self_v); int tot= self->m_meshobj->NumMaterials(); int i; PyObject *materials = PyList_New( tot ); list<RAS_MeshMaterial>::iterator mit= self->m_meshobj->GetFirstMaterial(); for (i=0; i<tot; mit++, i++) { RAS_IPolyMaterial *polymat = mit->m_bucket->GetPolyMaterial(); KX_BlenderMaterial *mat = static_cast<KX_BlenderMaterial *>(polymat); PyList_SET_ITEM(materials, i, mat->GetProxy()); } return materials; }