if (def.type == JointType.PrismaticJoint) joint = new PrismaticJoint(this, jointAddr);
if (def.type == JointType.PulleyJoint) joint = new PulleyJoint(this, jointAddr);
if (def.type == JointType.RevoluteJoint) joint = new RevoluteJoint(this, jointAddr);
if (def.type == JointType.RopeJoint) joint = new RopeJoint(this, jointAddr);
if (def.type == JointType.WeldJoint) joint = new WeldJoint(this, jointAddr);
if (def.type == JointType.WheelJoint) joint = new WheelJoint(this, jointAddr);
if (joint != null) joints.put(joint.addr, joint);
JointEdge jointEdgeA = new JointEdge(def.bodyB, joint);
JointEdge jointEdgeB = new JointEdge(def.bodyA, joint);
joint.jointEdgeA = jointEdgeA;
joint.jointEdgeB = jointEdgeB;