mathutils: refactor instantiation
remove 'type' argument, very few mathutils objects are wrapped, add new function for creating wrapped objects. also fixes unlikely memory leak if the data-array can't be allocated.
This commit is contained in:
@@ -100,7 +100,7 @@ PyObject *PyObjectFrom(const MT_Matrix4x4 &mat)
|
||||
#ifdef USE_MATHUTILS
|
||||
float fmat[16];
|
||||
mat.getValue(fmat);
|
||||
return Matrix_CreatePyObject(fmat, 4, 4, Py_NEW, NULL);
|
||||
return Matrix_CreatePyObject(fmat, 4, 4, NULL);
|
||||
#else
|
||||
PyObject *collist = PyList_New(4);
|
||||
PyObject *col;
|
||||
@@ -124,7 +124,7 @@ PyObject *PyObjectFrom(const MT_Matrix3x3 &mat)
|
||||
#ifdef USE_MATHUTILS
|
||||
float fmat[9];
|
||||
mat.getValue3x3(fmat);
|
||||
return Matrix_CreatePyObject(fmat, 3, 3, Py_NEW, NULL);
|
||||
return Matrix_CreatePyObject(fmat, 3, 3, NULL);
|
||||
#else
|
||||
PyObject *collist = PyList_New(3);
|
||||
PyObject *col;
|
||||
@@ -148,7 +148,7 @@ PyObject *PyObjectFrom(const MT_Quaternion &qrot)
|
||||
/* NOTE, were re-ordering here for Mathutils compat */
|
||||
float fvec[4];
|
||||
qrot.getValue(fvec);
|
||||
return Quaternion_CreatePyObject(fvec, Py_NEW, NULL);
|
||||
return Quaternion_CreatePyObject(fvec, NULL);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -157,7 +157,7 @@ PyObject *PyObjectFrom(const MT_Tuple4 &vec)
|
||||
#ifdef USE_MATHUTILS
|
||||
float fvec[4];
|
||||
vec.getValue(fvec);
|
||||
return Vector_CreatePyObject(fvec, 4, Py_NEW, NULL);
|
||||
return Vector_CreatePyObject(fvec, 4, NULL);
|
||||
#else
|
||||
PyObject *list = PyList_New(4);
|
||||
PyList_SET_ITEM(list, 0, PyFloat_FromDouble(vec[0]));
|
||||
@@ -173,7 +173,7 @@ PyObject *PyObjectFrom(const MT_Tuple3 &vec)
|
||||
#ifdef USE_MATHUTILS
|
||||
float fvec[3];
|
||||
vec.getValue(fvec);
|
||||
return Vector_CreatePyObject(fvec, 3, Py_NEW, NULL);
|
||||
return Vector_CreatePyObject(fvec, 3, NULL);
|
||||
#else
|
||||
PyObject *list = PyList_New(3);
|
||||
PyList_SET_ITEM(list, 0, PyFloat_FromDouble(vec[0]));
|
||||
@@ -188,7 +188,7 @@ PyObject *PyObjectFrom(const MT_Tuple2 &vec)
|
||||
#ifdef USE_MATHUTILS
|
||||
float fvec[2];
|
||||
vec.getValue(fvec);
|
||||
return Vector_CreatePyObject(fvec, 2, Py_NEW, NULL);
|
||||
return Vector_CreatePyObject(fvec, 2, NULL);
|
||||
#else
|
||||
PyObject *list = PyList_New(2);
|
||||
PyList_SET_ITEM(list, 0, PyFloat_FromDouble(vec[0]));
|
||||
|
||||
Reference in New Issue
Block a user