forked from bartvdbraak/blender
KX_MeshProxy "numPolygons" and "numMaterials" attributes were using the "materials" attribute function, error made recently when converting attributes.
This commit is contained in:
parent
d2ec468cd3
commit
92cea7c1b1
@ -36,107 +36,6 @@ bool CValue::m_ignore_deprecation_warnings(false);
|
|||||||
|
|
||||||
#ifndef NO_EXP_PYTHON_EMBEDDING
|
#ifndef NO_EXP_PYTHON_EMBEDDING
|
||||||
|
|
||||||
PyObject* cvalue_add(PyObject*v, PyObject*w)
|
|
||||||
{
|
|
||||||
return ((CValue*)v)->Calc(VALUE_ADD_OPERATOR,(CValue*)w);
|
|
||||||
}
|
|
||||||
PyObject* cvalue_sub(PyObject*v, PyObject*w)
|
|
||||||
{
|
|
||||||
return ((CValue*)v)->Calc(VALUE_SUB_OPERATOR,(CValue*)w);
|
|
||||||
}
|
|
||||||
PyObject* cvalue_mul(PyObject*v, PyObject*w)
|
|
||||||
{
|
|
||||||
return ((CValue*)v)->Calc(VALUE_MUL_OPERATOR,(CValue*)w);
|
|
||||||
}
|
|
||||||
PyObject* cvalue_div(PyObject*v, PyObject*w)
|
|
||||||
{
|
|
||||||
return ((CValue*)v)->Calc(VALUE_DIV_OPERATOR,(CValue*)w);
|
|
||||||
}
|
|
||||||
PyObject* cvalue_mod(PyObject*v, PyObject*w)
|
|
||||||
{
|
|
||||||
return ((CValue*)v)->Calc(VALUE_MOD_OPERATOR,(CValue*)w);
|
|
||||||
}
|
|
||||||
PyObject* cvalue_neg(PyObject*v)
|
|
||||||
{
|
|
||||||
return ((CValue*)v)->Calc(VALUE_NEG_OPERATOR,(CValue*)v);
|
|
||||||
}
|
|
||||||
PyObject* cvalue_pos(PyObject*v)
|
|
||||||
{
|
|
||||||
return ((CValue*)v)->Calc(VALUE_POS_OPERATOR,(CValue*)v);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int MyPyCompare (PyObject* v,PyObject* w)
|
|
||||||
{
|
|
||||||
CValue* eqval = ((CValue*)v)->Calc(VALUE_EQL_OPERATOR,(CValue*)w);
|
|
||||||
STR_String txt = eqval->GetText();
|
|
||||||
eqval->Release();
|
|
||||||
if (txt=="TRUE")
|
|
||||||
return 0;
|
|
||||||
CValue* lessval = ((CValue*)v)->Calc(VALUE_LES_OPERATOR,(CValue*)w);
|
|
||||||
txt = lessval->GetText();
|
|
||||||
lessval->Release();
|
|
||||||
if (txt=="TRUE")
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int cvalue_coerce(PyObject** pv,PyObject** pw)
|
|
||||||
{
|
|
||||||
if (PyInt_Check(*pw)) {
|
|
||||||
*pw = new CIntValue((cInt)PyInt_AsLong(*pw));
|
|
||||||
Py_INCREF(*pv);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
else if (PyLong_Check(*pw)) {
|
|
||||||
*pw = new CIntValue((cInt)PyLong_AsLongLong(*pw));
|
|
||||||
Py_INCREF(*pv);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
else if (PyFloat_Check(*pw)) {
|
|
||||||
*pw = new CFloatValue((float)PyFloat_AsDouble(*pw));
|
|
||||||
Py_INCREF(*pv);
|
|
||||||
return 0;
|
|
||||||
} else if (PyString_Check(*pw)) {
|
|
||||||
const STR_String str = PyString_AsString(*pw);
|
|
||||||
*pw = new CStringValue(str,"");
|
|
||||||
Py_INCREF(*pv);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
PyErr_SetString(PyExc_TypeError, "unable to coerce python type to cvalue");
|
|
||||||
return 1; /* Can't do it */
|
|
||||||
|
|
||||||
}
|
|
||||||
static PyNumberMethods cvalue_as_number = {
|
|
||||||
(binaryfunc)cvalue_add, /*nb_add*/
|
|
||||||
(binaryfunc)cvalue_sub, /*nb_subtract*/
|
|
||||||
(binaryfunc)cvalue_mul, /*nb_multiply*/
|
|
||||||
(binaryfunc)cvalue_div, /*nb_divide*/
|
|
||||||
(binaryfunc)cvalue_mod, /*nb_remainder*/
|
|
||||||
0,//(binaryfunc)cvalue_divmod, /*nb_divmod*/
|
|
||||||
0,//0,//0,//0,//(ternaryfunc)cvalue_pow, /*nb_power*/
|
|
||||||
(unaryfunc)cvalue_neg, /*nb_negative*/
|
|
||||||
0,//(unaryfunc)cvalue_pos, /*nb_positive*/
|
|
||||||
0,//(unaryfunc)cvalue_abs, /*nb_absolute*/
|
|
||||||
0,//(inquiry)cvalue_nonzero, /*nb_nonzero*/
|
|
||||||
0, /*nb_invert*/
|
|
||||||
0, /*nb_lshift*/
|
|
||||||
0, /*nb_rshift*/
|
|
||||||
0, /*nb_and*/
|
|
||||||
0, /*nb_xor*/
|
|
||||||
0, /*nb_or*/
|
|
||||||
(coercion)cvalue_coerce, /*nb_coerce*/
|
|
||||||
0,//(unaryfunc)cvalue_int, /*nb_int*/
|
|
||||||
0,//(unaryfunc)cvalue_long, /*nb_long*/
|
|
||||||
0,//(unaryfunc)cvalue_float, /*nb_float*/
|
|
||||||
0, /*nb_oct*/
|
|
||||||
0, /*nb_hex*/
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
PyTypeObject CValue::Type = {
|
PyTypeObject CValue::Type = {
|
||||||
PyObject_HEAD_INIT(NULL)
|
PyObject_HEAD_INIT(NULL)
|
||||||
0,
|
0,
|
||||||
@ -147,9 +46,9 @@ PyTypeObject CValue::Type = {
|
|||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
&MyPyCompare,
|
0,
|
||||||
py_base_repr,
|
py_base_repr,
|
||||||
&cvalue_as_number,
|
0,
|
||||||
0,0,0,0,0,
|
0,0,0,0,0,
|
||||||
py_base_getattro,
|
py_base_getattro,
|
||||||
py_base_setattro,
|
py_base_setattro,
|
||||||
|
@ -91,8 +91,8 @@ KX_PYMETHODTABLE(KX_MeshProxy, reinstancePhysicsMesh),
|
|||||||
|
|
||||||
PyAttributeDef KX_MeshProxy::Attributes[] = {
|
PyAttributeDef KX_MeshProxy::Attributes[] = {
|
||||||
KX_PYATTRIBUTE_RO_FUNCTION("materials", KX_MeshProxy, pyattr_get_materials),
|
KX_PYATTRIBUTE_RO_FUNCTION("materials", KX_MeshProxy, pyattr_get_materials),
|
||||||
KX_PYATTRIBUTE_RO_FUNCTION("numPolygons", KX_MeshProxy, pyattr_get_materials),
|
KX_PYATTRIBUTE_RO_FUNCTION("numPolygons", KX_MeshProxy, pyattr_get_numPolygons),
|
||||||
KX_PYATTRIBUTE_RO_FUNCTION("numMaterials", KX_MeshProxy, pyattr_get_materials),
|
KX_PYATTRIBUTE_RO_FUNCTION("numMaterials", KX_MeshProxy, pyattr_get_numMaterials),
|
||||||
|
|
||||||
{ NULL } //Sentinel
|
{ NULL } //Sentinel
|
||||||
};
|
};
|
||||||
@ -311,12 +311,10 @@ PyObject* KX_MeshProxy::pyattr_get_materials(void *self_v, const KX_PYATTRIBUTE_
|
|||||||
|
|
||||||
PyObject * KX_MeshProxy::pyattr_get_numMaterials(void * selfv, const KX_PYATTRIBUTE_DEF * attrdef) {
|
PyObject * KX_MeshProxy::pyattr_get_numMaterials(void * selfv, const KX_PYATTRIBUTE_DEF * attrdef) {
|
||||||
KX_MeshProxy * self = static_cast<KX_MeshProxy *> (selfv);
|
KX_MeshProxy * self = static_cast<KX_MeshProxy *> (selfv);
|
||||||
int num = self->m_meshobj->NumMaterials();
|
return PyInt_FromLong(self->m_meshobj->NumMaterials());
|
||||||
return PyInt_FromLong(num);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PyObject * KX_MeshProxy::pyattr_get_numPolygons(void * selfv, const KX_PYATTRIBUTE_DEF * attrdef) {
|
PyObject * KX_MeshProxy::pyattr_get_numPolygons(void * selfv, const KX_PYATTRIBUTE_DEF * attrdef) {
|
||||||
KX_MeshProxy * self = static_cast<KX_MeshProxy *> (selfv);
|
KX_MeshProxy * self = static_cast<KX_MeshProxy *> (selfv);
|
||||||
int num = self->m_meshobj->NumPolygons();
|
return PyInt_FromLong(self->m_meshobj->NumPolygons());
|
||||||
return PyInt_FromLong(num);
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user