Panda3D
|
00001 // Filename: odeHinge2Joint.I 00002 // Created by: joswilso (27Dec06) 00003 // 00004 //////////////////////////////////////////////////////////////////// 00005 // 00006 // PANDA 3D SOFTWARE 00007 // Copyright (c) Carnegie Mellon University. All rights reserved. 00008 // 00009 // All use of this software is subject to the terms of the revised BSD 00010 // license. You should have received a copy of this license along 00011 // with this source code in a file named "LICENSE." 00012 // 00013 //////////////////////////////////////////////////////////////////// 00014 00015 00016 INLINE void OdeHinge2Joint:: 00017 set_anchor(dReal x, dReal y, dReal z) { 00018 dJointSetHinge2Anchor(_id, x, y, z); 00019 } 00020 00021 INLINE void OdeHinge2Joint:: 00022 set_anchor(const LVecBase3f &anchor) { 00023 dJointSetHinge2Anchor(_id, anchor[0], anchor[1], anchor[2]); 00024 } 00025 00026 INLINE void OdeHinge2Joint:: 00027 set_axis1(dReal x, dReal y, dReal z) { 00028 dJointSetHinge2Axis1(_id, x, y, z); 00029 } 00030 00031 INLINE void OdeHinge2Joint:: 00032 set_axis1(const LVecBase3f &axis) { 00033 dJointSetHinge2Axis1(_id, axis[0], axis[1], axis[2]); 00034 } 00035 00036 INLINE void OdeHinge2Joint:: 00037 set_axis2(dReal x, dReal y, dReal z) { 00038 dJointSetHinge2Axis2(_id, x, y, z); 00039 } 00040 00041 INLINE void OdeHinge2Joint:: 00042 set_axis2(const LVecBase3f &axis) { 00043 dJointSetHinge2Axis2(_id, axis[0], axis[1], axis[2]); 00044 } 00045 00046 INLINE void OdeHinge2Joint:: 00047 add_torques(dReal torque1, dReal torque2) { 00048 dJointAddHinge2Torques(_id, torque1, torque2); 00049 } 00050 00051 INLINE LVecBase3f OdeHinge2Joint:: 00052 get_anchor() const { 00053 dVector3 result; 00054 dJointGetHinge2Anchor(_id, result); 00055 return LVecBase3f(result[0], result[1], result[2]); 00056 } 00057 00058 INLINE LVecBase3f OdeHinge2Joint:: 00059 get_anchor2() const { 00060 dVector3 result; 00061 dJointGetHinge2Anchor2(_id, result); 00062 return LVecBase3f(result[0], result[1], result[2]); 00063 } 00064 00065 INLINE LVecBase3f OdeHinge2Joint:: 00066 get_axis1() const { 00067 dVector3 result; 00068 dJointGetHinge2Axis1(_id, result); 00069 return LVecBase3f(result[0], result[1], result[2]); 00070 } 00071 00072 INLINE LVecBase3f OdeHinge2Joint:: 00073 get_axis2() const { 00074 dVector3 result; 00075 dJointGetHinge2Axis2(_id, result); 00076 return LVecBase3f(result[0], result[1], result[2]); 00077 } 00078 00079 INLINE dReal OdeHinge2Joint:: 00080 get_angle1() const { 00081 return dJointGetHinge2Angle1(_id); 00082 } 00083 00084 INLINE dReal OdeHinge2Joint:: 00085 get_angle1_rate() const { 00086 return dJointGetHinge2Angle1Rate(_id); 00087 } 00088 00089 INLINE dReal OdeHinge2Joint:: 00090 get_angle2_rate() const { 00091 return dJointGetHinge2Angle2Rate(_id); 00092 } 00093 00094 INLINE void OdeHinge2Joint:: 00095 set_param_lo_stop(int axis, dReal val) { 00096 nassertv( _id != 0 ); 00097 nassertv( 0 <= axis && axis <= 1 ); 00098 if ( axis == 0 ) { 00099 dJointSetHinge2Param(_id, dParamLoStop, val); 00100 } else if ( axis == 1 ) { 00101 dJointSetHinge2Param(_id, dParamLoStop2, val); 00102 } 00103 } 00104 00105 INLINE void OdeHinge2Joint:: 00106 set_param_hi_stop(int axis, dReal val) { 00107 nassertv( _id != 0 ); 00108 nassertv( 0 <= axis && axis <= 1 ); 00109 if ( axis == 0 ) { 00110 dJointSetHinge2Param(_id, dParamHiStop, val); 00111 } else if ( axis == 1 ) { 00112 dJointSetHinge2Param(_id, dParamHiStop2, val); 00113 } 00114 } 00115 00116 INLINE void OdeHinge2Joint:: 00117 set_param_vel(int axis, dReal val) { 00118 nassertv( _id != 0 ); 00119 nassertv( 0 <= axis && axis <= 1 ); 00120 if ( axis == 0 ) { 00121 dJointSetHinge2Param(_id, dParamVel, val); 00122 } else if ( axis == 1 ) { 00123 dJointSetHinge2Param(_id, dParamVel2, val); 00124 } 00125 } 00126 00127 INLINE void OdeHinge2Joint:: 00128 set_param_f_max(int axis, dReal val) { 00129 nassertv( _id != 0 ); 00130 nassertv( 0 <= axis && axis <= 1 ); 00131 if ( axis == 0 ) { 00132 dJointSetHinge2Param(_id, dParamFMax, val); 00133 } else if ( axis == 1 ) { 00134 dJointSetHinge2Param(_id, dParamFMax2, val); 00135 } 00136 } 00137 00138 INLINE void OdeHinge2Joint:: 00139 set_param_fudge_factor(int axis, dReal val) { 00140 nassertv( _id != 0 ); 00141 nassertv( 0 <= axis && axis <= 1 ); 00142 if ( axis == 0 ) { 00143 dJointSetHinge2Param(_id, dParamFudgeFactor, val); 00144 } else if ( axis == 1 ) { 00145 dJointSetHinge2Param(_id, dParamFudgeFactor2, val); 00146 } 00147 } 00148 00149 INLINE void OdeHinge2Joint:: 00150 set_param_bounce(int axis, dReal val) { 00151 nassertv( _id != 0 ); 00152 nassertv( 0 <= axis && axis <= 1 ); 00153 if ( axis == 0 ) { 00154 dJointSetHinge2Param(_id, dParamBounce, val); 00155 } else if ( axis == 1 ) { 00156 dJointSetHinge2Param(_id, dParamBounce2, val); 00157 } 00158 } 00159 00160 INLINE void OdeHinge2Joint:: 00161 set_param_CFM(int axis, dReal val) { 00162 nassertv( _id != 0 ); 00163 nassertv( 0 <= axis && axis <= 1 ); 00164 if ( axis == 0 ) { 00165 dJointSetHinge2Param(_id, dParamCFM, val); 00166 } else if ( axis == 1 ) { 00167 dJointSetHinge2Param(_id, dParamCFM2, val); 00168 } 00169 } 00170 00171 INLINE void OdeHinge2Joint:: 00172 set_param_stop_ERP(int axis, dReal val) { 00173 nassertv( _id != 0 ); 00174 nassertv( 0 <= axis && axis <= 1 ); 00175 if ( axis == 0 ) { 00176 dJointSetHinge2Param(_id, dParamStopERP, val); 00177 } else if ( axis == 1 ) { 00178 dJointSetHinge2Param(_id, dParamStopERP2, val); 00179 } 00180 } 00181 00182 INLINE void OdeHinge2Joint:: 00183 set_param_stop_CFM(int axis, dReal val) { 00184 nassertv( _id != 0 ); 00185 nassertv( 0 <= axis && axis <= 1 ); 00186 if ( axis == 0 ) { 00187 dJointSetHinge2Param(_id, dParamStopCFM, val); 00188 } else if ( axis == 1 ) { 00189 dJointSetHinge2Param(_id, dParamStopCFM2, val); 00190 } 00191 } 00192 00193 INLINE void OdeHinge2Joint:: 00194 set_param_suspension_ERP(int axis, dReal val) { 00195 nassertv( _id != 0 ); 00196 nassertv( 0 <= axis && axis <= 1 ); 00197 if ( axis == 0 ) { 00198 dJointSetHinge2Param(_id, dParamSuspensionERP, val); 00199 } else if ( axis == 1 ) { 00200 dJointSetHinge2Param(_id, dParamSuspensionERP2, val); 00201 } 00202 } 00203 00204 INLINE void OdeHinge2Joint:: 00205 set_param_suspension_CFM(int axis, dReal val) { 00206 nassertv( _id != 0 ); 00207 nassertv( 0 <= axis && axis <= 1 ); 00208 if ( axis == 0 ) { 00209 dJointSetHinge2Param(_id, dParamSuspensionCFM, val); 00210 } else if ( axis == 1 ) { 00211 dJointSetHinge2Param(_id, dParamSuspensionCFM2, val); 00212 } 00213 } 00214 00215 INLINE dReal OdeHinge2Joint:: 00216 get_param_lo_stop(int axis) const { 00217 nassertr( _id != 0, 0 ); 00218 nassertr( 0 <= axis && axis <= 1, 0 ); 00219 if ( axis == 0 ) { 00220 return dJointGetHinge2Param(_id, dParamLoStop); 00221 } else if ( axis == 1 ) { 00222 return dJointGetHinge2Param(_id, dParamLoStop2); 00223 } 00224 return 0; 00225 } 00226 00227 INLINE dReal OdeHinge2Joint:: 00228 get_param_hi_stop(int axis) const { 00229 nassertr( _id != 0, 0 ); 00230 nassertr( 0 <= axis && axis <= 1, 0 ); 00231 if ( axis == 0 ) { 00232 return dJointGetHinge2Param(_id, dParamHiStop); 00233 } else if ( axis == 1 ) { 00234 return dJointGetHinge2Param(_id, dParamHiStop2); 00235 } 00236 return 0; 00237 } 00238 00239 INLINE dReal OdeHinge2Joint:: 00240 get_param_vel(int axis) const { 00241 nassertr( _id != 0, 0 ); 00242 nassertr( 0 <= axis && axis <= 1, 0 ); 00243 if ( axis == 0 ) { 00244 return dJointGetHinge2Param(_id, dParamVel); 00245 } else if ( axis == 1 ) { 00246 return dJointGetHinge2Param(_id, dParamVel2); 00247 } 00248 return 0; 00249 } 00250 00251 INLINE dReal OdeHinge2Joint:: 00252 get_param_f_max(int axis) const { 00253 nassertr( _id != 0, 0 ); 00254 nassertr( 0 <= axis && axis <= 1, 0 ); 00255 if ( axis == 0 ) { 00256 return dJointGetHinge2Param(_id, dParamFMax); 00257 } else if ( axis == 1 ) { 00258 return dJointGetHinge2Param(_id, dParamFMax2); 00259 } 00260 return 0; 00261 } 00262 00263 INLINE dReal OdeHinge2Joint:: 00264 get_param_fudge_factor(int axis) const { 00265 nassertr( _id != 0, 0 ); 00266 nassertr( 0 <= axis && axis <= 1, 0 ); 00267 if ( axis == 0 ) { 00268 return dJointGetHinge2Param(_id, dParamFudgeFactor); 00269 } else if ( axis == 1 ) { 00270 return dJointGetHinge2Param(_id, dParamFudgeFactor2); 00271 } 00272 return 0; 00273 } 00274 00275 INLINE dReal OdeHinge2Joint:: 00276 get_param_bounce(int axis) const { 00277 nassertr( _id != 0, 0 ); 00278 nassertr( 0 <= axis && axis <= 1, 0 ); 00279 if ( axis == 0 ) { 00280 return dJointGetHinge2Param(_id, dParamBounce); 00281 } else if ( axis == 1 ) { 00282 return dJointGetHinge2Param(_id, dParamBounce2); 00283 } 00284 return 0; 00285 } 00286 00287 INLINE dReal OdeHinge2Joint:: 00288 get_param_CFM(int axis) const { 00289 nassertr( _id != 0, 0 ); 00290 nassertr( 0 <= axis && axis <= 1, 0 ); 00291 if ( axis == 0 ) { 00292 return dJointGetHinge2Param(_id, dParamCFM); 00293 } else if ( axis == 1 ) { 00294 return dJointGetHinge2Param(_id, dParamCFM2); 00295 } 00296 return 0; 00297 } 00298 00299 INLINE dReal OdeHinge2Joint:: 00300 get_param_stop_ERP(int axis) const { 00301 nassertr( _id != 0, 0 ); 00302 nassertr( 0 <= axis && axis <= 1, 0 ); 00303 if ( axis == 0 ) { 00304 return dJointGetHinge2Param(_id, dParamStopERP); 00305 } else if ( axis == 1 ) { 00306 return dJointGetHinge2Param(_id, dParamStopERP2); 00307 } 00308 return 0; 00309 } 00310 00311 INLINE dReal OdeHinge2Joint:: 00312 get_param_stop_CFM(int axis) const { 00313 nassertr( _id != 0, 0 ); 00314 nassertr( 0 <= axis && axis <= 1, 0 ); 00315 if ( axis == 0 ) { 00316 return dJointGetHinge2Param(_id, dParamStopCFM); 00317 } else if ( axis == 1 ) { 00318 return dJointGetHinge2Param(_id, dParamStopCFM2); 00319 } 00320 return 0; 00321 } 00322 00323 INLINE dReal OdeHinge2Joint:: 00324 get_param_suspension_ERP(int axis) const { 00325 nassertr( _id != 0, 0 ); 00326 nassertr( 0 <= axis && axis <= 1, 0 ); 00327 if ( axis == 0 ) { 00328 return dJointGetHinge2Param(_id, dParamSuspensionERP); 00329 } else if ( axis == 1 ) { 00330 return dJointGetHinge2Param(_id, dParamSuspensionERP2); 00331 } 00332 return 0; 00333 } 00334 00335 INLINE dReal OdeHinge2Joint:: 00336 get_param_suspension_CFM(int axis) const { 00337 nassertr( _id != 0, 0 ); 00338 nassertr( 0 <= axis && axis <= 1, 0 ); 00339 if ( axis == 0 ) { 00340 return dJointGetHinge2Param(_id, dParamSuspensionCFM); 00341 } else if ( axis == 1 ) { 00342 return dJointGetHinge2Param(_id, dParamSuspensionCFM2); 00343 } 00344 return 0; 00345 } 00346