?? joint.cpp.diff
字號:
2659,2804d2658< < /******************** breakable joint contribution ***********************/< extern "C" void dJointSetBreakable (dxJoint *joint, int b) {< dAASSERT(joint);< if (b) {< // we want this joint to be breakable but we must first check if it< // was already breakable< if (!joint->breakInfo) {< // allocate a dxJointBreakInfo struct< joint->breakInfo = new dxJointBreakInfo;< joint->breakInfo->flags = 0;< for (int i = 0; i < 3; i++) {< joint->breakInfo->b1MaxF[0] = 0;< joint->breakInfo->b1MaxT[0] = 0;< joint->breakInfo->b2MaxF[0] = 0;< joint->breakInfo->b2MaxT[0] = 0;< }< joint->breakInfo->callback = 0;< }< else {< // the joint was already breakable< return;< }< }< else {< // we want this joint to be unbreakable mut we must first check if< // it is alreay unbreakable< if (joint->breakInfo) {< // deallocate the dxJointBreakInfo struct< delete joint->breakInfo;< joint->breakInfo = 0;< }< else {< // the joint was already unbreakable< return;< }< }< }< < extern "C" void dJointSetBreakCallback (dxJoint *joint, dJointBreakCallback *callbackFunc) {< dAASSERT(joint);< # ifndef dNODEBUG< // only works for a breakable joint< if (!joint->breakInfo) {< dDebug (0, "dJointSetBreakCallback called on unbreakable joint");< }< # endif< joint->breakInfo->callback = callbackFunc;< }< < extern "C" void dJointSetBreakMode (dxJoint *joint, int mode) {< dAASSERT(joint);< # ifndef dNODEBUG< // only works for a breakable joint< if (!joint->breakInfo) {< dDebug (0, "dJointSetBreakMode called on unbreakable joint");< }< # endif< joint->breakInfo->flags = mode;< }< < extern "C" int dJointGetBreakMode (dxJoint *joint) {< dAASSERT(joint);< # ifndef dNODEBUG< // only works for a breakable joint< if (!joint->breakInfo) {< dDebug (0, "dJointGetBreakMode called on unbreakable joint");< }< # endif< return joint->breakInfo->flags;< }< < extern "C" void dJointSetBreakForce (dxJoint *joint, int body, dReal x, dReal y, dReal z) {< dAASSERT(joint);< # ifndef dNODEBUG< // only works for a breakable joint< if (!joint->breakInfo) {< dDebug (0, "dJointSetBreakForce called on unbreakable joint");< }< # endif< if (body) {< joint->breakInfo->b2MaxF[0] = x;< joint->breakInfo->b2MaxF[1] = y;< joint->breakInfo->b2MaxF[2] = z;< }< else {< joint->breakInfo->b1MaxF[0] = x;< joint->breakInfo->b1MaxF[1] = y;< joint->breakInfo->b1MaxF[2] = z;< }< }< < extern "C" void dJointSetBreakTorque (dxJoint *joint, int body, dReal x, dReal y, dReal z) {< dAASSERT(joint);< # ifndef dNODEBUG< // only works for a breakable joint< if (!joint->breakInfo) {< dDebug (0, "dJointSetBreakTorque called on unbreakable joint");< }< # endif< if (body) {< joint->breakInfo->b2MaxT[0] = x;< joint->breakInfo->b2MaxT[1] = y;< joint->breakInfo->b2MaxT[2] = z;< }< else {< joint->breakInfo->b1MaxT[0] = x;< joint->breakInfo->b1MaxT[1] = y;< joint->breakInfo->b1MaxT[2] = z;< }< }< < extern "C" int dJointIsBreakable (dxJoint *joint) {< dAASSERT(joint);< return joint->breakInfo != 0;< }< < extern "C" void dJointGetBreakForce (dxJoint *joint, int body, dReal *force) {< dAASSERT(joint);< # ifndef dNODEBUG< // only works for a breakable joint< if (!joint->breakInfo) {< dDebug (0, "dJointGetBreakForce called on unbreakable joint");< }< # endif< if (body)< for (int i=0; i<3; i++) force[i]=joint->breakInfo->b2MaxF[i];< else< for (int i=0; i<3; i++) force[i]=joint->breakInfo->b1MaxF[i];< }< < extern "C" void dJointGetBreakTorque (dxJoint *joint, int body, dReal *torque) {< dAASSERT(joint);< # ifndef dNODEBUG< // only works for a breakable joint< if (!joint->breakInfo) {< dDebug (0, "dJointGetBreakTorque called on unbreakable joint");< }< # endif< if (body)< for (int i=0; i<3; i++) torque[i]=joint->breakInfo->b2MaxT[i];< else< for (int i=0; i<3; i++) torque[i]=joint->breakInfo->b1MaxT[i];< }< /*************************************************************************/< \ No newline at end of file
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -