int _BaseMathObject_ReadCallback(BaseMathObject *self)
{
Mathutils_Callback *cb= mathutils_callbacks[self->cb_type];
- if(cb->get(self, self->cb_subtype, self->data))
+ if(cb->get(self, self->cb_subtype))
return 1;
PyErr_Format(PyExc_SystemError, "%s user has become invalid", Py_TYPE(self)->tp_name);
int _BaseMathObject_WriteCallback(BaseMathObject *self)
{
Mathutils_Callback *cb= mathutils_callbacks[self->cb_type];
- if(cb->set(self, self->cb_subtype, self->data))
+ if(cb->set(self, self->cb_subtype))
return 1;
PyErr_Format(PyExc_SystemError, "%s user has become invalid", Py_TYPE(self)->tp_name);
int _BaseMathObject_ReadIndexCallback(BaseMathObject *self, int index)
{
Mathutils_Callback *cb= mathutils_callbacks[self->cb_type];
- if(cb->get_index(self, self->cb_subtype, self->data, index))
+ if(cb->get_index(self, self->cb_subtype, index))
return 1;
PyErr_Format(PyExc_SystemError, "%s user has become invalid", Py_TYPE(self)->tp_name);
int _BaseMathObject_WriteIndexCallback(BaseMathObject *self, int index)
{
Mathutils_Callback *cb= mathutils_callbacks[self->cb_type];
- if(cb->set_index(self, self->cb_subtype, self->data, index))
+ if(cb->set_index(self, self->cb_subtype, index))
return 1;
PyErr_Format(PyExc_SystemError, "%s user has become invalid", Py_TYPE(self)->tp_name);
typedef struct Mathutils_Callback Mathutils_Callback;
typedef int (*BaseMathCheckFunc)(BaseMathObject *); /* checks the user is still valid */
-typedef int (*BaseMathGetFunc)(BaseMathObject *, int, float *); /* gets the vector from the user */
-typedef int (*BaseMathSetFunc)(BaseMathObject *, int, float *); /* sets the users vector values once the vector is modified */
-typedef int (*BaseMathGetIndexFunc)(BaseMathObject *, int, float *, int); /* same as above but only for an index */
-typedef int (*BaseMathSetIndexFunc)(BaseMathObject *, int, float *, int); /* same as above but only for an index */
+typedef int (*BaseMathGetFunc)(BaseMathObject *, int); /* gets the vector from the user */
+typedef int (*BaseMathSetFunc)(BaseMathObject *, int); /* sets the users vector values once the vector is modified */
+typedef int (*BaseMathGetIndexFunc)(BaseMathObject *, int, int); /* same as above but only for an index */
+typedef int (*BaseMathSetIndexFunc)(BaseMathObject *, int, int); /* same as above but only for an index */
struct Mathutils_Callback {
BaseMathCheckFunc check;
return BaseMath_ReadCallback(self);
}
-static int mathutils_matrix_vector_get(BaseMathObject *bmo, int subtype, float *vec_from)
+static int mathutils_matrix_vector_get(BaseMathObject *bmo, int subtype)
{
MatrixObject *self= (MatrixObject *)bmo->cb_user;
int i;
return 0;
for(i=0; i < self->colSize; i++)
- vec_from[i]= self->matrix[subtype][i];
+ bmo->data[i]= self->matrix[subtype][i];
return 1;
}
-static int mathutils_matrix_vector_set(BaseMathObject *bmo, int subtype, float *vec_to)
+static int mathutils_matrix_vector_set(BaseMathObject *bmo, int subtype)
{
MatrixObject *self= (MatrixObject *)bmo->cb_user;
int i;
return 0;
for(i=0; i < self->colSize; i++)
- self->matrix[subtype][i]= vec_to[i];
+ self->matrix[subtype][i]= bmo->data[i];
BaseMath_WriteCallback(self);
return 1;
}
-static int mathutils_matrix_vector_get_index(BaseMathObject *bmo, int subtype, float *vec_from, int index)
+static int mathutils_matrix_vector_get_index(BaseMathObject *bmo, int subtype, int index)
{
MatrixObject *self= (MatrixObject *)bmo->cb_user;
if(!BaseMath_ReadCallback(self))
return 0;
- vec_from[index]= self->matrix[subtype][index];
+ bmo->data[index]= self->matrix[subtype][index];
return 1;
}
-static int mathutils_matrix_vector_set_index(BaseMathObject *bmo, int subtype, float *vec_to, int index)
+static int mathutils_matrix_vector_set_index(BaseMathObject *bmo, int subtype, int index)
{
MatrixObject *self= (MatrixObject *)bmo->cb_user;
if(!BaseMath_ReadCallback(self))
return 0;
- self->matrix[subtype][index]= vec_to[index];
+ self->matrix[subtype][index]= bmo->data[index];
BaseMath_WriteCallback(self);
return 1;
return self->prop ? 1:0;
}
-static int mathutils_rna_vector_get(BaseMathObject *bmo, int subtype, float *vec_from)
+static int mathutils_rna_vector_get(BaseMathObject *bmo, int subtype)
{
BPy_PropertyRNA *self= (BPy_PropertyRNA *)bmo->cb_user;
if(self->prop==NULL)
return 0;
- RNA_property_float_get_array(&self->ptr, self->prop, vec_from);
+ RNA_property_float_get_array(&self->ptr, self->prop, bmo->data);
/* Euler order exception */
if(subtype==MATHUTILS_CB_SUBTYPE_EUL) {
return 1;
}
-static int mathutils_rna_vector_set(BaseMathObject *bmo, int subtype, float *vec_to)
+static int mathutils_rna_vector_set(BaseMathObject *bmo, int subtype)
{
BPy_PropertyRNA *self= (BPy_PropertyRNA *)bmo->cb_user;
float min, max;
if(min != FLT_MIN || max != FLT_MAX) {
int i, len= RNA_property_array_length(&self->ptr, self->prop);
for(i=0; i<len; i++) {
- CLAMP(vec_to[i], min, max);
+ CLAMP(bmo->data[i], min, max);
}
}
- RNA_property_float_set_array(&self->ptr, self->prop, vec_to);
+ RNA_property_float_set_array(&self->ptr, self->prop, bmo->data);
RNA_property_update(BPy_GetContext(), &self->ptr, self->prop);
/* Euler order exception */
return 1;
}
-static int mathutils_rna_vector_get_index(BaseMathObject *bmo, int subtype, float *vec_from, int index)
+static int mathutils_rna_vector_get_index(BaseMathObject *bmo, int subtype, int index)
{
BPy_PropertyRNA *self= (BPy_PropertyRNA *)bmo->cb_user;
if(self->prop==NULL)
return 0;
- vec_from[index]= RNA_property_float_get_index(&self->ptr, self->prop, index);
+ bmo->data[index]= RNA_property_float_get_index(&self->ptr, self->prop, index);
return 1;
}
-static int mathutils_rna_vector_set_index(BaseMathObject *bmo, int subtype, float *vec_to, int index)
+static int mathutils_rna_vector_set_index(BaseMathObject *bmo, int subtype, int index)
{
BPy_PropertyRNA *self= (BPy_PropertyRNA *)bmo->cb_user;
if(self->prop==NULL)
return 0;
- RNA_property_float_clamp(&self->ptr, self->prop, &vec_to[index]);
- RNA_property_float_set_index(&self->ptr, self->prop, index, vec_to[index]);
+ RNA_property_float_clamp(&self->ptr, self->prop, &bmo->data[index]);
+ RNA_property_float_set_index(&self->ptr, self->prop, index, bmo->data[index]);
RNA_property_update(BPy_GetContext(), &self->ptr, self->prop);
return 1;
}
/* bpyrna matrix callbacks */
static int mathutils_rna_matrix_cb_index= -1; /* index for our callbacks */
-static int mathutils_rna_matrix_get(BaseMathObject *bmo, int subtype, float *mat_from)
+static int mathutils_rna_matrix_get(BaseMathObject *bmo, int subtype)
{
BPy_PropertyRNA *self= (BPy_PropertyRNA *)bmo->cb_user;
if(self->prop==NULL)
return 0;
- RNA_property_float_get_array(&self->ptr, self->prop, mat_from);
+ RNA_property_float_get_array(&self->ptr, self->prop, bmo->data);
return 1;
}
-static int mathutils_rna_matrix_set(BaseMathObject *bmo, int subtype, float *mat_to)
+static int mathutils_rna_matrix_set(BaseMathObject *bmo, int subtype)
{
BPy_PropertyRNA *self= (BPy_PropertyRNA *)bmo->cb_user;
if(self->prop==NULL)
return 0;
/* can ignore clamping here */
- RNA_property_float_set_array(&self->ptr, self->prop, mat_to);
+ RNA_property_float_set_array(&self->ptr, self->prop, bmo->data);
RNA_property_update(BPy_GetContext(), &self->ptr, self->prop);
return 1;
}
Mathutils_Callback mathutils_rna_matrix_cb = {
- (BaseMathCheckFunc) mathutils_rna_generic_check,
- (BaseMathGetFunc) mathutils_rna_matrix_get,
- (BaseMathSetFunc) mathutils_rna_matrix_set,
- (BaseMathGetIndexFunc) NULL,
- (BaseMathSetIndexFunc) NULL
+ mathutils_rna_generic_check,
+ mathutils_rna_matrix_get,
+ mathutils_rna_matrix_set,
+ NULL,
+ NULL
};
/* same as RNA_enum_value_from_id but raises an exception */
return 1;
}
-static int mathutils_kxgameob_vector_get(BaseMathObject *bmo, int subtype, float *vec_from)
+static int mathutils_kxgameob_vector_get(BaseMathObject *bmo, int subtype)
{
KX_GameObject* self= static_cast<KX_GameObject*>BGE_PROXY_REF(bmo->cb_user);
if(self==NULL)
switch(subtype) {
case MATHUTILS_VEC_CB_POS_LOCAL:
- self->NodeGetLocalPosition().getValue(vec_from);
+ self->NodeGetLocalPosition().getValue(bmo->data);
break;
case MATHUTILS_VEC_CB_POS_GLOBAL:
- self->NodeGetWorldPosition().getValue(vec_from);
+ self->NodeGetWorldPosition().getValue(bmo->data);
break;
case MATHUTILS_VEC_CB_SCALE_LOCAL:
- self->NodeGetLocalScaling().getValue(vec_from);
+ self->NodeGetLocalScaling().getValue(bmo->data);
break;
case MATHUTILS_VEC_CB_SCALE_GLOBAL:
- self->NodeGetWorldScaling().getValue(vec_from);
+ self->NodeGetWorldScaling().getValue(bmo->data);
break;
case MATHUTILS_VEC_CB_INERTIA_LOCAL:
if(!self->GetPhysicsController()) return 0;
- self->GetPhysicsController()->GetLocalInertia().getValue(vec_from);
+ self->GetPhysicsController()->GetLocalInertia().getValue(bmo->data);
break;
case MATHUTILS_VEC_CB_OBJECT_COLOR:
- self->GetObjectColor().getValue(vec_from);
+ self->GetObjectColor().getValue(bmo->data);
break;
case MATHUTILS_VEC_CB_LINVEL_LOCAL:
if(!self->GetPhysicsController()) return 0;
- self->GetLinearVelocity(true).getValue(vec_from);
+ self->GetLinearVelocity(true).getValue(bmo->data);
break;
case MATHUTILS_VEC_CB_LINVEL_GLOBAL:
if(!self->GetPhysicsController()) return 0;
- self->GetLinearVelocity(false).getValue(vec_from);
+ self->GetLinearVelocity(false).getValue(bmo->data);
break;
case MATHUTILS_VEC_CB_ANGVEL_LOCAL:
if(!self->GetPhysicsController()) return 0;
- self->GetAngularVelocity(true).getValue(vec_from);
+ self->GetAngularVelocity(true).getValue(bmo->data);
break;
case MATHUTILS_VEC_CB_ANGVEL_GLOBAL:
if(!self->GetPhysicsController()) return 0;
- self->GetAngularVelocity(false).getValue(vec_from);
+ self->GetAngularVelocity(false).getValue(bmo->data);
break;
}
return 1;
}
-static int mathutils_kxgameob_vector_set(BaseMathObject *bmo, int subtype, float *vec_to)
+static int mathutils_kxgameob_vector_set(BaseMathObject *bmo, int subtype)
{
KX_GameObject* self= static_cast<KX_GameObject*>BGE_PROXY_REF(bmo->cb_user);
if(self==NULL)
switch(subtype) {
case MATHUTILS_VEC_CB_POS_LOCAL:
- self->NodeSetLocalPosition(MT_Point3(vec_to));
+ self->NodeSetLocalPosition(MT_Point3(bmo->data));
self->NodeUpdateGS(0.f);
break;
case MATHUTILS_VEC_CB_POS_GLOBAL:
- self->NodeSetWorldPosition(MT_Point3(vec_to));
+ self->NodeSetWorldPosition(MT_Point3(bmo->data));
self->NodeUpdateGS(0.f);
break;
case MATHUTILS_VEC_CB_SCALE_LOCAL:
- self->NodeSetLocalScale(MT_Point3(vec_to));
+ self->NodeSetLocalScale(MT_Point3(bmo->data));
self->NodeUpdateGS(0.f);
break;
case MATHUTILS_VEC_CB_SCALE_GLOBAL:
/* read only */
break;
case MATHUTILS_VEC_CB_OBJECT_COLOR:
- self->SetObjectColor(MT_Vector4(vec_to));
+ self->SetObjectColor(MT_Vector4(bmo->data));
break;
case MATHUTILS_VEC_CB_LINVEL_LOCAL:
- self->setLinearVelocity(MT_Point3(vec_to),true);
+ self->setLinearVelocity(MT_Point3(bmo->data),true);
break;
case MATHUTILS_VEC_CB_LINVEL_GLOBAL:
- self->setLinearVelocity(MT_Point3(vec_to),false);
+ self->setLinearVelocity(MT_Point3(bmo->data),false);
break;
case MATHUTILS_VEC_CB_ANGVEL_LOCAL:
- self->setAngularVelocity(MT_Point3(vec_to),true);
+ self->setAngularVelocity(MT_Point3(bmo->data),true);
break;
case MATHUTILS_VEC_CB_ANGVEL_GLOBAL:
- self->setAngularVelocity(MT_Point3(vec_to),false);
+ self->setAngularVelocity(MT_Point3(bmo->data),false);
break;
}
return 1;
}
-static int mathutils_kxgameob_vector_get_index(BaseMathObject *bmo, int subtype, float *vec_from, int index)
+static int mathutils_kxgameob_vector_get_index(BaseMathObject *bmo, int subtype, int index)
{
float f[4];
/* lazy, avoid repeteing the case statement */
- if(!mathutils_kxgameob_vector_get(bmo, subtype, f))
+ if(!mathutils_kxgameob_vector_get(bmo, subtype))
return 0;
- vec_from[index]= f[index];
+ bmo->data[index]= f[index];
return 1;
}
-static int mathutils_kxgameob_vector_set_index(BaseMathObject *bmo, int subtype, float *vec_to, int index)
+static int mathutils_kxgameob_vector_set_index(BaseMathObject *bmo, int subtype, int index)
{
- float f= vec_to[index];
+ float f= bmo->data[index];
/* lazy, avoid repeteing the case statement */
- if(!mathutils_kxgameob_vector_get(bmo, subtype, vec_to))
+ if(!mathutils_kxgameob_vector_get(bmo, subtype))
return 0;
- vec_to[index]= f;
- mathutils_kxgameob_vector_set(bmo, subtype, vec_to);
+ bmo->data[index]= f;
+ mathutils_kxgameob_vector_set(bmo, subtype);
return 1;
}
static int mathutils_kxgameob_matrix_cb_index= -1; /* index for our callbacks */
-static int mathutils_kxgameob_matrix_get(BaseMathObject *bmo, int subtype, float *mat_from)
+static int mathutils_kxgameob_matrix_get(BaseMathObject *bmo, int subtype)
{
KX_GameObject* self= static_cast<KX_GameObject*>BGE_PROXY_REF(bmo->cb_user);
if(self==NULL)
return 0;
-
+
switch(subtype) {
case MATHUTILS_MAT_CB_ORI_LOCAL:
- self->NodeGetLocalOrientation().getValue3x3(mat_from);
+ self->NodeGetLocalOrientation().getValue3x3(bmo->data);
break;
case MATHUTILS_MAT_CB_ORI_GLOBAL:
- self->NodeGetWorldOrientation().getValue3x3(mat_from);
+ self->NodeGetWorldOrientation().getValue3x3(bmo->data);
break;
}
}
-static int mathutils_kxgameob_matrix_set(BaseMathObject *bmo, int subtype, float *mat_to)
+static int mathutils_kxgameob_matrix_set(BaseMathObject *bmo, int subtype)
{
KX_GameObject* self= static_cast<KX_GameObject*>BGE_PROXY_REF(bmo->cb_user);
if(self==NULL)
MT_Matrix3x3 mat3x3;
switch(subtype) {
case MATHUTILS_MAT_CB_ORI_LOCAL:
- mat3x3.setValue3x3(mat_to);
+ mat3x3.setValue3x3(bmo->data);
self->NodeSetLocalOrientation(mat3x3);
self->NodeUpdateGS(0.f);
break;
case MATHUTILS_MAT_CB_ORI_GLOBAL:
- mat3x3.setValue3x3(mat_to);
+ mat3x3.setValue3x3(bmo->data);
self->NodeSetLocalOrientation(mat3x3);
self->NodeUpdateGS(0.f);
break;
return 1;
}
-static int mathutils_obactu_vector_get(BaseMathObject *bmo, int subtype, float *vec_from)
+static int mathutils_obactu_vector_get(BaseMathObject *bmo, int subtype)
{
KX_ObjectActuator* self= static_cast<KX_ObjectActuator*>BGE_PROXY_REF(bmo->cb_user);
if(self==NULL)
switch(subtype) {
case MATHUTILS_VEC_CB_LINV:
- self->m_linear_velocity.getValue(vec_from);
+ self->m_linear_velocity.getValue(bmo->data);
break;
case MATHUTILS_VEC_CB_ANGV:
- self->m_angular_velocity.getValue(vec_from);
+ self->m_angular_velocity.getValue(bmo->data);
break;
}
return 1;
}
-static int mathutils_obactu_vector_set(BaseMathObject *bmo, int subtype, float *vec_to)
+static int mathutils_obactu_vector_set(BaseMathObject *bmo, int subtype)
{
KX_ObjectActuator* self= static_cast<KX_ObjectActuator*>BGE_PROXY_REF(bmo->cb_user);
if(self==NULL)
switch(subtype) {
case MATHUTILS_VEC_CB_LINV:
- self->m_linear_velocity.setValue(vec_to);
+ self->m_linear_velocity.setValue(bmo->data);
break;
case MATHUTILS_VEC_CB_ANGV:
- self->m_angular_velocity.setValue(vec_to);
+ self->m_angular_velocity.setValue(bmo->data);
break;
}
return 1;
}
-static int mathutils_obactu_vector_get_index(BaseMathObject *bmo, int subtype, float *vec_from, int index)
+static int mathutils_obactu_vector_get_index(BaseMathObject *bmo, int subtype, int index)
{
float f[4];
/* lazy, avoid repeteing the case statement */
- if(!mathutils_obactu_vector_get(bmo, subtype, f))
+ if(!mathutils_obactu_vector_get(bmo, subtype))
return 0;
- vec_from[index]= f[index];
+ bmo->data[index]= f[index];
return 1;
}
-static int mathutils_obactu_vector_set_index(BaseMathObject *bmo, int subtype, float *vec_to, int index)
+static int mathutils_obactu_vector_set_index(BaseMathObject *bmo, int subtype, int index)
{
- float f= vec_to[index];
+ float f= bmo->data[index];
/* lazy, avoid repeteing the case statement */
- if(!mathutils_obactu_vector_get(bmo, subtype, vec_to))
+ if(!mathutils_obactu_vector_get(bmo, subtype))
return 0;
- vec_to[index]= f;
- mathutils_obactu_vector_set(bmo, subtype, vec_to);
+ bmo->data[index]= f;
+ mathutils_obactu_vector_set(bmo, subtype);
return 1;
}