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:
authorCampbell Barton <ideasman42@gmail.com>2009-11-26 19:19:20 +0300
committerCampbell Barton <ideasman42@gmail.com>2009-11-26 19:19:20 +0300
commit383093957ad4a0d06b4e0805530cef07e187345e (patch)
tree5200431b5b773e45de9709e0e4e405f781247ecc /source/blender/python
parentc3937c93d58f015ae5d08396b1e613afcbbf8707 (diff)
Mathutils vec += vec wasnt running mathutls callbacks
Diffstat (limited to 'source/blender/python')
-rw-r--r--source/blender/python/generic/vector.c44
1 files changed, 19 insertions, 25 deletions
diff --git a/source/blender/python/generic/vector.c b/source/blender/python/generic/vector.c
index 8d1356f62f4..b3e54ac2250 100644
--- a/source/blender/python/generic/vector.c
+++ b/source/blender/python/generic/vector.c
@@ -626,36 +626,30 @@ static PyObject *Vector_add(PyObject * v1, PyObject * v2)
static PyObject *Vector_iadd(PyObject * v1, PyObject * v2)
{
int i;
-
VectorObject *vec1 = NULL, *vec2 = NULL;
+
+ if (!VectorObject_Check(v1) || !VectorObject_Check(v2)) {
+ PyErr_SetString(PyExc_AttributeError, "Vector addition: arguments not valid for this operation....\n");
+ return NULL;
+ }
+ vec1 = (VectorObject*)v1;
+ vec2 = (VectorObject*)v2;
- if VectorObject_Check(v1)
- vec1= (VectorObject *)v1;
-
- if VectorObject_Check(v2)
- vec2= (VectorObject *)v2;
-
- /* make sure v1 is always the vector */
- if (vec1 && vec2 ) {
-
- if(!BaseMath_ReadCallback(vec1) || !BaseMath_ReadCallback(vec2))
- return NULL;
-
- /*VECTOR + VECTOR*/
- if(vec1->size != vec2->size) {
- PyErr_SetString(PyExc_AttributeError, "Vector addition: vectors must have the same dimensions for this operation\n");
- return NULL;
- }
- for(i = 0; i < vec1->size; i++) {
- vec1->vec[i] += vec2->vec[i];
- }
- Py_INCREF( v1 );
- return v1;
+ if(vec1->size != vec2->size) {
+ PyErr_SetString(PyExc_AttributeError, "Vector addition: vectors must have the same dimensions for this operation\n");
+ return NULL;
}
+ if(!BaseMath_ReadCallback(vec1) || !BaseMath_ReadCallback(vec2))
+ return NULL;
+
+ for(i = 0; i < vec1->size; i++) {
+ vec1->vec[i] = vec1->vec[i] + vec2->vec[i];
+ }
+
BaseMath_WriteCallback(vec1);
- PyErr_SetString(PyExc_AttributeError, "Vector addition: arguments not valid for this operation....\n");
- return NULL;
+ Py_INCREF( v1 );
+ return v1;
}
/*------------------------obj - obj------------------------------