void IK_UI::Update () { if (!window->visible()) return; Model *mdl = callback->GetMdl (); vector<MdlObject*> sel = mdl->GetSelectedObjects (); const char *mt = "<multiple types>"; selJointType->remove(mt); if (!sel.empty()) { selJointType->activate (); int jt = sel.front()->ikInfo.jointType; for (uint a=1;a<sel.size();a++) { if (sel[a]->ikInfo.jointType != jt) { jt = -1; break; } } if (jt < 0) { multipleTypes = selJointType->add (mt); int index = ((fltk::Group*)selJointType)->find (multipleTypes); selJointType->value (index); } else selJointType->value (jt); } else selJointType->deactivate (); window->redraw (); }
void IK_UI::JointType (IKJointType jt) { Model *mdl = callback->GetMdl (); vector<MdlObject*> sel = mdl->GetSelectedObjects (); for (uint a=0;a<sel.size();a++) { IKinfo& ik = sel[a]->ikInfo; if (ik.jointType == jt) continue; SAFE_DELETE(ik.joint); if (jt == IKJT_Hinge) ik.joint = new HingeJoint; else if (jt == IKJT_Universal) ik.joint = new UniversalJoint; ik.jointType = jt; } }