TiXmlElement *cpSpaceSerializer::createConstraintElm(cpConstraint* constraint) { TiXmlElement *elm; CPSS_ID id, body_a_id, body_b_id; if (delegate) { id = delegate->makeId(constraint); delegate->writing(constraint, id); body_a_id = delegate->makeId(constraint->a); body_b_id = delegate->makeId(constraint->b); } else { id = CPSS_DEFAULT_MAKE_ID(constraint); body_a_id = CPSS_DEFAULT_MAKE_ID(constraint->a); body_b_id = CPSS_DEFAULT_MAKE_ID(constraint->b); } //Correct id's for staticBody if (constraint->a == _space->staticBody) body_a_id = 0; if (constraint->b == _space->staticBody) body_b_id = 0; //Specific const cpConstraintClass *klass = constraint->CP_PRIVATE(klass); if(klass == cpPinJointGetClass()) elm = createPinJointElm((cpPinJoint*)constraint); else if(klass == cpSlideJointGetClass()) elm = createSlideJointElm((cpSlideJoint*)constraint); else if(klass == cpPivotJointGetClass()) elm = createPivotJointElm((cpPivotJoint*)constraint); else if(klass == cpGrooveJointGetClass()) elm = createGrooveJointElm((cpGrooveJoint*)constraint); else if (klass == cpSimpleMotorGetClass()) elm = createMotorJointElm((cpSimpleMotor*)constraint); else if (klass == cpGearJointGetClass()) elm = createGearJointElm((cpGearJoint*)constraint); else if(klass == cpDampedSpringGetClass()) elm = createSpringJointElm((cpDampedSpring*)constraint); else if(klass == cpRotaryLimitJointGetClass()) elm = createRotaryLimitJointElm((cpRotaryLimitJoint*)constraint); else if(klass == cpRatchetJointGetClass()) elm = createRatchetJointElm((cpRatchetJoint*)constraint); else if(klass == cpDampedRotarySpringGetClass()) elm = createRotarySpringJointElm((cpDampedRotarySpring*)constraint); else elm = new TiXmlElement("unknown"); //Generic elm->LinkEndChild(createValueElm("id", id)); elm->LinkEndChild(createValueElm("body_a_id", body_a_id)); elm->LinkEndChild(createValueElm("body_b_id", body_b_id)); elm->LinkEndChild(createValueElm("maxForce", constraint->maxForce)); elm->LinkEndChild(createValueElm("errorBias", constraint->errorBias)); elm->LinkEndChild(createValueElm("maxBias", constraint->maxBias)); return elm; }
const cpConstraintClass *RotaryLimitJoint::getClass() { return cpRotaryLimitJointGetClass(); }