void UniversalJoint::computeValue(double& value, int portId) { if(portId == AXIS1_JOINT) { value = (dJointGetUniversalAngle1(physicalJoint) * 180.0 / M_PI); } else if(portId == AXIS1_MOTOR) { if(axis1->motor->getMotorType() == VELOCITY) value = (dJointGetUniversalParam(physicalJoint, dParamVel)); else value = (dJointGetUniversalAngle1(physicalJoint) * 180.0 / M_PI); } else if(portId == AXIS2_JOINT) { value = (dJointGetUniversalAngle2(physicalJoint) * 180.0 / M_PI); } else if(portId == AXIS2_MOTOR) { if(axis2->motor->getMotorType() == VELOCITY) value = (dJointGetUniversalParam(physicalJoint, dParamVel2)); else value = (dJointGetUniversalAngle2(physicalJoint) * 180.0 / M_PI); } }
static float get_phys_joint_attr(dJointID j, int p) { switch (dJointGetType(j)) { case dJointTypeHinge: return (float) dJointGetHingeParam (j, p); case dJointTypeSlider: return (float) dJointGetSliderParam (j, p); case dJointTypeHinge2: return (float) dJointGetHinge2Param (j, p); case dJointTypeUniversal: return (float) dJointGetUniversalParam(j, p); default: return 0.0f; } }