PyRNA API support for matrix types as Mathutils matrix (with callbacks) rather then...
[blender-staging.git] / source / blender / python / generic / matrix.h
index 2604d58d0d1565bb193cac148f3a553f0aa7599f..cc3928f163265d4c7ef5b0326201ebfe7663e0f0 100644 (file)
@@ -39,15 +39,14 @@ extern PyTypeObject matrix_Type;
 typedef float **ptRow;
 typedef struct _Matrix {
        PyObject_VAR_HEAD 
-       struct{
-               float *py_data;         /*python managed*/
-               float *blend_data;      /*blender managed*/
-       }data;
-       ptRow matrix;                   /*ptr to the contigPtr (accessor)*/
-       float *contigPtr;               /*1D array of data (alias)*/
-       int rowSize;
-       int colSize;
-       int wrapped;                    /*is wrapped data?*/
+       ptRow                   matrix;         /*ptr to the contigPtr (accessor)*/
+       float*                  contigPtr;      /*1D array of data (alias)*/
+       PyObject*               cb_user;        /* if this vector references another object, otherwise NULL, *Note* this owns its reference */
+       unsigned char rowSize;
+       unsigned char colSize;
+       unsigned char wrapped;  /*is wrapped data?*/
+       unsigned char cb_type;  /* which user funcs do we adhere to, RNA, GameObject, etc */
+       unsigned int cb_subtype;        /* subtype: location, rotation... to avoid defining many new functions for every attribute of the same type */
 } MatrixObject;
 
 /*struct data contains a pointer to the actual data that the
@@ -57,5 +56,9 @@ blender (stored in blend_data). This is an either/or struct not both*/
 
 /*prototypes*/
 PyObject *newMatrixObject(float *mat, int rowSize, int colSize, int type);
+PyObject *newMatrixObject_cb(PyObject *user, int rowSize, int colSize, int cb_type, int cb_subtype);
+
+extern int mathutils_matrix_vector_cb_index;
+extern struct Mathutils_Callback mathutils_matrix_vector_cb;
 
 #endif                         /* EXPP_matrix_H */