From 357826aa6e18c3af1625223656d748b92db86696 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 6 Dec 2010 08:29:41 +0000 Subject: bugfix [#24967] bge.KX_GameObject.worldAngularVelocity does not work, breaks mathutils somehow - Exceptions from reading vector values in the game engine where not being caught. - Also wrote specific KX_GameObject exceptions, without these the errors are quite confusing. --- source/gameengine/Ketsji/KX_PyMath.h | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'source/gameengine/Ketsji/KX_PyMath.h') diff --git a/source/gameengine/Ketsji/KX_PyMath.h b/source/gameengine/Ketsji/KX_PyMath.h index 589bd72c760..282e9a8f1f6 100644 --- a/source/gameengine/Ketsji/KX_PyMath.h +++ b/source/gameengine/Ketsji/KX_PyMath.h @@ -110,7 +110,9 @@ bool PyVecTo(PyObject* pyval, T& vec) if(VectorObject_Check(pyval)) { VectorObject *pyvec= (VectorObject *)pyval; - BaseMath_ReadCallback(pyvec); + if(!BaseMath_ReadCallback(pyvec)) { + return false; /* exception raised */ + } if (pyvec->size != Size(vec)) { PyErr_Format(PyExc_AttributeError, "error setting vector, %d args, should be %d", pyvec->size, Size(vec)); return false; @@ -120,7 +122,9 @@ bool PyVecTo(PyObject* pyval, T& vec) } else if(QuaternionObject_Check(pyval)) { QuaternionObject *pyquat= (QuaternionObject *)pyval; - BaseMath_ReadCallback(pyquat); + if(!BaseMath_ReadCallback(pyquat)) { + return false; /* exception raised */ + } if (4 != Size(vec)) { PyErr_Format(PyExc_AttributeError, "error setting vector, %d args, should be %d", 4, Size(vec)); return false; @@ -131,7 +135,9 @@ bool PyVecTo(PyObject* pyval, T& vec) } else if(EulerObject_Check(pyval)) { EulerObject *pyeul= (EulerObject *)pyval; - BaseMath_ReadCallback(pyeul); + if(!BaseMath_ReadCallback(pyeul)) { + return false; /* exception raised */ + } if (3 != Size(vec)) { PyErr_Format(PyExc_AttributeError, "error setting vector, %d args, should be %d", 3, Size(vec)); return false; -- cgit v1.2.3