Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2009-04-20 19:06:46 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2009-04-20 19:06:46 +0400
commit874c29cea8e6f9bc411fccf2d6f4cb07e94328d0 (patch)
tree5971e577cf7c02e05a1e37b5ad058c71a6744877 /source/gameengine/Ketsji/KX_PyMath.h
parent7555bfa793a2b0fc187c6211c56986f35b2d7b09 (diff)
parentc5bc4e4fb1a33eda8c31f2ea02e91f32f74c8fa5 (diff)
2.50: svn merge https://svn.blender.org/svnroot/bf-blender/trunk/blender -r19323:HEAD
Notes: * blenderbuttons and ICON_SNAP_PEEL_OBJECT were not merged.
Diffstat (limited to 'source/gameengine/Ketsji/KX_PyMath.h')
-rw-r--r--source/gameengine/Ketsji/KX_PyMath.h33
1 files changed, 25 insertions, 8 deletions
diff --git a/source/gameengine/Ketsji/KX_PyMath.h b/source/gameengine/Ketsji/KX_PyMath.h
index 39c9c358792..00f7c5cad93 100644
--- a/source/gameengine/Ketsji/KX_PyMath.h
+++ b/source/gameengine/Ketsji/KX_PyMath.h
@@ -92,18 +92,35 @@ bool PyMatTo(PyObject* pymat, T& mat)
}
/**
- * Converts a python list to a MT class.
+ * Converts a python sequence to a MT class.
*/
template<class T>
bool PyVecTo(PyObject* pyval, T& vec)
{
- if (PySequence_Check(pyval))
+
+ if(PyTuple_Check(pyval))
+ {
+ unsigned int numitems = PyTuple_GET_SIZE(pyval);
+ if (numitems != Size(vec)) {
+ PyErr_Format(PyExc_AttributeError, "error setting vector, %d args, should be %d", numitems, Size(vec));
+ return false;
+ }
+
+ for (unsigned int x = 0; x < numitems; x++)
+ vec[x] = PyFloat_AsDouble(PyTuple_GET_ITEM(pyval, x)); /* borrow ref */
+
+ if (PyErr_Occurred()) {
+ PyErr_SetString(PyExc_AttributeError, "one or more of the items in the sequence was not a float");
+ return false;
+ }
+
+ return true;
+ }
+ else if (PySequence_Check(pyval))
{
unsigned int numitems = PySequence_Size(pyval);
if (numitems != Size(vec)) {
- char err[128];
- sprintf(err, "error setting vector, %d args, should be %d", numitems, Size(vec));
- PyErr_SetString(PyExc_AttributeError, err);
+ PyErr_Format(PyExc_AttributeError, "error setting vector, %d args, should be %d", numitems, Size(vec));
return false;
}
@@ -122,14 +139,14 @@ bool PyVecTo(PyObject* pyval, T& vec)
return true;
} else
{
- char err[128];
- sprintf(err, "not a sequence type, expected a sequence of numbers size %d", Size(vec));
- PyErr_SetString(PyExc_AttributeError, err);
+ PyErr_Format(PyExc_AttributeError, "not a sequence type, expected a sequence of numbers size %d", Size(vec));
}
return false;
}
+bool PyOrientationTo(PyObject* pyval, MT_Matrix3x3 &mat, const char *error_prefix);
+
/**
* Converts an MT_Matrix4x4 to a python object.
*/