|
@@ -33,51 +33,303 @@ set_axis2(dReal x, dReal y, dReal z) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
INLINE void OdeHinge2Joint::
|
|
INLINE void OdeHinge2Joint::
|
|
|
-set_param(int parameter, dReal value) {
|
|
|
|
|
- dJointSetHinge2Param(_id, parameter, value);
|
|
|
|
|
|
|
+add_torques(dReal torque1, dReal torque2) {
|
|
|
|
|
+ dJointAddHinge2Torques(_id, torque1, torque2);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+INLINE LVecBase3f OdeHinge2Joint::
|
|
|
|
|
+get_anchor() const {
|
|
|
|
|
+ dVector3 result;
|
|
|
|
|
+ dJointGetHinge2Anchor(_id, result);
|
|
|
|
|
+ return LVecBase3f(result[0], result[1], result[2]);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+INLINE LVecBase3f OdeHinge2Joint::
|
|
|
|
|
+get_anchor2() const {
|
|
|
|
|
+ dVector3 result;
|
|
|
|
|
+ dJointGetHinge2Anchor2(_id, result);
|
|
|
|
|
+ return LVecBase3f(result[0], result[1], result[2]);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+INLINE LVecBase3f OdeHinge2Joint::
|
|
|
|
|
+get_axis1() const {
|
|
|
|
|
+ dVector3 result;
|
|
|
|
|
+ dJointGetHinge2Axis1(_id, result);
|
|
|
|
|
+ return LVecBase3f(result[0], result[1], result[2]);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+INLINE LVecBase3f OdeHinge2Joint::
|
|
|
|
|
+get_axis2() const {
|
|
|
|
|
+ dVector3 result;
|
|
|
|
|
+ dJointGetHinge2Axis2(_id, result);
|
|
|
|
|
+ return LVecBase3f(result[0], result[1], result[2]);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+INLINE dReal OdeHinge2Joint::
|
|
|
|
|
+get_angle1() const {
|
|
|
|
|
+ return dJointGetHinge2Angle1(_id);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+INLINE dReal OdeHinge2Joint::
|
|
|
|
|
+get_angle1_rate() const {
|
|
|
|
|
+ return dJointGetHinge2Angle1Rate(_id);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+INLINE dReal OdeHinge2Joint::
|
|
|
|
|
+get_angle2_rate() const {
|
|
|
|
|
+ return dJointGetHinge2Angle2Rate(_id);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
INLINE void OdeHinge2Joint::
|
|
INLINE void OdeHinge2Joint::
|
|
|
-add_torques(dReal torque1, dReal torque2) {
|
|
|
|
|
- dJointAddHinge2Torques(_id, torque1, torque2);
|
|
|
|
|
|
|
+set_param_lo_stop(int axis, dReal val) {
|
|
|
|
|
+ nassertv( _id != 0 );
|
|
|
|
|
+ nassertv( 0 <= axis && axis <= 1 );
|
|
|
|
|
+ if ( axis == 0 ) {
|
|
|
|
|
+ dJointSetHinge2Param(_id, dParamLoStop, val);
|
|
|
|
|
+ } else if ( axis == 1 ) {
|
|
|
|
|
+ dJointSetHinge2Param(_id, dParamLoStop2, val);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+INLINE void OdeHinge2Joint::
|
|
|
|
|
+set_param_hi_stop(int axis, dReal val) {
|
|
|
|
|
+ nassertv( _id != 0 );
|
|
|
|
|
+ nassertv( 0 <= axis && axis <= 1 );
|
|
|
|
|
+ if ( axis == 0 ) {
|
|
|
|
|
+ dJointSetHinge2Param(_id, dParamHiStop, val);
|
|
|
|
|
+ } else if ( axis == 1 ) {
|
|
|
|
|
+ dJointSetHinge2Param(_id, dParamHiStop2, val);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+INLINE void OdeHinge2Joint::
|
|
|
|
|
+set_param_vel(int axis, dReal val) {
|
|
|
|
|
+ nassertv( _id != 0 );
|
|
|
|
|
+ nassertv( 0 <= axis && axis <= 1 );
|
|
|
|
|
+ if ( axis == 0 ) {
|
|
|
|
|
+ dJointSetHinge2Param(_id, dParamVel, val);
|
|
|
|
|
+ } else if ( axis == 1 ) {
|
|
|
|
|
+ dJointSetHinge2Param(_id, dParamVel2, val);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
INLINE void OdeHinge2Joint::
|
|
INLINE void OdeHinge2Joint::
|
|
|
-get_anchor(dVector3 result) const {
|
|
|
|
|
- return dJointGetHinge2Anchor(_id, result);
|
|
|
|
|
|
|
+set_param_f_max(int axis, dReal val) {
|
|
|
|
|
+ nassertv( _id != 0 );
|
|
|
|
|
+ nassertv( 0 <= axis && axis <= 1 );
|
|
|
|
|
+ if ( axis == 0 ) {
|
|
|
|
|
+ dJointSetHinge2Param(_id, dParamFMax, val);
|
|
|
|
|
+ } else if ( axis == 1 ) {
|
|
|
|
|
+ dJointSetHinge2Param(_id, dParamFMax2, val);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
INLINE void OdeHinge2Joint::
|
|
INLINE void OdeHinge2Joint::
|
|
|
-get_anchor2(dVector3 result) const {
|
|
|
|
|
- return dJointGetHinge2Anchor2(_id, result);
|
|
|
|
|
|
|
+set_param_fudge_factor(int axis, dReal val) {
|
|
|
|
|
+ nassertv( _id != 0 );
|
|
|
|
|
+ nassertv( 0 <= axis && axis <= 1 );
|
|
|
|
|
+ if ( axis == 0 ) {
|
|
|
|
|
+ dJointSetHinge2Param(_id, dParamFudgeFactor, val);
|
|
|
|
|
+ } else if ( axis == 1 ) {
|
|
|
|
|
+ dJointSetHinge2Param(_id, dParamFudgeFactor2, val);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
INLINE void OdeHinge2Joint::
|
|
INLINE void OdeHinge2Joint::
|
|
|
-get_axis1(dVector3 result) const {
|
|
|
|
|
- return dJointGetHinge2Axis1(_id, result);
|
|
|
|
|
|
|
+set_param_bounce(int axis, dReal val) {
|
|
|
|
|
+ nassertv( _id != 0 );
|
|
|
|
|
+ nassertv( 0 <= axis && axis <= 1 );
|
|
|
|
|
+ if ( axis == 0 ) {
|
|
|
|
|
+ dJointSetHinge2Param(_id, dParamBounce, val);
|
|
|
|
|
+ } else if ( axis == 1 ) {
|
|
|
|
|
+ dJointSetHinge2Param(_id, dParamBounce2, val);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
INLINE void OdeHinge2Joint::
|
|
INLINE void OdeHinge2Joint::
|
|
|
-get_axis2(dVector3 result) const {
|
|
|
|
|
- return dJointGetHinge2Axis2(_id, result);
|
|
|
|
|
|
|
+set_param_CFM(int axis, dReal val) {
|
|
|
|
|
+ nassertv( _id != 0 );
|
|
|
|
|
+ nassertv( 0 <= axis && axis <= 1 );
|
|
|
|
|
+ if ( axis == 0 ) {
|
|
|
|
|
+ dJointSetHinge2Param(_id, dParamCFM, val);
|
|
|
|
|
+ } else if ( axis == 1 ) {
|
|
|
|
|
+ dJointSetHinge2Param(_id, dParamCFM2, val);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+INLINE void OdeHinge2Joint::
|
|
|
|
|
+set_param_stop_ERP(int axis, dReal val) {
|
|
|
|
|
+ nassertv( _id != 0 );
|
|
|
|
|
+ nassertv( 0 <= axis && axis <= 1 );
|
|
|
|
|
+ if ( axis == 0 ) {
|
|
|
|
|
+ dJointSetHinge2Param(_id, dParamStopERP, val);
|
|
|
|
|
+ } else if ( axis == 1 ) {
|
|
|
|
|
+ dJointSetHinge2Param(_id, dParamStopERP2, val);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+INLINE void OdeHinge2Joint::
|
|
|
|
|
+set_param_stop_CFM(int axis, dReal val) {
|
|
|
|
|
+ nassertv( _id != 0 );
|
|
|
|
|
+ nassertv( 0 <= axis && axis <= 1 );
|
|
|
|
|
+ if ( axis == 0 ) {
|
|
|
|
|
+ dJointSetHinge2Param(_id, dParamStopCFM, val);
|
|
|
|
|
+ } else if ( axis == 1 ) {
|
|
|
|
|
+ dJointSetHinge2Param(_id, dParamStopCFM2, val);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+INLINE void OdeHinge2Joint::
|
|
|
|
|
+set_param_suspension_ERP(int axis, dReal val) {
|
|
|
|
|
+ nassertv( _id != 0 );
|
|
|
|
|
+ nassertv( 0 <= axis && axis <= 1 );
|
|
|
|
|
+ if ( axis == 0 ) {
|
|
|
|
|
+ dJointSetHinge2Param(_id, dParamSuspensionERP, val);
|
|
|
|
|
+ } else if ( axis == 1 ) {
|
|
|
|
|
+ dJointSetHinge2Param(_id, dParamSuspensionERP2, val);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+INLINE void OdeHinge2Joint::
|
|
|
|
|
+set_param_suspension_CFM(int axis, dReal val) {
|
|
|
|
|
+ nassertv( _id != 0 );
|
|
|
|
|
+ nassertv( 0 <= axis && axis <= 1 );
|
|
|
|
|
+ if ( axis == 0 ) {
|
|
|
|
|
+ dJointSetHinge2Param(_id, dParamSuspensionCFM, val);
|
|
|
|
|
+ } else if ( axis == 1 ) {
|
|
|
|
|
+ dJointSetHinge2Param(_id, dParamSuspensionCFM2, val);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
INLINE dReal OdeHinge2Joint::
|
|
INLINE dReal OdeHinge2Joint::
|
|
|
-get_param(int parameter) const {
|
|
|
|
|
- return dJointGetHinge2Param(_id, parameter);
|
|
|
|
|
|
|
+get_param_lo_stop(int axis) const {
|
|
|
|
|
+ nassertr( _id != 0, 0 );
|
|
|
|
|
+ nassertr( 0 <= axis && axis <= 1, 0 );
|
|
|
|
|
+ if ( axis == 0 ) {
|
|
|
|
|
+ return dJointGetHinge2Param(_id, dParamLoStop);
|
|
|
|
|
+ } else if ( axis == 1 ) {
|
|
|
|
|
+ return dJointGetHinge2Param(_id, dParamLoStop2);
|
|
|
|
|
+ }
|
|
|
|
|
+ return 0;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
INLINE dReal OdeHinge2Joint::
|
|
INLINE dReal OdeHinge2Joint::
|
|
|
-get_angle1() const {
|
|
|
|
|
- return dJointGetHinge2Angle1(_id);
|
|
|
|
|
|
|
+get_param_hi_stop(int axis) const {
|
|
|
|
|
+ nassertr( _id != 0, 0 );
|
|
|
|
|
+ nassertr( 0 <= axis && axis <= 1, 0 );
|
|
|
|
|
+ if ( axis == 0 ) {
|
|
|
|
|
+ return dJointGetHinge2Param(_id, dParamHiStop);
|
|
|
|
|
+ } else if ( axis == 1 ) {
|
|
|
|
|
+ return dJointGetHinge2Param(_id, dParamHiStop2);
|
|
|
|
|
+ }
|
|
|
|
|
+ return 0;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
INLINE dReal OdeHinge2Joint::
|
|
INLINE dReal OdeHinge2Joint::
|
|
|
-get_angle1_rate() const {
|
|
|
|
|
- return dJointGetHinge2Angle1Rate(_id);
|
|
|
|
|
|
|
+get_param_vel(int axis) const {
|
|
|
|
|
+ nassertr( _id != 0, 0 );
|
|
|
|
|
+ nassertr( 0 <= axis && axis <= 1, 0 );
|
|
|
|
|
+ if ( axis == 0 ) {
|
|
|
|
|
+ return dJointGetHinge2Param(_id, dParamVel);
|
|
|
|
|
+ } else if ( axis == 1 ) {
|
|
|
|
|
+ return dJointGetHinge2Param(_id, dParamVel2);
|
|
|
|
|
+ }
|
|
|
|
|
+ return 0;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
INLINE dReal OdeHinge2Joint::
|
|
INLINE dReal OdeHinge2Joint::
|
|
|
-get_angle2_rate() const {
|
|
|
|
|
- return dJointGetHinge2Angle2Rate(_id);
|
|
|
|
|
|
|
+get_param_f_max(int axis) const {
|
|
|
|
|
+ nassertr( _id != 0, 0 );
|
|
|
|
|
+ nassertr( 0 <= axis && axis <= 1, 0 );
|
|
|
|
|
+ if ( axis == 0 ) {
|
|
|
|
|
+ return dJointGetHinge2Param(_id, dParamFMax);
|
|
|
|
|
+ } else if ( axis == 1 ) {
|
|
|
|
|
+ return dJointGetHinge2Param(_id, dParamFMax2);
|
|
|
|
|
+ }
|
|
|
|
|
+ return 0;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+INLINE dReal OdeHinge2Joint::
|
|
|
|
|
+get_param_fudge_factor(int axis) const {
|
|
|
|
|
+ nassertr( _id != 0, 0 );
|
|
|
|
|
+ nassertr( 0 <= axis && axis <= 1, 0 );
|
|
|
|
|
+ if ( axis == 0 ) {
|
|
|
|
|
+ return dJointGetHinge2Param(_id, dParamFudgeFactor);
|
|
|
|
|
+ } else if ( axis == 1 ) {
|
|
|
|
|
+ return dJointGetHinge2Param(_id, dParamFudgeFactor2);
|
|
|
|
|
+ }
|
|
|
|
|
+ return 0;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+INLINE dReal OdeHinge2Joint::
|
|
|
|
|
+get_param_bounce(int axis) const {
|
|
|
|
|
+ nassertr( _id != 0, 0 );
|
|
|
|
|
+ nassertr( 0 <= axis && axis <= 1, 0 );
|
|
|
|
|
+ if ( axis == 0 ) {
|
|
|
|
|
+ return dJointGetHinge2Param(_id, dParamBounce);
|
|
|
|
|
+ } else if ( axis == 1 ) {
|
|
|
|
|
+ return dJointGetHinge2Param(_id, dParamBounce2);
|
|
|
|
|
+ }
|
|
|
|
|
+ return 0;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+INLINE dReal OdeHinge2Joint::
|
|
|
|
|
+get_param_CFM(int axis) const {
|
|
|
|
|
+ nassertr( _id != 0, 0 );
|
|
|
|
|
+ nassertr( 0 <= axis && axis <= 1, 0 );
|
|
|
|
|
+ if ( axis == 0 ) {
|
|
|
|
|
+ return dJointGetHinge2Param(_id, dParamCFM);
|
|
|
|
|
+ } else if ( axis == 1 ) {
|
|
|
|
|
+ return dJointGetHinge2Param(_id, dParamCFM2);
|
|
|
|
|
+ }
|
|
|
|
|
+ return 0;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+INLINE dReal OdeHinge2Joint::
|
|
|
|
|
+get_param_stop_ERP(int axis) const {
|
|
|
|
|
+ nassertr( _id != 0, 0 );
|
|
|
|
|
+ nassertr( 0 <= axis && axis <= 1, 0 );
|
|
|
|
|
+ if ( axis == 0 ) {
|
|
|
|
|
+ return dJointGetHinge2Param(_id, dParamStopERP);
|
|
|
|
|
+ } else if ( axis == 1 ) {
|
|
|
|
|
+ return dJointGetHinge2Param(_id, dParamStopERP2);
|
|
|
|
|
+ }
|
|
|
|
|
+ return 0;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+INLINE dReal OdeHinge2Joint::
|
|
|
|
|
+get_param_stop_CFM(int axis) const {
|
|
|
|
|
+ nassertr( _id != 0, 0 );
|
|
|
|
|
+ nassertr( 0 <= axis && axis <= 1, 0 );
|
|
|
|
|
+ if ( axis == 0 ) {
|
|
|
|
|
+ return dJointGetHinge2Param(_id, dParamStopCFM);
|
|
|
|
|
+ } else if ( axis == 1 ) {
|
|
|
|
|
+ return dJointGetHinge2Param(_id, dParamStopCFM2);
|
|
|
|
|
+ }
|
|
|
|
|
+ return 0;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+INLINE dReal OdeHinge2Joint::
|
|
|
|
|
+get_param_suspension_ERP(int axis) const {
|
|
|
|
|
+ nassertr( _id != 0, 0 );
|
|
|
|
|
+ nassertr( 0 <= axis && axis <= 1, 0 );
|
|
|
|
|
+ if ( axis == 0 ) {
|
|
|
|
|
+ return dJointGetHinge2Param(_id, dParamSuspensionERP);
|
|
|
|
|
+ } else if ( axis == 1 ) {
|
|
|
|
|
+ return dJointGetHinge2Param(_id, dParamSuspensionERP2);
|
|
|
|
|
+ }
|
|
|
|
|
+ return 0;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+INLINE dReal OdeHinge2Joint::
|
|
|
|
|
+get_param_suspension_CFM(int axis) const {
|
|
|
|
|
+ nassertr( _id != 0, 0 );
|
|
|
|
|
+ nassertr( 0 <= axis && axis <= 1, 0 );
|
|
|
|
|
+ if ( axis == 0 ) {
|
|
|
|
|
+ return dJointGetHinge2Param(_id, dParamSuspensionCFM);
|
|
|
|
|
+ } else if ( axis == 1 ) {
|
|
|
|
|
+ return dJointGetHinge2Param(_id, dParamSuspensionCFM2);
|
|
|
|
|
+ }
|
|
|
|
|
+ return 0;
|
|
|
|
|
+}
|
|
|
|
|
+
|