EXPP_CONSTR_LIMLOCALBONE,
EXPP_CONSTR_LIMLOCALNOPAR,
+
+ EXPP_CONSTR_RB_TYPE,
+ EXPP_CONSTR_RB_BALL,
+ EXPP_CONSTR_RB_HINGE,
+ EXPP_CONSTR_RB_GENERIC6DOF,
+ EXPP_CONSTR_RB_VEHICLE,
+ EXPP_CONSTR_RB_PIVX,
+ EXPP_CONSTR_RB_PIVY,
+ EXPP_CONSTR_RB_PIVZ,
+ EXPP_CONSTR_RB_AXX,
+ EXPP_CONSTR_RB_AXY,
+ EXPP_CONSTR_RB_AXZ,
+ EXPP_CONSTR_RB_MINLIMIT0,
+ EXPP_CONSTR_RB_MINLIMIT1,
+ EXPP_CONSTR_RB_MINLIMIT2,
+ EXPP_CONSTR_RB_MINLIMIT3,
+ EXPP_CONSTR_RB_MINLIMIT4,
+ EXPP_CONSTR_RB_MINLIMIT5,
+ EXPP_CONSTR_RB_MAXLIMIT0,
+ EXPP_CONSTR_RB_MAXLIMIT1,
+ EXPP_CONSTR_RB_MAXLIMIT2,
+ EXPP_CONSTR_RB_MAXLIMIT3,
+ EXPP_CONSTR_RB_MAXLIMIT4,
+ EXPP_CONSTR_RB_MAXLIMIT5,
+ EXPP_CONSTR_RB_EXTRAFZ,
+ EXPP_CONSTR_RB_FLAG,
+
};
/*****************************************************************************/
}
}
+
+static PyObject *rigidbody_getter( BPy_Constraint * self, int type)
+{
+ bRigidBodyJointConstraint *con = (bRigidBodyJointConstraint *)(self->con->data);
+
+ switch( type ) {
+ case EXPP_CONSTR_TARGET:
+ return Object_CreatePyObject( con->tar );
+ case EXPP_CONSTR_RB_PIVX:
+ return PyFloat_FromDouble( (double)con->pivX );
+ case EXPP_CONSTR_RB_PIVY:
+ return PyFloat_FromDouble( (double)con->pivY );
+ case EXPP_CONSTR_RB_PIVZ:
+ return PyFloat_FromDouble( (double)con->pivZ );
+ case EXPP_CONSTR_RB_AXX:
+ return PyFloat_FromDouble( (double)con->axX );
+ case EXPP_CONSTR_RB_AXY:
+ return PyFloat_FromDouble( (double)con->axY );
+ case EXPP_CONSTR_RB_AXZ:
+ return PyFloat_FromDouble( (double)con->axZ );
+ case EXPP_CONSTR_RB_MINLIMIT0:
+ return PyFloat_FromDouble( (double)con->minLimit[0] );
+ case EXPP_CONSTR_RB_MINLIMIT1:
+ return PyFloat_FromDouble( (double)con->minLimit[1] );
+ case EXPP_CONSTR_RB_MINLIMIT2:
+ return PyFloat_FromDouble( (double)con->minLimit[2] );
+ case EXPP_CONSTR_RB_MINLIMIT3:
+ return PyFloat_FromDouble( (double)con->minLimit[3] );
+ case EXPP_CONSTR_RB_MINLIMIT4:
+ return PyFloat_FromDouble( (double)con->minLimit[4] );
+ case EXPP_CONSTR_RB_MINLIMIT5:
+ return PyFloat_FromDouble( (double)con->minLimit[5] );
+ case EXPP_CONSTR_RB_MAXLIMIT0:
+ return PyFloat_FromDouble( (double)con->maxLimit[0] );
+ case EXPP_CONSTR_RB_MAXLIMIT1:
+ return PyFloat_FromDouble( (double)con->maxLimit[1] );
+ case EXPP_CONSTR_RB_MAXLIMIT2:
+ return PyFloat_FromDouble( (double)con->maxLimit[2] );
+ case EXPP_CONSTR_RB_MAXLIMIT3:
+ return PyFloat_FromDouble( (double)con->maxLimit[3] );
+ case EXPP_CONSTR_RB_MAXLIMIT4:
+ return PyFloat_FromDouble( (double)con->maxLimit[4] );
+ case EXPP_CONSTR_RB_MAXLIMIT5:
+ return PyFloat_FromDouble( (double)con->maxLimit[5] );
+ case EXPP_CONSTR_RB_EXTRAFZ:
+ return PyFloat_FromDouble( (double)con->extraFz );
+ case EXPP_CONSTR_LIMIT:
+ return PyInt_FromLong( (int)con->flag );
+
+ case EXPP_CONSTR_RB_TYPE:
+ return PyInt_FromLong( (int)con->type );
+ default:
+ return EXPP_ReturnPyObjError( PyExc_KeyError, "key not found" );
+ }
+}
+
+
+static int rigidbody_setter( BPy_Constraint *self, int type, PyObject *value )
+{
+ bRigidBodyJointConstraint *con = (bRigidBodyJointConstraint *)(self->con->data);
+
+ switch( type ) {
+ case EXPP_CONSTR_TARGET: {
+ Object *obj = (( BPy_Object * )value)->object;
+ if( !BPy_Object_Check( value ) )
+ return EXPP_ReturnIntError( PyExc_TypeError,
+ "expected BPy object argument" );
+ con->tar = obj;
+ return 0;
+ }
+ case EXPP_CONSTR_RB_PIVX:
+ return EXPP_setFloatClamped( value, &con->pivX , -1000.0, 1000.0 );
+ case EXPP_CONSTR_RB_PIVY:
+ return EXPP_setFloatClamped( value, &con->pivY , -1000.0, 1000.0 );
+ case EXPP_CONSTR_RB_PIVZ:
+ return EXPP_setFloatClamped( value, &con->pivZ , -1000.0, 1000.0 );
+ case EXPP_CONSTR_RB_AXX:
+ return EXPP_setFloatClamped( value, &con->axX , -1000.0, 1000.0 );
+ case EXPP_CONSTR_RB_AXY:
+ return EXPP_setFloatClamped( value, &con->axY , -1000.0, 1000.0 );
+ case EXPP_CONSTR_RB_AXZ:
+ return EXPP_setFloatClamped( value, &con->axZ , -1000.0, 1000.0 );
+ case EXPP_CONSTR_RB_MINLIMIT0:
+ return EXPP_setFloatClamped( value, &con->minLimit[0] , -1000.0, 1000.0 );
+ case EXPP_CONSTR_RB_MINLIMIT1:
+ return EXPP_setFloatClamped( value, &con->minLimit[1] , -1000.0, 1000.0 );
+ case EXPP_CONSTR_RB_MINLIMIT2:
+ return EXPP_setFloatClamped( value, &con->minLimit[2] , -1000.0, 1000.0 );
+ case EXPP_CONSTR_RB_MINLIMIT3:
+ return EXPP_setFloatClamped( value, &con->minLimit[3] , -1000.0, 1000.0 );
+ case EXPP_CONSTR_RB_MINLIMIT4:
+ return EXPP_setFloatClamped( value, &con->minLimit[4] , -1000.0, 1000.0 );
+ case EXPP_CONSTR_RB_MINLIMIT5:
+ return EXPP_setFloatClamped( value, &con->minLimit[5] , -1000.0, 1000.0 );
+ case EXPP_CONSTR_RB_MAXLIMIT0:
+ return EXPP_setFloatClamped( value, &con->maxLimit[0] , -1000.0, 1000.0 );
+ case EXPP_CONSTR_RB_MAXLIMIT1:
+ return EXPP_setFloatClamped( value, &con->maxLimit[1] , -1000.0, 1000.0 );
+ case EXPP_CONSTR_RB_MAXLIMIT2:
+ return EXPP_setFloatClamped( value, &con->maxLimit[2] , -1000.0, 1000.0 );
+ case EXPP_CONSTR_RB_MAXLIMIT3:
+ return EXPP_setFloatClamped( value, &con->maxLimit[3] , -1000.0, 1000.0 );
+ case EXPP_CONSTR_RB_MAXLIMIT4:
+ return EXPP_setFloatClamped( value, &con->maxLimit[4] , -1000.0, 1000.0 );
+ case EXPP_CONSTR_RB_MAXLIMIT5:
+ return EXPP_setFloatClamped( value, &con->maxLimit[5] , -1000.0, 1000.0 );
+ case EXPP_CONSTR_RB_EXTRAFZ:
+ return EXPP_setFloatClamped( value, &con->extraFz , -1000.0, 1000.0 );
+ case EXPP_CONSTR_LIMIT:
+ return EXPP_setIValueRange( value, &con->flag, 0,
+ LIMIT_XMIN | LIMIT_XMAX | LIMIT_YMIN | LIMIT_YMAX | LIMIT_ZMIN | LIMIT_ZMAX, 'i' );
+ case EXPP_CONSTR_RB_TYPE:
+ return EXPP_setIValueRange( value, &con->type, 0,
+ EXPP_CONSTR_RB_BALL | EXPP_CONSTR_RB_HINGE | EXPP_CONSTR_RB_GENERIC6DOF | EXPP_CONSTR_RB_VEHICLE, 'i' );
+ default:
+ return EXPP_ReturnIntError( PyExc_KeyError, "key not found" );
+ }
+}
+
/*
* get data from a constraint
*/
return loclimit_getter( self, setting );
case CONSTRAINT_TYPE_SIZELIMIT:
return sizelimit_getter( self, setting );
+ case CONSTRAINT_TYPE_RIGIDBODYJOINT:
+ return rigidbody_getter( self, setting );
case CONSTRAINT_TYPE_CHILDOF: /* Unimplemented */
case CONSTRAINT_TYPE_PYTHON:
default:
case CONSTRAINT_TYPE_SIZELIMIT:
result = sizelimit_setter( self, key_int, arg);
break;
+ case CONSTRAINT_TYPE_RIGIDBODYJOINT:
+ result = rigidbody_setter( self, key_int, arg);
+ break;
case CONSTRAINT_TYPE_NULL:
return EXPP_ReturnIntError( PyExc_KeyError, "key not found" );
case CONSTRAINT_TYPE_CHILDOF: /* Unimplemented */
EXPP_ReturnPyObjError( PyExc_TypeError, "expected int argument" );
/* type 0 is CONSTRAINT_TYPE_NULL, should we be able to add one of these? */
- if( type < CONSTRAINT_TYPE_NULL || type > CONSTRAINT_TYPE_MINMAX )
+ if( type < CONSTRAINT_TYPE_NULL || type > CONSTRAINT_TYPE_RIGIDBODYJOINT )
return EXPP_ReturnPyObjError( PyExc_ValueError,
"int argument out of range" );
PyInt_FromLong( CONSTRAINT_TYPE_ROTLIMIT ) );
PyConstant_Insert( d, "LIMITSIZE",
PyInt_FromLong( CONSTRAINT_TYPE_SIZELIMIT ) );
+ PyConstant_Insert( d, "RIGIDBODYJOINT",
+ PyInt_FromLong( CONSTRAINT_TYPE_RIGIDBODYJOINT ) );
}
return S;
}
PyInt_FromLong( EXPP_CONSTR_LIMLOCALBONE ) );
PyConstant_Insert( d, "LIMIT_LOCAL_NOPARENT",
PyInt_FromLong( EXPP_CONSTR_LIMLOCALNOPAR ) );
+
+
+ PyConstant_Insert( d, "CONSTR_RB_TYPE",
+ PyInt_FromLong( EXPP_CONSTR_RB_TYPE ) );
+ PyConstant_Insert( d, "CONSTR_RB_BALL",
+ PyInt_FromLong( EXPP_CONSTR_RB_BALL ) );
+ PyConstant_Insert( d, "CONSTR_RB_HINGE",
+ PyInt_FromLong( EXPP_CONSTR_RB_HINGE ) );
+ PyConstant_Insert( d, "CONSTR_RB_GENERIC6DOF",
+ PyInt_FromLong( EXPP_CONSTR_RB_GENERIC6DOF ) );
+ PyConstant_Insert( d, "CONSTR_RB_VEHICLE",
+ PyInt_FromLong( EXPP_CONSTR_RB_VEHICLE ) );
+ PyConstant_Insert( d, "CONSTR_RB_PIVX",
+ PyInt_FromLong( EXPP_CONSTR_RB_PIVX ) );
+ PyConstant_Insert( d, "CONSTR_RB_PIVY",
+ PyInt_FromLong( EXPP_CONSTR_RB_PIVY ) );
+ PyConstant_Insert( d, "CONSTR_RB_PIVZ",
+ PyInt_FromLong( EXPP_CONSTR_RB_PIVZ ) );
+ PyConstant_Insert( d, "CONSTR_RB_AXX",
+ PyInt_FromLong( EXPP_CONSTR_RB_AXX ) );
+ PyConstant_Insert( d, "CONSTR_RB_AXY",
+ PyInt_FromLong( EXPP_CONSTR_RB_AXY ) );
+ PyConstant_Insert( d, "CONSTR_RB_AXZ",
+ PyInt_FromLong( EXPP_CONSTR_RB_AXZ ) );
+ PyConstant_Insert( d, "CONSTR_RB_MINLIMIT0",
+ PyInt_FromLong( EXPP_CONSTR_RB_MINLIMIT0 ) );
+ PyConstant_Insert( d, "CONSTR_RB_MINLIMIT1",
+ PyInt_FromLong( EXPP_CONSTR_RB_MINLIMIT1 ) );
+ PyConstant_Insert( d, "CONSTR_RB_MINLIMIT2",
+ PyInt_FromLong( EXPP_CONSTR_RB_MINLIMIT2 ) );
+ PyConstant_Insert( d, "CONSTR_RB_MINLIMIT3",
+ PyInt_FromLong( EXPP_CONSTR_RB_MINLIMIT3 ) );
+ PyConstant_Insert( d, "CONSTR_RB_MINLIMIT4",
+ PyInt_FromLong( EXPP_CONSTR_RB_MINLIMIT4 ) );
+ PyConstant_Insert( d, "CONSTR_RB_MINLIMIT5",
+ PyInt_FromLong( EXPP_CONSTR_RB_MINLIMIT5 ) );
+ PyConstant_Insert( d, "CONSTR_RB_MAXLIMIT0",
+ PyInt_FromLong( EXPP_CONSTR_RB_MAXLIMIT0 ) );
+ PyConstant_Insert( d, "CONSTR_RB_MAXLIMIT1",
+ PyInt_FromLong( EXPP_CONSTR_RB_MAXLIMIT1 ) );
+ PyConstant_Insert( d, "CONSTR_RB_MAXLIMIT2",
+ PyInt_FromLong( EXPP_CONSTR_RB_MAXLIMIT2 ) );
+ PyConstant_Insert( d, "CONSTR_RB_MAXLIMIT3",
+ PyInt_FromLong( EXPP_CONSTR_RB_MAXLIMIT3 ) );
+ PyConstant_Insert( d, "CONSTR_RB_MAXLIMIT4",
+ PyInt_FromLong( EXPP_CONSTR_RB_MAXLIMIT4 ) );
+ PyConstant_Insert( d, "CONSTR_RB_MAXLIMIT5",
+ PyInt_FromLong( EXPP_CONSTR_RB_MAXLIMIT5 ) );
+ PyConstant_Insert( d, "CONSTR_RB_EXTRAFZ",
+ PyInt_FromLong( EXPP_CONSTR_RB_EXTRAFZ ) );
+ PyConstant_Insert( d, "CONSTR_RB_FLAG",
+ PyInt_FromLong( EXPP_CONSTR_RB_FLAG ) );
}
return S;
}
bRigidBodyJointConstraint *data = con->data;
int togButWidth = 70;
int offsetY = 150;
- float extremeLin = 1000.f;
+ float extremeLin = 999.f;
float extremeAngX = 180.f;
float extremeAngY = 45.f;
float extremeAngZ = 45.f;
int textButWidth = ((width/2)-togButWidth);
- uiDefButI(block, MENU, B_SWITCHRENDER, "Joint Types%t|Ball%x1|Hinge%x2|Generic6DOF%x3",//|Extra Force%x6",
+ uiDefButI(block, MENU, B_CONSTRAINT_TEST, "Joint Types%t|Ball%x1|Hinge%x2|Generic6DOF%x12",//|Extra Force%x6",
*xco, *yco-25, 150, 18, &data->type, 0, 0, 0, 0, "Choose the joint type");
- height = 310;
-
+ height = 140;
+ if (data->type==CONSTRAINT_RB_GENERIC6DOF){
+ height = 270;
+ }
uiDefBut(block, ROUNDBOX, B_DIFF, "", *xco-10, *yco-height, width+40,height-1, NULL, 5.0, 0.0, 12, rb_col, "");
{
//uiDefBut(block, ROUNDBOX, B_DIFF, "", *xco-10, *yco-height, width+40,height-1, NULL, 5.0, 0.0, 12, rb_col, "");
- uiDefIDPoinBut(block, test_obpoin_but, ID_OB, B_CONSTRAINT_CHANGETARGET, "Child:", *xco, *yco-50, 130, 18, &data->tar, "Child Object");
+ uiDefIDPoinBut(block, test_obpoin_but, ID_OB, B_CONSTRAINT_CHANGETARGET, "toObject:", *xco, *yco-50, 130, 18, &data->tar, "Child Object");
//if (data->tar)
// uiDefIDPoinBut(block, test_obpoin_but, ID_OB, B_CONSTRAINT_CHANGETARGET, "Child:", *xco+135, *yco-50, 130, 18, &data->child, "Child2 Object (if this exist then this object will be the pivot Only)");
uiDefButF(block, NUM, B_CONSTRAINT_TEST, "Pivot X:", *xco, *yco-75, 130, 18, &data->pivX, -10000, 10000, 100.0, 0.0, "Offset Joint");
uiDefButF(block, NUM, B_CONSTRAINT_TEST, "Ax X:", *xco+135, *yco-75, 130, 18, &data->axX, -10000, 10000, 100.0, 0.0, "Offset Joint");
uiDefButF(block, NUM, B_CONSTRAINT_TEST, "Ax Y:", *xco+135, *yco-100, 130, 18, &data->axY, -10000, 10000, 100.0, 0.0, "Offset Joint");
uiDefButF(block, NUM, B_CONSTRAINT_TEST, "Ax Z:", *xco+135, *yco-125, 130, 18, &data->axZ, -10000, 10000, 100.0, 0.0, "Offset Joint");
-
- /* Draw Pairs of LimitToggle+LimitValue */
- uiBlockBeginAlign(block);
- uiDefButBitS(block, TOG, LIMIT_XMIN, B_CONSTRAINT_TEST, "LinMinX", *xco, *yco-offsetY, togButWidth, 18, &data->flag, 0, 24, 0, 0, "Use minimum x limit");
- uiDefButF(block, NUM, B_CONSTRAINT_TEST, "", *xco+togButWidth, *yco-offsetY, (textButWidth-5), 18, &(data->minLimit[0]), -extremeLin, extremeLin, 0.1,0.5,"min x limit");
- uiBlockEndAlign(block);
- uiBlockBeginAlign(block);
- uiDefButBitS(block, TOG, LIMIT_XMIN, B_CONSTRAINT_TEST, "LinMaxX", *xco+(width-(textButWidth-5)-togButWidth), *yco-offsetY, togButWidth, 18, &data->flag, 0, 24, 0, 0, "Use maximum x limit");
- uiDefButF(block, NUM, B_CONSTRAINT_TEST, "", *xco+(width-textButWidth-5), *yco-offsetY, (textButWidth-5), 18, &(data->maxLimit[0]), -extremeLin, extremeLin, 0.1,0.5,"max x limit");
- uiBlockEndAlign(block);
- offsetY += 20;
- uiBlockBeginAlign(block);
- uiDefButBitS(block, TOG, LIMIT_YMIN, B_CONSTRAINT_TEST, "LinMinY", *xco, *yco-offsetY, togButWidth, 18, &data->flag, 0, 24, 0, 0, "Use minimum y limit");
- uiDefButF(block, NUM, B_CONSTRAINT_TEST, "", *xco+togButWidth, *yco-offsetY, (textButWidth-5), 18, &(data->minLimit[1]), -extremeLin, extremeLin, 0.1,0.5,"min y limit");
- uiBlockEndAlign(block);
- uiBlockBeginAlign(block);
- uiDefButBitS(block, TOG, LIMIT_YMIN, B_CONSTRAINT_TEST, "LinMaxY", *xco+(width-(textButWidth-5)-togButWidth), *yco-offsetY, togButWidth, 18, &data->flag, 0, 24, 0, 0, "Use maximum y limit");
- uiDefButF(block, NUM, B_CONSTRAINT_TEST, "", *xco+(width-textButWidth-5), *yco-offsetY, (textButWidth-5), 18, &(data->maxLimit[1]), -extremeLin, extremeLin, 0.1,0.5,"max y limit");
- uiBlockEndAlign(block);
- offsetY += 20;
- uiBlockBeginAlign(block);
- uiDefButBitS(block, TOG, LIMIT_ZMIN, B_CONSTRAINT_TEST, "LinMinZ", *xco, *yco-offsetY, togButWidth, 18, &data->flag, 0, 24, 0, 0, "Use minimum z limit");
- uiDefButF(block, NUM, B_CONSTRAINT_TEST, "", *xco+togButWidth, *yco-offsetY, (textButWidth-5), 18, &(data->minLimit[2]), -extremeLin, extremeLin, 0.1,0.5,"min z limit");
- uiBlockEndAlign(block);
- uiBlockBeginAlign(block);
- uiDefButBitS(block, TOG, LIMIT_ZMIN, B_CONSTRAINT_TEST, "LinMaxZ", *xco+(width-(textButWidth-5)-togButWidth), *yco-offsetY, togButWidth, 18, &data->flag, 0, 24, 0, 0, "Use maximum z limit");
- uiDefButF(block, NUM, B_CONSTRAINT_TEST, "", *xco+(width-textButWidth-5), *yco-offsetY, (textButWidth-5), 18, &(data->maxLimit[2]), -extremeLin, extremeLin, 0.1,0.5,"max z limit");
- uiBlockEndAlign(block);
- offsetY += 20;
-
- /* Draw Pairs of LimitToggle+LimitValue */
- uiBlockBeginAlign(block);
- uiDefButBitS(block, TOG, LIMIT_XMAX, B_CONSTRAINT_TEST, "AngMinX", *xco, *yco-offsetY, togButWidth, 18, &data->flag, 0, 24, 0, 0, "Use minimum x limit");
- uiDefButF(block, NUM, B_CONSTRAINT_TEST, "", *xco+togButWidth, *yco-offsetY, (textButWidth-5), 18, &(data->minLimit[3]), -extremeAngX, extremeAngX, 0.1,0.5,"min x limit");
- uiBlockEndAlign(block);
- uiBlockBeginAlign(block);
- uiDefButBitS(block, TOG, LIMIT_XMAX, B_CONSTRAINT_TEST, "AngMaxX", *xco+(width-(textButWidth-5)-togButWidth), *yco-offsetY, togButWidth, 18, &data->flag, 0, 24, 0, 0, "Use maximum x limit");
- uiDefButF(block, NUM, B_CONSTRAINT_TEST, "", *xco+(width-textButWidth-5), *yco-offsetY, (textButWidth-5), 18, &(data->maxLimit[3]), -extremeAngX, extremeAngX, 0.1,0.5,"max x limit");
- uiBlockEndAlign(block);
- offsetY += 20;
- uiBlockBeginAlign(block);
- uiDefButBitS(block, TOG, LIMIT_YMAX, B_CONSTRAINT_TEST, "AngMinY", *xco, *yco-offsetY, togButWidth, 18, &data->flag, 0, 24, 0, 0, "Use minimum y limit");
- uiDefButF(block, NUM, B_CONSTRAINT_TEST, "", *xco+togButWidth, *yco-offsetY, (textButWidth-5), 18, &(data->minLimit[4]), -extremeAngY, extremeAngY, 0.1,0.5,"min y limit");
- uiBlockEndAlign(block);
- uiBlockBeginAlign(block);
- uiDefButBitS(block, TOG, LIMIT_YMAX, B_CONSTRAINT_TEST, "AngMaxY", *xco+(width-(textButWidth-5)-togButWidth), *yco-offsetY, togButWidth, 18, &data->flag, 0, 24, 0, 0, "Use maximum y limit");
- uiDefButF(block, NUM, B_CONSTRAINT_TEST, "", *xco+(width-textButWidth-5), *yco-offsetY, (textButWidth-5), 18, &(data->maxLimit[4]), -extremeAngY, extremeAngY, 0.1,0.5,"max y limit");
- uiBlockEndAlign(block);
- offsetY += 20;
- uiBlockBeginAlign(block);
- uiDefButBitS(block, TOG, LIMIT_ZMAX, B_CONSTRAINT_TEST, "AngMinZ", *xco, *yco-offsetY, togButWidth, 18, &data->flag, 0, 24, 0, 0, "Use minimum z limit");
- uiDefButF(block, NUM, B_CONSTRAINT_TEST, "", *xco+togButWidth, *yco-offsetY, (textButWidth-5), 18, &(data->minLimit[5]), -extremeAngZ, extremeAngZ, 0.1,0.5,"min z limit");
- uiBlockEndAlign(block);
- uiBlockBeginAlign(block);
- uiDefButBitS(block, TOG, LIMIT_ZMAX, B_CONSTRAINT_TEST, "AngMaxZ", *xco+(width-(textButWidth-5)-togButWidth), *yco-offsetY, togButWidth, 18, &data->flag, 0, 24, 0, 0, "Use maximum z limit");
- uiDefButF(block, NUM, B_CONSTRAINT_TEST, "", *xco+(width-textButWidth-5), *yco-offsetY, (textButWidth-5), 18, &(data->maxLimit[5]), -extremeAngZ, extremeAngZ, 0.1,0.5,"max z limit");
- uiBlockEndAlign(block);
-
-
- }
-
+
+ if (data->type==CONSTRAINT_RB_GENERIC6DOF){
+ /* Draw Pairs of LimitToggle+LimitValue */
+ uiBlockBeginAlign(block);
+ uiDefButBitS(block, TOG, 1, B_CONSTRAINT_TEST, "LinMinX", *xco, *yco-offsetY, togButWidth, 18, &data->flag, 0, 24, 0, 0, "Use minimum x limit");
+ uiDefButF(block, NUM, B_CONSTRAINT_TEST, "", *xco+togButWidth, *yco-offsetY, (textButWidth-5), 18, &(data->minLimit[0]), -extremeLin, extremeLin, 0.1,0.5,"min x limit");
+ uiBlockEndAlign(block);
+ uiBlockBeginAlign(block);
+ uiDefButBitS(block, TOG, 1, B_CONSTRAINT_TEST, "LinMaxX", *xco+(width-(textButWidth-5)-togButWidth), *yco-offsetY, togButWidth, 18, &data->flag, 0, 24, 0, 0, "Use maximum x limit");
+ uiDefButF(block, NUM, B_CONSTRAINT_TEST, "", *xco+(width-textButWidth-5), *yco-offsetY, (textButWidth), 18, &(data->maxLimit[0]), -extremeLin, extremeLin, 0.1,0.5,"max x limit");
+ uiBlockEndAlign(block);
+ offsetY += 20;
+ uiBlockBeginAlign(block);
+ uiDefButBitS(block, TOG, 2, B_CONSTRAINT_TEST, "LinMinY", *xco, *yco-offsetY, togButWidth, 18, &data->flag, 0, 24, 0, 0, "Use minimum y limit");
+ uiDefButF(block, NUM, B_CONSTRAINT_TEST, "", *xco+togButWidth, *yco-offsetY, (textButWidth-5), 18, &(data->minLimit[1]), -extremeLin, extremeLin, 0.1,0.5,"min y limit");
+ uiBlockEndAlign(block);
+ uiBlockBeginAlign(block);
+ uiDefButBitS(block, TOG, 2, B_CONSTRAINT_TEST, "LinMaxY", *xco+(width-(textButWidth-5)-togButWidth), *yco-offsetY, togButWidth, 18, &data->flag, 0, 24, 0, 0, "Use maximum y limit");
+ uiDefButF(block, NUM, B_CONSTRAINT_TEST, "", *xco+(width-textButWidth-5), *yco-offsetY, (textButWidth), 18, &(data->maxLimit[1]), -extremeLin, extremeLin, 0.1,0.5,"max y limit");
+ uiBlockEndAlign(block);
+ offsetY += 20;
+ uiBlockBeginAlign(block);
+ uiDefButBitS(block, TOG, 4, B_CONSTRAINT_TEST, "LinMinZ", *xco, *yco-offsetY, togButWidth, 18, &data->flag, 0, 24, 0, 0, "Use minimum z limit");
+ uiDefButF(block, NUM, B_CONSTRAINT_TEST, "", *xco+togButWidth, *yco-offsetY, (textButWidth-5), 18, &(data->minLimit[2]), -extremeLin, extremeLin, 0.1,0.5,"min z limit");
+ uiBlockEndAlign(block);
+ uiBlockBeginAlign(block);
+ uiDefButBitS(block, TOG, 4, B_CONSTRAINT_TEST, "LinMaxZ", *xco+(width-(textButWidth-5)-togButWidth), *yco-offsetY, togButWidth, 18, &data->flag, 0, 24, 0, 0, "Use maximum z limit");
+ uiDefButF(block, NUM, B_CONSTRAINT_TEST, "", *xco+(width-textButWidth-5), *yco-offsetY, (textButWidth), 18, &(data->maxLimit[2]), -extremeLin, extremeLin, 0.1,0.5,"max z limit");
+ uiBlockEndAlign(block);
+ offsetY += 20;
+
+ /* Draw Pairs of LimitToggle+LimitValue */
+ uiBlockBeginAlign(block);
+ uiDefButBitS(block, TOG, 8, B_CONSTRAINT_TEST, "AngMinX", *xco, *yco-offsetY, togButWidth, 18, &data->flag, 0, 24, 0, 0, "Use minimum x limit");
+ uiDefButF(block, NUM, B_CONSTRAINT_TEST, "", *xco+togButWidth, *yco-offsetY, (textButWidth-5), 18, &(data->minLimit[3]), -extremeAngX, extremeAngX, 0.1,0.5,"min x limit");
+ uiBlockEndAlign(block);
+ uiBlockBeginAlign(block);
+ uiDefButBitS(block, TOG, 8, B_CONSTRAINT_TEST, "AngMaxX", *xco+(width-(textButWidth-5)-togButWidth), *yco-offsetY, togButWidth, 18, &data->flag, 0, 24, 0, 0, "Use maximum x limit");
+ uiDefButF(block, NUM, B_CONSTRAINT_TEST, "", *xco+(width-textButWidth-5), *yco-offsetY, (textButWidth), 18, &(data->maxLimit[3]), -extremeAngX, extremeAngX, 0.1,0.5,"max x limit");
+ uiBlockEndAlign(block);
+ offsetY += 20;
+ uiBlockBeginAlign(block);
+ uiDefButBitS(block, TOG, 16, B_CONSTRAINT_TEST, "AngMinY", *xco, *yco-offsetY, togButWidth, 18, &data->flag, 0, 24, 0, 0, "Use minimum y limit");
+ uiDefButF(block, NUM, B_CONSTRAINT_TEST, "", *xco+togButWidth, *yco-offsetY, (textButWidth-5), 18, &(data->minLimit[4]), -extremeAngY, extremeAngY, 0.1,0.5,"min y limit");
+ uiBlockEndAlign(block);
+ uiBlockBeginAlign(block);
+ uiDefButBitS(block, TOG, 16, B_CONSTRAINT_TEST, "AngMaxY", *xco+(width-(textButWidth-5)-togButWidth), *yco-offsetY, togButWidth, 18, &data->flag, 0, 24, 0, 0, "Use maximum y limit");
+ uiDefButF(block, NUM, B_CONSTRAINT_TEST, "", *xco+(width-textButWidth-5), *yco-offsetY, (textButWidth), 18, &(data->maxLimit[4]), -extremeAngY, extremeAngY, 0.1,0.5,"max y limit");
+ uiBlockEndAlign(block);
+ offsetY += 20;
+ uiBlockBeginAlign(block);
+ uiDefButBitS(block, TOG, 32, B_CONSTRAINT_TEST, "AngMinZ", *xco, *yco-offsetY, togButWidth, 18, &data->flag, 0, 24, 0, 0, "Use minimum z limit");
+ uiDefButF(block, NUM, B_CONSTRAINT_TEST, "", *xco+togButWidth, *yco-offsetY, (textButWidth-5), 18, &(data->minLimit[5]), -extremeAngZ, extremeAngZ, 0.1,0.5,"min z limit");
+ uiBlockEndAlign(block);
+ uiBlockBeginAlign(block);
+ uiDefButBitS(block, TOG, 32, B_CONSTRAINT_TEST, "AngMaxZ", *xco+(width-(textButWidth-5)-togButWidth), *yco-offsetY, togButWidth, 18, &data->flag, 0, 24, 0, 0, "Use maximum z limit");
+ uiDefButF(block, NUM, B_CONSTRAINT_TEST, "", *xco+(width-textButWidth-5), *yco-offsetY, (textButWidth), 18, &(data->maxLimit[5]), -extremeAngZ, extremeAngZ, 0.1,0.5,"max z limit");
+ uiBlockEndAlign(block);
+ }
+ }
}
break;
case CONSTRAINT_TYPE_NULL: