[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [33312] trunk/blender/source/blender/ python/generic/mathutils_vector.c: new vectors that were the result of functions or operators were not using the same subclass as the vectors they were derived from .

Campbell Barton ideasman42 at gmail.com
Thu Nov 25 17:00:06 CET 2010


Revision: 33312
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=33312
Author:   campbellbarton
Date:     2010-11-25 17:00:06 +0100 (Thu, 25 Nov 2010)

Log Message:
-----------
new vectors that were the result of functions or operators were not using the same subclass as the vectors they were derived from.

Modified Paths:
--------------
    trunk/blender/source/blender/python/generic/mathutils_vector.c

Modified: trunk/blender/source/blender/python/generic/mathutils_vector.c
===================================================================
--- trunk/blender/source/blender/python/generic/mathutils_vector.c	2010-11-25 15:03:36 UTC (rev 33311)
+++ trunk/blender/source/blender/python/generic/mathutils_vector.c	2010-11-25 16:00:06 UTC (rev 33312)
@@ -428,7 +428,7 @@
 	normalize_v3(mirror);
 	reflect_v3_v3v3(reflect, vec, mirror);
 	
-	return newVectorObject(reflect, self->size, Py_NEW, NULL);
+	return newVectorObject(reflect, self->size, Py_NEW, Py_TYPE(self));
 }
 
 static char Vector_Cross_doc[] =
@@ -460,7 +460,7 @@
 	if(!BaseMath_ReadCallback(self) || !BaseMath_ReadCallback(value))
 		return NULL;
 	
-	vecCross = (VectorObject *)newVectorObject(NULL, 3, Py_NEW, NULL);
+	vecCross = (VectorObject *)newVectorObject(NULL, 3, Py_NEW, Py_TYPE(self));
 	cross_v3_v3v3(vecCross->vec, self->vec, value->vec);
 	return (PyObject *)vecCross;
 }
@@ -645,7 +645,7 @@
 	for(x = 0; x < size; x++) {
 		vec[x] = (float)(dot * value->vec[x]);
 	}
-	return newVectorObject(vec, size, Py_NEW, NULL);
+	return newVectorObject(vec, size, Py_NEW, Py_TYPE(self));
 }
 
 static char Vector_Lerp_doc[] =
@@ -682,7 +682,7 @@
 	for(x = 0; x < self->size; x++) {
 		vec[x] = (ifac * self->vec[x]) + (fac * vec2->vec[x]);
 	}
-	return newVectorObject(vec, self->size, Py_NEW, NULL);
+	return newVectorObject(vec, self->size, Py_NEW, Py_TYPE(self));
 }
 
 /*---------------------------- Vector.rotate(angle, axis) ----------------------*/
@@ -906,7 +906,7 @@
 		for(i = 0; i < vec1->size; i++) {
 			vec[i] = vec1->vec[i] +	vec2->vec[i];
 		}
-		return newVectorObject(vec, vec1->size, Py_NEW, NULL);
+		return newVectorObject(vec, vec1->size, Py_NEW, Py_TYPE(v1));
 	}
 	
 	PyErr_SetString(PyExc_AttributeError, "Vector addition: arguments not valid for this operation");
@@ -970,7 +970,7 @@
 		vec[i] = vec1->vec[i] -	vec2->vec[i];
 	}
 
-	return newVectorObject(vec, vec1->size, Py_NEW, NULL);
+	return newVectorObject(vec, vec1->size, Py_NEW, Py_TYPE(v1));
 }
 
 /*------------------------obj -= obj------------------------------
@@ -1100,7 +1100,7 @@
 			return NULL;
 		}
 
-		return newVectorObject(tvec, vec1->size, Py_NEW, NULL);
+		return newVectorObject(tvec, vec1->size, Py_NEW, Py_TYPE(vec1));
 	} else if (QuaternionObject_Check(v2)) {
 		/* VEC * QUAT */
 		QuaternionObject *quat2 = (QuaternionObject*)v2;
@@ -1115,7 +1115,7 @@
 		}
 		copy_v3_v3(tvec, vec1->vec);
 		mul_qt_v3(quat2->quat, tvec);
-		return newVectorObject(tvec, 3, Py_NEW, NULL);
+		return newVectorObject(tvec, 3, Py_NEW, Py_TYPE(vec1));
 	}
 	else if (((scalar= PyFloat_AsDouble(v2)) == -1.0 && PyErr_Occurred())==0) { /* VEC*FLOAT */
 		int i;
@@ -1124,7 +1124,7 @@
 		for(i = 0; i < vec1->size; i++) {
 			vec[i] = vec1->vec[i] * scalar;
 		}
-		return newVectorObject(vec, vec1->size, Py_NEW, NULL);
+		return newVectorObject(vec, vec1->size, Py_NEW, Py_TYPE(vec1));
 		
 	}
 	
@@ -1211,7 +1211,7 @@
 	for(i = 0; i < vec1->size; i++) {
 		vec[i] = vec1->vec[i] /	scalar;
 	}
-	return newVectorObject(vec, vec1->size, Py_NEW, NULL);
+	return newVectorObject(vec, vec1->size, Py_NEW, Py_TYPE(v1));
 }
 
 /*------------------------obj /= obj------------------------------





More information about the Bf-blender-cvs mailing list